Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При увеличении устройств хранения мультимедиа, требующих сжатых звуковых форматов, приложения должны определять, описывать и использовать различные новые закодированные звуковые содержимое для передачи содержимого с компьютеров на устройства, такие как 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, в которой хранятся характеристики передаваемого потока. Элемент формата структуры 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 GUID".Размер члена WAVEFORMATEX, указанный в cbSize, составляет 34 байта. (
FormatExt.Format.cbSize = 34
). Общий размер WAVEFORMATEXTENSIBLE_IEC61937 составляет 52 байта.
dwEncodedSamplesPerSec, dwEncodedChannelCountи dwAverageBytesPerSec описывают частоту дискретизации, количество каналов и среднюю скорость передачи данных в байтах в секунду в формате WAVEFORMATEXTENSIBLE_IEC61937 после декодирования аудиопотока.
GUIDы подформата
В Windows 7 заголовочный файл KsMedia.h содержит определения идентификаторов GUID для субформатов сжатых аудиоформатов, определенных в CEA-861-D. Идентификаторы GUID указываются в элементе SubFormat WAVEFORMATEXTENSIBLE, указанном в элементе FormatExt структуры WAVEFORMATEXTENSIBLE_IEC61937 (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat
).
Идентификаторы GUID для сжатых звуковых форматов, доступных в виде стандартных форматов аудио в кодировке IEC 61937, перечислены в следующей таблице. Эти форматы похожи на существующие форматы активного кодирования 3 (AC-3) и цифровых театральных звуков (DTS) в Windows.
Тип CEA 861 | Подформат GUID | Описание |
---|---|---|
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 | Описание |
---|---|---|
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 – Meridian Lossless Packing) — 24-бит 192 кГц/до 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 Audio и могут быть реализованы сторонними решениями.
Тип CEA 861 | Подформат GUID | Описание |
---|---|---|
0x08 | 0000008-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC |
Адаптивное преобразование акустического кода (ATRAC) |
0x09 | 00000009-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO |
One-Bit Звук |
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 768 кГц) для частоты выборки содержимого 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 можно закодировать в одном из четырех профилей, перечисленных в следующей таблице.
Профиль | Свойство — значение | Описание |
---|---|---|
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.
Связанные разделы