Поделиться через


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

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Некоторые форматы входных данных для кодека Windows Media Audio 9 Professional и windows Media Audio 9 Lossless являются форматами PCM с высоким разрешением. Это форматы PCM, которые имеют более двух каналов или более 16 бит на выборку (звук с более чем двумя каналами также называется многоканальным звуком).

Эти форматы настраиваются с помощью структурированного расширения структуры WAVEFORMATEX , называемого WAVEFORMATEXTENSIBLE. Структура WAVEFORMATEXTENSIBLE содержит сведения о каналах, включенных в аудио. Эта структура необходима при использовании звука PCM с высоким разрешением, так как некоторые API Windows не принимают структуры WAVEFORMATEX , содержащие значения высокого разрешения.

Форматы PCM с высоким разрешением имеют 22 байта расширенных данных, которые указываются в элементе cbSize структуры WAVEFORMATEX . Аудиоформаты Windows Media с высоким разрешением не используют структуру WAVEFORMATEXTENSIBLE , но к структуре WAVEFORMATEX добавляются расширенные данные.

Аудиокодеки Windows Media поддерживают декодирование в форматах PCM с высоким разрешением только при работе приложения в Windows XP или более поздней версии. В предыдущих версиях Microsoft Windows кодеки декодируются в формат не более 16 бит на выборку и 2 канала. Кроме того, необходимо указать, что кодек должен декодировать в PCM высокой четкости, задав для параметра вывода g_wszEnableDiscreteOutput значение TRUE с помощью метода IWMReaderAdvanced2::SetOutputSetting . После выполнения этого вызова выходные данные, перечисленные средством чтения, будут включать форматы высокой четкости.

Для многоканального звука требуется дополнительная настройка. Дополнительные сведения см. в разделе Чтение многоканального звука.

Работа с входными данными