О DXVA 2.0
DirectX Video Acceleration (DXVA) — это API и соответствующий DDI для использования аппаратного ускорения для ускорения обработки видео. Программные кодеки и программные видеопроцессоры могут использовать DXVA для разгрузки определенных операций с интенсивным ЦП на GPU. Например, декодирования программного обеспечения может выгрузить обратное преобразование косинуса (iDCT) на GPU.
В DXVA некоторые операции декодирования реализуются графическим драйвером оборудования. Этот набор функций называется акселератором. Другие операции декодирования реализуются программным обеспечением в режиме пользователя, которое называется декодером узла или декодером программного обеспечения. (Термины декодировщик узла и декодирования программного обеспечения эквивалентны.) Обработка, выполняемая акселератором, вызывается от обработки узла. Как правило, акселератор использует GPU для ускорения некоторых операций. Всякий раз, когда акселератор выполняет операцию декодирования, декодирования узла должен передаваться в буферы акселератора, содержащие сведения, необходимые для выполнения операции.
ДЛЯ API DXVA 2 требуется Windows Vista или более поздней версии. API DXVA 1 по-прежнему поддерживается в Windows Vista для обратной совместимости. Предоставляется уровень эмуляции, который преобразуется между любой версией API и противоположной версией DDI:
- Если графический драйвер соответствует модели драйвера windows (WDDM), вызовы API DXVA 1 преобразуются в вызовы DXVA 2 DDI.
- Если графические драйверы используют старую модель драйвера windows XP (XPDM), вызовы API DXVA 2 преобразуются в вызовы DXVA 1 DDI.
В следующей таблице показаны требования к операционной системе и поддерживаемые отрисовщики видео для каждой версии API DXVA.
Версия API | Требования | Поддержка отрисовщика видео |
---|---|---|
DXVA 1 | Windows 2000 или более поздней версии | Наложение Mixer, VMR-7, VMR-9 (только DirectShow) |
DXVA 2 | Windows Vista | EVR (DirectShow и Media Foundation) |
В DXVA 1 декодирования программного обеспечения должен получить доступ к API через отрисовщик видео. Нет способа использовать API DXVA 1 без вызова в отрисовщик видео. Это ограничение было удалено с DXVA 2. С помощью DXVA 2 декодировщик узла (или любое приложение) может напрямую получить доступ к API через интерфейс IDirectXVideoDecoderService .
В документации DXVA 1 описывается декодирование структур, используемых для следующих стандартов видео:
- ITU-T Rec. H.261
- ITU-T Rec. H.263
- Видео MPEG-1
- Видео основного профиля MPEG-2
Следующие спецификации определяют расширения DXVA для других стандартов видео:
- Спецификация DXVA для декодирования H.264/AVC
- Спецификация DXVA для видеокодирования H.264/MPEG-4 AVC Multiview (MVC), включая стереопрофилирование
- Спецификация DXVA для VLD MPEG-1 и объединенного декодирования видео MPEG-1/MPEG-2 VLD.
- Спецификация DXVA для режима VLD вне узла для декодирования видео MPEG-4 части 2
- Спецификация DXVA для Видео® Windows Media v8, v9 и vA Декодирование (включая SMPTE 421M "VC-1")
- Спецификация ускорения видео DirectX (DXVA) для декодирования режима VLD вне узла H.264/MPEG-4
- Спецификация ускорения видео DirectX для кода видео VP8 и VP9
DXVA 1 и DXVA 2 используют те же структуры данных для декодирования. Однако процедура настройки сеанса декодирования изменилась. DXVA 1 использует механизм "пробы и блокировки", в котором декодировщик узла может протестировать различные конфигурации перед настройкой требуемой конфигурации на акселераторе. В DXVA 2 акселератор возвращает список поддерживаемых конфигураций, а декодировщик узла выбирает один из списка. Сведения приведены в следующих разделах:
См. также