Darstellen von Formaten für IEC 61937-Übertragungen

Mit dem Anstieg der Medienspeichergeräte, die komprimierte Audioformate erfordern, müssen Anwendungen eine Vielzahl von neuen codierten Audioinhalten identifizieren, beschreiben und verwenden, um Inhalte von PCs an Geräte wie DENCS- oder DisplayPort-Empfänger zu übertragen.

Um einen codierten Audiostream darzustellen, der über eine IEC 61937-kompatible Schnittstelle übertragen werden soll, muss eine Anwendung:

  • Die Merkmale eines codierten Audiodatenstroms, der übertragen werden soll.

  • Die Merkmale eines decodierten Audiodatenstroms auf dem Zielgerät.

In Windows Vista und früheren Windows Betriebssystemen kann eine Anwendung die Qualitätsstufe eines Audioformats von 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 angeben. Für ein Nicht-PCM-Format wurden diese drei Member dazu aufgefordert, Informationen zu den komprimierten Daten im Audiostream zu speichern. Daher fehlen in der WAVEFORMATEX-Struktur Informationen über die effektive Anzahl von Kanälen, die Stichprobengröße und die Datenrate des Nicht-PCM-Audiodatenstroms, nachdem der Stream dekomprimiert und wiedergegeben wurde. Basierend auf den Informationen in dieser Struktur kann es für einen Benutzer oder eine Anwendung schwierig sein, den Qualitätsgrad des Nicht-PCM-Streams hergeleitet zu werden.

WAVEFORMATEX wurde auf die WAVEFORMATEXTENSIBLE-Struktur erweitert, um die zusätzlichen Streameigenschaften bereitzustellen. Diese Struktur ist jedoch auch nicht ausreichend, um den Stream für IEC 61937-Übertragungen zu beschreiben, da er einen einzelnen Satz von Merkmalen darstellen und für nicht komprimierte PCM-Daten mit mehreren Kanälen verwendet werden sollte.

In Windows 7 löst das Betriebssystem dieses Problem, indem es unterstützung für eine neue Struktur bereitstellt: WAVEFORMATEXTENSIBLE _ IEC61937, die die WAVEFORMATEXTENSIBLE-Struktur erweitert, um zwei Sätze von Audiodatenstrommerkmalen zu speichern: das codierte Audioformat vor der Übertragung und die 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 den Qualitätsgrad des Nicht-PCM-Streams ableiten, nachdem er dekomprimiert und wiedergegeben wurde.

Die WAVEFORMATEXTENSIBLE _ IEC61937-Struktur wird im KsMedia.h-Header deklariert, der im Windows 7 SDK enthalten ist. Der FormatExt-Member ist die WAVEFORMATEXTENSIBLE-Struktur, in der die Merkmale des zu übertragenden Streams gespeichert werden. Der Format-Member der WAVEFORMATEXTENSIBLE-Struktur ist die WAVEFORMATEX-Struktur. Der Inhalt dieser WAVEFORMATEX- und WAVEFORMATEXTENSIBLE-Struktur gibt 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. Die unterstützten GUIDs finden Sie unter SubFormat-GUIDs.

  • Die durch den cbSize-Member von WAVEFORMATEX angegebene Größe beträgt 34 Bytes. (FormatExt.Format.cbSize = 34). Die Gesamtgröße von WAVEFORMATEXTENSIBLE _ IEC61937 beträgt 52 Bytes.

Die Member dwEncodedSamplesPerSec, dwEncodedChannelCount und dwAverageBytesPerSec von WAVEFORMATEXTENSIBLE _ IEC61937 beschreiben die Samplingrate, die Anzahl der Kanäle und die Bitrate in Bytes des Streams des Audiostreams, nachdem er decodiert wurde.

SubFormat-GUIDs

In Windows 7 enthält der Header KsMedia.h Definitionen für die SubFormat-GUIDs für die komprimierten Audioformate, die von CEA-861-D definiert werden. Die GUIDs werden im SubFormat-Element von WAVEFORMATEXTENSIBLE angegeben, angegeben im FormatExt-Element der WAVEFORMATEXTENSIBLE _ IEC61937-Struktur ( WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat ).

Die GUIDs für die komprimierten Audioformate, die als IEC 61937-codierte Standardaudioformate verfügbar sind, sind in der folgenden Tabelle aufgeführt. Diese Formate ähneln den vorhandenen Darstellungen von Active Coding 3 (AC-3) und Digital Sounds (DTS) in Windows.

