Чтение многоканального аудио

Кодек Windows Media Audio 9 Professional может кодировать многоканальный звук (более двух каналов). При чтении файла с многоканальным звуком необходимо правильно настроить выходные данные или аудио будет доставлено с более низким качеством и стереофоном. Чтобы задать выход для многоканальной доставки звука, необходимо задать два параметра вывода: g_wszEnableDiscreteOutput и g_wszSpeakerConfig.

При установке g_wszEnableDiscreteOutput значение TRUE задает кодек для доставки аудиоданных с высоким определением. Звук с высоким определением кодек Windows Media Audio 9 с 24-разрядными образцами в стерео или нескольких каналах. Если этот параметр имеет значение FALSE, будут доставлены только 16-разрядные стерео-выходные данные.

Число динамиков на игровом компьютере задается с g_wszSpeakerConfig. Этот параметр является значением DWORD , установленным для одной из констант динамиков DirectSound, перечисленных в следующей таблице. Чтобы разрешить эти имена констант для компилятора, необходимо включить dsound.h.

Константа Значение Описание
DSSPEAKER_DIRECTOUT 0x00000000 Звук передается напрямую без настройки для динамиков.
DSSPEAKER_HEADPHONE 0x00000001 Клиентский компьютер оснащен наушниками.
DSSPEAKER_MONO 0x00000002 Клиентский компьютер оснащен монауральным динамиком.
DSSPEAKER_QUAD 0x00000003 Клиентский компьютер оснащен четырехфоническими динамиками.
DSSPEAKER_STEREO 0x00000004 Клиентский компьютер оснащен стереофонические динамики.
DSSPEAKER_SURROUND 0x00000005 Клиентский компьютер оснащен четырехканавыми звукофонными динамиками.
DSSPEAKER_5POINT1 0x00000006 Клиентский компьютер оснащен пятью динамиками и субвуфером.
DSSPEAKER_7POINT1 0x00000007 Клиентский компьютер оснащен семью динамиками и субвуфером.

 

Чтобы задать эти параметры, используйте IWMReaderAdvanced2::SetOutputSetting.

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

  1. Вызовите IWMReader::GetOutputFormatCount, чтобы получить количество поддерживаемых форматов для соответствующих аудиоданных. Индексы формата выходных данных основаны на нулях.
  2. Для каждого поддерживаемого формата вызовите IWMReader::GetOutputFormat , чтобы получить интерфейс IWMOutputMediaProps в объекте свойств выходного носителя.
  3. Вызовите IWMMediaProps::GetMediaType, чтобы получить тип мультимедиа.
  4. Если полученный тип мультимедиа является требуемым многоканальным типом, задайте его, вызвав IWMReader::SetOutputProps.

После установки дискретных выходных данных и конфигурации динамиков выходные форматы, перечисляемые средством чтения, должны включать многоканальные форматы, использующие структуру WAVEFORMATEXTENSIBLE . Если вы перечисляете форматы выходных данных перед настройкой свойств, будут включены только форматы с 1 или 2 каналами и не более 16 бит на канал. Как и в других звуковых форматах, следует использовать только форматы, перечисляемые средством чтения; не настраивайте собственный.

Примечание

Вы можете выводить многоканальный звук только в том случае, если приложение выполняется в Microsoft Windows XP или более поздней версии Microsoft Windows.

 

Входные данные, Потоки и выходные данные

Чтение файлов ASF

Выходные Параметры

Работа с High-Resolution PCM Audio