Форматы для передачи IEC 61937

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

Чтобы представить кодированный аудиопоток, передаваемый через интерфейс, совместимый с IEC 61937, приложение должно предоставить следующее:

  • Характеристики передаваемого аудиопотока в кодировке.

  • Характеристики декодированного аудиопотока на целевом устройстве.

В Операционных системах Windows Vista и более ранних операционных системах Windows приложение может определить уровень качества звукового формата из числа каналов, размера выборки и скорости передачи данных аудиопотока, использующего формат. Для формата PCM эти сведения доступны из nChannels, nSamplesPerSec и nAvgBytesPerSec структуры WAVEFORMATEX, указывающей формат. Для формата, отличного от PCM, эти три члена были командированы для хранения сведений о сжатых данных в аудиопотоке. Таким образом, структура WAVEFORMATEX не содержит сведений об эффективном количестве каналов, размера выборки и скорости передачи данных аудиопотока, отличного от PCM после распаковки и воспроизведения потока. На основе сведений в этой структуре пользователь или приложение могут столкнуться с трудностями в выводе уровня качества потока, отличного от PCM.

Функция WAVEFORMATEX была расширена в структуру WAVEFORMATEXTENSIBLE , чтобы обеспечить дополнительные характеристики потока. Однако эта структура также не является достаточной в описании потока для передачи IEC 61937, так как она была предназначена для представления одного набора характеристик и используется для несжатых данных PCM с несколькими каналами.

В Windows 7 операционная система решает эту проблему, предоставляя поддержку новой структуры, WAVEFORMATEXTENSIBLE_IEC61937 которая расширяет структуру WAVEFORMATEXTENSIBLE для хранения двух наборов характеристик аудиопотока: закодированного аудиоформата перед передачей и характеристиками аудиопотока после его декодирования. Новая структура явно указывает эффективное количество каналов, размер выборки и скорость данных формата, отличного от PCM. С помощью этих сведений приложение может определить уровень качества потока, отличного от PCM, после его распаковки и воспроизведения.

Структура WAVEFORMATEXTENSIBLE_IEC61937 объявлена в заголовке KsMedia.h, включенном в пакет SDK для Windows 7. Элемент FormatExt — это структура WAVEFORMATEXTENSIBLE , в которой хранятся характеристики передаваемого потока. Элемент Format структуры WAVEFORMATEXTENSIBLE является структурой WAVEFORMATEX. Содержимое этого ОБЪЕКТА WAVEFORMATEX и WAVEFORMATEXTENSIBLE указывает приложению, может ли структура быть интерпретирована как структура WAVEFORMATEXTENSIBLE_IEC61937 . Для структуры WAVEFORMATEXTENSIBLE_IEC61937:

  • Элемент wFormatTag в WAVEFORMATEX должен содержать WAVE_FORMAT_EXTENSIBLE (FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE).

  • Элемент SubFormat структуры WAVEFORMATEXTENSIBLE указывает GUID кодированного формата, который необходимо передать. Например, FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL указывает формат Dolby Digital Plus. Поддерживаемые графические идентификаторы см. в разделе "Идентификаторы GUID subFormat".

  • Размер, указанный членом cbSize в WAVEFORMATEX, составляет 34 байта. (FormatExt.Format.cbSize = 34). Общий размер WAVEFORMATEXTENSIBLE_IEC61937 составляет 52 байта.

Элементы dwEncodedSamplesPerSec, dwEncodedChannelCount и dwAverageBytesPerSec WAVEFORMATEXTENSIBLE_IEC61937 описывают частоту выборки, количество каналов и скорость передачи в байтах потока аудиопотока после его декодирования.

Идентификаторы GUID subFormat

В Windows 7 заголовок KsMedia.h содержит определения для идентификаторов GUID SubFormat для сжатых звуковых форматов, определенных CEA-861-D. Идентификаторы GUID указываются в элементе SubFormat объекта WAVEFORMATEXTENSIBLE, указанном в элементе FormatExt структуры WAVEFORMATEXTENSIBLE_IEC61937 (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat).

Идентификаторы GUID для сжатых звуковых форматов, доступных в виде стандартных форматов аудио в кодировке IEC 61937, перечислены в следующей таблице. Эти форматы похожи на существующие форматы активного кодирования 3 (AC-3) и цифровых театральных звуков (DTS) в Windows.

Тип CEA 861 SubFormat GUID Description
0x00 Обратитесь к потоку.
0x01 000000000-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_WAVEFORMATEX
IEC 60958 PCM
0x02 00000092-00000-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 00000004-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3
MPEG-3 (уровень 3)
0x05 0000005-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2
MPEG-2(multichannel)
0x06 0000006-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_AAC
Расширенный код аудио (MPEG-2/4 AAC в ADTS)
0x07 0000008-00000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS
DTS
0x0a 0000000a-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS
Dolby Digital Plus
0x0a 0000010a-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS
Dolby Atmos в кодировке Dolby Digital Plus
0x0f Неиспользуемые зарезервированные

 

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

Тип CEA 861 SubFormat GUID Description
0x0b 0000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS-HD (24-разрядная, 96 Кгц)
0x0c 000000c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP
Dolby MAT 1.0:
Dolby TrueHD (MLP – Меридиан Без потери упаковки) — 24-разрядная 192KГц/до 18 Мбит/с, 8 каналов)
0x0c 0000010c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20
Dolby MAT 2.0:
Dolby TrueHD — 24-разрядная 192KГц/до 18 Мбит/с, 8 каналов или LPCM до 24 Мбит/с.
0x0c 0000030c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21
Dolby MAT 2.1:
Dolby TrueHD — 24-разрядная 192KГц/до 18 Мбит/с, 8 каналов или LPCM до 24 Мбит/с.
0x0e 00000164-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO
Windows Media Audio (WMA) Pro
0x0b 0000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS HD
0x0b 0000010b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1
DTS:X E1
0x0b 0000030b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2
DTS:X E2

 

