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


VMR Windowed (Compatibility) Mode

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

VMR совместим со всеми существующими приложениями DirectShow. При использовании с существующим приложением VMR работает в оконном режиме с одним видеопотоком, который также называется режимом совместимости. Этот режим предоставляется, так как VMR-7 является отрисовщиком по умолчанию в Windows XP и поэтому автоматически используется в вызовах методов Intelligent Connect , таких как IGraphBuilder::RenderFile. Если приложение использует Intelligent Connect и требует только базовых возможностей отрисовки, для правильной отрисовки в VMR-7 в Windows XP не требуется специальный код.

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

Использование VMR-7 в оконном режиме и режиме совместимости

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

В оконном режиме или режиме совместимости VMR-7 создает собственное окно для отображения видео. Для этого загружается компонент Window Manager, который предоставляет интерфейсы IVideoWindow и IBasicVideo . Приложение может запрашивать эти интерфейсы в диспетчере фильтров Graph, точно так же, как при использовании старого фильтра Отрисовщика видео. Дополнительные сведения см. в разделе Использование оконного режима.

На следующем рисунке показан VMR-7 в оконном режиме или режиме совместимости.

vmr в режиме совместимости

Чтобы обеспечить максимальный уровень совместимости, окно видео имеет то же имя класса, что и имя класса, созданное старым фильтром Отрисовщика видео, и большая часть кода Диспетчера окон из старого видео отрисовщика по-прежнему используется VMR. В оконном режиме или режиме совместимости VMR потребляет не больше системных ресурсов, чем старый отрисовщик видео. Так как VMR-7 имеет только один входной поток в оконном режиме или режиме совместимости, он не загружает компоненты микшера или композитора.

По умолчанию VMR растягивает изображение для заполнения окна видео. Чтобы сохранить пропорции источника, вызовите метод IVMRAspectRatioControl::SetAspectRatioMode с флагом VMR_ARMODE_LETTER_BOX.

Примечание

Приложения MFC, которые размещают окно видео в дочернем окне, должны определить пустой обработчик сообщений WM_ERASEBKGND, иначе область отображения видео не будет правильно перекрашивать.

 

Использование VMR-7 в оконном режиме и режиме совместимости с несколькими потоками

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

Использование VMR-9 в оконном режиме

Так как VMR-9 не является отрисовщиком по умолчанию, он не имеет режима совместимости как такового. Вместо этого VMR-9 по умолчанию использует оконный режим с четырьмя входными контактами. Этот режим можно использовать для смешивания до четырех видеопотоков. Если необходимо смешивать большее количество потоков, необходимо настроить его, как описано в разделе VMR с несколькими потоками (режим микширования). В противном случае VMR-9 в оконном режиме работает точно так же, как VMR-7 в оконном режиме или режиме совместимости.