Windows 7 における圧縮オーディオ形式
更新日: 2009 年 4 月 28 日
ダウンロード
PDC08_CA_Compression_Formats_JPN.doc (Word 形式、124 KB)
目次:
- はじめに
- アプリケーション向けの新形式のサポート
- オーディオ ドライバーでの形式サポート
- サブフォーマットの GUID
- WAVEFORMATEXTENSIBLE_IEC61937 およびKSDATARANGE_AUDIO の例
- DD+ (Dolby Digital Plus) 形式
- Dolby TrueHD (MAT)
- WMA Pro
- 詳細情報
Kristin Carr
Microsoft Corporation
2008 年 10 月
対象:
Windows® SDK (Core Audio API)
Windows 7
要約:
このホワイトペーパーでは、IEC 61937 準拠のインターフェイス経由で送信されるエンコード済みオーディオ ストリームの形式を記述するために、アプリケーションやクラス ドライバーで使用する構造体について説明します。アプリケーションで新しい圧縮オーディオ形式を表すために、WAVEFORMATEXTENSIBLE_IEC61937 構造体 (Windows 7 で導入) を使用できます。クラス ドライバーではオーディオ形式用のデータ範囲を公開するために KSDATARANGE_AUDIO 構造体を使用できます。
法的通知:
このドキュメントは暫定版であり、このソフトウェアの最終的な製品版の発売時に実質的に変更されることがあります。
このドキュメントに記載されている情報は、このドキュメントの発行時点におけるマイクロソフトの見解を反映したものです。変化する市場状況に対応する必要があるため、このドキュメントは、記載された内容の実現に関するマイクロソフトの確約とはみなされないものとします。また、発行以降に発表される情報の正確性に関して、マイクロソフトはいかなる保証もいたしません。
このホワイト ペーパーに記載された内容は情報の提供のみを目的としており、明示、黙示または法律の規定にかかわらず、これらの情報についてマイクロソフトはいかなる責任も負わないものとします。
お客様ご自身の責任において、 適用されるすべての著作権関連法規に従ったご使用を願います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここでいう形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上のお客様の権利を制限するものではありません。
マイクロソフトは、このドキュメントに記載されている内容に関し、特許、特許申請、商標、著作権、またはその他の無体財産権を有する場合があります。別途マイクロソフトのライセンス契約上に明示の規定のない限り、このドキュメントはこれらの特許、商標、著作権、またはその他の無体財産権をお客様に許諾するものではありません。
© 2008 Microsoft Corporation. All rights reserved.
Microsoft、MS-DOS、Windows、Windows NT、Windows Server、Windows Vista、Active Directory、ActiveSync、ActiveX、Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectShow、DirectSound、DirectX、Expression、FrontPage、HighMAT、Internet Explorer、JScript、Microsoft Press、MSN、Outlook、PowerPoint、SideShow、Silverlight、Visual Basic、Visual C++、Visual InterDev、Visual J++、Visual Studio、WebTV、Windows Media、Win32、Win32s、および Zune は米国 Microsoft Corporation の米国またはその他の国における登録商標または商標です。
記載されている会社名、製品名には、各社の商標のものもあります。
1. はじめに
圧縮オーディオ形式を必要とするメディア ストレージ デバイスの増加に伴い、アプリケーションでは、コンテンツを PC から HD (High Definition) ディスクなどのデバイスに転送する際に、さまざまなエンコード済みオーディオ コンテンツを新しく識別、定義、および使用する必要が生じています。ここでは、アプリケーションやオーディオ クラス ドライバーでこうした新形式をサポートするために、Windows® 7 で加えられた変更点の概要について説明します。
ページのトップへ
2. アプリケーション向けの新形式のサポート
IEC 61937 準拠のインターフェイス経由で送信されるエンコード済みオーディオ ストリームの形式を表すには、アプリケーションで次の情報を指定する必要があります。
- 送信前のエンコード済みオーディオ ストリームの特性
- 送信先デバイスでデコード後のオーディオ ストリームの特性
Windows Vista® 以前の Windows オペレーティング システムでは、オーディオ形式を使用するオーディオ ストリームのチャンネル数、サンプル サイズ、およびデータ速度から、その形式の品質レベルをアプリケーションで推測できます。PCM 形式の場合、この情報は、形式を指定する WAVEFORMATEX 構造体の nChannels メンバー、nSamplesPerSec メンバー、および nAvgBytesPerSec メンバーから取得できます。PCM 以外の形式の場合、これら 3 つのメンバーが、オーディオ ストリームの圧縮データに関する情報を格納するために流用されています。そのため、WAVEFORMATEX 構造体では、PCM 以外のオーディオ ストリームの圧縮解除および再生後の有効なチャンネル数、サンプル サイズ、およびデータ速度に関する情報が不足します。この構造体の情報を基にすると、ユーザーやアプリケーションでは、PCM 以外のストリームの品質レベルの推測が困難になります。
そこで、WAVEFORMATEX 構造体が WAVEFORMATEXTENSIBLE 構造体に拡張され、ストリームのその他の特性を提供するようになりました。ただし、この構造体も IEC 61937 送信のストリームの記述には適していません。これは、この構造体が 1 セットの特性を表すことを目的としており、圧縮解除されたマルチチャンネル PCM データ用に使用されるためです。
Windows 7 では、オペレーティング システムでこの問題に対処するため、WAVEFORMATEXTENSIBLE_IEC61937 構造体という新しい構造体をサポートします。この構造体は WAVEFORMATEXTENSIBLE 構造体を拡張し、2 セットのオーディオ ストリームの特性 (送信前のエンコード済みオーディオ形式とデコード後のオーディオ ストリームの特性) を格納します。新しい構造体では、PCM 以外の形式の有効チャンネル数、サンプル サイズ、およびデータ速度を明確に指定できます。これらの情報を使用すれば、圧縮解除および再生後でも PCM 以外のストリームの品質レベルをアプリケーションで推測できます。
次の WAVEFORMATEXTENSIBLE_IEC61937 構造体は、Windows 7 SDK 付属の KsMedia.h ヘッダーで宣言されています。
typedef struct {
WAVEFORMATEXTENSIBLE FormatExt; // リンク経由でストリーミングされる
// エンコード済みデータの形式
DWORD dwEncodedSamplesPerSec; // デコード後のオーディオのサンプリング レート
DWORD dwEncodedChannelCount; // デコード後のオーディオのチャンネル数
DWORD dwAverageBytesPerSec; // コンテンツのビット レート (バイト単位)
// ビット レートは 0 にもできます。
} WAVEFORMATEXTENSIBLE_IEC61937, *PWAVEFORMATEXTENSIBLE_IEC61937;
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 は、DD+ (Dolby Digital Plus) 形式を表します。サポートされている GUID については、「サブフォーマットの GUID」を参照してください。
- WAVEFORMATEX 構造体の cbSize メンバーで示されるサイズは 34 バイトです (FormatExt.Format.cbSize = 34)。WAVEFORMATEXTENSIBLE_IEC61937 構造体の合計サイズは 52 バイトです。
WAVEFORMATEXTENSIBLE_IEC61937 構造体の dwEncodedSamplesPerSec メンバー、dwEncodedChannelCount メンバー、および dwAverageBytesPerSec メンバーでは、デコード後のオーディオ ストリームのサンプリング レート、チャンネル数、およびストリームのビット レート (バイト単位) を定義します。
WAVEFORMATEX 構造体および WAVEFORMATEXTENSIBLE 構造体の詳細については、Windows DDK のドキュメントを参照してください。
ページのトップへ
3. オーディオ ドライバーでの形式サポート
オーディオ ミニポート ドライバーでサポートするオーディオ形式を公開するには、ドライバーでエンドポイントの音声データのピンに関する "データ範囲" を指定します。データ範囲は、KSDATARANGE_AUDIO 構造体で表されるオーディオ形式を定義します。
次の KSDATARANGE_AUDIO 構造体は、Windows 7 SDK 付属の KsMedia.h ヘッダーで宣言されています。
typedef struct
{
KSDATARANGE DataRange;
ULONG MaximumChannels;
ULONG MinimumBitsPerSample;
ULONG MaximumBitsPerSample;
ULONG MinimumSampleFrequency;
ULONG MaximumSampleFrequency;
}KSDATARANGE_AUDIO,*PKSDATARANGE_AUDIO;
DataRange メンバーは、KSDATARANGE 構造体で初期化済みの変数です。この構造体の内容は、KSDATARANGE_AUDIO によって表されるデータ範囲の種類、およびデータ範囲のオーディオ サブフォーマットの GUID を指定します。KSDATARANGE 構造体は、圧縮解除後の LPCM コンテンツを表すことができますが、IEC 61937 送信用のエンコード済みオーディオ コンテンツの記述に限定されます。1 セットの KSDATARANGE_AUDIO 構造体で形式の機能を公開するために音声データのピンに依存するコンポーネントとの互換性を維持するようには、この構造体は拡張されていません。
Windows 7 でも、オーディオ ドライバーは引き続き 1 セットの KSDATARANGE_AUDIO 構造体を公開します。IEC 61937 形式の場合、この構造体に含まれる値は、送信前のエンコード済みオーディオ ストリームの構成を示し、デコード後のコンテンツのパラメーターは示しません。クライアント (オーディオ エンジンやアプリケーション) では、KSPROPERTY_PIN_PROPOSEDATAFORMAT プロパティおよび KSPROPERTY_PIN_DATAINTERSECTION プロパティを使用して、サンプリング レート、チャンネル数など、特定のデコーダー機能を取得できます。これらのプロパティは、指定したデータ形式がピンでサポートされているかどうかを判断するために使用します。プロパティの要求は、オーディオ クラス ドライバーが Windows 7 のオーディオ ミニポート ドライバーからプロパティを要求するのと同じ方法で処理されます。これらのプロパティは、Windows DDK および Windows SDK に付属する Ks.h で宣言されています。
注: ユーザー モードのオーディオ エンジンの IAudioClient::IsFormatSupported メソッドでは、これらのプロパティ値を使用して、特定の形式に対するエンドポイントのサポートを判断します。
KSDATARANGE_AUDIO 構造体、KSDATARANGE 構造体、および KS のプロパティの詳細については、Windows DDK のドキュメントを参照してください。
ページのトップへ
4. サブフォーマットの GUID
Windows® 7 では、KsMedia.h ヘッダーに、CEA-861-D で定義される圧縮オーディオ形式に対するサブフォーマットの GUID 定義が含まれています。GUID は、WAVEFORMATEXTENSIBLE_IEC61937 構造体の FormatExt メンバーで指定される WAVEFORMATEXTENSIBLE 構造体の SubFormat メンバーで指定されます (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat)。ドライバーの場合、GUID は KSDATARANGE_AUDIO 構造体に含まれる KSDATARANGE 構造体の SubFormat メンバーに格納されます (KSDATARANGE_AUDIO.DataRange.SubFormat)。
次の表に、標準 IEC 61937 エンコード済みオーディオ形式として使用できる圧縮オーディオ形式の GUID を示します。これらの形式は、Windows での既存の Active Coding 3 (AC-3) 形式、および Digital Theater Sound (DTS) 形式の表記に似ています。
CEA 861 の種類 |
サブフォーマットの 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 (Layer 1 & 2) |
0x04 |
00000004-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3 |
MPEG-3 (Layer 3) |
0x05 |
00000005-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2 |
MPEG-2 (マルチチャンネル) |
0x06 |
00000006-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_AAC |
Advanced Audio Coding (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 |
0x0f |
未使用 |
予約済み |
次の表に、高ビット レートのオーディオ サンプル パケットで送信される圧縮オーディオ形式の GUID を示します。
CEA 861 の種類 |
サブフォーマットの 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 |
MAT(MLP) – Meridian Lossless Packing (Dolby Digital TrueHD – 24 ビット 196 kHz/最高 18 Mbps、8 チャンネル) |
0x0e |
00000164-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO |
Windows Media オーディオ (WMA) Pro |
次の表に、HD オーディオ クラス ドライバーでサポートされていない、サードパーティ製のソリューションで実装可能な圧縮オーディオ形式の GUID を示します。
CEA 861 の種類 |
サブフォーマットの GUID |
説明 |
0x08 |
00000008-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC |
Adaptive Transform Acoustic Coding (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 |
ページのトップへ
5. WAVEFORMATEXTENSIBLE_IEC61937 および KSDATARANGE_AUDIO の例
ここでは、エンコード済みオーディオ コンテンツを IEC 61937 および IEC 60958 準拠のインターフェイス経由で送信するための WAVEFORMATEXTENSIBLE_IEC61937 構造体と KSDATARANGE_AUDIO 構造体の値の例について説明します。
a. DD+ (Dolby Digital Plus) 形式
DD+ (Dolby Digital Plus) 形式のコンテンツが IEC 60958 経由で送信される場合、リンクのサンプリング レートは、コンテンツのサンプリング レートの 4 倍でなければなりません。DD+ では、コンテンツのサンプリング レートとして 32 kHz、44.1 kHz、および 48 kHz がサポートされます。HDMI などのインターフェイスでは、128 kHz (32 kHz の 4 倍) がサポートされないため、コンテンツのサンプリング レートとしては 44.1 kHz と 48 kHz のみがサポートされます。
WAVEFORMATEXTENSIBLE_IEC61937 の例
次の例に、コンテンツのサンプリング レートが 48 kHz の DD+ 形式を表すために、アプリケーションから WAVEFORMATEXTENSIBLE_IEC61937 構造体に設定する値を示します。
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2; // IEC 60958 1 回線
wfext.FormatExt.Format.nSamplesPerSec = 192000; // リンクを 192 kHz で実行
wfext.FormatExt.Format.nAvgBytesPerSec = 768000; // 192 KHz * 4
wfext.FormatExt.Format.nBlockAlign = 4; // 16 ビット * 2 チャンネル
wfext.FormatExt.Format.wBitsPerSample = 16; // IEC 60958 経由では常に 16 ビット
wfext.FormatExt.Format.cbSize = 34; // Format が WAVEFORMATEXTENSIBLE_IEC61937
// 構造体の一部であることを示します。
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1; // ドルビー 5.1 サラウンド
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
wfext.dwEncodedSamplesPerSec = 48000; // エンコード済みコンテンツのサンプリング レート
wfext.dwEncodedChannelCount = 6; // エンコード済みデータのチャンネル数は 6
wfext.dwAverageBytesPerSec = 0; // この形式では無視されます。
KSDATARANGE_AUDIO の例
完全に機能する DD+ (Dolby Digital Plus) デコーダー (44.1 kHz および 48 kHz のサポート) を備えた HDMI シンクの場合、クラス ドライバーからは次のデータ範囲が報告されます。
次の例に、コンテンツのサンプリング レートが 48 kHz の場合にクラス ドライバーから報告されるデータ範囲を示します。
KSDATARANGE_AUDIO drDDPlus48;
drDDPlus48.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus48.DataRange.Flags = 0; // 無視されます。
drDDPlus48.DataRange.SampleSize = 0; // 無視されます。
drDDPlus48.DataRange.Reserved = 0;
drDDPlus48.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus48.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus48.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus48.MaximumChannels = 2; // IEC 60958 1 回線
drDDPlus48.MinimumBitsPerSample = 16; // すべてのエンコード済みデータは IEC 60958 を
drDDPlus48.MaximumBitsPerSample = 16; // 経由して、16 ビットで送信されます。
drDDPlus48.MinimumSampleFrequency = 192000; // 48 KHz * 4
drDDPlus48.MaximumSampleFrequency = 192000;
次の例に、コンテンツのサンプリング レートが 44.1 kHz の場合にクラス ドライバーから報告されるデータ範囲を示します。
KSDATARANGE_AUDIO drDDPlus44;
drDDPlus44.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus44.DataRange.Flags = 0 // 無視されます。
drDDPlus44.DataRange.SampleSize = 0 // 無視されます。
drDDPlus44.DataRange.Reserved = 0;
drDDPlus44.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus44.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus44.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus44.MaximumChannels = 2; // IEC 60958 1 回線
drDDPlus44.MinimumBitsPerSample = 16; // すべてのエンコード済みデータは IEC 60958 を
drDDPlus44.MaximumBitsPerSample = 16; // 経由して、16 ビットで送信されます。
drDDPlus44.MinimumSampleFrequency = 176400; // 44.1 KHz * 4
drDDPlus44.MaximumSampleFrequency = 176400;
ページのトップへ
b. Dolby TrueHD (MAT)
Dolby TrueHD コンテンツは IEC 60958 経由で送信されます。コンテンツのサンプリング レートが 44.1 kHz、88.2 kHz、および 176.4 kHz の場合は 176.4 kHz/8 チャンネル (705.6 kHz の IEC 60958 フレーム レートが必要) で送信され、コンテンツのサンプリング レートが 48 kHz、96 kHz、および 192 kHz の場合は 192 kHz/8 チャンネル (768 kHz の IEC 60958 フレーム レートが必要) で送信されます。ただし、現在のインターフェイス (HDMI など) では 705.6 kHz がサポートされないため、コンテンツのサンプリング レートとしては 48 kHz、96 kHz、および 192 kHz のみがサポートされます。したがって、HDMI シンクの Dolby TrueHD デコーダーの能力にかかわらず、クラス ドライバーでは Dolby TrueHD のサポートを示すために常に以下のデータ範囲を公開します。
WAVEFORMATEXTENSIBLE_IEC61937 の例
次の例に、コンテンツのサンプリング レートが 96 kHz の Dolby TrueHD 形式を表すために、アプリケーションから WAVEFORMATEXTENSIBLE_IEC61937 構造体に設定する値を示します。
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8; // IEC 60958 4 回線
wfext.FormatExt.Format.nSamplesPerSec = 192000; // リンクは 192 kHz で実行
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000; // 192 KHz * 16
wfext.FormatExt.Format.nBlockAlign = 16; // 16 ビット * 8 チャンネル
wfext.FormatExt.Format.wBitsPerSample = 16; // IEC 60958 経由では常に 16 ビット
wfext.FormatExt.Format.cbSize = 34; // Format が WAVEFORMATEXTENSIBLE_IEC61937
// 構造体の一部であることを示します。
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1; // ドルビー 7.1 サラウンド
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP;
wfext.dwEncodedSamplesPerSec = 96000; // エンコード済みコンテンツのサンプリング レート
wfext.dwEncodedChannelCount = 8; // エンコード済みデータのチャンネル数は 8
wfext.dwAverageBytesPerSec = 0; // この形式では無視されます。
KSDATARANGE_AUDIO の例
HDMI シンクの Dolby TrueHD デコーダーの能力にかかわらず、クラス ドライバーでは Dolby TrueHD のサポートを表すために常に次のデータ範囲を公開します。
KSDATARANGE_AUDIO drDTHD;
drDTHD.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDTHD.DataRange.Flags = 0; // 無視されます。
drDTHD.DataRange.SampleSize = 0; // 無視されます。
drDTHD.DataRange.Reserved = 0;
drDTHD.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDTHD.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP;
drDTHD.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDTHD.MaximumChannels = 8; // IEC 60958 4 回線
drDTHD.MinimumBitsPerSample = 16; // すべてのエンコード済みデータは IEC 60958
drDTHD.MaximumBitsPerSample = 16; // を経由して、16 ビットで送信されます。
drDTHD.MinimumSampleFrequency = 192000; // すべての Dolby True-HD は
drDTHD.MaximumSampleFrequency = 192000; // 192 kHz で送信されます。
ページのトップへ
c. WMA Pro
WMA Pro オーディオ コンテンツは、次の表に示す 4 種類のプロファイルのいずれかでエンコードできます。
プロファイル |
プロパティ: 値 |
説明 |
M0 |
最高ビット レート: 192000 bps
最高サンプリング レート: 48 kHz
最大チャンネル数: 2
最大バッファー サイズ: 600*1024 ビット
フレームあたりの最大サンプル数: 2048
フレームあたりの最大ビット数: 65536 |
地上波での音楽やストリーミングにお勧めです。
オーディオ フレームの最高ビット レートは 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 の例
次の例に、M2 プロファイルとして WMA Pro 形式を表すために、アプリケーションから WAVEFORMATEXTENSIBLE_IEC61937 構造体に設定する値を示します。
WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2; // IEC 60958 1 回線
wfext.FormatExt.Format.nSamplesPerSec = 96000; // リンクは 96 kHz で実行
wfext.FormatExt.Format.nAvgBytesPerSec = 384000; // 96 KHz * 4
wfext.FormatExt.Format.nBlockAlign = 4; // 16 ビット * 8 チャンネル
wfext.FormatExt.Format.wBitsPerSample = 16; // リンク経由では常に 16 ビット
wfext.FormatExt.Format.cbSize = 34; // Format が WAVEFORMATEXTENSIBLE_IEC61937
// 構造体の一部であることを示します。
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1; // 5.1 サラウンド
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
wfext.dwEncodedSamplesPerSec = 96000; // エンコード済みコンテンツのサンプリング レート
wfext.dwEncodedChannelCount = 6; // エンコード済みデータのチャンネル数は 6
wfext.dwAverageBytesPerSec = 0; // この形式では無視されます。
KSDATARANGE_AUDIO の例
クラス ドライバーからは、プロファイルごとに次のデータ範囲が報告されます。
次の例に、48 kHz、16 ビット、ステレオ (1536000 bps) の IEC 60958 ストリーム (M0 プロファイルと M1 プロファイルに適合) に対して、クラス ドライバーから報告されるデータ範囲を示します。
KSDATARANGE_AUDIO drWMAPro;
drWMAPro.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drWMAPro.DataRange.Flags = 0; // 無視されます。
drWMAPro.DataRange.SampleSize = 0; // 無視されます。
drWMAPro.DataRange.Reserved = 0;
drWMAPro.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drWMAPro.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
drWMAPro.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drWMAPro.MaximumChannels = 2; // IEC 60958 1 回線
drWMAPro.MinimumBitsPerSample = 16; // すべてのエンコード済みデータは IEC 60958 を
drWMAPro.MaximumBitsPerSample = 16; // 経由して、16 ビットで送信されます。
drWMAPro.MinimumSampleFrequency = 48000;
drWMAPro.MaximumSampleFrequency = 48000;
次の例に、96 kHz、16 ビット、ステレオ (3072000 bps) の IEC 60958 ストリーム (M2 と M3 のプロファイルに適合) に対して、クラス ドライバーから報告されるデータ範囲を示します。
KSDATARANGE_AUDIO drWMAPro;
drWMAPro.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drWMAPro.DataRange.Flags = 0; // 無視されます。
drWMAPro.DataRange.SampleSize = 0; // 無視されます。
drWMAPro.DataRange.Reserved = 0;
drWMAPro.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drWMAPro.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
drWMAPro.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drWMAPro.MaximumChannels = 2; // IEC 60958 1 回線
drWMAPro.MinimumBitsPerSample = 16; // すべてのエンコード済みデータは IEC 60958 を
drWMAPro.MaximumBitsPerSample = 16; // 経由して、16 ビットで送信されます。
drWMAPro.MinimumSampleFrequency = 96000;
drWMAPro.MaximumSampleFrequency = 96000;
ページのトップへ
6. 詳細情報
Web アドレスは変更される可能性があるため、ここに記載されている Web サイトに接続できない場合があります。