Policy for Sample Rate Conversion of Audio Streams
This section describes the policy that the KMixer system driver follows for sample-rate conversion (SRC).
KMixer does SRC on audio streams only if it must do so to match the sample rate of more than one stream. Most applications that use more than one audio stream use the same sample rate for each stream. However, KMixer uses the following client-based policy to match sampling rates:
For rendering streams, the Windows multimedia control panel (Mmsys.cpl) gives a user some control over which type of SRC the KMixer driver uses with DirectSound. The slider shown in the Advanced Audio Properties dialog (see DirectSound Hardware-Acceleration and SRC Sliders) assigns the settings Good through Best to linear interpolation, multipoint interpolation, and high-end multipoint interpolation, respectively. Linear interpolation is the default for the DirectSound versions that ship with Microsoft Windows 98/Me and Windows 2000. In Windows XP and later, the default is high-end multipoint interpolation.
For DirectSound capture streams, KMixer always uses high-end multipoint interpolation.
All other audio stream clients
The KMixer driver always uses high-end multipoint interpolation for render and capture streams that are associated with the Windows Multimedia functions (which include the waveOut API), Redbook CD, and the Sound Blaster emulator and software synthesizer.
The following table categorizes types of Windows audio applications and the system component that each type of application uses.
|Audio Application||System Component|
Windows Sound Recorder
Windows Multimedia (Winmm.sys)
Windows Media Player
DirectX titles, including most games
Most high-end wave editors
Note that in Windows 98/Me, the Windows Multimedia functions are implemented in Mmsystem.dll. In Windows 2000 and later, the Windows Multimedia functions are implemented in Winmm.sys, and calls from 16-bit applications to Mmsystem.dll thunk to 32-bit calls to Winmm.sys. For more information about thunking calls from 16-bit code to 32-bit functions, see the Microsoft Windows SDK documentation.