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


Настройка модуля записи WM ASF (QASF)

При создании фильтра модуля записи WM ASF он автоматически настраивается с профилем WMProfile_V80_256Video в качестве профиля по умолчанию. Так как этот профиль использует кодеки Windows Media Audio и Windows Media Video версии 8, рекомендуется создать пользовательский профиль, использующий кодеки Windows Media 9 Series, а затем передать указатель IWMProfile в фильтр с помощью метода IConfigAsfWriter::ConfigureFilterUsingProfile . Фильтр должен быть добавлен в граф перед настройкой фильтра и перед подключением к вышестоящий фильтрам. Фильтр использует профиль, чтобы определить тип файла форматирования Windows Media для записи, количество настроенных входных контактов и типы носителей, которые могут принимать контакты.

Фильтр позволяет сбрасывать профили при подключении входных контактов, если для нового профиля не требуются дополнительные входные контакты. Например, если изменить профиль с профиля с одним входом на профиль аудио- и видео с двумя входными данными, будет повторно подключен только звуковой пин-кодВсе входные данные должны иметь метку времени, а все входные контакты должны быть подключены перед запуском или приостановкой фильтра. Это означает, что если вы настроите фильтр с профилем со звуковым потоком и видеопотоком, фильтр создаст аудио- и видеовходный пин-код, и оба контакта должны быть подключены перед запуском фильтра.

Добавление модулей обработки данных

Вы можете настроить поток профиля для расширений единиц данных, таких как коды времени SMPTE, до или после подключения фильтра, при условии, что вы будете следовать следующему порядку операций:

  1. Добавьте одно или несколько расширений единиц данных в поток с помощью IWMStreamConfig2::AddDataUnitExtension.
  2. Вызовите WMProfile::ReconfigStream , чтобы обновить профиль.
  3. Вызовите метод IConfigAsfWriter::ConfigureFilterUsingProfile с обновленным объектом профиля.
  4. Найдите контакт для ввода видео и вызовите его метод IAMWMBufferPass::SetNotify , чтобы зарегистрировать определенный приложением интерфейс IAMWMBufferPassCallback .

При выполнении графа метод IAMWMBufferPassCallback::Notify будет вызываться для каждого кадра, и вы сможете получить и задать свойства примера с помощью методов интерфейса INSSBuffer3 .

Примечание

В некоторых сценариях с интенсивным процессором, таких как обратная телесина, модуль записи WM ASF может требовать больше буферов вывода, чем некоторые подчиненные фильтры. Декодер DV, например, не будет принимать более одного буфера для выходного контакта, и то же самое верно для декомпрессора AVI в определенных условиях. Если при попытке подключиться к этим фильтрам или, возможно, при выполнении графа возникают проблемы, может потребоваться написать промежуточный фильтр, который принимает любое количество буферов в выходном контакте.