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:
|
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.
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 |
|