IEC 61937 伝送の形式の表現

圧縮オーディオ形式を必要とするメディア ストレージ デバイスの増加に伴い、アプリケーションでは、PC から HDMI や DisplayPort レシーバーなどのデバイスにコンテンツを送信するために、さまざまな新しいエンコードされたオーディオ コンテンツを識別、記述、および使用する必要があります。

IEC 61937 互換インターフェイス経由で送信されるエンコードされたオーディオ ストリームを表すには、アプリケーションで以下を提供する必要があります。

  • 送信するエンコードされたオーディオ ストリームの特性。

  • ターゲット デバイス上のデコードされたオーディオ ストリームの特性。

Windows Vista 以前の Windows オペレーティング システムでは、アプリケーションは、チャネルの数、サンプル サイズ、および形式を使用するオーディオ ストリームのデータ レートからオーディオ形式の品質レベルを推測することができます。 PCM 形式の場合、この情報は、形式を指定する WAVEFORMATEX 構造体の nChannelsnSamplesPerSec、および 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 構造体の場合:

  • WAVEFORMATEXwFormatTag メンバーには、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_IEC61937dwEncodedSamplesPerSecdwEncodedChannelCountdwAverageBytesPerSec メンバーは、デコード後のオーディオ ストリームのストリームのサンプリング レート、チャネル数、バイト単位でのビット レートを記述します。

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.

デバイス形式