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


Фильтр смешивания наложений

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Фильтр Overlay Mixer — это отрисовщик видео, предназначенный специально для воспроизведения DVD-дисков и трансляции видеопотоков с скрытыми субтитрами в строке 21. Наложенный миксер также поддерживает расширения видеопорта (VPEs), что позволяет работать с аппаратными декодерами MPEG-2 или аналоговыми ТВ-тюнерами, которые отправляют видео непосредственно на графические карта, а не через шину PCI.

Примечание

Отрисовщик 9 для смешанного видео теперь предпочтительнее фильтра оверлейного микшера, за исключением сценариев VPE.

 

Средство наложения использует DirectDraw для отрисовки. Для этого требуется поверхность наложения на графическом карта. Основной видеопоток должен быть подключен к контакту 0. Вторичные потоки (закрытые подпись графики или DVD-диски) подключаются к контактам 1 и выше. Оверлейный миксер щелкает вторичные потоки непосредственно на основном интерфейсе; он не смешивает или альфа-смешивает их.

Средство наложения использует отрисовщик видео для управления окнами. Отрисовщик видео подключается к выходному контакту микшера наложения.

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

Примечание

В следующей таблице подтипы мультимедиа, принятые для входного контакта 0, зависят от оборудования. Средство наложения не может определить, поддерживается ли определенный подтип, пока он не создаст поверхность DirectDraw. Таким образом, единственным способом для фильтра вышестоящий определить, поддерживается ли подтип, является попытка соединения с этим подтипом.

 

Метка Значение
Интерфейсы фильтрации IAMOverlayFX, IAMVideoDecimationProperties, IBaseFilter, IDDrawExclModeVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IMixerOCX, IQualProp, IVPNotify, IVPNotify2
Типы носителей входных контактов Основной тип: MEDIATYPE_Video
Подтипов:
  • MEDIASUBTYPE_Overlay (только закрепление 0)
  • Форматы DirectDraw YUV (только закрепление 0)
  • Форматы directDraw Video Acceleration (только закрепление 0)
  • Форматы RGB DirectDraw (все входные контакты)
Типы форматов:
  • Format_VIDEOINFO
  • Format_VIDEOINFO2
Интерфейсы ввода-закрепления IAMVideoAccelerator, IKsPin, IKsPropertySet, IMemInputPin, IMixerPinConfig, IMixerPinConfig2, IOverlay (только pin 0), IPin, IPinConnection, IQualityControl, IVPNotify, IVPNotify2
Типы носителей выводных контактов MEDIATYPE_Video, MEDIASUBTYPE_Overlay
Интерфейсы вывода контактов IMediaPosition, IMediaSeeking, IPin, IQualityControl
Фильтр CLSID CLSID_OverlayMixer
CLSID страницы свойств Страница свойств отсутствует.
Исполняемый файл qdvd.dll
Заслуга MERIT_DO_NOT_USE
Категория фильтра CLSID_LegacyAmFilterCategory

 

Комментарии

Микшер наложения использует цвет назначения для сочетания поверхностей видео с наложениями. Он щелкает цветовую клавишу и дополнительное видео на основную поверхность и отправляет основное видео на поверхность наложения. Затем графическая карта композитирует две поверхности в буфер кадров.

Чтобы проверить, поддерживает ли графический драйвер аппаратное наложение, вызовите метод IDirectDraw7::GetCaps. Если поле dwMaxVisibleOverlays в структуре DDCAPS больше нуля, драйвер поддерживает аппаратное наложение.

Приложения могут управлять некоторыми поведением в Overlay Mixer с помощью интерфейса IMixerPinConfig2 . Разработчики игр могут использовать Overlay Mixer для отображения видео в монопольном режиме DirectDraw, как описано далее в этом разделе. Однако фильтр 9 (VMR-9) отрисовщика видео микширования теперь обеспечивает лучшую поддержку видео в играх. Дополнительные сведения см. в разделе Использование отрисовщика для микширования видео.

Приведенные ниже сведения предоставляются для разработчиков фильтров и разработчиков игр, которые хотят использовать оверлей mixer в эксклюзивном режиме DirectDraw.

Внутренние операции оверлейного миксера

Средство наложения предоставляет входной контакт для каждого входящего потока. Как правило, имеется три входных контакта: пин-код 0 для видеоданных и пин-код 1 и 2 для строки 21 и dvd-подписок. На внутреннем сервере Overlay Mixer создает объект DirectDraw с основной поверхностью, включающей весь рабочий стол, а также поверхность наложения, прямоугольник которой определяется размером видеопотока на пин-коде 0. Если декодер не указывает ключ цвета, средство наложения использует цветовые клавиши по умолчанию: темно-серый для последних графических карт и пурпурный для более старых 256-цветных карт.

