Управление качеством видео

В этом разделе описываются некоторые улучшения конвейера видео в Windows 7, как для Microsoft Media Foundation, так и для Microsoft DirectShow.

В идеальном мире видео никогда не будет сбой, независимо от разрешения видео или загрузки ЦП или GPU. В действительности, конечно, конвейер видео должен быть в состоянии справиться с ограниченными аппаратными ресурсами и адаптивно адаптировать воспроизведение к системной среде. Цели управления качеством видео:

  • Уменьшите сбои (удаленные или поздние кадры).
  • Сократите использование памяти, особенно в GPU.
  • Снижение энергопотребления, особенно на ноутбуках, работающих от батареи.
  • Получите наилучшее возможное качество изображения с учетом ограничений ресурсов.
  • Синхронизация видео со звуком.

Некоторые из этих целей являются противоположными, особенно в отношении низкоуровневых систем. Как правило, существует компромисс между скоростью и качеством. Сбой является более нежелательным, чем умеренное снижение качества визуального изображения. Относительная важность энергопотребления зависит от среды; в ноутбуке, работающем от аккумулятора, это очень важно.

В Windows 7 улучшенный отрисовщик видео (EVR) обеспечивает лучшую поддержку управления качеством видео. Конвейер Media Foundation и конвейер DirectShow были обновлены, чтобы воспользоваться этими возможностями. Используется двухсторонняя методика:

  • Перед началом воспроизведения конвейер может выполнять статические оптимизации на основе параметров управления питанием пользователя и сведений об оборудовании.
  • После запуска воспроизведения конвейер может применять динамические оптимизации на основе производительности во время выполнения.

Управление качеством в Media Foundation

Чтобы включить статическую оптимизацию, задайте атрибут MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS в частичной топологии перед разрешением топологии. Загрузчик топологии запрашивает этот атрибут в методе IMFTopoLoader::Load .

При включении статической оптимизации необходимо задать два других атрибута топологии:

attribute Описание
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
Указывает максимальный размер окна воспроизведения видео.
MF_TOPOLOGY_PLAYBACK_FRAMERATE
Указывает частоту обновления монитора.

 

Эти два атрибута помогают конвейеру вычислить наиболее эффективный параметр для управления качеством.

Динамическая оптимизация выполняется менеджером по качеству. Вам не нужно ничего делать, чтобы включить менеджера по качеству; он включается автоматически. Менеджер по качеству существовал в Windows Vista; в Windows 7 EVR может лучше реагировать на сообщения от менеджера по качеству.

Управление качеством в DirectShow

DirectShow поддерживает статическую и динамическую оптимизацию для воспроизведения DVD-дисков. Чтобы включить эти оптимизации в приложении для воспроизведения DVD-дисков, установите следующие флаги в параметре dwFlags метода IDvdGraphBuilder::RenderDvdVideoVolume :

Flag Описание
AM_DVD_ADAPT_GRAPH Включает статические оптимизации.
AM_DVD_EVR_QOS Включает динамическую оптимизацию.

 

Другие приложения DirectShow могут включить динамическую оптимизацию, вызывая метод IEVRFilterConfigEx::SetConfigPrefs непосредственно в фильтре EVR. Укажите флаг EVRFilterConfigPrefs_EnableQoS .

Примечание

Статические оптимизации в DirectShow ограничиваются воспроизведением DVD-дисков.

 

Управление качеством в EVR

EVR поддерживает некоторые новые флаги конфигурации для управления качеством. Если вы включите описанные выше оптимизации управления качеством, вам не нужно устанавливать эти флаги напрямую. Однако они задокументированы для приложений, которым требуется более детализированный контроль над EVR.

Установите следующие флаги в микшере EVR, вызвав метод IMFVideoMixerControl2::SetMixingPrefs :

Флаги Описание
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Пропустите второе поле каждого чередующегося кадра.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Используйте деинтерлейку Bob, даже если драйвер поддерживает режим деинтерлейки более высокого качества.

 

Задайте следующие флаги для выступающего EVR, вызвав метод IMFVideoDisplayControl::SetRenderingPrefs :

Флаги Описание
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Регулирование выходных данных в соответствии с пропускной способностью GPU.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Вызовы Direct3D Present пакетной службы. Эта оптимизация позволяет системе чаще входить в состояния простоя, что может снизить энергопотребление.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Смешение видео с помощью прямоугольника меньше, чем выходной прямоугольник. Масштабируйте результат до правильного размера выходных данных.

 

Кроме того, приемник носителя EVR поддерживает атрибуты конфигурации, соответствующие каждому из следующих флагов:

Перед началом воспроизведения эти атрибуты можно задать непосредственно в приемнике мультимедиа EVR в качестве альтернативы вызову методов IMFVideoMixerControl2 и IMFVideoDisplayControl . Чтобы задать эти атрибуты, запросите приемник мультимедиа EVR для IMFAttributes.

Сеанс мультимедиа