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


Перечисление форматов кодека

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

Формат кодека — это объект конфигурации потока, заполненный данными из кодека. Каждый формат кодека содержит конфигурацию носителя, поддерживаемую кодеком. Большинство звуковых кодеков поддерживают ограниченное число форматов, каждый из которых перечисляется кодеком и может быть доступен с помощью методов IWMCodecInfo. С другой стороны, видеокодеки предоставляют только один формат. Это связано с тем, что видеопотоки имеют такие переменные, как размер кадра, которые являются более гибкими, чем параметры аудиопотока. При использовании видеопотока необходимо заполнить некоторые значения конфигурации потока. Конфигурации аудиопотока следует изменять только для назначения имени, имени подключения и номера потока. Дополнительные сведения см. в разделе Конфигурация, общая для всех потоков.

Перечисленные форматы кодека зависят от текущих параметров перечисления кодека, которые задаются с помощью IWMCodecInfo3::SetCodecEnumerationSetting. В настоящее время поддерживаются только два свойства кодека: g_wszNumPasses, которая указывает количество кодека, которое будет выполнять кодек, и g_wszVBREnabled, которая указывает, будет ли кодек использовать кодировку с переменной скоростью. Максимальное число кодеков, поддерживаемых любым из кодеков, равно двум, поэтому существует четыре отдельные конфигурации, для которых можно получить кодеки, как показано в следующей таблице.

  Поток с постоянной скоростью (CBR) 2-проходной поток CBR Поток переменной скорости (VBR) на основе качества Поток VBR на основе битовой скорости (ограниченный или неограниченный)
g_wszVBREnabled FALSE FALSE TRUE TRUE
g_wszNumPasses 1 2 1 2

 

Чтобы перечислить форматы, поддерживаемые для кодека, используйте IWMCodecInfo::GetCodecFormatCount , чтобы найти количество поддерживаемых кодеков. Затем вызовите IWMCodecInfo::GetCodecFormat для каждого формата. Индексы формата варьируются от нуля до одного меньше общего числа поддерживаемых форматов. Описание формата можно получить, вызвав IWMCodecInfo2::GetCodecFormatDesc. При использовании GetCodecFormatDesc не нужно использовать GetCodecFormat, так как объект конфигурации потока извлекается обоими методами. Форматы видеокодека не содержат описания. Каждый видеокодек имеет только один формат, который используется для всех потоков этого типа.

При извлечении формата кодека вы получаете интерфейс IWMStreamConfig объекта конфигурации потока, содержащего параметры формата.

Получение сведений о конфигурации потока из кодеков