WMA Pro データ範囲の指定
ヘッダー ファイル Mmreg.h は、値 0x0164 を WMA Pro-over-S/PDIF の wave-format タグとして定義します:
#define WAVE_FORMAT_WMASPDIF 0x0164
対応するフォーマット サブタイプ GUID は、次のようにヘッダー ファイル Ksmedia.h の DEFINE_WAVEFORMATEX_GUID マクロを使用して、波形フォーマットのタグに関して指定できます。
#define KSDATAFORMAT_SUBTYPE_WMA_SPDIF \
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)
次のコード例は、WaveCyclic または WavePci ミニポート ドライバーが、WMA Pro-over-S/PDIF および AC-3-over-S/PDIF 形式をサポートするピンの KSDATARANGE_AUDIO テーブル エントリを指定する方法を示しています。
static KSDATARANGE_AUDIO PinDataRangesSpdifOut[] =
{
// 48-kHz WMA Pro over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_WMA_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
48000, // Minimum rate
48000 // Maximum rate
},
// 44.1-kHz WMA Pro over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_WMA_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
44100, // Minimum rate
44100 // Maximum rate
},
// 48-kHz AC-3 over S/PDIF
{
{
sizeof(KSDATARANGE_AUDIO),
0,
0,
0,
STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_AC3_SPDIF),
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
},
2, // Max number of channels
16, // Minimum number of bits per sample
16, // Maximum number of bits per channel
48000, // Minimum rate
48000 // Maximum rate
},
};
このコード例では、最初と 2 番目のデータ範囲は、48 kHz と 44.1 kHz のサンプル レートで WMA Pro-over-S/PDIF データ形式を指定します。 これら 2 つのオプションを使用すると、外部デコーダもサンプル レートを処理できることを前提として、オーディオ アプリケーションはこれら 2 つのサンプル レートのいずれかで記録された WMA Pro オーディオ ストリームを再生できます。
WMA Pro の同期フレーム サイズは 48 kHz と 44.1 kHz の両方で同じであり、両方のデータ範囲で同じ PCM パラメータ値 (2 つのチャネルとチャネルあたり 16 ビット) が使用されます。 PCM パラメータを使用して WMA Pro-over-S/PDIF および AC-3-over-S/PDIF 形式のデータ範囲を指定する方法については、非 PCM ストリームの S/PDIF パススルー送信を参照してください。
3 番目のデータ範囲は、AC-3-over-S/PDIF データ形式を指定します。 詳細情報は、AC-3 データ範囲の指定を参照してください。
前述の例では、DirectSound が Microsoft Windows 2000 SP2 および Windows 98 SE + hotfix 上で非 PCM WMA Pro-over-S/PDIF および AC-3-over-S/PDIF 形式を処理できるようにはなりません。 この機能を有効にするには、指定子 KSDATAFORMAT_SPECIFIER_WAVEFORMATEX を使用する 3 つのデータ範囲のそれぞれに、代わりに指定子 KSDATAFORMAT_SPECIFIER_DSOUND を使用することを除いて同一の 2 番目のデータ範囲が含まれるようにサンプル コードを変更する必要があります。 例については、AC-3 データ範囲の指定を参照してください。