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


Режим смешивания YUV

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

Этот раздел относится к Windows XP с пакетом обновления 2 (SP2) или более поздней версии.

Начиная с Windows XP с пакетом обновления 2 (SP2), VMR поддерживает режим смешивания, называемый режимом смешивания YUV. Этот режим наиболее полезен для расширенных телевизионных или DVD-приложений. Он обменивает некоторые возможности микшера VMR для повышения производительности на низкоуровневом графическом оборудовании, которое использует унифицированную архитектуру памяти. Режим смешивания YUV поддерживается в VMR-7 и VMR-9.

Преимущества

Режим смешивания YUV имеет несколько преимуществ, связанных с производительностью отрисовки, по сравнению с исходным режимом смешивания RGB, поддерживаемым VMR:

  • Если VMR находится в режиме смешивания YUV, все операции де-чередование и композиции видеопотока выполняются в цветовом пространстве YUV. Для поверхностей YUV обычно требуется от 50 % до 60 % меньше пропускной способности памяти, чем для эквивалентных поверхностей RGB.
  • Деинтерлейсинг и композиция потока выполняются одним вызовом графического драйвера. Драйвер может использовать возможности многотекстового графического оборудования, что приводит к дополнительной экономии пропускной способности памяти.

Хотя любое видео-приложение может использовать режим микширования YUV, оно в основном предназначено для двух типов приложений для воспроизведения видео:

  1. Телевизионные приложения, отображающие скрытые субтитры или телетекст.
  2. В приложениях DVD отображаются данные вложенных DVD-дисков или скрытые субтитры.

Ограничения

При переводе виртуальной машины в режим смешивания YUV применяется ряд ограничений:

  • Поток 0 (поток, подключенный к входной пин-коду 0) может быть прогрессивным или чередуется; все остальные потоки должны быть прогрессивными.
  • GUID_NULL (режим плетения) не допускается для потока 0.
  • DeinterlacePref_Weave нельзя использовать в качестве резервного режима, так как это может помешать созданию устройства дескрипулирования. Для режима смешивания YUV требуется деинтерлейсное устройство, даже если входящее видео не переплетается.
  • Невозможно внести изменения в планарное альфа-значение, связанное с каждым входным потоком VMR.
  • Пользователь не может изменить Z-порядок подключенных видеопотоков. Z-порядок по умолчанию берется из порядка закрепления.
  • Цветовая клавиша не поддерживается.
  • Входной контакт 0 должен принимать видеопоток.
  • Другие входные контакты могут принимать только данные подпотока видео, такие как dvd-под-рисунок, скрытые субтитры или телетекст.
  • Другие контакты ввода могут принимать только каждый пиксель альфа-формат YUV, например AYUV, AI44 и IA44.
  • Ни один из входных контактов VMR не может принимать любые форматы RGB.
  • Предоставленные приложением растровые изображения больше не могут быть объединены с видео перед презентацией на дисплее.
  • Отдельные вложенные потоки нельзя инвертировать по горизонтали или по вертикали с помощью функций "выходного прямоугольника" ВМР. Поддерживается повторное позиционирование и изменение размера потока в обычном режиме.
  • Цвет смешанного фона (заданный IVMRMixerControl::SetBackgroundClr) по-прежнему указывается в цветовом пространстве RGB, как и в режиме смешивания RGB.

Конфигурация

Приложения должны явно настроить VMR, чтобы воспользоваться преимуществами режима смешивания YUV; Исходный режим смешивания RGB остается режимом микширования по умолчанию. Чтобы включить режим смешивания YUV в VMR-7, вызовите IVMRMixerControl::SetMixingPrefs с флагом MixerPref_RenderTargetYUV. Этот вызов необходимо выполнить до того, как будут подключены какие-либо входные контакты VMR. Чтобы включить режим смешивания YUV в VMR-9, вызовите IVMRMixerControl9::SetMixingPrefs с флагом MixerPref9_RenderTargetYUV.

Единственный способ определить, поддерживает ли VMR-7 новый режим смешивания YUV, — попытаться настроить VMR в этом режиме. Если вызов выполнен успешно, вы по-прежнему можете вернуть VMR в режим смешивания RGB при необходимости. После переключения в режим смешивания YUV vmR можно вернуться в режим смешивания RGB только после отключения всех входных контактов.

В режиме смешивания YUV можно уменьшить нагрузку на графический процессор (GPU), применив следующие флаги в методе SetMixingPrefs :

Flag Описание
VMR-7: MixerPref_DynamicSwitchToBOBVMR-9: MixerPref9_DynamicSwitchToBOB
Переключитесь на деинтерлейсинг боба.
VMR-7: MixerPref_DynamicDecimateBy2VMR-9: MixerPref_DynamicDecimateBy2
Размножение изображения в 2 по горизонтали и по вертикали.

 

Эти флаги можно добавлять или удалять во время работы графа фильтров; изменение применяется, когда микшер VMR создает следующий видеокадр. Флаги не являются взаимоисключающими. Эти параметры снижают качество изображения, поэтому обычно они применяются только в том случае, если качество видео менее важно, например, если видео воспроизводится в небольшой части пользовательского интерфейса.

Использование режима смешивания VMR