代表 IEC 61937 傳輸的格式
隨著需要壓縮音訊格式的媒體儲存裝置的增加,應用程式必須識別、描述及使用各種新的編碼音訊內容,將內容從計算機傳輸至 HDMI 或 DisplayPort 接收器等裝置。
若要表示要透過 IEC 61937 相容介面傳輸的編碼音訊串流,應用程式必須提供:
要傳輸之編碼音訊數據流的特性。
目標裝置上已譯碼音訊數據流的特性。
在 Windows Vista 和舊版 Windows 作業系統中,應用程式可以從通道數目、樣本大小,以及使用格式的音訊數據流數據速率推斷音訊格式的質量等級。 針對 PCM 格式,這項資訊可從指定格式的 NMATEX 結構的 nChannels、nSamplesPerSec 和 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結構:
布建X的 wFormatTag 成員必須包含 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的 dwEncodedSamplesPerSec、dwEncodedChannelCount 和 dwAverageBytesPerSec 成員會描述音頻數據流數據流的取樣率、通道數目,以及音訊數據流數據流位元組的位元組速率。
SubFormat GUID
在 Windows 7 中,KsMedia.h 標頭包含 CEA-861-D 所定義壓縮音訊格式的 SubFormat GUID 定義。 GUID 指定於WAVEFORMATEXTENSIBLE_IEC61937結構的WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat
FormatExt 成員中,於「波」ATEXTENSIBLE 的 SubFormat 成員中指定。
下表列出標準 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.
相關主題