This is a continuation in a set of articles focused on noteworthy technology and solutions we have implemented or encountered in our projects.
This article briefly describes our experiences implementing additional audio processing methods for Windows 7 and higher.
As operating systems evolve, increasing the number of available APIs and adding optimized methods to implement new features for software vendors allows audio processing methods to evolve as well. Ever since the release of Windows Vista, vendors are able to use one of two methods for processing audio. Because we have experiences working with both approaches, we will discuss, compare, and contrast them.
Audio filter driver
If you read our previous article regarding implementing surround sound, you may have noticed that we used audio filter drivers.
Note the following in regards to this method:
- All audio processing is done with the kernel mode driver.
- This method works for all versions of Windows from XP to current versions.
- Our solution implements a number of DSP effects in the kernel mode audio driver. This includes equalizer and Dolby technologies.
System Effects Audio Processing Objects (sAPOs)
This approach was introduced in Windows Vista as part of its new audio architecture. This, of course, means that it is not supported in Windows XP.
Audio stream processing is done in the user space of virtual memory and is implemented within COM objects. Unlike kernel mode drivers, this approach guarantees system stability remains unaffected because all code is executed in the user space.
sAPOs are divided into LFX and GFX. The difference between them is their location in the audio stack. LFX sAPOs are located between the application and system mixer. Therefore, it has access to the original audio stream, which can be a significant advantage for a number of applications.
We have a solution that implements Dolby Headphone and Dolby ProLogic IIx technologies in LFX sAPOs.
- GFX Filter – Global Effects Filter. A GFX filter is packaged as an AVStream minidriver with an associated INF file. This type of GFX filter must not be confused with the COM-based audio processing objects that were developed for Windows Vista, which are called GFX sAPOs.
- sAPOs – Windows Vista includes several user-mode in-process COM objects that are installed by default. These objects provide digital signal processing for Windows audio streams. An sAPO is simply a host object containing an algorithm that is written to provide a specific Digital Signal Processing (DSP) effect.
- Dolby Headphone – this is a technology developed by Lake Technology (Australia). Marketing rights were sold to Dolby Laboratories, sometimes referred to as Mobile Surround. Dolby Headphone creates a virtual surround sound environment in real-time using any set of two channel stereo headphones. It takes as input either a 5.1 channel signal, a Dolby Pro Logic II encoded 2 channel signal (from which 5 channels can be derived) or a stereo 2 channel signal. It sends a 2 channel stereo signal as output. This includes audio cues intended to place the input channels in a simulated virtual soundstage.
- sAPO LFX Filter – sAPOs Local Effects Filter. LFX corresponds to the point before all audio streams are mixed in the audio engine.
- sAPO GFX Filter – sAPOs Global Effects Filter. GFX corresponds to the point after the audio streams are mixed (post-mix) in the Audio Engine. This occurs prior to the passing of audio data to the audio adapter.
Links we find useful
- MSDN – Audio System Effects
- Dolby Digital Plus Documents
- Audio Device Technologies for Windows®
- Universal Audio Architecture
- Custom Audio Effects in Windows Vista™