Указание диапазонов данных WMA Pro
Файл заголовка Mmreg.h определяет значение, 0x0164 быть тегом формата волны для WMA Pro-over-S/PDIF:
#define WAVE_FORMAT_WMASPDIF 0x0164
Соответствующий GUID подтипа формата можно указать в виде тега wave-format с помощью макроса DEFINE_WAVEFORMATEX_GUID из файла заголовка Ksmedia.h следующим образом:
#define KSDATAFORMAT_SUBTYPE_WMA_SPDIF \
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_WMASPDIF)
В следующем примере кода показано, как драйвер miniport WaveCyclic или WavePci может указать записи таблицы KSDATARANGE_AUDIO для закрепления, поддерживающего форматы WMA Pro-over-S/PDIF и 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
},
};
В этом примере кода первый и второй диапазоны данных указывают форматы данных WMA Pro-over-S/PDIF с частотой выборки 48 кГц и 44,1 кГц. С помощью этих двух вариантов звуковое приложение может воспроизводить аудиопоток WMA Pro, записанный с любой из этих двух частот выборки, при условии, что внешний декодер также может обрабатывать частоту выборки.
Размер кадра синхронизации WMA Pro одинаков на 48 кГц и 44,1 кГц, и оба диапазона данных используют одни и те же значения параметров 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 обрабатывать форматы WMA pro-over-S/PDIF и AC-3-over-S/PDIF в Microsoft Windows 2000 с пакетом обновления 2 (SP2) и Windows 98 SE + исправление . Чтобы включить эту возможность, необходимо изменить пример кода, чтобы для каждого из трех диапазонов данных, использующих описатель KSDATAFORMAT_SPECIFIER_WAVEFORMATEX, должен быть включен второй диапазон данных, идентичный, за исключением того, что вместо него используется описатель KSDATAFORMAT_SPECIFIER_DSOUND. Пример см. в разделе Указание диапазонов данных AC-3.