Управление качеством видео
В этом разделе описываются некоторые улучшения конвейера видео в Windows 7, как для Microsoft Media Foundation, так и для Microsoft DirectShow.
В идеальном мире видео никогда не сбой, независимо от разрешения видео или загрузки ЦП/GPU. В действительности, конечно, конвейер видео должен иметь возможность справиться с конечными аппаратными ресурсами, и он должен адаптивно адаптировать воспроизведение к системной среде. Целями управления качеством видео являются следующие задачи:
- Уменьшите сбой (отброшенные или поздние кадры).
- Сокращение использования памяти, особенно в GPU.
- Уменьшите потребление энергии, особенно в ноутбуках, работающих на батарее.
- Получите максимальное качество изображения, учитывая ограничения ресурсов.
- Сохраняйте синхронизацию видео с звуком.
Некоторые из этих целей являются противоположными, особенно в низкоуровневых системах. Как правило, существует компромисс между скоростью и качеством. Сбой является более нежелательным, чем умеренные сокращения качества визуального элемента. Относительная важность потребления электроэнергии зависит от среды; в ноутбуке, работающем на заряде батареи, очень важно.
В Windows 7 расширенный отрисовщик видео (EVR) лучше поддерживает управление качеством видео. Конвейер Media Foundation и конвейер DirectShow были обновлены, чтобы воспользоваться преимуществами этих возможностей. Используется двухуровневый подход:
- Перед началом воспроизведения конвейер может выполнять статические оптимизации на основе параметров управления питанием пользователя и сведений об оборудовании.
- После запуска воспроизведения конвейер может применять динамические оптимизации на основе производительности во время выполнения.
Управление качеством в Media Foundation
Чтобы включить статические оптимизации, задайте атрибут MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS в частичной топологии перед разрешением топологии. Загрузчик топологии запрашивает этот атрибут в методе IMFTopoLoader::Load.
Если включить статические оптимизации, необходимо задать два других атрибута топологии:
Атрибут | Описание |
---|---|
MF_TOPOLOGY_PLAYBACK_MAX_DIMS |
Указывает максимальный размер окна воспроизведения видео. |
MF_TOPOLOGY_PLAYBACK_FRAMERATE |
Указывает частоту обновления монитора. |
Эти два атрибута помогают конвейеру вычислить наиболее эффективный параметр для управления качеством.
Динамические оптимизации выполняются менеджером по качеству. Вам не нужно ничего делать, чтобы включить диспетчер качества; он включен автоматически. Диспетчер качества существовал в Windows Vista; В Windows 7 EVR может лучше реагировать на сообщения от менеджера качества.
Управление качеством в DirectShow
DirectShow поддерживает статические и динамические оптимизации для воспроизведения DVD-дисков. Чтобы включить эти оптимизации в приложении воспроизведения DVD-дисков, задайте следующие флаги в параметре dwFlags dwFlags метода IDvdGraphBuilder::RenderDvdVideoVolume:
Флаг | Описание |
---|---|
AM_DVD_ADAPT_GRAPH | Включает статические оптимизации. |
AM_DVD_EVR_QOS | Включает динамические оптимизации. |
Другие приложения DirectShow могут включать динамические оптимизации, вызывая метод IEVRFilterConfigEx::SetConfigPrefs непосредственно в фильтре EVR. Укажите флаг EVRFilterConfigPrefs_EnableQoS.
Заметка
Статические оптимизации в DirectShow ограничены воспроизведением DVD-дисков.
Управление качеством в EVR
EVR поддерживает некоторые новые флаги конфигурации для управления качеством. Если вы включите ранее описанные ранее оптимизации управления качеством, вам не нужно напрямую устанавливать эти флаги. Однако они документируются для приложений, которые хотят более детального контроля над EVR.
Задайте следующие флаги в миксере EVR, вызвав метод IMFVideoMixerControl2::SetMixingPrefs:
Флаги | Описание |
---|---|
|
Пропустите второе поле каждого пересекаемого кадра. |
|
Используйте боб deinterlacing, даже если драйвер поддерживает режим более высокого качества deinterlace. |
Задайте следующие флаги для докладчика EVR, вызвав метод IMFVideoDisplayControl::SetRenderingPrefs:
Флаги | Описание |
---|---|
|
Регулирование выходных данных для сопоставления пропускной способности GPU. |
|
Вызовы Batch Direct3D Present. Эта оптимизация позволяет системе входить в состояния простоя чаще, что может снизить потребление энергии. |
|
Выполните перемешивание видео с помощью прямоугольника меньше, чем выходной прямоугольник. Масштабируйте результат до правильного размера выходных данных. |
Кроме того, приемник мультимедиа EVR поддерживает атрибуты конфигурации, соответствующие каждому из этих флагов:
- EVRConfig_AllowBatching
- EVRConfig_AllowDropToBob
- EVRConfig_AllowDropToHalfInterlace
- EVRConfig_AllowScaling
- EVRConfig_AllowDropToThrottle
- EVRConfig_ForceBatching
- EVRConfig_ForceBob
- EVRConfig_ForceHalfInterlace
- EVRConfig_ForceScaling
- EVRConfig_ForceThrottle
Перед началом воспроизведения эти атрибуты можно задать непосредственно в приемнике мультимедиа EVR, в качестве альтернативы вызову методов МВФVideoMixerControl2 и МВФVideoDisplayControl. Чтобы задать эти атрибуты, запросите приемник мультимедиа EVR для МВФAttributes.
Связанные разделы