Windows Audio Architecture
This topic provided a high level summary of the Windows 10 audio architecture.
Windows 10 Audio Stack Diagram
This diagram provides a summary of the major elements of the Windows 10 audio stack.
Top level APIs
The top level APIs are used for application development. These APIs are in currently in use and supported.
- XAML MediaElement class(C#, VB, C++)
- HTML Audio object and Video object<tags> (used by websites and Windows Web Apps)
- Windows.Media.Capture namespace (C#, VB, C++)
- Microsoft Media Foundation (C++)
These older APIs are deprecated.
Low level APIs
These lower level APIs are recommended for audio streaming.
This lower level API is recommended for enumeration.
These APIs are not recommended for Windows applications.
The audio engine consists of two related components, the Audio Device Graph (audiodg.exe), which loads the Audio Engine (audioeng.dll).
The audio engine:
- Mixes and processes audio streams. For more information about how the audio engine uses buffers to transfer audio, see Understanding the WaveRT Port Driver.
- Loads Audio Processing Objects (APOs), which are H/W-specific plugins that process the audio signal. For more information about APOs, see Windows Audio Processing Objects.
Audio Service (audiosrv.dll)
The audio service:
- Is used to setup and control audio streams.
- Implements Windows policies for background audio playback, ducking, etc.
Audio Endpoint Builder (audioendpointbuilder.exe)
The Audio Endpoint Builder (audioendpointbuilder.exe):
- Is used to discover new audio devices and create software audio endpoints. For more information about the algorithm that is used, see Audio Endpoint Builder Algorithm.
- Follow the port-miniport model. For more information, see WDM Audio Terminology and Developing a WaveRT Miniport Driver.
- Allow the audio stack to render and capture audio from several audio devices, including: integrated speakers and microphones, headsets/headphones, USB devices, Bluetooth devices, HDMI, etc.
- The port-minport model corresponds to the Advanced Linux Sound Architecture ALSA
- For information on sample driver code, see Sample Audio Drivers.
The audio hardware that is present on any given device varies but can include:
- Audio Codec
- DSP (optional)
- Integrated speakers, microphone, etc
- External devices: USB audio devices, Bluetooth audio devices, HDMI audio, etc.
- Signal processing can also be implemented in the H/W (e.g. the codec or the DSP), instead of or in addition to the APOs.