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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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