MPEG-2-Audioencoder
Der Microsoft Media Foundation MPEG-2-Audioencoder ist eine Media Foundation-Transformation, die Mono- oder Stereoaudio in MPEG-1-Audio (ISO/IEC 11172-3) oder MPEG-2-Audio (ISO/IEC 13818-3) codiert.
Der Encoder unterstützt Layer 1- und Layer 2-Audio. MPEG-Layer 3-Audio (MP3) werden nicht unterstützt. Für MPEG-2 unterstützt der Encoder den Teil mit niedrigen Samplinghäufigkeiten (Low Sampling Frequencies, LSF) von MPEG-2-Audio. Multichannelerweiterungen werden nicht unterstützt. Der MFT gibt einen elementaren MPEG-Stream aus. Es können keine paketisierten elementaren Datenströme, Programmstreams oder Transportstreams generiert werden.
Klassenbezeichner
Der Klassenbezeichner (CLSID) des MEPG-2-Audioencoders ist CLSID _ CMPEG2AudioEncoderMFT, definiert in der Headerdatei wmcodecdsp.h.
Ausgabetypen
Der Ausgabetyp muss zuerst vor dem Eingabetyp festgelegt werden. In der folgenden Tabelle sind die erforderlichen und optionalen Attribute für den Ausgabemedientyp aufgeführt.
| Attribut | BESCHREIBUNG | Bemerkungen |
|---|---|---|
| MF_MT_MAJOR_TYPE | Haupttyp. | Erforderlich. Muss MFMediaType_Audiosein. |
| MF_MT_SUBTYPE | Audiountertyp. | Erforderlich. Muss MFAudioFormat_MPEGsein. Dieser Untertyp wird sowohl für MPEG-1- als auch MPEG-2-Audio verwendet. |
| MF_MT_AUDIO_SAMPLES_PER_SECOND | Stichproben pro Sekunde. | Erforderlich. Die folgenden Werte werden sowohl für MPEG-1 als auch für MPEG-2 unterstützt:
|
| MF_MT_AUDIO_NUM_CHANNELS | Anzahl der Kanäle. | Erforderlich. Muss entweder 1 (Mono) oder 2 (Stereo) sein. |
| MF_MT_AUDIO_CHANNEL_MASK | Gibt die Zuweisung von Audiokanälen zu Sprecherpositionen an. | Optional. Wenn diese Einstellung festgelegt ist, muss der Wert für Stereo (front left and right channels) oder 0x4 für Mono (Front-Center-Kanal) 0x3 werden. |
| MF_MT_AUDIO_AVG_BYTES_PER_SECOND | Bitrate des codierten MPEG-Streams in Bytes pro Sekunde. | Optional. Die SPEZIFIKATIONEN ISO/IEC 11172-3 und ISO/IEC 13818-3 (LSF) definieren mehrere Bitraten, abhängig von der Samplingrate, der Anzahl der Kanäle und der Audioschicht (1 oder 2). Der Encoder verwendet standardmäßig Layer 2-Audio. Wenn das MF_MT_AUDIO_AVG_BYTES_PER_SECOND Attribut nicht festgelegt ist, verwendet der Encoder die folgenden Standardbitraten:
Sie können die Bitrate auch mithilfe der ICodecAPI-Schnittstelle festlegen. Weitere Informationen finden Sie unter Hinweise. |
Wenn die optionalen Attribute nicht festgelegt sind, fügt der Encoder sie dem Medientyp hinzu, nachdem der Typ festgelegt wurde.
Eingabetypen
In der folgenden Tabelle sind die erforderlichen und optionalen Attribute für den Eingabemedientyp aufgeführt.
| Attribut | BESCHREIBUNG | Bemerkungen |
|---|---|---|
| MF_MT_MAJOR_TYPE | Haupttyp. | Erforderlich. Muss MFMediaType_Audiosein. |
| MF_MT_SUBTYPE | Audiountertyp. | Erforderlich. Muss MFAudioFormat_PCM oder MFAudioFormat_Floatsein. |
| MF_MT_AUDIO_BITS_PER_SAMPLE | Anzahl von Bits pro Audiobeispiel. | Erforderlich. Der Wert muss 16 sein, wenn der Untertyp MFAudioFormat_PCMist, oder 32, wenn der Untertyp MFAudioFormat_Floatist. |
| MF_MT_AUDIO_SAMPLES_PER_SECOND | Stichproben pro Sekunde. | Erforderlich. Muss mit dem Ausgabetyp übereinstimmen. |
| MF_MT_AUDIO_NUM_CHANNELS | Anzahl der Kanäle. | Erforderlich. Muss mit dem Ausgabetyp übereinstimmen. |
| MF_MT_AUDIO_BLOCK_ALIGNMENT | Blockausrichtung in Bytes. | Erforderlich. Berechnen Sie den Wert wie folgt:
|
| MF_MT_AUDIO_AVG_BYTES_PER_SECOND | Bitrate des codierten AC3-Streams in Bytes pro Sekunde. | Erforderlich. Muss der Blockausrichtung × Stichproben pro Sekunde entsprechen. |
| MF_MT_AUDIO_CHANNEL_MASK | Gibt die Zuweisung von Audiokanälen zu Sprecherpositionen an. | Optional. Wenn diese Einstellung festgelegt ist, muss der Wert mit dem Ausgabetyp übereinstimmen. |
| MF_MT_AUDIO_VALID_BITS_PER_SAMPLE | Anzahl der gültigen Bits von Audiodaten in jedem Audiobeispiel. | Optional. Wenn festgelegt, muss der Wert mit dem WertMF_MT_AUDIO_BITS_PER_SAMPLE. |
Der Encoder unterstützt keine Abtastratenkonvertierung oder Stereo-/Monokonvertierung. Wenn die optionalen Attribute nicht festgelegt sind, fügt der Encoder sie dem Medientyp hinzu, nachdem der Typ festgelegt wurde.
Codec-Eigenschaften
Der Encoder unterstützt die folgenden Eigenschaften über die ICodecAPI-Schnittstelle.
| Eigenschaft | BESCHREIBUNG | Standardwert |
|---|---|---|
| CODECAPI _ AVEncCommonMeanBitRate | Gibt die durchschnittliche codierte Bitrate in Bits pro Sekunde an. | Wie für das MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND-Attribut im Ausgabemedientyp beschrieben. |
| CODECAPI _ AVEncMPACodingMode | Gibt den MPEG-Audiocodierungsmodus an. | Stereo für 2-Kanal-Audio oder ein Kanal für 1-Kanal-Audio. Für 2-Kanal-Audio unterstützt der Encoder auch Dualkanal- und Gemeinsame Stereo. |
| CODECAPI _ AVEncMPACopyright | Gibt an, ob das Copyrightbit im MPEG-Audiostream festgelegt werden soll. | Kein Copyright. |
| CODECAPI _ AVEncMPAEmphasisType | Gibt den Typ des Filters zur De-Hervorhebung an, der beim Decodieren des codierten Streams verwendet werden soll. | Es wurde keine Hervorhebung angegeben. |
| AVEncMPAEnableRedundancyProtection | Gibt an, ob dem Frameheader eine zyklische Redundanzprüfung (CRC) hinzugefügt werden soll. | Eine CRC-Prüfsumme wird in den Bitstream geschrieben. |
| CODECAPI _ AVEncMPALayer | Gibt die MPEG-Audioebene an. | Layer 2-Audio. |
| CODECAPI _ AVEncMPAOriginalBitstream | Gibt an, ob für das ursprüngliche Bit im MPEG-Audiostream festgelegt werden soll. | Das "Original"-Bit ist deaktiviert. |
| CODECAPI _ AVEncMPAPrivateUserBit | Gibt an, ob für das private Benutzerbit im MPEG-Audiostream festgelegt werden soll. | Privates Benutzerbit ist deaktiviert. |
Um einen Zeiger auf die ICodecAPI-Schnittstelle zu erhalten, rufen Sie QueryInterface auf dem MFT auf.
MFT implementiert die folgenden ICodecAPI-Methoden:
Alle anderen ICodecAPI-Methoden geben E _ NOTIMPL zurück.
Hinweise
Jeder MPEG-Audioframe enthält entweder 384 (Schicht 1) oder 1152 (Schicht 2) Audiobeispiele pro Kanal. Jeder Eingabepuffer für den Encoder kann jedoch eine beliebige Anzahl von PCM-Stichproben enthalten. Die Größe jedes Eingabepuffers muss ein Vielfaches der Blockausrichtung sein. Der Encoder speichert Eingabebeispiele zwischen, bis er für einen MPEG-Audioframe ausreichend ist.
Jeder Ausgabepuffer enthält einen unformatten MPEG-Frame. Die Größe der einzelnen Ausgabepuffer hängt von der Bitrate und der Abtastrate ab.
Konfigurieren des Encoders
Führen Sie die folgenden Schritte aus, um die Standardeinstellungen für den Encoder zu ändern:
Erstellen Sie eine Instanz des Encoder-MFT.
Rufen Sie DEN TYPNTRANSFORM::GetOutputAvailableType auf, um die Liste der bevorzugten Ausgabetypen zu erhalten. Der Encoder aufzählt alle Abtastraten für Mono und Stereo. Wählen Sie basierend auf der Abtastrate und der Anzahl der Kanäle einen dieser Medientypen aus. Das MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND-Attribut gibt die Standardbitrate in Bytes pro Sekunde an.
Optional: Sie können die Standardbitrate überschreiben, indem Sie einen neuen Wert für MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND für den Ausgabemedientyp festlegen. Gültige Bitraten hängen von der Abtastrate, der Anzahl der Kanäle und der Audioebene ab.
Hinweis
An diesem Punkt des Konfigurationsprozesses verwendet der Encoder standardmäßig Layer 2-Audio und akzeptiert nur Layer-2-Bitraten. Sie können den Encoder in einem späteren Schritt auf Ebene 1 umschalten (siehe Schritt 7). Belasse in diesem Fall die Standardbitrate vorerst. Sie können ihn in Schritt 8 erneut ändern.
Rufen Sie ZUM Festlegen des Ausgabemedientyps DEN WERTTRANSFORM::SetOutputType auf. Wenn Sie ihren eigenen Wert für MF _ MT AUDIO _ _ AVG BYTES PER _ _ _ SECOND festlegen und der MFT den Ausgabemedientyp zurückweisen, liegt dies wahrscheinlich daran, dass Sie eine ungültige Bitrate angegeben haben.
Rufen Sie DEN TYP DER EINGABETRANSFORM::GetInputAvailableType auf, um den Eingabemedientyp aufzählen. Da die Abtastrate und die Anzahl der Kanäle mit dem Ausgabetyp identisch sein müssen, werden nur zwei Optionen aufzählt: 32-Bit-PCM-Eingabe mit Gleitkomma und PCM-Eingabe mit 16-Bit-Ganzzahl. Wählen Sie eine dieser Beiden aus.
Rufen Sie DEN EINGABETRANSFORM::SetInputType auf, um den Eingabemedientyp zu festlegen.
Optional: Um Layer 1-Audio zu codieren, legen Sie die CODECAPI _ AVEncMPALayer-Eigenschaft auf eAVEncMPALayer _ 1 fest.
Optional: Legen Sie zum Ändern der Bitrate die _ CODECAPI-Eigenschaft AVEncCommonMeanBitRate fest. Die Bitrate muss eine der gültigen Bitraten sein, die in den MPEG-1- oder MPEG-2-LSF-Spezifikationen aufgeführt sind. Alternativ können Sie ICodecAPI::GetParameterValues aufrufen, um basierend auf den aktuellen Einstellungen eine Liste gültiger Bitraten zu erhalten.
Optional: Bei 2-Kanal-Audio können Sie die _ CODECAPI-Eigenschaft AVEncMPACodingMode festlegen, um den Codierungsmodus in Dual-Channel- oder Joint-Stereo zu ändern. Sie können ICodecAPI::GetParameterRange aufrufen, um die gültigen Optionen zu erhalten. (Für 1-Kanal-Audio ist mono die einzige Option.)
Optional: Legen Sie eine der anderen zuvor aufgeführten ICodecAPI-Eigenschaften fest.
Es ist wichtig, die Reihenfolge dieser Schritte zu befolgen. Legen Sie insbesondere den Ausgabemedientyp fest, bevor Sie ICodecAPI-Eigenschaften ändern. Außerdem müssen Sie ICodecAPI-Eigenschaften festlegen, bevor MFT das erste Eingabebeispiel empfängt. Nachdem MFT Eingaben empfangen hat, sind die Codeceigenschaften schreibgeschützt, und ICodecAPI::SetValue gibt den Wert S FALSE _ zurück.
Unterstützte Bitraten
Der Encoder unterstützt die folgenden Bitraten.
MPEG-1
MPEG-2
Ebene 1
Layer 2-
Ebene 1
Layer 2-
32
32*
32
8
64
48*
38
16
96
56*
56
24
128
64
64
32
160
80*
80
40
192
96
96
48
224
112
112
56
256
128
128
64
288
160
144
80
320
192
160
96
352
224**
176
112
384
256**
192
128
416
230**
224
144
448
384**
256
160
- \* Nur Mono
\*\* Nur Stereo
Beispielmedientypen
Hier sehen Sie ein Beispiel für die Medientypen, die zum Codieren von 16-Bit-Ganzzahl-PCM-Stereoaudio mit 48 kHz mit der Standardbitrate erforderlich sind.
Ausgabemedientyp:
| Attribut | Wert |
|---|---|
| MF _ _ MT-HAUPTTYP _ | MFMediaType _ Audio |
| MF _ _ MT-UNTERTYP | MFAudioFormat _ MPEG |
| MF _ _ MT-AUDIOBEISPIELE _ _ PRO _ SEKUNDE | 48000 |
| MF _ MT _ AUDIO _ NUM _ CHANNELS | 2 |
Eingabemedientyp:
| Attribut | Wert |
|---|---|
| MF _ _ MT-HAUPTTYP _ | MFMediaType _ Audio |
| MF _ _ MT-UNTERTYP | MFAudioFormat _ PCM |
| MF _ _ MT-AUDIOBITS _ _ PRO _ BEISPIEL | 16 |
| MF _ _ MT-AUDIOBEISPIELE _ _ PRO _ SEKUNDE | 48000 |
| MF _ MT _ AUDIO _ NUM _ CHANNELS | 2 |
| MF _ MT _ AUDIO _ BLOCK _ ALIGNMENT | 4 |
| MF _ MT _ AUDIO _ AVG _ BYTES _ PER _ SECOND | 192000 |
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) |
[Windows 8 Nur Desktop-Apps] |
| Unterstützte Mindestversion (Server) |
Nicht unterstützt |
| DLL |
|