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.