AAC-Decoder

Der Microsoft Media Foundation-AAC-Decoder ist eine Media Foundation-Transformation , die die folgenden AAC-Profile (Advanced Audio Coding) und High Efficiency AAC (HE-AAC) decodiert:

  • MPEG-2 AAC Low Complexity (LC)-Profil (Multichannel).
  • MPEG-4 HE-AAC v1 (Mehrkanal) mit AAC-LC-Kern.
  • MPEG-4 HE-AAC v2 (Stereo) mit AAC-LC-Kern.

Der AAC-Decoder unterstützt sowohl unformatierte AAC-Streams ohne Header als auch AAC in einem Audiodatentransportstream (ADTS).

Ab Windows 8 unterstützt der AAC-Decoder auch die Decodierung von MPEG-4-Audiotransportstreams mit einer Multiplexebene (LATM) und einer Synchronisierungsebene (LOAS). Es kann auch einen LATM/LOAS-Stream in ADTS konvertieren.

Klassenbezeichner

Der Klassenbezeichner (CLSID) des AAC-Encoders ist CLSID_CMSAACDecMFT, definiert in der Headerdatei wmcodecdsp.h.

Medientypen

Der AAC-Decoder unterstützt die folgenden Medientypen.

Eingabetypen

Der AAC-Decoder unterstützt die folgenden Audiountertypen:

Subtype BESCHREIBUNG Header
MFAudioFormat_AAC Raw-AAC oder ADTS-AAC.
Für diesen Untertyp gibt der Medientyp die Abtastrate und die Anzahl der Kanäle vor der Anwendung von SBR-Tools (Spektralbandreplikation) und parametrischen Stereotools (PS) an, sofern vorhanden. Der Effekt des SBR-Tools besteht darin, die decodierte Abtastrate relativ zur AAC-LC-Kern-Abtastrate zu verdoppeln. Der Effekt des PS-Tools besteht darin, Stereo aus einem Monokanal-AAC-LC-Stream zu decodieren.
Dieser Untertyp entspricht MEDIASUBTYPE_MPEG_HEAAC, der in wmcodecdsp.h definiert ist. Weitere Informationen finden Sie unter Audiountertyp-GUIDs.
Die MPEG-4-Dateiquelle und der ADTS-Parser geben diesen Untertyp aus.
mfapi.h
MEDIASUBTYPE_RAW_AAC1 Unformatierter AAC.
Dieser Untertyp wird für AAC in einer AVI-Datei verwendet, deren Audioformattag WAVE_FORMAT_RAW_AAC1 (0x00FF) entspricht.
Für diesen Untertyp gibt der Medientyp die Samplerate und die Anzahl der Kanäle an, nachdem die SBR- und PS-Tools angewendet wurden, sofern vorhanden.
wmcodecdsp.h

Um den AAC-Decoder zu konfigurieren, legen Sie die folgenden Attribute für den Eingabemedientyp fest.

attribute BESCHREIBUNG Bemerkungen
MF_MT_MAJOR_TYPE Haupttyp. Muss MFMediaType_Audio sein.
MF_MT_SUBTYPE Audiountertyp. Ausführliche Informationen finden Sie in der vorherigen Beschreibung.
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION Audioprofil und -ebene.
Optional. Gilt nur für MFAudioFormat_AAC.
Der Wert dieses Attributs ist das Feld audioProfileLevelIndication , wie in ISO/IEC 14496-3 definiert.
Wenn unbekannt, legen Sie auf Null oder 0xFE ("kein Audioprofil angegeben") fest.
MF_MT_AAC_PAYLOAD_TYPE Der Nutzlasttyp.
Gilt nur für MFAudioFormat_AAC. Der Decoder unterstützt die folgenden Nutzlasttypen:
  • 0: Roher AAC. Der Stream enthält nur raw_data_block()-Elemente, wie in MPEG-2 definiert.
  • 1: ADTS. Der Stream enthält eine adts_sequence(), wie von MPEG-2 definiert. Nur ein raw_data_block() pro adts_frame() ist zulässig.
  • 3: Audiotransportdatenstrom mit einer Synchronisierungsebene (LOAS) und einer Multiplexebene (LATM). Von den drei LOAS-Typen wird nur AudioSyncStream unterstützt. Die Multiplexebene ist AudioMuxElement, die auf ein Audioprogramm und eine Ebene beschränkt ist.
