DirectX audio development roadmap
[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]
This topic provides a list of resources for audio development in Windows Runtime apps using DirectX with C++. It covers XAudio2, Media Foundation, and the Windows Runtime XAML audio support types.
XAudio2 conceptual resources
XAudio2 is the audio mixing library for DirectX, and is primarily intended for developing high performance audio engines for games. For game developers who want to add sound effects and background music to their modern games, XAudio2 offers an audio graph and mixing engine with low-latency and support for dynamic buffers, synchronous sample-accurate playback, and implicit source rate conversion.
Topic | Description |
---|---|
The topic provides a list of the audio programming features supported by XAudio2. |
|
This topic provides information on key XAudio2 concepts, XAudio2 versions, and the RIFF audio format. |
|
This topic provides an overview of common audio concepts with which an audio developer should be familiar. |
|
This topic contains an overview of XAudio2 voices, which are used to submix, operate on and master audio data. |
|
This topic covers the XAudio 2 callbacks, which are used to prevent breaks in the audio playback. |
|
This topic covers the XAudio2 audio processing graphs, which take a set of audio streams from the client as input, process them, and deliver the final result to an audio device. |
|
The topic covers XAudio2 audio effects, which take incoming audio data and perform some operation on the data (such as a reverb effect) before passing it on. |
|
This topic covers audio streaming with XAudio2. |
|
this topic covers X3DAudio, an API used in conjunction with XAudio2 to create the illusion of a sound coming from a point in 3D space. |
|
This section contains the complete reference for the XAudio2 APIs. |
XAudio2 "how to" resources
Topic | Description |
---|---|
Learn how to initialize XAudio2 for audio playback by creating an instance of the XAudio2 engine, and creating a mastering voice. |
|
Learn how to populate the structures required to play audio data in XAudio2. |
|
Learn how to play previously-loaded audio data in XAudio2. |
|
Learn how to set groups of voices to send their output to the same submix voice. |
|
Learn how to use XAudio2 source voice callbacks. |
|
Learn how to use XAudio2 engine callbacks. |
|
Learn how to create an audio processing graph, constructed from a single mastering voice and a single source voice. |
|
How to: Dynamically Add or Remove Voices From an Audio Graph |
Learn how to add or remove submix voices from a graph that has been created following the steps in How to: Build a Basic Audio Processing Graph. |
Learn how to apply an effect chain to a voice to allow custom processing of the audio data for that voice. |
|
Learn how to implement IXAPO to create an XAudio2 audio processing object (XAPO). |
|
Learn how to add run-time parameter support to an XAPO by implementing the IXAPOParameters interface. |
|
Learn how to use an effect implemented with as an XAPO in an XAudio2 effect chain. |
|
Learn how to use one of the effects included in XAPOFX in an XAudio2 effect chain. |
|
Learn how to stream audio data in XAudio2 by creating a separate thread to read an audio buffer, and to use callbacks to control that thread. |
|
Learn how to use X3DAudio to provide the volume and pitch values for XAudio2 voices as well as the parameters for the XAudio2 built-in reverb effect. |
|
Learn how to use XAudio2 operation sets to make a group of method calls take effect at the same time. |
|
Learn how to set the debug logging level for XAudio2. |
Media Foundation resources
Media Foundation (MF) is a media platform for streaming audio and video playback. You can use the Media Foundation APIs to stream audio and video encoded and compressed with a variety of algorithms. It is not designed for real-time gameplay scenarios; instead, it provides powerful tools and broad codec support for more linear capture and presentation of audio and video components.
Topic | Description |
---|---|
This section contains general information about the Media Foundation APIs, and the tools available to support them. |
|
This topic introduces some concepts that you will need to understand before writing a Media Foundation application. |
|
This section describes the general design of Microsoft Media Foundation, as well as the media primitives and processing pipeline it uses. |
|
This topic describes how to use Microsoft Media Foundation to perform audio and video capture. |
|
This topic describes how to implement audio/video playback in your app. |
|
This topic lists the media formats that Microsoft Media Foundation supports natively. (Third parties can support additional formats by writing custom plug-ins.) |
|
This topic describes how to use Microsoft Media Foundation to perform audio and video encoding, and author media files. |
|
This topic describes how to use the features of the Windows Media Audio and Video codecs to produce and consume compressed data streams. |
|
This section contains reference information for the Media Foundation APIs. |
|
This section lists sample apps that demonstrate how to use Media Foundation. |
Windows Runtime XAML media types
If you are using DirectX-XAML interop, you can incorporate the Windows Runtime XAML media APIs into your Windows Store apps using DirectX with C++ for simpler game scenarios.
Topic | Description |
---|---|
XAML element that represents an object that contains audio, video, or both. |
|
Learn how to incorporate basic audio and video in your Windows Store app using C++, C#, or Visual Basic. |
|
Learn how to play a locally-stored media file in your Windows Store app using C++, C#, or Visual Basic. |
|
Learn how to stream a media file with low-latency in your Windows Store app using C++, C#, or Visual Basic. |
|
Learn how to use the Play To contract to stream media from your Windows Store app using C++, C#, or Visual Basic to another device. |