Использование фильтра EVR DirectShow
[Компонент, описанный на этой странице, Расширенный отрисовщик видео — это устаревшая функция. Он был заменен простой отрисовщик видео (SVR), предоставляемый через компоненты MediaPlayer и IMFMediaEngine . Чтобы воспроизвести видеоконтент, необходимо отправить данные в один из этих компонентов и разрешить им создать экземпляр нового отрисовщика видео. Эти компоненты оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer или БОЛЕЕ низкий уровень API IMFMediaEngine для воспроизведения видеотрансляции в Windows вместо EVR, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Чтобы создать расширенный фильтр отрисовщика видео (EVR), вызовите CoCreateInstance. CLSID CLSID_EnhancedVideoRenderer, определенный в uuids.h. Для использования фильтра EVR не требуется вызывать MFStartup или MFShutdown.
Дополнительные сведения об использовании фильтра EVR в приложении DirectShow см. в разделе "Воспроизведение аудио и видео" в DirectShow.
Фильтр EVR начинается с одного входного закрепления, соответствующего эталонной потоку. Чтобы добавить пин-коды для вложенных потоков, запросите фильтр для интерфейса IEVRFilterConfig и вызовите IEVRFilterConfig::SetNumberOf Потоки. Вызовите этот метод перед подключением любых входных контактов. Закрепление 0 всегда является потоком ссылок. Подключение этот пин-код перед любыми другими закреплениями, так как формат ссылочного потока может ограничить доступные форматы подпотоков.
Перед запуском графа задайте окно вырезки видео и прямоугольник назначения. Дополнительные сведения см. в разделе "Использование элементов управления отображением видео".
В отличие от средства просмотра видео смешения видео (VMR), EVR не имеет рабочих режимов (оконных, бессерверных и т. д.). В частности:
- EVR не поддерживает режим окна. Приложение должно предоставить окно вырезки.
- EVR не имеет режима отрисовки. Чтобы заменить докладчика по умолчанию, вызовите МВФVideoRenderer::InitializeRenderer.
- EVR не имеет режима смешивания. EVR всегда создает миксер. Если у вас есть один входной поток, не нужно вызывать SetNumberOf Потоки, чтобы принудительно использовать средство смешивания.
Интерфейсы фильтров
Фильтр EVR предоставляет следующие интерфейсы. Некоторые из этих интерфейсов описаны в пакете SDK DirectShow. Используйте QueryInterface для получения указателей на эти интерфейсы:
- IAMCertifiedOutputProtection (DirectShow)
- IAMFilterMiscFlags (DirectShow)
- IBaseFilter (DirectShow)
- IEVRFilterConfig
- IKsPropertySet (DirectShow)
- IMediaEventSink (DirectShow)
- МВФGetService
- МВФVideoPositionMapper
- МВФVideoRenderer
- IPersistStream
- IQualityControl (DirectShow)
- IQualProp (DirectShow)
- ISpecifyPropertyPages
Интерфейсы входных закреплений
Входные закрепления в фильтре EVR предоставляют следующие интерфейсы. Используйте QueryInterface для получения указателей на эти интерфейсы:
- IEVRVideoStreamControl
- IMemInputPin (DirectShow)
- МВФGetService
- IPin (DirectShow)
- IQualityControl (DirectShow)
Кроме того, для получения следующего интерфейса можно использовать интерфейс МВФGetService :
См. также