Примечание

Результаты не определены, если декодер одновременно доставляет два дополнительных видеопотока в одном месте на поверхности наложения. (Иногда это происходит с DVD-дисками, содержащими подпиктуру и потоки строки 21.) Видео может мерцать или отображать только один из потоков.

 

В Windows Vista или более поздних версиях Средство наложения отключает композицию диспетчера окон рабочего стола (DWM), если драйвер дисплея поддерживает аппаратное наложение. Приложения не должны использовать фильтр Overlay Mixer; вместо этого используйте VMR-9 или расширенный отрисовщик видео (EVR).

Вышестоящее подключение с помощью декодера видео

Как правило, входные контакты Overlay Mixer подключаются к вышестоящий видеодекодеру. Основной видеопоток должен подключаться к контакту 0. Строки 21 или вложенные потоки подключаются к контакту 1 или более поздней версии. Если декодер является программным декодером, использующим исключительно ЦП узла, соединение между декодером и пин-кодом 0 является соединением IMemInputPin . Если декодер использует аппаратное ускорение, подключение к пин-коду 0 должно использовать интерфейс вывода IAMVideoAccelerator . Эти два типа соединений являются взаимоисключающими.

Если декодер рисует непосредственно на поверхности наложения, он должен использовать интерфейс IOverlay в контакте 0 и реализовать интерфейс IOverlayNotify .

Фильтры, которые упаковывают аппаратный декодер и подключаются к Overlay Mixer через видеопорт, должны реализовывать интерфейс IVPConfig . В Overlay Mixer реализован интерфейс IVPNotify . Эти два интерфейса позволяют декодеру указать необходимые поверхности наложения, а также позволяют средству наложения информировать декодер о расположении этих поверхностей в видеопамяти.

Средство наложения также обеспечивает правильное масштабирование прямоугольника видео. Захват видео связан с определенными проблемами, связанными с масштабированием изображения предварительного просмотра и записью чередующихся видеокадров. Если вы разрабатываете фильтр или драйвер WDM для аппаратного устройства захвата видео, дополнительные сведения по этим темам см. на справочных страницах IVPConfig и IVPNotify .

Оверлейный миксер не используется в сценариях захвата 1394 или USB. Он используется для захвата видео через шину PCI.

Нижестоящее подключение к отрисовщику видео

Миксер наложения имеет выходной контакт, который подключается к фильтру отрисовщика видео . В этом случае отрисовщик видео не отрисовывает видео; он просто управляет окном видео.

При подключении закрепления используется интерфейс IOverlay , а не интерфейс IMemInputPin . Отрисовщик видео передает дескриптор окна через миксер наложения в DirectDraw, который управляет вырезкой прямоугольника. Приложения могут управлять отрисовщиком видео с помощью интерфейсов IVideoWindow и IBasicVideo2 в диспетчере фильтров графов.

Монопольный режим DirectDraw

Монопольный режим DirectDraw в Overlay Mixer позволяет играм отображать видео на некоторой части экрана. В этом режиме средство наложения отображает видео непосредственно на поверхности DirectDraw, созданной игровым приложением, а не в окне, предоставленном отрисовщиком видео. Это позволяет играм управлять цветовой клавишей. В монопольном режиме DirectDraw миксер наложения предоставляет только один входной контакт, что означает, что в этом режиме не может быть выполнено смешивание подпиксуры Line 21 или DVD.

Чтобы использовать миксер overlay в монопольном режиме DirectDraw, создайте экземпляр микшера Overlay и запросите к нему интерфейс IDDrawExclModeVideo перед построением графа фильтра. Затем вызовите IDDrawExclModeVideo::SetDDrawSurface , чтобы указать поверхность DirectDraw для отрисовки. Одним из существенных ограничений этого режима является то, что игра не получает доступ к фактическим битам видео. Если вы используете IDDrawExclModeVideo, приложение создает основную поверхность, а средство overlay Mixer создает поверхность наложения.

Вы также можете использовать монопольный режим DirectDraw для выполнения отрисовки без окон( например, на веб-странице), но это не рекомендуется, так как в этом режиме микшер наложения не выполняет никакого микширования. Это означает, что невозможно отобразить данные строки 21 или подпиктуры.

Фильтры DirectShow