AUDIO_STREAM_CATEGORY Enumeration

Audio stream endpoint categories controlling audio focus and volume attenuation (system ducking).

Xbox One allows the user to play several different audio experiences at the same time. It supports both clarity and differing consumer use scenarios by providing several system ducking functions and making some behaviors customizable. Note that the behaviors are system policies that might change in future versions of the console.

Syntax

typedef enum _AUDIO_STREAM_CATEGORY
{
    AudioCategory_Other = 0,
    AudioCategory_ForegroundOnlyMedia,
    AudioCategory_BackgroundCapableMedia,
    AudioCategory_Communications,
    AudioCategory_Alerts,
    AudioCategory_SoundEffects,
    AudioCategory_GameEffects,
    AudioCategory_GameMedia,
    AudioCategory_GameChat,
    AudioCategory_Speech,
    AudioCategory_Movie,
    AudioCategory_Media
} AUDIO_STREAM_CATEGORY;  

Constants

Constant Description
AudioCategory_Other Other audio streams. This is the only valid category for capture and loopback streams.
AudioCategory_ForegroundOnlyMedia
Important This enumeration value has been deprecated.
Media that only streams when an app is in the foreground. This category is most typically used by ADK applications that play music or media that should pre-empt other experiences. It is not typical for games or exclusive apps to use this category.When an app using this category is in the foreground or snapped, other endpoints tagged as game background music (AudioCategory_GameMedia) are muted. That media is unmuted if the app loses visibility.
AudioCategory_BackgroundCapableMedia
Important This enumeration value has been deprecated.
Media that can be streamed when an app is in the background. This category is most typically used by ADK applications that play independent background music that should persist while an app is running, even if it is not visible. The category is not typical for games and exclusive apps to use, and requires an app manifest flag and a certification exception. An app that uses this category implicitly mutes other endpoints tagged as background music (AudioCategory_GameMedia). Muting enables scenarios of the user replacing the background music of a game. Titles that do not wish to segment their game audio in this manner might choose to tag all audio as AudioCategory_GameMedia.
Note Titles are encouraged to direct their music tracks to an AudioCategory_GameMedia endpoint. In this case the entire game mix is muted if a background music service is in operation.
AudioCategory_Communications Real-time communications that might apply system ducking to other audio categories, depending on consumer settings. This category is typically used by system-provided chat experiences and shared application-implemented chat/VOIP. Both Party Chat and Skype use the category. Audio sent to an endpoint tagged with this category ducks all other audio sent to that endpoint, except for other streams tagged with the same category or streams tagged with AudioCategory_Alerts. During system chat scenarios where chat is being rendered to speakers, game audio in the speakers is ducked. A title can make use of this ducking behavior by specifying AudioCategory_Communications. If the title wants to manage its mix directly and not apply ducking during game chat, it should use the AudioCategory_GameChat category, since this category applies no ducking to other categories.
Note A single chat experience, whether Skype, party chat, or game chat, has access to the player’s microphone at any given time. Nevertheless, an app can optionally continue to render incoming audio streams, even if the user cannot speak on these experiences.
AudioCategory_Alerts Alert sounds. Audio sent to an endpoint tagged with this category ducks all other audio sent to that endpoint, except other streams tagged as AudioCategory_Alerts, AudioCategory_Communications, or AudioCategory_GameChat. The value for this category is configured by the system, and is currently -28 dB. This category is typically used only for brief periods, such as for notifications. It is not typical for games and apps to use AudioCategory_Alerts, as they manage their full mix directly.
AudioCategory_SoundEffects Sound effects.
AudioCategory_GameEffects Game sound effects other than background music. This category should typically be used for rendering game audio. Only voice chat (AudioCategory_GameChat or AudioCategory_Communications) and possibly game music (AudioCategory_GameMedia) typically use alternate endpoint categories. See the remarks section below for more information.
AudioCategory_GameMedia Content that is considered background music. An example is audio to mute or replace if the user selects custom music.
AudioCategory_GameChat Real-time communications that do not apply system ducking to other categories. This category is typically used for exclusive app-implemented game chat or VOIP.
AudioCategory_Speech Speech.
AudioCategory_Movie Stream that includes audio with dialog, including in-game cinematics or cutscenes where audio is pre-mixed or for creative reasons should take priority over background audio.
AudioCategory_Media Stream that includes audio without dialog, including in-game cinematics or cutscenes where audio is pre-mixed or for creative reasons should take priority over background audio.

Remarks

Background audio applications using Media or Movie will take priority over (mute) foreground game streams using GameMedia but will mix together with GameEffects. This allows users to play audio in the background using Groove, for example, and replace game music tracks while still listening to in-game sound effects. While ideal for gameplay, this muting and mixing behavior is not typically desired for cut-scenes or in-game movies where music tracks, effects, and dialog might be pre-mixed or specially selected to deliver a specific creative vision. In those cases, games should categorize such scenes as Movie or Media so that they temporarily take priority over (mute) any background audio applications playing Media or Movie streams.

Requirements

Header: Declared in audiosessiontypes.h.

Library: Use mmdevapi.lib.