Windows legacy audio components
|
|
This article or section is in need of attention from an expert on the subject. The following WikiProjects or Portals may be able to help recruit one: If another appropriate WikiProject or portal exists, please adjust this template accordingly. (February 2009) |
| This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. Please improve this article by introducing more precise citations where appropriate. (September 2009) |
Contents |
[edit] Multimedia Extensions (MME)
The Multimedia Extensions were released in autumn 1991 to support sound cards, as well as CD-ROM drives, which were then becoming increasingly available. The Multimedia Extensions were released to Original Equipment Manufacturers (OEMs), mainly CD-ROM drive and sound card manufacturers, and added basic multimedia support for audio input and output and a CD audio player application to Windows 3.0. The Multimedia Extensions' new features were not available in Windows 3.0 real mode. Windows 3.1x would later incorporate many of its features. Microsoft developed the Windows Sound System sound card specification to complement these extensions.
The MME API was the first universal and standardized Windows audio API. Wave sound events played in Windows (up to Windows XP) and MIDI I/O use MME. The devices listed in the Multimedia/Sounds and Audio control panel applet represent the MME API of the sound card driver.
MME lacks channel mixing, so only one audio stream can be rendered at a time. MME supports sharing the audio device for playback between multiple applications starting with Windows XP, up to two channels of recording, 16-bit audio bit depth and sampling rates of up to 44.1 kHz with all the audio being mixed and sampled to 44.1 kHz.
[edit] Audio Compression Manager
Audio Compression Manager (ACM) is the Windows multimedia framework that manages audio codecs (compressor/decompressors). ACM can also be considered an API specification. A codec must conform to the implicit ACM specification to work with Windows Multimedia. ACM files can be recognized by their filename extension .acm . ACM files also use RIFF-compatible filetypes such as WAV or AVI as a "wrapper" to store audio data encoded by any audio codec supported by ACM.
ACM is considered an outdated framework/API and Microsoft now encourages the use of at least DirectShow. However, unlike ACM and the related Video Compression Manager (VCM), DirectShow provides no means to encode files for end-users but requires developers to build end-to-end graphs for encoding content. ACM also does not support VBR audio streams; therefore newer codecs like MPEG-4 AAC, Ogg Vorbis, FLAC etc. cannot be supported through ACM if using variable bitrates. Though many sources state the contrary, Ogg Vorbis does work well with the ACM, e.g. when embedded in a RIFF-compatible file (such as a WAV or AVI file as mentioned earlier), provided the Ogg Vorbis stream is encoded at a constant bitrate.
[edit] KMixer
KMixer is the Kernel Audio Mixer driver, a part of WDM Audio in various versions of Microsoft Windows which handles the mixing of multiple sound buffers into an output.
The tasks performed by KMixer.sys:
- Mixing multiple PCM audio streams
- Format, bit-depth and sample-rate conversion
- Speaker configuration and channel mapping
[edit] Issues
The KMixer was designed to aid the applications by relieving them from the need to perform the mixing of audio streams, especially on low-end sound cards that didn't support multiple sound streams. However, it introduced some significant problems.
First, the latency of KMixer is around 30 ms and it cannot be reduced, because this component sits just right above the port class audio driver, so every audio stream, including those issued by DirectSound (except in cases of hardware mixing) and WinMM, come through the kernel mixer.
Then, KMixer tried to mix every data format that passed through it, even those it did not support. It caused various problems with movie players that tried to pass AC3-encoded surround sound streams through S/PDIF output of the sound card to an external home cinema receiver.
A new kernel-mode API, Direct Kernel Streaming, had to be introduced in order to bypass the KMixer and avoid problems associated with it.
KMixer was removed in Windows Vista. It is replaced by the Audio Engine which is part of the revamped audio architecture.