Delen via


WMA Pro-gegevensbereiken opgeven

Het headerbestand Mmreg.h definieert de waarde 0x0164 de wave-format tag voor WMA Pro-over-S/PDIF:

  #define WAVE_FORMAT_WMASPDIF  0x0164

De bijbehorende GUID voor formatsubtype kan als volgt in de vorm van de wave-format tag worden opgegeven met behulp van de macro DEFINE_WAVEFORMATEX_GUID uit het headerbestand Ksmedia.h:

  #define KSDATAFORMAT_SUBTYPE_WMA_SPDIF    \
                      DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)

In het volgende codevoorbeeld wordt getoond hoe een WaveCyclic of WavePci miniportstuurprogramma de KSDATARANGE_AUDIO tabelvermeldingen kan opgeven voor een pin die de formaten WMA Pro-over-S/PDIF en AC-3-over-S/PDIF ondersteunt.

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 dit codevoorbeeld geven de eerste en tweede gegevensbereiken WMA Pro-over-S/PDIF-gegevensindelingen op met steekproefsnelheden van 48 kHz en 44,1 kHz. Met deze twee opties kan een audiotoepassing een WMA Pro-audiostream afspelen die is opgenomen met een van deze twee samplesnelheden, ervan uitgaande dat de externe decoder ook de samplefrequentie kan verwerken.

De GROOTTE van het WMA Pro-synchronisatieframe is hetzelfde op zowel 48 kHz als 44,1 kHz, en beide gegevensbereiken gebruiken dezelfde PCM-parameterwaarden: twee kanalen en 16 bits per kanaal. Zie voor informatie over het gebruik van PCM-parameters voor het opgeven van gegevensbereiken voor WMA Pro over S/PDIF en AC-3 over S/PDIF indelingen, S/PDIF Pass-Through Transmission of Non-PCM Streams.

Het derde gegevensbereik geeft een AC-3-over-S/PDIF-gegevensindeling op. Zie Ac-3-gegevensbereiken opgeven voor meer informatie.

In het voorgaande voorbeeld wordt DirectSound niet ingeschakeld voor het verwerken van de niet-PCM WMA Pro-over-S/PDIF- en AC-3-over-S/PDIF-indelingen op Microsoft Windows 2000 SP2 en Windows 98 SE + hotfix. Als u deze mogelijkheid wilt inschakelen, moet de voorbeeldcode worden gewijzigd, zodat voor elk van de drie gegevensbereiken die gebruikmaken van de KSDATAFORMAT_SPECIFIER_WAVEFORMATEX, een tweede gegevensbereik moet worden opgenomen dat identiek is, behalve dat in plaats daarvan de aanduiding KSDATAFORMAT_SPECIFIER_DSOUND wordt gebruikt. Zie Ac-3-gegevensbereiken opgeven voor een voorbeeld.