Драйвер класса HD Audio, предоставляемый Корпорацией Майкрософт, поддерживает форматы PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro, MAT(MLP). Идентификаторы GUID для сжатых звуковых форматов, которые не поддерживаются драйвером класса аудио hd и могут быть реализованы сторонними решениями в следующей таблице.

Тип CEA 861 SubFormat GUID Description
0x08 0000008-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC
Адаптивное преобразование акустического кода (ATRAC)
0x09 00000009-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO
Одно битовое аудио
0x0d 0000000d-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DST
Прямой потоковой транспорт (DST) — без потери сжатый DSD (Direct Stream Digital).

 

Формат Dolby Digital Plus

Когда содержимое Dolby Digital Plus передается через IEC 60958, частота выборки ссылок должна быть четыре раза больше, чем скорость выборки содержимого. Dolby Digital Plus поддерживает частоту выборки содержимого 32 КГц, 44,1 КГц и 48 КГц. Такие интерфейсы, как HDMI, не поддерживают 128 КГц (32 КГц x 4), поэтому можно поддерживать только 44,1 и 48 КГц.

Значения, заданные приложением в структуре WAVEFORMATEXTENSIBLE_IEC61937 для представления формата Dolby Digital Plus с частотой выборки содержимого 48 КГц, показаны в следующем примере.

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2;              // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 192000;    // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 768000;   // 192 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4;            // 16 bits * 2 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;        // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                // Indicates that Format is part of a 
                                                   // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;    // Dolby 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
wfext.dwEncodedSamplesPerSec = 48000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6;                            // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby TrueHD (MAT)

Содержимое Dolby TrueHD передается через IEC 60958 на 176,4 кГц / 8 каналов (требуя частоты кадров IEC 60958 705,6 кГц) для частоты выборки содержимого 44,1, 88,2 и 176,4 кГц и 192 кГц / 8 каналов (требуя частоты кадров IEC 60958 Гц) для частоты выборки содержимого 48, 96 и 192 кГц.

Значения, заданные приложением в структуре WAVEFORMATEXTENSIBLE_IEC61937 для представления Dolby TrueHD с частотой выборки содержимого 96 КГц, показаны в следующих примерах.

Dolby MAT 1.0

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP; // This structure indicates MLP (MAT 1.0) support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby MAT 2.0

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20; // This structure indicates MAT 2.0 support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby MAT 2.1

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21; // This structure indicates MAT 2.1 support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Примечание.

Поддержка одной версии Dolby MAT не подразумевает поддержку Dolby MAT с более низким номером версии. Так как Dolby MAT 2.1 является обратно совместимым с предыдущими версиями Dolby MAT, драйвер класса, указывающий на поддержку Dolby MAT 2.1, как правило, указывает на поддержку Dolby MAT 2.0 и Dolby MAT 1.0, используя отдельную структуру WAVEFORMATEXTENSIBLE_IEC61937 для каждой версии.

 

WMA Pro

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

Profile Свойство — значение Description
M0 Максимальная скорость бита — 192000 в секунду
Максимальная частота выборки — 48 КГц
Максимальное число каналов — 2
Максимальный размер буфера — 600*1024 бита
Максимальное количество выборок на кадр — 2048
Максимальное количество битов на кадр — 655536
Рекомендуется для перенадушной музыки и потоковой передачи.
Максимальная скорость передачи в аудиокадре составляет 1536000 бит.
M1 Максимальная скорость бита — 385000 в секунду
Максимальная частота выборки — 48 КГц
Максимальное число каналов — 6
Максимальный размер буфера — 600*1024 бита
Максимальное количество выборок на кадр — 4096
Максимальное количество битов на кадр — 131072
Рекомендуется для фильмов с стандартным определением вокруг звука.
Максимальная скорость передачи в аудиокадре составляет 1536000 бит.
M2 Максимальная скорость бита — 769000 в секунду
Максимальная частота выборки — 96 КГц
Максимальное число каналов — 6
Максимальный размер буфера — 1200*1024 бита
Максимальное количество выборок на кадр — 4096
Максимальное количество битов на кадр — 131072
Рекомендуется для фильмов с высоким определением в окружении.
Максимальная скорость в аудиокадре составляет 3072000 в секунду.
M3 Максимальная скорость бита — 3000000 бит/с
Максимальная частота выборки — 96 КГц
Максимальное число каналов — 8
Максимальный размер буфера — 2400*1024 бита
Максимальное количество выборок на кадр — 4096
Максимальное количество битов на кадр — 131072
Рекомендуется для цифрового театра.
Максимальная скорость в аудиокадре составляет 3072000 в секунду.

 

Профили M0 и M1 вписываются в поток IEC 60958 в 48 КГц/16 бит/стерео (1536000 в секунду). Профили M2 и M3 вписываются в поток IEC 60958( 96 КГц/16 бит/Стерео (3072000 в секунду).

Значения, заданные приложением в структуре WAVEFORMATEXTENSIBLE_IEC61937 для представления WMA Pro в качестве профиля M2, показаны в следующем примере.

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2;             // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 96000;    // Link runs at 96 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 384000;  // 96 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4;           // 16 bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;       // Always at 16 bits over link.
wfext.FormatExt.Format.cbSize = 34;               // Indicates that Format is part of a 
                                                  // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;    // 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6;                            // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Форматы устройств