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


Начало работы с поддержкой аппаратного кодека в AVStream

Начиная с Windows 7 , Windows Media Foundation представляет компоненты мультимедиа на основе AVStream в виде преобразований Media Foundation в пользовательском режиме (MFT).

С помощью этой функции поставщики могут представлять аппаратные декодеры, кодировщики и видеопроцессоры в качестве MFT, которые, в свою очередь, могут управляться на уровне приложения.

Модель AVStream остается неизменной в «Windows 7» и требует только нескольких дополнений к минидрайверу для включения этой функции.

Топология транскодирования показана на следующей схеме:

схема, иллюстрирующая топологию транскодирования.

Для оптимальной производительности обработка мультимедиа, показанная в нижней строке схемы, должна выполняться в выделенном оборудовании. В этом сценарии выделенное аппаратное обеспечение транскодирования называется защищенным аппаратным кодером-декодером (SHED). SHED можно упаковыть как подключаемый модуль для материнской платы, так и как встроенную функцию на адаптере дисплея.

Windows 7 по-прежнему поддерживает перекодирование на основе программного обеспечения. Однако, поскольку система выполняет перекодирование на выделенном оборудовании вместо ЦП, решение на основе SHED значительно улучшает взаимодействие с пользователем по сравнению с программным решением.

Как показано на предыдущей схеме, клиенты пользовательского режима могут получить доступ к преобразованиям пользовательского режима с помощью интерфейса МВФTransform, который предоставляется на каждом MFT. IMFTransform доступен в Vista и более поздних версиях Windows, но механизм предоставления аппаратной обработки мультимедиа приложениям пользовательского режима доступен только начиная с Windows 7.

Модуль, предоставляемый системой, Devproxy, выполняет ту же роль, что и KSProxy в модели потоковой передачи DirectShow. Devproxy обеспечивает связь между Ks.sys в режиме ядра и компонентами MFT в пользовательском режиме.

Результирующая функция обработки аппаратных носителей называется Прокси-MFT устройства. Чтобы воспользоваться этим механизмом, минидрайвер AVStream должен выполнить следующие действия:

  • Предоставьте функции преобразования в качестве отдельных фильтров KS, которые являются частью минидрайвера AVStream. Например, если устройство имеет функции декодирования, кодирования и обработки видео, эти функции должны быть представлены в виде трех отдельных фильтров KS.

    • Кодировщик: используется для преобразования из несжатого формата в сжатый формат.

    • Декодер: используется для преобразования из сжатого формата в несжатый формат, который должен включать NV12.

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

      Корпорация Майкрософт настоятельно рекомендует поставщикам предоставлять поддержку масштабирования на основе оборудования. Однако, если вы решили не предоставлять поддержку масштабирования, основанную на оборудовании, вы можете использовать видеопроцессор MFT, предоставляемый системой, для выполнения операций масштабирования на сниженном уровне производительности. Если вы не предоставляете поддержку масштабирования на основе оборудования, построитель топологий Media Foundation автоматически вставляет системную шкалу MFT в топологию.

  • Зарегистрируйте фильтры KS обработки мультимедиа в одной из следующих категорий KS, доступных в Windows 7 и более поздних версиях Windows:

    Кроме того, для использования в других сценариях транскодирования также определены следующие категории:

  • Затем приложения фонда мультимедиа могут использовать функцию MFTEnumEx для перечисления устройств, зарегистрированных в качестве MFT, с помощью категорий, упомянутых ранее.