代表 IEC 61937 傳輸的格式

隨著需要壓縮音訊格式的媒體儲存裝置的增加,應用程式必須識別、描述及使用各種新的編碼音訊內容,將內容從計算機傳輸至 HDMI 或 DisplayPort 接收器等裝置。

若要表示要透過 IEC 61937 相容介面傳輸的編碼音訊串流,應用程式必須提供:

  • 要傳輸之編碼音訊數據流的特性。

  • 目標裝置上已譯碼音訊數據流的特性。

在 Windows Vista 和舊版 Windows 作業系統中,應用程式可以從通道數目、樣本大小,以及使用格式的音訊數據流數據速率推斷音訊格式的質量等級。 針對 PCM 格式,這項資訊可從指定格式的 NMATEX 結構的 nChannelsnSamplesPerSec 和 nAvgBytesPerSec 成員取得。 針對非 PCM 格式,這三個成員已被命令用來儲存音訊數據流中壓縮數據的相關信息。 因此,在解壓縮和播放串流之後, 非 PCM 音訊數據流的有效通道數目、樣本大小和數據速率,都缺少關於非 PCM 音訊數據流之有效數目的資訊。 根據此結構中的資訊,使用者或應用程式可能會難以推斷非 PCM 數據流的質量等級。

SEMANTICATEX 已延伸至波狀結構XTENSIBLE 結構,以提供額外的數據流特性。 不過,這個結構在描述 IEC 61937 傳輸的數據流方面也不夠充分,因為它的目的是代表一組特性,並用於未壓縮的多通道 PCM 數據。

在 Windows 7 中,操作系統會藉由提供新結構的支援來解決此問題, WAVEFORMATEXTENSIBLE_IEC61937 此結構會擴充 SEMANTICATEXTENSIBLE 結構來儲存兩組音頻串流特性:傳輸前的編碼音訊格式,以及譯碼後音頻數據流的特性。 新的 結構明確指定非 PCM 格式的有效通道數目、樣本大小和數據速率。 透過這項資訊,應用程式可以在解壓縮並播放後推斷非 PCM 數據流的質量等級。

WAVEFORMATEXTENSIBLE_IEC61937結構會在 Windows 7 SDK 隨附的 KsMedia.h 標頭中宣告。 FormatExt 成員是將數據流特性儲存為要傳輸之數據流的 SEMANTICATEXTENSIBLE 結構。 SEMANTICATEXTENSIBLE 結構的 Format 成員「超聲波」結構。 這個波波ATEX和波狀體ATEXTENSIBLE的內容會向應用程式指出結構是否可以解譯為WAVEFORMATEXTENSIBLE_IEC61937結構。 針對WAVEFORMATEXTENSIBLE_IEC61937結構:

  • 布建XwFormatTag 成員必須包含 WAVE_FORMAT_EXTENSIBLE (FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE)。

  • SEMANTICATEXTENSIBLE 結構的 SubFormat 成員會指定要傳輸之編碼格式的 GUID。 例如, FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL 表示 Dolby Digital Plus 格式。 如需支援的 GUID,請參閱 SubFormat GUID。

  • CBSize 成員所指示的大小為34個字節。 (FormatExt.Format.cbSize = 34)。 WAVEFORMATEXTENSIBLE_IEC61937的大小總計為52個字節。

WAVEFORMATEXTENSIBLE_IEC61937的 dwEncodedSamplesPerSecdwEncodedChannelCountdwAverageBytesPerSec 成員會描述音頻數據流數據流的取樣率、通道數目,以及音訊數據流數據流位元組的位元組速率。

SubFormat GUID

在 Windows 7 中,KsMedia.h 標頭包含 CEA-861-D 所定義壓縮音訊格式的 SubFormat GUID 定義。 GUID 指定於WAVEFORMATEXTENSIBLE_IEC61937結構的WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat FormatExt 成員中,於「波」ATEXTENSIBLESubFormat 成員中指定。

下表列出標準 IEC 61937 編碼音訊格式的壓縮音訊格式 GUID。 這些格式類似於 Windows 中現有的 Active Code 3 (AC-3) 和 Digital Theater Sound (DTS) 格式表示法。

CEA 861 類型 SubFormat GUID 描述
0x00 請參閱數據流。
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 (第 1 層和 2 層)
0x04 00000004-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3
MPEG-3 (第 3 層)
0x05 00000005-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2
MPEG-2(多重通道)
0x06 00000006-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_AAC
進階音訊編碼 (ADTS 中的 MPEG-2/4 AAC)
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 Digital Plus 編碼的 Dolby Atmos
0x0f 未使用的保留

 

下表列出以高比特率音訊範例封包傳輸之壓縮音訊格式的 GUID。

