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


Расширенный отрисовщик видео

[Компонент, описанный на этой странице, Расширенный отрисовщик видео — это устаревшая функция. Он был заменен простой отрисовщик видео (SVR), предоставляемый через компоненты MediaPlayer и IMFMediaEngine . Чтобы воспроизвести видеоконтент, необходимо отправить данные в один из этих компонентов и разрешить им создать экземпляр нового отрисовщика видео. Эти компоненты оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer или БОЛЕЕ низкий уровень API IMFMediaEngine для воспроизведения видеотрансляции в Windows вместо EVR, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Расширенный отрисовщик видео (EVR) — это компонент, который отображает видео на мониторе пользователя. Существуют две версии EVR:

  • Приемник мультимедиа EVR для приложений Media Foundation.
  • Фильтр EVR для приложений DirectShow.

Обе версии используют одни и те же внутренние объекты для отрисовки видео, и они используют множество одинаковых интерфейсов.

EVR может смешивать до 16 видеопотоков. Первый входной поток называется ссылочным потоком. Поток ссылок всегда отображается в порядке z. Любые дополнительные потоки называются вложенными потоками и смешиваются поверх ссылочного потока. Приложение может изменить z-порядок подпотоков, но в z-порядке не может быть в первую очередь подпоток.

Графический драйвер определяет, какие форматы видео поддерживаются, но обычно они ограничены следующими:

  • Ссылочный поток: прогрессивный или перемешанный YUV без альфа-пикселя (например, NV12 или YUY2); или прогрессивный RGB.
  • Подпотоки: прогрессивный YUV с альфа-пикселем, например AYUV или AI44.

Доступные форматы подпотоков могут зависеть от формата ссылочного потока. Дополнительные сведения см. в разделе "Согласование типов мультимедиа EVR".

Во внутренней среде EVR использует объект, называемый миксером , чтобы составить кадры из входных потоков на одну поверхность для отрисовки. Миксер также выполняет деинтерлакцию и цветовую коррекцию. Выходные данные миксера являются окончательным составным видеокадром. Второй объект, называемый выступающим , отрисовывает видеокадр на дисплее. Выступающий планирует, когда кадры отрисовываются и управляют устройством Direct3D. Приложение может предоставить пользовательскую реализацию миксера или докладчика.

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

Так как выступающий создает устройство Direct3D, он также отвечает за общий доступ к устройству с другими объектами конвейера, которым требуется доступ к службам DirectX Video Acceleration (DXVA). В частности, миксер EVR использует службы обработки видео DXVA для деинтерлакирования и смешивания видео. Вне evR программные декодеры могут использовать DXVA для ускорения декодирования видео. Выступающий использует устройство Direct3D с помощью диспетчер устройств Direct3D. На следующей схеме показана внутренняя архитектура EVR. (Декодирования программного обеспечения, затененного серым цветом, не является частью EVR.)

architectural diagram showing the evr.

Интерфейсы EVR

EVR поддерживает следующие интерфейсы. Некоторые из этих интерфейсов реализуются миксером или выступающим. Для каждого интерфейса в справочном разделе описывается, как получить указатель на интерфейс.

Интерфейс Description
IEVRFilterConfig Задает количество входных закреплений в фильтре EVR (только DirectShow).
IEVRFilterConfigEx Настраивает фильтр EVR (только DirectShow).
IEVRTrustedVideoPlugin Включает подключаемый модуль EVR для отрисовки защищенного видео.
МВФDesiredSample Позволяет выступающим EVR запрашивать определенный кадр из миксера.
МВФQualityAdvise Позволяет диспетчеру качества настраивать качество видео EVR.
МВФTopologyServiceLookup Позволяет пользовательскому миксеру или выступающим получать указатели интерфейса из EVR.
МВФVideoDeviceID Возвращает идентификатор устройства миксера EVR или докладчика.
IMFVideoDisplayControl Управляет отображением видео в EVR.
МВФVideoMixerBitmap Альфа-смешивает статическое растровое изображение с видео.
МВФVideoMixerControl Управляет тем, как расширенный обработчик видео (EVR) смешает подпотоки видео.
МВФVideoMixerControl2 Управляет предпочтениями для деинтерлакирования видео.
МВФVideoPositionMapper Карты позицию входного видеопотока в соответствующую позицию в выходном видеопотоке.
МВФVideoPresenter Предоставляется выступающим EVR.
МВФВидеоПроцессор Управляет обработкой видео, включая корректировку, фильтры шума и фильтры сведений.
МВФVideoRenderer Задает средство смешивания или докладчика в EVR.
МВФVideoSampleAllocator Выделяет примеры видео.

 

В этом разделе

Раздел Описание
Использование фильтра EVR DirectShow Как использовать EVR в приложении DirectShow.
Использование приемника мультимедиа EVR Как использовать EVR в приложении Media Foundation.
Использование элементов управления отображением видео Как управлять способом отображения видео EVR в окне приложения.
Использование элементов управления "Миксер видео" Как управлять способом работы миксера EVR.
Согласование типов мультимедиа EVR Описывает, как EVR определяет форматы видео, которые он может принимать в качестве входных данных.
Пользовательские миксеры Как написать пользовательский миксер для EVR.
Как написать докладчика EVR Как написать настраиваемого докладчика для EVR.

 

Воспроизведение звука и видео