Audio Subtypes

[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The following tables list media subtype GUIDs for audio. Where applicable, each table lists the equivalent format tag, declared in Mmreg.h.

Uncompressed Audio Types

GUID Description Header Equivalent Format Tag
MEDIASUBTYPE_IEEE_FLOAT IEEE floating-point audio. uuids.h WAVE_FORMAT_IEEE_FLOAT (0x0003)
MEDIASUBTYPE_PCM PCM audio. uuids.h WAVE_FORMAT_PCM (0x0001)

MPEG-4 and AAC Audio Types

GUID Description Header Equivalent Format Tag
MEDIASUBTYPE_MPEG_ADTS_AAC Advanced Audio Coding (AAC) audio in Audio Data Transport Stream (ADTS) format.
The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_ADTS_AAC.
The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels, prior to applying spectral band replication (SBR) or parametric stereo (PS) tools, if present.
No additional data is required after the WAVEFORMATEX structure.
wmcodecdsp.h WAVE_FORMAT_MPEG_ADTS_AAC (0x1600)
MEDIASUBTYPE_MPEG_HEAAC High-Efficiency Advanced Audio Coding (HE-AAC) stream.
The format block is an HEAACWAVEFORMAT structure.
wmcodecdsp.h WAVE_FORMAT_MPEG_HEAAC (0x1610)
MEDIASUBTYPE_MPEG_LOAS MPEG-4 audio transport stream with a synchronization layer (LOAS) and a multiplex layer (LATM).
The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_MPEG_LOAS.
The WAVEFORMATEX structure specifies the core AAC-LC sample rate and number of channels, prior to applying spectral SBR or PS tools, if present.
No additional data is required after the WAVEFORMATEX structure.
wmcodecdsp.h WAVE_FORMAT_MPEG_LOAS (0x1602)
MEDIASUBTYPE_RAW_AAC1 Raw AAC.
The format block is a WAVEFORMATEX structure with wFormatTag equal to WAVE_FORMAT_RAW_AAC1.
The WAVEFORMATEX structure specifies the sample rate and number of channels in the decoded audio after applying SBR and PS tools, if present.
The WAVEFORMATEX structure is followed by additional bytes that contain the AudioSpecificConfig() data, as defined by ISO/IEC 14496-3 (MPEG-4 Audio).
The length of the AudioSpecificConfig() data is 2 bytes for AAC-LC or HE-AAC with implicit signaling of SBR/PS. It is more than 2 bytes for HE-AAC with explicit signaling of SBR/PS.
wmcodecdps.h WAVE_FORMAT_RAW_AAC1 (0x00FF)

Dolby Audio Types

GUID Description Header Equivalent Format Tag
MEDIASUBTYPE_DOLBY_DDPLUS Dolby Digital Plus audio. wmcodecdsp.h n/a
MEDIASUBTYPE_DOLBY_AC3 Dolby Digital (AC-3) audio. ksuuids.h n/a
MEDIASUBTYPE_DOLBY_AC3_SPDIF Dolby AC-3 over S/PDIF. uuids.h WAVE_FORMAT_DOLBY_AC3_SPDIF (0x0092)
MEDIASUBTYPE_DVM DVM AC-3 codec. Used when playing an AVI files with Dolby Digital audio.
The format block is a WAVEFORMATEX structure with the format tag equal to WAVE_FORMAT_DVM.
wmcodecdsp.h WAVE_FORMAT_DVM (0x2000)
MEDIASUBTYPE_RAW_SPORT AC-3 over S/PDIF; see Remarks. uuids.h WAVE_FORMAT_RAW_SPORT (0x0240)
MEDIASUBTYPE_SPDIF_TAG_241h AC-3 over S/PDIF; see Remarks. uuids.h WAVE_FORMAT_ESST_AC3 (0x0241)

To specify padded AC-3, use the subtype MEDIASUBTYPE_DOLBY_AC3_SPDIF, which corresponds to a format tag of 0x0092 (WAVE_FORMAT_DOLBY_AC3_SPDIF). The values 0x240 and 0x241 have also been used to indicate padded AC-3, but Microsoft encourages the use of 0x0092.

Miscellaneous Audio Types

GUID Description Header Equivalent Format Tag
MEDIASUBTYPE_DRM_Audio Audio with digital rights management (DRM) protection. uuids.h WAVE_FORMAT_DRM (0x0009)
MEDIASUBTYPE_DTS Digital Theater Systems (DTS) audio.
The format block is a WAVEFORMATEX structure with the format tag equal to WAVE_FORMAT_UNKNOWN.
ksuuids.h n/a
MEDIASUBTYPE_DTS2 Digital Theater Systems (DTS) audio.
The format block is a WAVEFORMATEX structure with the format tag equal to WAVE_FORMAT_DTS2.
This subtype is equivalent to MEDIASUBTYPE_DTS but uses a different format tag.
wmcodecdsp.h WAVE_FORMAT_DTS2 (0x2001)
MEDIASUBTYPE_DVD_LPCM_AUDIO DVD audio data. ksuuids.h n/a
MEDIASUBTYPE_MPEG1AudioPayload MPEG-1 audio payload. uuids.h WAVE_FORMAT_MPEG (0x0050)
MEDIASUBTYPE_MPEG1Packet MPEG1 audio packet. uuids.h n/a
MEDIASUBTYPE_MPEG1Payload MPEG1 audio Payload. uuids.h n/a
MEDIASUBTYPE_MPEG2_AUDIO MPEG-2 audio data. ksuuids.h n/a

Audio Format Tags

The wFormatTag field in the WAVEFORMATEX structure specifies the audio format type. Media samples are generally whole number of samples as specified in the wBitsPerSample field in the WAVEFORMATEX structure. This is not necessarily true for MPEG audio samples that can come from packetized streams and are therefore not necessarily packaged on sample / frame boundaries. For MPEG audio the time stamp in a media sample is the time stamp for the first frame whose first byte is contained in the media sample.

Media subtypes are defined for each wFormatTag as follows:

  • The Data1 subfield of the subtype GUID is the same as the wFormatTag value.
  • The Data 2 field is 0.
  • The Data 3 field is 0x0010.
  • The Data 4 field is 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71.

Thus, for PCM audio the subtype GUID (defined in uuids.h as MEDIASUBTYPE_PCM) is:

{00000001-0000-0010-8000-00AA00389B71}

The CreateAudioMediaType function can be used to create an AM_MEDIA_TYPE structure from a WAVEFORMATEX structure.

Obsolete Audio Types

The following audio subtypes are obsolete and should not be used:

  • MEDIASUBTYPE_MPEG_RAW_AAC
  • MEDIASUBTYPE_PCMAudioObsolete

See also

AM_MEDIA_TYPE

Media Types