CEA 861 類型 SubFormat GUID 描述
0x0b 0000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS-HD (24 位,96Khz)
0x0c 0000000c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP
Dolby MAT 1.0:
Dolby TrueHD (MLP – Meridian Lossless 封裝) – 24 位 192KHz/最多 18 Mbps、8 個通道)
0x0c 0000010c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20
Dolby MAT 2.0:
Dolby TrueHD – 24 位 192KHz/最多 18 Mbps、8 個通道或 LPCM 最多 24 Mbps。
0x0c 0000030c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21
Dolby MAT 2.1:
Dolby TrueHD – 24 位 192KHz/最多 18 Mbps、8 個通道或 LPCM 最多 24 Mbps。
0x0e 00000164-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO
Windows Media Audio (WMA) Pro
0x0b 0000000b-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

 

Microsoft 提供的 HD Audio 類別驅動程式支援 PCM、AC3、DTS、AAC、Dolby Digital Plus、WMA Pro、MAT(MLP) 格式。 下表列出 HD 音訊類別驅動程式不支援之壓縮音訊格式的 GUID,並可由第三方解決方案實作。

CEA 861 類型 SubFormat GUID 描述
0x08 00000008-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC
自適性轉換聲場編碼 (ATRAC)
0x09 00000009-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO
一位音訊
0x0d 0000000d-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DST
直接串流傳輸 (DST) — 無遺失壓縮的 DSD (Direct Stream Digital)。

 

Dolby Digital Plus 格式

當 Dolby Digital Plus 內容透過 IEC 60958 傳輸時,鏈接取樣率必須是內容取樣率的四倍。 Dolby Digital Plus 支援 32 KHz、44.1 KHz 和 48 KHz 的內容取樣率。 HDMI 等介面不支援 128 KHz(32 KHz x 4),因此僅支援 44.1 和 48 KHz 內容取樣率。

下列範例顯示應用程式在 WAVEFORMATEXTENSIBLE_IEC61937 結構中設定的值,以 48 KHz 的內容取樣率表示 Dolby Digital Plus 格式。

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.

杜比 TrueHD (MAT)

Dolby TrueHD 內容會透過 IEC 60958 以 176.4 kHz / 8 通道傳輸(需要 IEC 60958 幀速率 705.6 kHz),內容取樣率為 44.1, 88.2 和 176.4 kHz 和 192 kHz / 8 通道(需要 IEC 60958 幀速率 768 kHz),內容取樣速率為 48、96 和 192 kHz。

下列範例顯示應用程式在 WAVEFORMATEXTENSIBLE_IEC61937 結構中設定的值,以 96 KHz 的內容取樣率來表示 Dolby TrueHD。

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.

注意

支援一個版本的 Dolby MAT 並不表示支援版本號碼較低的 Dolby MAT。 由於 Dolby MAT 2.1 與舊版 Dolby MAT 回溯相容,因此指出支援 Dolby MAT 2.1 的類別驅動程式通常也會指出對 Dolby MAT 2.0 和 Dolby MAT 1.0 的支援,而且每個版本都使用不同的WAVEFORMATEXTENSIBLE_IEC61937結構。

 

WMA Pro

WMA Pro 音訊內容可以在下表所列的四個配置檔之一中編碼。

設定檔 屬性 - 值 描述
M0 最大比特率 – 192000 bps
最大取樣率 – 48 KHz
最大通道計數 – 2
緩衝區大小上限 – 600*1024 位
每個畫面的最大樣本數 – 2048
每個畫面的最大位數 - 655536
建議用於無線音樂和串流。
音訊畫面中的比特率上限為1536000 bps。
M1 最大比特率 – 385000 bps
最大取樣率 – 48 KHz
最大通道計數 – 6
緩衝區大小上限 – 600*1024 位
每個畫面的最大樣本數 – 4096
每個畫面的最大位數 - 131072
建議用於環繞音效標準定義電影。
音訊畫面中的比特率上限為1536000 bps。
M2 最大比特率 – 769000 bps
最大取樣率 – 96 KHz
最大通道計數 – 6
緩衝區大小上限 – 1200*1024 位
每個畫面的最大樣本數 – 4096
每個畫面的最大位數 - 131072
建議用於環繞式高清電影。
音訊畫面的最大速率為 3072000 bps。
M3 最大比特率 – 3000000 bps
最大取樣率 – 96 KHz
最大通道計數 – 8
緩衝區大小上限 – 2400*1024 位
每個畫面的最大樣本數 – 4096
每個畫面的最大位數 - 131072
建議用於數字劇院。
音訊畫面的最大速率為 3072000 bps。

 

M0 和 M1 配置檔適合 48 KHz/16 位/立體聲 (1536000 bps) IEC 60958 數據流。 M2 和 M3 配置檔適合 96 KHz/16 位/立體聲 (3072000 bps) IEC 60958 數據流。

下列範例顯示應用程式在 WAVEFORMATEXTENSIBLE_IEC61937 結構中設定的值,以將WMA Pro 表示為 M2 配置檔。

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.

裝置格式