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 データ範囲の指定を参照してください。