MF_MT_AAC_PAYLOAD_TYPE ist optional. Wenn dieses Attribut nicht angegeben ist, wird der Standardwert 0 verwendet, der angibt, dass der Stream nur raw_data_block Elemente enthält.
MF_MT_AUDIO_BITS_PER_SAMPLE Gewünschte Bittiefe des decodierten PCM-Audios.
MF_MT_AUDIO_CHANNEL_MASK Gibt die Zuweisung von Audiokanälen zu Lautsprecherpositionen an. Optional. Weitere Informationen finden Sie unter Formateinschränkungen.
MF_MT_AUDIO_NUM_CHANNELS Anzahl der Kanäle, einschließlich des LFE-Kanals (Low Frequency), falls vorhanden.
Die Interpretation dieses Werts hängt vom Medienuntertyp ab, wie zuvor beschrieben.
MF_MT_AUDIO_SAMPLES_PER_SECOND Abtastrate in Stichproben pro Sekunde.
Die Interpretation dieses Werts hängt vom Medienuntertyp ab, wie zuvor beschrieben.
MF_MT_USER_DATA Zusätzliche Formatinformationen. Der Wert dieses Attributs hängt vom Untertyp ab.
  • MFAudioFormat_AAC: Enthält den Teil der HEAACWAVEINFO-Struktur , der nach der WAVEFORMATEX-Struktur (also nach dem wfx-Element ) angezeigt wird. Es folgen die AudioSpecificConfig()-Daten gemäß ISO/IEC 14496-3.
  • MEDIASUBTYPE_RAW_AAC1: Enthält die AudioSpecificConfig()-Daten. Diese Daten müssen angezeigt werden. andernfalls lehnt der Decoder den Medientyp ab.
Die Länge der AudioSpecificConfig()-Daten beträgt 2 Bytes für AAC-LC oder HE-AAC mit impliziter Signalisierung von SBR/PS. Es ist mehr als 2 Bytes für HE-AAC mit expliziter Signalisierung von SBR/PS.
Der in AudioSpecificConfig() definierte Wert von audioObjectType muss 2 sein, was AAC-LC angibt. Der Wert von extensionAudioObjectType muss für SBR 5 oder 29 für PS sein.

Ausgabetypen

Der Decoder unterstützt die folgenden Ausgabetypen:

Subtype BESCHREIBUNG
MFAudioFormat_Float IEEE-Gleitkommaaudio.
MFAudioFormat_PCM 16-Bit-PCM-Audio.
MFAudioFormat_AAC Erfordert Windows 8.
Dieser Ausgabetyp kann verwendet werden, um einen AAC-Stream im LOAS/LATM-Format in das ADTS-Format zu konvertieren.
Um einen LOAS/LATM-Stream in einen ADTS-Stream zu konvertieren, legen Sie den Eingabetyp auf MFAudioFormat_AAC mit Nutzlasttyp 3 (LOAS) fest. Legen Sie dann den Ausgabetyp auf MFAudioFormat_AAC mit Nutzlasttyp 1 (ADTS) fest. Der Decoder formatiert den Conainter neu, ohne den Bitstrom zu decodieren.
Hinweis: Der Decoder registriert MFAudioFormat_AAC nicht als Ausgabetyp. Wenn die Anwendung den Eingabetyp jedoch wie beschrieben festlegt, gibt die IMFTransform::GetOutputAvailableType-MethodeMFAudioFormat_AAC in der Liste der verfügbaren Ausgabetypen zurück.

Wenn der Eingabedatenstrom mehr als zwei Kanäle enthält, bietet der AAC-Decoder zwei Optionen für das Ausgabeformat:

  • Die gleiche Kanalkonfiguration wie der Eingabetyp.
  • Stereo nach unten.

Formateinschränkungen

Die decodierte Audiosamplingrate muss eine der folgenden sein, nachdem SBR angewendet wurde (falls vorhanden):

  • 8 kHz
  • 11,025 kHz
  • 12 kHz
  • 16 kHz
  • 22,05 kHz
  • 24 kHz
  • 32 kHz
  • 44,1 kHz
  • 48 kHz

Samplingraten über 48 kHz werden nicht unterstützt.

Der Decoder unterstützt bis zu 6 Audiokanäle. Für jede Lautsprecherkonfiguration erwartet der Decoder, dass die syntaktischen AAC-Elemente in einer bestimmten Reihenfolge angezeigt werden. In der folgenden Tabelle sind die unterstützten Sprecherkonfigurationen aufgeführt. In der dritten Spalte der Tabelle werden die erwarteten syntaktischen Elemente und ihre Reihenfolge mit der folgenden Notation aufgeführt:

  • <SCE1>: Die single_channel_element (SCE), die dem frontzentrierten Lautsprecher zugeordnet ist.
  • <SCE2>: Die SCE, die dem Rückmittellautsprecher zugeordnet ist.
  • <CPE1>: Die channel_pair_element (CPE), die den Frontlautsprechern zugeordnet ist.
  • <CPE2>: Die CPE, die den hinteren (oder seitenseitigen) Lautsprechern zugeordnet ist
  • <LFE>: Die lfe_channel_element (LFE).

Weitere Informationen zu diesen syntaktischen Elementen finden Sie unter ISO/IEC 13818-7.

Konfiguration Kanalmaske Syntaktische AAC-Elemente
Mono SPEAKER_FRONT_CENTER <SCE1>
Stereo oder Dual Mono | SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHT <CPE1>
2/1 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_BACK_CENTER <CPE1><SCE1>
2/2 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <CPE1><CPE2>
3/0 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER <SCE1><CPE1>
3/1 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTERSPEAKER_BACK_CENTER <SCE1><CPE1><SCE2>
3/2 | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <SCE1><CPE1><CPE2>
3/2 + LFE | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT <SCE1><CPE1><CPE2><LFE>

