指定 WMA Pro 資料範圍

標頭檔 Mmreg.h 會定義值0x0164為 WMA Pro over-over-S/PDIF 的波浪格式標籤:

  #define WAVE_FORMAT_WMASPDIF  0x0164

您可以使用標頭檔 Ksmedia.h 中的 DEFINE_WAVEFORMATEX_GUID 宏,以波浪格式標記來指定對應的格式子類型 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
  },
};

在此程式碼範例中,第一個和第二個數據範圍會以 48 kHz 和 44.1 kHz 的取樣速率指定 WMA Pro-over-S/PDIF 資料格式。 透過這兩個選項,音訊應用程式可以播放以這兩個取樣率其中一個錄製的 WMA Pro 音訊資料流程,假設外部解碼器也可以處理取樣率。

WMA Pro 同步畫面大小在 48 kHz 和 44.1 kHz 上相同,而且兩個數據範圍都使用相同的 PCM 參數值--兩個通道和每個通道 16 位。 如需使用 PCM 參數來指定 WMA Pro-over-S/PDIF 和 AC-3-over-S/PDIF 格式之資料範圍的資訊,請參閱 S/PDIF Pass-Through非 PCM 資料流程的傳輸

第三個數據範圍指定 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的三個數據範圍,必須包含第二個數據範圍,但會改用規範KSDATAFORMAT_SPECIFIER_DSOUND。 如需範例,請參閱 指定 AC-3 資料範圍