Darstellen von Formaten für IEC 61937-Übertragungen
Mit der Zunahme der Medienspeichergeräte, die komprimierte Audioformate erfordern, müssen Anwendungen eine Vielzahl neuer codierter Audioinhalte identifizieren, beschreiben und verwenden, um Inhalte von PCs an Geräte wie HDMI- oder DisplayPort-Empfänger zu übertragen.
Um einen codierten Audiodatenstrom darzustellen, der über eine IEC 61937-kompatible Schnittstelle übertragen werden soll, muss eine Anwendung Folgendes bereitstellen:
Die Merkmale eines codierten Audiodatenstroms, der übertragen werden soll.
Die Merkmale eines decodierten Audiostreams auf dem Zielgerät.
In Windows Vista und früheren Windows-Betriebssystemen kann eine Anwendung die Qualität eines Audioformats aus der Anzahl der Kanäle, der Stichprobengröße und der Datenrate eines Audiodatenstroms ableiten, der das Format verwendet. Für ein PCM-Format sind diese Informationen in den Membern nChannels, nSamplesPerSec und nAvgBytesPerSec der WAVEFORMATEX-Struktur verfügbar, die das Format angibt. Für ein Nicht-PCM-Format wurden diese drei Member zum Speichern von Informationen zu den komprimierten Daten im Audiodatenstrom aufgefordert. Daher fehlen der WAVEFORMATEX-Struktur Informationen über die effektive Anzahl von Kanälen, die Samplegröße und die Datenrate des Nicht-PCM-Audiostreams, nachdem der Stream dekomprimiert und wiedergegeben wurde. Basierend auf den Informationen in dieser Struktur kann ein Benutzer oder eine Anwendung Schwierigkeiten haben, die Qualitätsstufe des Nicht-PCM-Datenstroms ableiten zu können.
Die WAVEFORMATEX wurde auf die WAVEFORMATEXTENSIBLE-Struktur erweitert, um die zusätzlichen Datenstromeigenschaften bereitzustellen. Diese Struktur ist jedoch auch nicht ausreichend für die Beschreibung des Datenstroms für IEC 61937-Übertragungen, da er für einen einzelnen Satz von Merkmalen vorgesehen war und für unkomprimierte, mehrkanalige PCM-Daten verwendet wurde.
In Windows 7 löst das Betriebssystem dieses Problem, indem es Unterstützung für eine neue Struktur bereitstellt, WAVEFORMATEXTENSIBLE_IEC61937 die WAVEFORMATEXTENSIBLE-Struktur erweitert, um zwei Sätze von Audiodatenstrommerkmalen zu speichern: das codierte Audioformat vor der Übertragung und Merkmale des Audiodatenstroms, nachdem er decodiert wurde. Die neue -Struktur gibt explizit die effektive Anzahl von Kanälen, die Stichprobengröße und die Datenrate eines Nicht-PCM-Formats an. Mit diesen Informationen kann eine Anwendung die Qualitätsstufe des Nicht-PCM-Datenstroms ableiten, nachdem er dekomprimiert und wiedergegeben wurde.
Die WAVEFORMATEXTENSIBLE_IEC61937-Struktur wird im KsMedia.h-Header deklariert, der im Windows 7 SDK enthalten ist. Das FormatExt-Element ist die WAVEFORMATEXTENSIBLE-Struktur , die die Merkmale des zu übertragenden Datenstroms speichert. Der Format-Member der WAVEFORMATEXTENSIBLE-Struktur ist die WAVEFORMATEX-Struktur . Die Inhalte dieser WAVEFORMATEX und WAVEFORMATEXTENSIBLE geben einer Anwendung an, ob die Struktur als WAVEFORMATEXTENSIBLE_IEC61937-Struktur interpretiert werden kann. Für eine WAVEFORMATEXTENSIBLE_IEC61937-Struktur :
Der wFormatTag-Member von WAVEFORMATEX muss WAVE_FORMAT_EXTENSIBLE (
FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE
) enthalten.Der SubFormat-Member der WAVEFORMATEXTENSIBLE-Struktur gibt die GUID des zu übertragenden codierten Formats an. Gibt beispielsweise
FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
das Dolby Digital Plus-Format an. Informationen zu den unterstützten GUIDs finden Sie unter SubFormat-GUIDs.Die größe, die vom cbSize-Member des WAVEFORMATEX angegeben wird, beträgt 34 Byte. (
FormatExt.Format.cbSize = 34
). Die Gesamtgröße von WAVEFORMATEXTENSIBLE_IEC61937 beträgt 52 Byte.
Die Mitglieder dwEncodedSamplesPerSec, dwEncodedChannelCount und dwAverageBytesPerSec von WAVEFORMATEXTENSIBLE_IEC61937 beschreiben die Samplingrate, die Anzahl der Kanäle und die Bitrate in Byte des Datenstroms des Audiodatenstroms, nachdem er decodiert wurde.
SubFormat-GUIDs
In Windows 7 enthält der KsMedia.h-Header Definitionen für die SubFormat-GUIDs für die von CEA-861-D definierten komprimierten Audioformate. Die GUIDs werden im SubFormat-Element des WAVEFORMATEXTENSIBLE-Elements angegeben, das im FormatExt-Element der WAVEFORMATEXTENSIBLE_IEC61937-Struktur (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat
) angegeben ist.
Die GUIDs für die komprimierten Audioformate, die als standardcodierte IEC 61937-Audioformate verfügbar sind, sind in der folgenden Tabelle aufgeführt. Diese Formate ähneln den vorhandenen Darstellungen von Active Coding 3 (AC-3) und Digital Theater Sound (DTS) in Windows.
CEA 861-Typ | SubFormat-GUID | BESCHREIBUNG |
---|---|---|
0x00 | Verweisen Sie auf den Stream. | |
0x01 | 00000000-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_WAVEFORMATEX |
IEC 60958 PCM |
0x02 | 00000092-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL |
AC-3 |
0x03 | 00000003-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1 |
MPEG-1 (Ebene 1 & 2) |
0x04 | 00000004-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3 |
MPEG-3 (Ebene 3) |
0x05 | 00000005-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2 |
MPEG-2(multichannel) |
0x06 | 00000006-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_AAC |
Erweiterte Audiocodierung (MPEG-2/4 AAC in ADTS) |
0x07 | 00000008-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS |
DTS |
0x0a | 0000000a-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS |
Dolby Digital Plus |
0x0a | 0000010a-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS |
Dolby Atmos codiert mit Dolby Digital Plus |
0x0f | Nicht verwendet reserviert |
Die GUIDs für die komprimierten Audioformate, die in Audiobeispielpaketen mit hoher Bitrate übertragen werden, sind in der folgenden Tabelle aufgeführt.
CEA 861-Typ | SubFormat-GUID | BESCHREIBUNG |
---|---|---|
0x0b | 0000000b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD |
DTS-HD (24-Bit, 96Khz) |
0x0c | 0000000c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP |
Dolby MAT 1.0: Dolby TrueHD (MLP – Meridian Lossless Packing) – 24-Bit 192KHz/bis zu 18 MBit/s, 8 Kanäle) |
0x0c | 0000010c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20 |
Dolby MAT 2.0: Dolby TrueHD – 24-Bit-192KHz/bis zu 18 MBit/s, 8 Kanäle oder LPCM mit bis zu 24 MBit/s. |
0x0c | 0000030c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21 |
Dolby MAT 2.1: Dolby TrueHD – 24-Bit-192KHz/bis zu 18 MBit/s, 8 Kanäle oder LPCM mit bis zu 24 MBit/s. |
0x0e | 000000164-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO |
Windows Media Audio (WMA) Pro |
0x0b | 00000000b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD |
DTS HD |
0x0b | 0000010b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1 |
DTS:X E1 |
0x0b | 0000030b-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2 |
DTS:X E2 |
Der von Microsoft bereitgestellte HD Audio-Klassentreiber unterstützt DIE Formate PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro, MAT(MLP). Die GUIDs für die komprimierten Audioformate, die vom HD-Audioklassentreiber nicht unterstützt werden und von Drittanbieterlösungen implementiert werden können, sind in der folgenden Tabelle aufgeführt.
CEA 861-Typ | SubFormat GUID | BESCHREIBUNG |
---|---|---|
0x08 | 0000000008-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC |
Adaptive Transformation Acoustic Coding (ATRAC) |
0x09 | 0000000009-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO |
One-Bit Audio |
0x0d | 00000000d-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DST |
Direct Stream Transport (DST) – verlustfreie komprimierte DSD (Direct Stream Digital). |
Dolby Digital Plus Format
Wenn Dolby Digital Plus-Inhalte über IEC 60958 übertragen werden, muss die Link-Sampling-Rate das Vierfache der Abtastrate des Inhalts betragen. Dolby Digital Plus unterstützt Inhalts-Sampleraten von 32 KHz, 44,1 KHz und 48 KHz. Schnittstellen wie HDMI unterstützen keine 128 KHz (32 kHz x 4), sodass nur 44,1- und 48 KHz-Inhalts-Sampleraten unterstützt werden können.
Die von einer Anwendung in der WAVEFORMATEXTENSIBLE_IEC61937-Struktur festgelegten Werte, um das Dolby Digital Plus-Format mit einer Inhalts-Samplerate von 48 KHz darzustellen, werden im folgenden Beispiel gezeigt.
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2; // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 192000; // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 768000; // 192 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4; // 16 bits * 2 channels.
wfext.FormatExt.Format.wBitsPerSample = 16; // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34; // Indicates that Format is part of a
// WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1; // Dolby 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
wfext.dwEncodedSamplesPerSec = 48000; // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6; // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0; // Ignored for this format.
Dolby TrueHD (MAT)
Dolby TrueHD-Inhalte werden über IEC 60958 mit 176,4 kHz / 8 Kanälen (erfordert eine IEC 60958-Bildfrequenz von 705,6 kHz) für Inhalts-Sampleraten von 44,1 übertragen, 88,2 und 176,4 kHz und 192 kHz/ 8 Kanäle (die eine IEC 60958-Bildfrequenz von 768 kHz erfordern) für Inhalts-Sampleraten von 48, 96 und 192 kHz.
Die von einer Anwendung in der WAVEFORMATEXTENSIBLE_IEC61937-Struktur festgelegten Werte, um Dolby TrueHD mit einer Inhalts-Samplerate von 96 KHz darzustellen, werden in den folgenden Beispielen gezeigt.
Dolby MAT 1.0
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8; // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000; // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000; // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16; // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16; // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34; // Indicates that Format is part of a
// WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1; // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP; // This structure indicates MLP (MAT 1.0) support.
wfext.dwEncodedSamplesPerSec = 96000; // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8; // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0; // Ignored for this format.
Dolby MAT 2.0
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8; // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000; // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000; // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16; // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16; // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34; // Indicates that Format is part of a
// WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1; // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20; // This structure indicates MAT 2.0 support.
wfext.dwEncodedSamplesPerSec = 96000; // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8; // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0; // Ignored for this format.
Dolby MAT 2.1
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8; // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000; // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000; // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16; // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16; // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34; // Indicates that Format is part of a
// WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1; // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21; // This structure indicates MAT 2.1 support.
wfext.dwEncodedSamplesPerSec = 96000; // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8; // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0; // Ignored for this format.
Hinweis
Die Unterstützung für eine Version von Dolby MAT bedeutet nicht, dass Dolby MAT mit einer niedrigeren Versionsnummer unterstützt wird. Da Dolby MAT 2.1 abwärtskompatibel zu früheren Versionen von Dolby MAT ist, weist ein Klassentreiber, der die Unterstützung für Dolby MAT 2.1 angibt, in der Regel auch die Unterstützung für Dolby MAT 2.0 und Dolby MAT 1.0 an, wobei für jede Version eine separate WAVEFORMATEXTENSIBLE_IEC61937-Struktur verwendet wird.
WMA Pro
WMA Pro-Audioinhalte können in einem der vier Profile codiert werden, die in der folgenden Tabelle aufgeführt sind.
Profil | Eigenschaft – Wert | BESCHREIBUNG |
---|---|---|
M0 | Maximale Bitrate – 192000 Bps Maximale Abtastrate – 48 KHz Maximale Kanalanzahl – 2 Maximale Puffergröße – 600*1024 Bit Maximale Anzahl von Beispielen pro Frame – 2048 Maximale Bitanzahl pro Frame – 655536 |
Empfohlen für Over-the-Air-Musik und Streaming. Die maximale Bitrate in einem Audioframe beträgt 1536000 Bps. |
M1 | Maximale Bitrate – 385000 Bps Maximale Abtastrate – 48 KHz Maximale Kanalanzahl – 6 Maximale Puffergröße – 600*1024 Bit Maximale Anzahl von Beispielen pro Frame – 4096 Maximale Bitanzahl pro Frame – 131072 |
Empfohlen für Surround-Sound-Standarddefinitionsfilme. Die maximale Bitrate in einem Audioframe beträgt 1536000 Bps. |
M2 | Maximale Bitrate – 769000 Bps Maximale Abtastrate – 96 KHz Maximale Kanalanzahl – 6 Maximale Puffergröße – 1200*1024 Bit Maximale Anzahl von Beispielen pro Frame – 4096 Maximale Bitanzahl pro Frame – 131072 |
Empfohlen für HD-Filme mit Surround-Sound. Die maximale Rate in einem Audioframe beträgt 3072000 Bps. |
M3 | Maximale Bitrate – 3000000 Bps Maximale Abtastrate – 96 KHz Maximale Kanalanzahl – 8 Maximale Puffergröße – 2400*1024 Bit Maximale Anzahl von Beispielen pro Frame – 4096 Maximale Bitanzahl pro Frame – 131072 |
Empfohlen für digitales Theater. Die maximale Rate in einem Audioframe beträgt 3072000 Bps. |
Die M0- und M1-Profile passen in einen IEC 60958-Stream mit 48 KHz/16 Bit/Stereo (1536000 Bps). Die M2- und M3-Profile passen in einen IEC 60958-Stream mit 96 KHz/16 Bit/Stereo (3072000 bps).
Die Werte, die von einer Anwendung in der WAVEFORMATEXTENSIBLE_IEC61937-Struktur festgelegt werden, um WMA Pro als M2-Profil darzustellen, werden im folgenden Beispiel gezeigt.
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2; // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 96000; // Link runs at 96 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 384000; // 96 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4; // 16 bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16; // Always at 16 bits over link.
wfext.FormatExt.Format.cbSize = 34; // Indicates that Format is part of a
// WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1; // 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
wfext.dwEncodedSamplesPerSec = 96000; // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6; // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0; // Ignored for this format.
Zugehörige Themen