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.

Geräteformate