GUID для подформатов сжатого аудио

Для Windows 7 в файл заголовка Ksmedia.h добавлены новые графические идентификаторы подформатов, чтобы обеспечить поддержку сжатых звуковых форматов. Идентификаторы GUID подформата указывают конкретный подформат формата данных. Эти форматы определяются стандартом Ассоциации потребительских электроники (CEA) для несжатого звука.

В результате стандарта CEA-861-D необходимо убедиться, что аудиоформаты, которые не поддерживаются устройством CEA, не передаются на такое устройство. High definition multimedia interface (HDMI) and DisplayPort are examples of CEA devices.

For user-mode access, the GUIDs are specified in the SubFormat member of WAVEFORMATEXTENSIBLE and in the FormatExt member of WAVEFORMATEXTENSIBLE_IEC61937. For kernel-mode access for audio drivers, the GUIDs are specified in the DataRange member of the KSDATARANGE_AUDIO structure.

Идентификаторы GUI для доступных сжатых форматов звука перечислены в следующей таблице.

Note Not all the available formats are supported by the Windows 7 HD audio class driver. Форматы, поддерживаемые Windows 7, указываются в таблицах со звездочкой (*).

Тип CEA 861 SubFormat GUID Description

0x00

Обратитесь к трансляции.

0x01

00000000-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_WAVEFORMATEX

IEC 60958 PCM

0x02

00000092-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL

AC-3

0x03

00000003-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1

MPEG-1 (уровень 1 и 2)

0x04

00000005-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3

MPEG-3 (уровень 3)

0x05

00000004-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2

MPEG-2 (Multichannel)

0x06

00000006-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_AAC

Расширенный кодирование звука* (MPEG-2/4 AAC в ADTS)

0x07

00000008-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DTS

Цифровой театр звук (DTS)

0x0a

0000000a-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS

Dolby Digital Plus

0x0f

Unused.

Reserved

Идентификаторы GUI для аудиоформатов, передаваемых в пакетах с высокой скоростью звука, перечислены в следующей таблице.

Тип CEA 861 SubFormat GUID Description

0x0b

0000000b-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD

DTS-HD (24-разрядная, 95 КГц)

0x0c

0000000c-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP

MAT(MLP)- Меридиан без потери упаковки (Dolby Digital True HD - 24-разрядная 196KГц/до 18 МЛН б/с, 8 каналов)

0x0e

00000164-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO

Windows Media Audio (WMA) Pro

Идентификаторы GUID для сжатых звуковых форматов, которые могут быть реализованы сторонними решениями, перечислены в следующей таблице.

Тип CEA 861 SubFormat GUID Description

0x08

00000008-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC

Адаптивное преобразование акустического кода (ATRAC)

0x09

00000009-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO

One-bit audio

0x0d

0000000d-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DST

Прямой потоковой транспорт (DST)

The following code example shows how an audio miniport driver defines and initializes a KSDATARANGE_AUDIO structure for use with an HDMI sink that has a fully functional Dolby Digital Plus decoder. Приемник этого типа поддерживает скорость передачи 44,1 и 48 КГц.

For a sampling rate of 48 KHz, an audio miniport driver uses the following code to define and initialize a KSDATARANGE_AUDIO structure. В этом коде показаны диапазоны данных, предоставляемые драйвером аудиопорта:

//Define and initialize KSDATARANGE_AUDIO structure
// for use with a sample rate of 48 KHz.
KSDATARANGE_AUDIO drDDPlus48;
drDDPlus48.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus48.DataRange.Flags = 0; // Ignored.
drDDPlus48.DataRange.SampleSize = 0; // Ignored.
drDDPlus48.DataRange.Reserved = 0;
drDDPlus48.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus48.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus48.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus48.MaximumChannels = 2
drDDPlus48.MinimumBitsPerSample = 16; // All encoded data is transmitted at
drDDPlus48.MaximumBitsPerSample = 16; // 16 bits over IEC 60958.
drDDPlus48.MinimumSampleFrequency = 192000; // 48 KHz * 4.
drDDPlus48.MaximumSampleFrequency = 192000;

For a sampling rate of 44.1 KHz, an audio miniport driver uses the following code to define and initialize a KSDATARANGE_AUDIO structure:

//Define and initialize KSDATARANGE_AUDIO structure
// for use with a sample rate of 41.1 KHz.
KSDATARANGE_AUDIO drDDPlus44;
drDDPlus44.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus44.DataRange.Flags = 0 // Ignored.
drDDPlus44.DataRange.SampleSize = 0 // Ignored.
drDDPlus44.DataRange.Reserved = 0; 
drDDPlus44.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus44.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus44.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus44.MaximumChannels = 2
drDDPlus44.MinimumBitsPerSample = 16; // All encoded data is transmitted at
drDDPlus44.MaximumBitsPerSample = 16; // 16 bits over IEC 60958.
drDDPlus44.MinimumSampleFrequency = 176400; // 44.1 KHz * 4
drDDPlus44.MaximumSampleFrequency = 176400;