О 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 или более поздней версии | Микшер наложений, 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 Рекомендация H.261
- ITU-T Rec. H.263
- Видео MPEG-1
- Видео основного профиля MPEG-2
Следующие спецификации определяют расширения DXVA для других стандартов видео:
- Для спецификации DXVA для декодирования H.264/AVC
- Спецификация DXVA для H.264/MPEG-4 AVC кодирования многоканального видео (MVC), включая стерео высокопрофильный
- спецификации DXVA для MPEG-1 VLD и объединенного MPEG-1/MPEG-2 VLD видеодекодирования.
- Спецификация DXVA для режима Off-Host VLD для декодирования видео MPEG-4 части 2
- Спецификация DXVA для декодирования Windows Media Video® v8, v9 и vA (включая SMPTE 421M "VC-1")
- спецификация ускорения видео DirectX (DXVA) для H.264/MPEG-4 Масштабируемого видеокодирования (SVC) Off-Host режим декодирования в режиме VLD
- спецификация ускорения видео DirectX для кода видео VP8 и VP9
DXVA 1 и DXVA 2 используют те же структуры данных для декодирования. Однако процедура настройки сеанса декодирования изменилась. DXVA 1 использует механизм "пробы и блокировки", в котором декодировщик узла может протестировать различные конфигурации перед настройкой требуемой конфигурации на акселераторе. В DXVA 2 акселератор возвращает список поддерживаемых конфигураций, а декодировщик узла выбирает один из списка. Сведения приведены в следующих разделах:
Связанные разделы