Angeben von WMA Pro-Datenbereichen

Die Headerdatei Mmreg.h definiert den Wert 0x0164 als Wave-Format-Tag für WMA Pro-over-S/PDIF:

  #define WAVE_FORMAT_WMASPDIF  0x0164

Die entsprechende Format-Subtype-GUID kann mithilfe des DEFINE_WAVEFORMATEX_GUID Makros aus der Headerdatei Ksmedia.h wie folgt als Wave-Format-Tag angegeben werden:

  #define KSDATAFORMAT_SUBTYPE_WMA_SPDIF    \
                      DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)

Das folgende Codebeispiel zeigt, wie ein WaveCyclic- oder WavePci-Miniporttreiber die KSDATARANGE_AUDIO Tabelleneinträge für einen Pin angeben kann, der die Formate WMA Pro-over-S/PDIF und AC-3-over-S/PDIF unterstützt:

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
  },
};

In diesem Codebeispiel geben der erste und zweite Datenbereich WMA Pro-over-S/PDIF-Datenformate mit Beispielraten von 48 kHz und 44,1 kHz an. Mit diesen beiden Optionen kann eine Audioanwendung einen WMA Pro-Audiostream wiedergeben, der mit einer dieser beiden Sampleraten aufgezeichnet wurde, vorausgesetzt, dass der externe Decoder auch die Abtastrate verarbeiten kann.

Die WMA Pro-Synchronisierungsrahmengröße ist mit 48 kHz und 44,1 kHz identisch, und beide Datenbereiche verwenden die gleichen PCM-Parameterwerte – zwei Kanäle und 16 Bit pro Kanal. Informationen zur Verwendung von PCM-Parametern zum Angeben von Datenbereichen für WMA Pro-over-S/PDIF- und AC-3-over-S/PDIF-Formate finden Sie unter S/PDIF Pass-Through Übertragung von Nicht-PCM-Streams.

Der dritte Datenbereich gibt ein AC-3-over-S/PDIF-Datenformat an. Weitere Informationen finden Sie unter Angeben von AC-3-Datenbereichen.

Im vorherigen Beispiel kann DirectSound nicht die Nicht-PCM-Formate WMA Pro-over-S/PDIF und AC-3-over-S/PDIF unter Microsoft Windows 2000 SP2 und Windows 98 SE+ verarbeiten. Um diese Funktion zu aktivieren, muss der Beispielcode so geändert werden, dass für jeden der drei Datenbereiche, die den Bezeichner KSDATAFORMAT_SPECIFIER_WAVEFORMATEX verwenden, ein zweiter Datenbereich enthalten sein muss, der identisch ist, mit der Ausnahme, dass stattdessen der Bezeichner KSDATAFORMAT_SPECIFIER_DSOUND verwendet wird. Ein Beispiel finden Sie unter Angeben von AC-3-Datenbereichen.