IEC 61937 伝送の形式の表現
圧縮オーディオ形式を必要とするメディア ストレージ デバイスの増加に伴い、アプリケーションでは、PC から HDMI や DisplayPort レシーバーなどのデバイスにコンテンツを送信するために、さまざまな新しいエンコードされたオーディオ コンテンツを識別、記述、および使用する必要があります。
IEC 61937 互換インターフェイス経由で送信されるエンコードされたオーディオ ストリームを表すには、アプリケーションで以下を提供する必要があります。
送信するエンコードされたオーディオ ストリームの特性。
ターゲット デバイス上のデコードされたオーディオ ストリームの特性。
Windows Vista 以前の Windows オペレーティング システムでは、アプリケーションは、チャネルの数、サンプル サイズ、および形式を使用するオーディオ ストリームのデータ レートからオーディオ形式の品質レベルを推測することができます。 PCM 形式の場合、この情報は、形式を指定する WAVEFORMATEX 構造体の nChannels、nSamplesPerSec、および nAvgBytesPerSec メンバーから入手できます。 PCM 以外の形式の場合、これら 3 つのメンバーは、圧縮されたデータに関する情報をオーディオ ストリームに格納するようにコマンドが実行されています。 このため、WAVEFORMATEX 構造体には、ストリームの圧縮解除と再生後の非 PCM オーディオ ストリームの有効なチャネル数、サンプル サイズ、およびデータ レートに関する情報が不足しています。 この構造の情報に基づいて、ユーザーまたはアプリケーションが、非 PCM ストリームの品質レベルを推測するのが困難な場合があります。
WAVEFORMATEX は、追加のストリーム特性を提供するために WAVEFORMATEXTENSIBLE 構造体に拡張されました。 ただし、この構造も、単一の特性セットを表し、非圧縮のマルチチャネル PCM データに使用されるため、IEC 61937 伝送のストリームを記述する場合に適切なものではありません。
Windows 7 では、オペレーティング システムは、WAVEFORMATEXTENSIBLE 構造体を拡張して 2 セットのオーディオ ストリーム特性 (転送前のエンコードされたオーディオ形式とデコード後のオーディオ ストリームの特性) を格納する新しい構造体、WAVEFORMATEXTENSIBLE_IEC61937 のサポートを提供することで、この問題に対処しています。 新しい構造体は、非 PCM 形式の有効なチャネル数、サンプル サイズ、およびデータ レートを明示的に指定します。 この情報を使用するとアプリケーションでは、圧縮解除して再生した後に、PCM 以外のストリームの品質レベルを推測できます。
WAVEFORMATEXTENSIBLE_IEC61937 構造体は、Windows 7 SDK に含まれる KsMedia.h ヘッダーで宣言されています。 FormatExt メンバーは、送信するストリームの特性を格納する WAVEFORMATEXTENSIBLE 構造体です。 WAVEFORMATEXTENSIBLE 構造体の Format メンバーは、WAVEFORMATEX 構造体です。 この WAVEFORMATEX および WAVEFORMATEXTENSIBLE の内容は、構造体を WAVEFORMATEXTENSIBLE_IEC61937 構造体として解釈できるかどうかをアプリケーションに示します。 WAVEFORMATEXTENSIBLE_IEC61937 構造体の場合:
WAVEFORMATEX の wFormatTag メンバーには、WAVE_FORMAT_EXTENSIBLE (
FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE
) が含まれている必要があります。WAVEFORMATEXTENSIBLE 構造体の SubFormat メンバーは、送信するエンコードされた形式の GUID を指定します。 たとえば、
FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
は、Dolby Digital Plus 形式を示します。 サポートされている GUID については、「SubFormat GUID」を参照してください。WAVEFORMATEX の 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 メンバーで指定された WAVEFORMATEXTENSIBLE の SubFormat メンバーで指定されます。
標準の IEC 61937 でエンコードされたオーディオ形式として使用できる圧縮オーディオ形式の GUID を、次の表に示しています。 これらの形式は、Windows の既存の Active Coding 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 ビット、96 Khz) |
0x0c | 0000000c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP |
Dolby MAT 1.0: Dolby TrueHD (MLP: メリディアン ロスレス パッキング) – 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 チャネル、または最大 24 Mbps の LPCM。 |
0x0c | 0000030c-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21 |
Dolby MAT 2.1: Dolby TrueHD – 24 ビット 192KHz/最大 18 Mbps、8 チャネル、または最大 24 Mbps の LPCM。 |
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 オーディオ クラス ドライバーは、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 |
1 ビット オーディオ |
0x0D | 0000000d-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DST |
ダイレクト ストリーム トランスポート (DST)—可逆圧縮 DSD (ダイレクト ストリーム デジタル)。 |
Dolby Digital Plus 形式
Dolby Digital Plus コンテンツが IEC 60958 経由で送信される場合、リンク サンプリング レートはコンテンツのサンプリング レートの 4 倍である必要があります。 Dolby Digital Plus は、32 KHz、44.1 KHz、48 KHz のコンテンツ サンプル レートをサポートしています。 HDMI などのインターフェイスは、128 KHz (32 KHz x 4) をサポートしていないため、サポートできるコンテンツ サンプル レートが 44.1 および 48 KHz のみとなっています。
次の例では、48 KHz のコンテンツ サンプル レートで Dolby Digital Plus 形式を表す WAVEFORMATEXTENSIBLE_IEC61937 構造体のアプリケーションによって設定された値を示しています。
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 コンテンツは、コンテンツのサンプルレートが 44.1、88.2、176.4kHz の場合は、176.4 kHz/8 チャネル (IEC 60958 フレーム レート 705.6 kHz が必要) で、コンテンツのサンプルレートが 48、96、192 kHz の場合は 192kHz/8 チャンネル (IEC 60958 フレームレート 768 kHz が必要) で、IEC 60958 経由で伝送されます。
次の例では、96 KHz のコンテンツ サンプル レートで Dolby TrueHD を表すために、WAVEFORMATEXTENSIBLE_IEC61937 構造体のアプリケーションによって設定された値を示しています。
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.
Note
あるバージョンの Dolby MAT のサポートは、それより低いバージョン番号の Dolby MAT のサポートを意味するものではありません。 Dolby MAT 2.1 は、以前のバージョンの Dolby MAT と下位互換性があるため、Dolby MAT 2.1 のサポートを示すクラス ドライバーは、通常、ドルビー MAT 2.0 と Dolby MAT 1.0 をサポートしていることも示し、バージョンごとに個別の WAVEFORMATEXTENSIBLE_IEC61937 構造体が使用されます。
WMA Pro
WMA Pro オーディオ コンテンツは、次の表に示す 4 つのプロファイルのいずれかでエンコードできます。
プロフィール | プロパティ - 値 | 説明 |
---|---|---|
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 ストリームに収まります。
次の例では、WMA Pro を M2 プロファイルとして表すために、WAVEFORMATEXTENSIBLE_IEC61937 構造体のアプリケーションによって設定された値を示しています。
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.
関連トピック