Condividi tramite


Specifica degli intervalli di dati WMA Pro

Il file di intestazione Mmreg.h definisce il valore 0x0164 come tag in formato onda per WMA Pro-over-S/PDIF:

  #define WAVE_FORMAT_WMASPDIF  0x0164

Il GUID del sottotipo di formato corrispondente può essere specificato in termini di tag di formato onda usando la macro DEFINE_WAVEFORMATEX_GUID dal file di intestazione Ksmedia.h come indicato di seguito:

  #define KSDATAFORMAT_SUBTYPE_WMA_SPDIF    \
                      DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)

L'esempio di codice seguente mostra come un driver WaveCyclic o WavePci miniport può specificare le voci di tabella KSDATARANGE_AUDIO per un pin che supporta i formati WMA Pro-over-S/PDIF e AC-3-over-S/PDIF:

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 questo esempio di codice, i primi e i secondi intervalli di dati specificano i formati di dati WMA Pro-over-S/PDIF a velocità di campionamento di 48 kHz e 44,1 kHz. Con queste due opzioni, un'applicazione audio può riprodurre un flusso audio WMA Pro registrato a una di queste due frequenze di campionamento, presupponendo che il decodificatore esterno possa gestire anche la frequenza di campionamento.

Le dimensioni dei frame di sincronizzazione WMA Pro sono uguali sia a 48 kHz che a 44,1 kHz e entrambi gli intervalli di dati usano gli stessi canali dei parametri PCM, due canali e 16 bit per canale. Per informazioni sull'uso dei parametri PCM per specificare gli intervalli di dati per i formati WMA Pro-over-S/PDIF e AC-3-over-S/ PDIF, vedere S/PDIF Pass-Through Trasmissione di flussi non PCM.

Il terzo intervallo di dati specifica un formato di dati AC-3-over-S/PDIF. Per altre informazioni, vedere Specifica di intervalli di dati AC-3.

L'esempio precedente non abilita DirectSound per gestire i formati WMA Pro-over-S/PDIF e AC-3-over-S/PDIF in Microsoft Windows 2000 SP2 e Windows 98 SE + hotfix. Per abilitare questa funzionalità, è necessario modificare il codice di esempio in modo che per ognuno dei tre intervalli di dati che usano l'identificatore KSDATAFORMAT_SPECIFIER_WAVEFORMATEX, è necessario includere un secondo intervallo di dati identico, ad eccezione del fatto che usa l'identificatore KSDATAFORMAT_SPECIFIER_DSOUND. Per un esempio, vedere Specifica di intervalli di dati AC-3.