Bei unformatierten AAC muss jedes Eingabebeispiel genau einen vollständigen komprimierten AAC-Frame enthalten.

Bei ADTS kann jedes Eingabebeispiel mehrere Audioframes enthalten, d. h. Teilframes, d. h. Frames können Beispielgrenzen überschreiten. Auf jeden ADTS-Header muss ein AAC-Frame folgen.

Der AAC-Decoder unterstützt keine der folgenden Optionen:

  • Hauptprofil, Sample-Rate skalierbares Profil (SRS) oder LTP-Profil (Long Term Prediction).
  • Audiodatenaustauschformat (ADIF).
  • LATM/LAOS-Transportstreams.
  • Kopplung von Kanalelementen (CCEs). Der Decoder überspringt Audioframes mit CCEs.
  • AAC-LC mit einer Framegröße von 960 Stichproben. Es werden nur 1024-Beispielframes unterstützt.

Transformieren von Attributen

Der AAC-Decoder implementiert die IMFTransform::GetAttributes-Methode . Anwendungen können diese Methode verwenden, um die folgenden Attribute abzurufen oder festzulegen.

attribute BESCHREIBUNG
CODECAPI_AVDecAudioDualMono Gibt an, ob 2-Kanal-Audio als Stereo- oder Dual-Mono-Audio codiert wird. Als schreibgeschützt behandeln.
CODECAPI_AVDecAudioDualMonoReproMode Gibt an, wie der Decoder duales Monoaudio reproduziert. Der Standardwert ist eAVDecAudioDualMonoReproMode_LEFT_MONO: Ausgabe Ch1 an den linken und rechten Lautsprecher.
Anwendungen können diese Eigenschaft festlegen, um das Standardverhalten zu ändern.
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE Der AAC-Decoder verarbeitet keine dynamischen Formatänderungen und muss geleert oder geleert werden, bevor ein neuer Eingabemedientyp festgelegt wird. Behandeln Sie dieses Attribut als schreibgeschützt.
Hinweis: Der AAC-Decoder meldet fälschlicherweise den Wert TRUE für dieses Attribut.
In Windows 7 meldet der Decoder fälschlicherweise den Wert TRUE für dieses Attribut. In Windows 8 meldet der Decoder FALSE, was der richtige Wert ist.

Beispielmedientypen

Hier sehen Sie ein Beispiel für den Eingabemedientyp, der für einen 6-Kanal- und 48-kHz-AAC-LC-Stream mit einer unformatierten AAC-Nutzlast erforderlich ist:

attribute Wert
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_AAC
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 6
MF_MT_AAC_PAYLOAD_TYPE 0
MF_MT_USER_DATA {0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb0}
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 0x2a (optional)

Die ersten 12 Byte MF_MT_USER_DATA entsprechen den folgenden HEAACWAVEINFO-Strukturelementen :

  • wPayloadType = 0 (Unformatierter AAC)
  • wAudioProfileLevelIndication = 0x2a (AAC-Profil, Ebene 4)
  • wStructType = 0

Die letzten beiden Bytes von MF_MT_USER_DATA enthalten den Wert von AudioSpecificConfig(), wie von MPEG-4 definiert.

  • AudioSpecificConfig.audioObjectType = 2 (AAC LC) (5 Bits)
  • AudioSpecificConfig.samplingFrequencyIndex = 3 (4 Bits)
  • AudioSpecificConfig.channelConfiguration = 6 (4 Bits)
  • GASpecificConfig.frameLengthFlag = 0 (1 Bit)
  • GASpecificConfig.dependsOnCoreCoder = 0 (1 Bit)
  • GASpecificConfig.extensionFlag = 0 (1 Bit)

Verwenden Sie bei diesem Eingabetyp den folgenden Ausgabemedientyp, um 6-Kanal- und 32-Bit-Gleitkomma-PCM-Audiodaten vom Decoder abzurufen:

attribute Wert
MF_MT_MAJOR_TYPE MFMediaType_Audio
MF_MT_SUBTYPE MFAudioFormat_Float
MF_MT_AUDIO_BITS_PER_SAMPLE 32
MF_MT_AUDIO_SAMPLES_PER_SECOND 48000
MF_MT_AUDIO_NUM_CHANNELS 6
MF_MT_AUDIO_AVG_BYTES_PER_SECOND 1152000 (optional)
MF_MT_AUDIO_BLOCK_ALIGNMENT 24 (optional)
MF_MT_AUDIO_CHANNEL_MASK 0x3f (optional)

Wenn die Plattformupdateergänzung für Windows Vista installiert ist, ist der AAC-Audiodecoder unter Windows Vista verfügbar, auf Windows Vista kann jedoch nur über den Quellleser zugegriffen werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2008 R2 [nur Desktop-Apps]
DLL
Msmpeg2adec.dll unter Windows 7;
MSAudDecMFT.dll unter Windows 8

Weitere Informationen

Codec-Objekte

AAC-Medientypen

Audiomedientypen

Microsoft MPEG-1/DD/AAC Audio Decoder

MPEG-4-Unterstützung in Media Foundation

Unterstützte Medienformate in Media Foundation