Spécification de plages de données WMA Pro

Le fichier d’en-tête Mmreg.h définit la valeur 0x0164 comme balise de format d’onde pour WMA Pro-over-S/PDIF :

  #define WAVE_FORMAT_WMASPDIF  0x0164

Le GUID de sous-type format correspondant peut être spécifié en termes de balise wave-format à l’aide de la macro DEFINE_WAVEFORMATEX_GUID du fichier d’en-tête Ksmedia.h comme suit :

  #define KSDATAFORMAT_SUBTYPE_WMA_SPDIF    \
                      DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)

L’exemple de code suivant montre comment un pilote miniport WaveCyclique ou WavePci peut spécifier les entrées de table KSDATARANGE_AUDIO pour une broche qui prend en charge les formats WMA Pro-over-S/PDIF et 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
  },
};

Dans cet exemple de code, les première et deuxième plages de données spécifient des formats de données WMA Pro-over-S/PDIF à des taux d’échantillonnage de 48 kHz et 44,1 kHz. Avec ces deux options, une application audio peut lire un flux audio WMA Pro enregistré à l’une de ces deux fréquences d’échantillonnage, en supposant que le décodeur externe peut également gérer le taux d’échantillonnage.

La taille de trame de synchronisation WMA Pro est identique à 48 kHz et 44,1 kHz, et les deux plages de données utilisent les mêmes valeurs de paramètre PCM: deux canaux et 16 bits par canal. Pour plus d’informations sur l’utilisation des paramètres PCM afin de spécifier des plages de données pour les formats WMA Pro-over-S/PDIF et AC-3-over-S/PDIF, consultez Transmission de flux non PCM S/PDIF Pass-Through.

La troisième plage de données spécifie un format de données AC-3-over-S/PDIF. Pour plus d’informations, consultez Spécification de plages de données AC-3.

L’exemple précédent n’autorise pas DirectSound à gérer les formats WMA Pro-over-S/PDIF et AC-3-over-S/PDIF non PCM sur Microsoft Windows 2000 SP2 et Windows 98 SE + correctif logiciel. Pour activer cette fonctionnalité, l’exemple de code doit être modifié de sorte que, pour chacune des trois plages de données qui utilise le spécificateur KSDATAFORMAT_SPECIFIER_WAVEFORMATEX, une deuxième plage de données identique soit incluse, sauf qu’elle utilise le spécificateur KSDATAFORMAT_SPECIFIER_DSOUND à la place. Pour obtenir un exemple, consultez Spécification de plages de données AC-3.