Форматы для передачи 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.
См. также