Previous Next

Differences in Support for Non-PCM Formats

The discussion below summarizes the level of support for non-PCM audio formats that is provided by the WDM audio framework in the different versions of Windows that are available. For background information on this topic, see Supporting Non-PCM Wave Formats.

Windows 98 Gold

Windows 98 Gold provides no support for non-PCM wave formats through DirectSound, the waveOut API, or any other audio interface that uses the SysAudio system driver. For information about DirectSound and waveOut, see the Platform SDK documentation.

Windows 98 Second Edition

Like Windows 98 Gold, Windows 98 SE has no support for non-PCM wave formats, except that the USBAudio class system driver (usbaudio.sys) can handle the packed AC3 format through DirectShow. (This format is described in USB Audio Support for Non-PCM Formats.) However, USBAudio still provides no support for non-PCM formats to waveOut and DirectSound applications.

Windows 98 SE + QFE

Installing the QFE (quick-fix engineering) package for Windows 98 SE enables support for non-PCM formats for waveOut applications that use PortCls devices. (The QFE is described in Additional Requirements for Windows 98.) However, the following caveats apply:

The version of DirectSound that ships with Windows 98 SE does not support non-PCM formats. However, when DirectSound 8 is installed in Windows 98 SE + QFE, DirectSound applications can use non-PCM formats with both PortCls devices and USB audio devices.

Windows Me

Windows Me provides support for non-PCM formats for waveOut applications that use PortCls devices.

The waveOutGetPosition call works correctly for non-PCM streams.

PortCls automatically clones non-PCM data ranges for DirectSound.

The problem with phantom sliders in SndVol32 (see above) is fixed.

The IPortClsVersion interface is not implemented, but other means of determining the operating system version are available. For example, you can detect the OS version by calling IoIsWdmVersionAvailable.

In Windows Me, the USBAudio driver does not support the packed AC3 format through DirectShow. Also, USBAudio does not support non-PCM formats for DirectSound applications that use the built-in DirectSound implementation. However, when DirectSound 8 is added to Windows Me, DirectSound applications can use non-PCM formats on USB audio devices.

The initial QFE that has been released for Windows Me contains no non-PCM fixes.

Windows 2000

Like Windows 98, Windows 2000 provides no support for non-PCM formats, regardless of DirectSound version.

In Windows 2000, the USBAudio driver does not support packed AC3 formats through DirectShow. USBAudio also does not support any non-PCM formats for DirectSound applications.

Windows 2000 Service Pack 2

SP2 adds support for non-PCM formats to waveOut applications that use PortCls devices.

PortCls automatically clones non-PCM data ranges for DirectSound.

The IPortClsVersion interface is available in SP2.

The waveOutGetPosition call works correctly for non-PCM streams.

SP2 still has the problem with phantom sliders in SndVol32 (see above).

When DirectSound 8 is added to Windows 2000 SP2, DirectSound applications can use non-PCM formats.

Windows XP

Windows XP supports non-PCM formats for waveOut applications that use PortCls devices.

The waveOutGetPosition call works correctly for non-PCM streams.

PortCls automatically clones non-PCM data ranges for DirectSound.

The built-in version of DirectSound correctly handles non-PCM formats on PortCls devices.

The problem with phantom sliders in SndVol32 (see above) is fixed.

The USBAudio driver correctly handles packed AC3 formats through DirectShow. However, USBAudio does not support non-PCM formats for DirectSound applications.

The IPortClsVersion interface is available.