CEA 861-Typ SubFormat-GUID BESCHREIBUNG
0x00 Weitere Informationen finden Sie im Stream.
0x01 00000000-0000-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ WAVEFORMATEX
IEC 60958 PCM
0x02 00000092-0000-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DOLBY _ DIGITAL
AC-3
0x03 00000003-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ MPEG1
MPEG-1 (Layer 1 & 2)
0x04 00000004-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ MPEG3
MPEG-3 (Ebene 3)
0x05 00000005-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ MPEG2
MPEG-2(multichannel)
0x06 00000006-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ AAC
Erweiterte Audiocodierung (MPEG-2/4 AAC in ADTS)
0x07 00000008-0000-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DTS
DTS
0x0A 0000000a-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DOLBY DIGITAL _ _ PLUS
Dolby Digital Plus
0x0A 0000010a-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DOLBY DIGITAL PLUS _ _ _ ATMOS
Dolby Atmos-codiert mit Dolby Digital Plus
0x0b 0000000b-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DTS _ HD
DTS HD
0x0b 0000010b-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DTSX _ E1
DTS:X E1
0x0b 0000030b-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DTSX _ E2
DTS:X E2
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-UNTERTYP _ IEC61937 _ DTS _ HD
DTS-HD (24-Bit, 96 KHz)
0x0c 0000000c-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DOLBY _ MLP
Dolby MAT 1.0:
Dolby TrueHD (MLP – Verlustloses Packen von Meridianen) – 24-Bit-192KHz/bis zu 18 MBit/s, 8 Kanäle)
0x0c 0000010c-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DOLBY _ MAT20
Dolby MAT 2.0:
Dolby TrueHD – 24-Bit-192KHz/bis zu 18 MBit/s, 8 Kanäle oder LPCM bis zu 24 MBit/s.
0x0c 0000030c-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ DOLBY _ MAT21
Dolby MAT 2.1:
Dolby TrueHD – 24-Bit-192KHz/bis zu 18 MBit/s, 8 Kanäle oder LPCM bis zu 24 MBit/s.
0x0e 00000164-0000-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ WMA _ PRO
Windows Medienaudio (WMA) Pro

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 00000008-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ ATRAC
Adaptive Transformation Acoustic Coding (ATRAC)
0x09 00000009-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ IEC61937 _ _ ONE-BIT-AUDIO _
One-Bit Audio
0x0d 0000000d-0cea-0010-8000-00aa00389b71
_KSDATAFORMAT-UNTERTYP _ 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 Rate der Linksamplings das Vierfache der Samplingrate des Inhalts betragen. Dolby Digital Plus unterstützt Inhaltsstichprobenraten von 32 KHz, 44,1 KHz und 48 KHz. Schnittstellen wie MF unterstützen keine 128 KHz (32 KHz x 4), sodass nur 44,1- und 48-KHz-Inhaltsstichprobenraten unterstützt werden können.

Die Werte, die von einer Anwendung in der WAVEFORMATEXTENSIBLE _ IEC61937-Struktur festgelegt werden, um das Dolby Digital Plus-Format mit einer Inhaltsstichprobenrate 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-Inhalt wird über IEC 60958 mit 176,4 kHz/8 Kanälen übertragen (erfordert eine IEC 60958-Bildfrequenz von 705,6 kHz) für Inhaltsstichprobenraten von 44,1, 88,2- und 176,4 kHz- und 192 kHz/8-Kanäle (erfordert eine IEC-60958-Bildfrequenz von 768 kHz) für Inhaltsabtastraten von 48, 96 und 192 kHz.

Die Werte, die von einer Anwendung in der WAVEFORMATEXTENSIBLE _ IEC61937-Struktur festgelegt werden, um Dolby TrueHD mit einer Inhaltsstichprobenrate von 96 KHz darzustellen, sind in den folgenden Beispielen dargestellt.

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 impliziert keine Unterstützung für Dolby MAT mit einer niedrigeren Versionsnummer. Da Dolby MAT 2.1 abwärtskompatibel mit 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 auf Unterstützung für Dolby MAT 2.0 und Dolby MAT 1.0 hin, wobei für jede Version eine separate WAVEFORMATEXTENSIBLE _ IEC61937-Struktur verwendet wird.

WMA Pro

WMA Pro Audioinhalt kann in einem der vier Profile codiert werden, die in der folgenden Tabelle aufgeführt sind.

Profil Eigenschaft : Wert BESCHREIBUNG
M0 Maximale Bitrate – 192.000 Bps
Maximale Samplingrate – 48 KHz
Maximale Kanalanzahl – 2
Maximale Puffergröße – 600 * 1024 Bits
Maximale Anzahl von Stichproben pro Frame – 2048
Maximale Bits pro Frame – 655536
Empfohlen für Over-the-Air-Musik und Streaming.
Die maximale Bitrate in einem Audioframe beträgt 1536.000 Bit/s.
M1 Maximale Bitrate – 385.000 Bps
Maximale Samplingrate – 48 KHz
Maximale Kanalanzahl – 6
Maximale Puffergröße – 600 * 1024 Bits
Maximale Anzahl von Stichproben pro Frame – 4096
Maximale Bits pro Frame – 131072
Empfohlen für Surround-Sound-Standarddefinitionsvideos.
Die maximale Bitrate in einem Audioframe beträgt 1536.000 Bit/s.
M2 Maximale Bitrate – 769.000 Bps
Maximale Samplingrate – 96 KHz
Maximale Kanalanzahl – 6
Maximale Puffergröße – 1200 * 1024 Bits
Maximale Anzahl von Stichproben pro Frame – 4096
Maximale Bits pro Frame – 131072
Empfohlen für High Definition-Filme mit Umschließen.
Die maximale Rate in einem Audioframe beträgt 3072.000 Bit/s.
M3 Maximale Bitrate – 3000.000 Bps
Maximale Samplingrate – 96 KHz
Maximale Kanalanzahl – 8
Maximale Puffergröße – 2400 * 1024 Bits
Maximale Anzahl von Stichproben pro Frame – 4096
Maximale Bits pro Frame – 131072
Empfohlen für digitales Kino.
Die maximale Rate in einem Audioframe beträgt 3072.000 Bit/s.

Die Profile M0 und M1 passen in einen IEC 60958-Stream mit 48 KHz/16 Bit/Stereo (1536000 Bps). Die Profile M2 und M3 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