Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
DirectX Video Acceleration (DXVA) – это спецификация API Microsoft для платформ Microsoft Windows и Xbox 360, позволяющая аппаратно ускорять декодирование видео. Этот конвейер позволяет перенести на графический процессор (GPU) некоторые ресурсоемкие операции, такие как обратное дискретное косинусное преобразование (iDCT), компенсация движения и деинтерлейсинг. DXVA 2.0 также позволяет аппаратно ускорять больше операций, включая захват и обработку видео. DXVA работает в сочетании с моделью рендеринга видео, используемой видеокартой. DXVA 1.0, представленный как стандартизированный API с Windows 2000 (DirectX 7), и в настоящее время доступный в Windows 98 или более поздних версиях, может использовать либо режим рендеринга наложения, либо VMR 7/9. DXVA 2.0, доступный только в Windows Vista, Windows 7, Windows 8 и более поздних операционных системах, интегрируется с Media Foundation (MF) и использует Enhanced Video Renderer (EVR), присутствующий в MF. Он также включает три подспецификации: Deinterlacing DDI, COPP DDI и ProcAmp DDI. Deinterlacing DDI определяет функции обратного вызова для операций деинтерлейсинга. Функции COPP DDI (Certified Output Protection Protocol) позволяют защитить конвейер для медиаконтента, защищенного DRM, путем указания функций шифрования. ProcAmp DDI используется для ускорения постобработки видео. Модуль драйвера ProcAmp располагается между аппаратным видеорендерером и драйвером дисплея и предоставляет функции для применения фильтров постобработки к декомпрессированному видео. Функции, предоставляемые DXVA DDI, недоступны напрямую клиенту DirectShow, но передаются в видеорендерер в виде функций обратного вызова. Таким образом, рендерер играет важную роль в организации конвейера. Поддержка DXVA для H.264 была добавлена в DirectX 9.0c.
DirectX Video Acceleration (DXVA) is a Microsoft API specification for the Microsoft Windows and Xbox 360 platforms that allows video decoding to be hardware accelerated. The pipeline allows certain CPU intensive operations such as iDCT, motion compensation and deinterlacing to be offloaded to the GPU. DXVA 2.0 allows more operations, including video capturing and processing operations, to be hardware accelerated as well. DXVA works in conjunction with the video rendering model used by the video card. DXVA 1.0, which was introduced as a standardized API with Windows 2000 (DirectX 7), and is currently available on Windows 98 or later, can use either the overlay rendering mode or VMR 7/9. DXVA 2.0, available only on Windows Vista, Windows 7, Windows 8 and later OSs, integrates with Media Foundation (MF) and uses the Enhanced Video Renderer (EVR) present in MF. It also includes three sub specifications: Deinterlacing DDI, COPP DDI and ProcAmp DDI. The Deinterlacing DDI specifies the callbacks for deinterlacing operations. The COPP (Certified Output Protection Protocol) DDI functions allow the pipeline to be secured for DRM protected media, by specifying encryption functions. The ProcAmp DDI is used to accelerate post processing video. The ProcAmp driver module sits between the hardware video renderer and the display driver, and it provides functions for applying post processing filters on the decompressed video. The functions exposed by DXVA DDIs are not accessible directly by a DirectShow client, but are supplied as callback functions to the video renderer. As such, the renderer plays a very important role in anchoring the pipeline. DXVA support for H.264 was added in DirectX 9.0c.
DXVA в Windows Vista и более поздних версиях
DXVA 2.0 улучшает реализацию видеоконвейера и добавляет множество других DDI, включая DDI Capture для видеозахвата. DDI, общие с DXVA 1.0, также улучшены благодаря возможности аппаратного ускорения большего числа операций. Кроме того, функции DDI доступны вызывающим программам напрямую и не требуют посредничества видеорендерера. Таким образом, программа может создавать конвейер для простого декодирования медиафайлов (без рендеринга) или постобработки и рендеринга (без декодирования). Для работы этих функций требуются драйверы модели Windows Display Driver Model, что ограничивает использование DXVA 2.0 операционными системами Windows Vista и Windows Server 2008, если драйвер соответствует спецификации WDDM 1.1.
DXVA 2.0 enhances the implementation of the video pipeline and adds a host of other DDIs, including a Capture DDI for video capture. The DDIs it shares with DXVA 1.0 are also enhanced with the ability to use hardware acceleration of more operations. Also, the DDI functions are directly available to callers and need not be mediated by the video renderer. As such, a program can also create a pipeline for simply decoding the media (without rendering) or post processing and rendering (without decoding). These features require the Windows Display Driver Model drivers, which limits DXVA 2.0 to Windows Vista, Windows Server 2008, if the driver complies with WDDM 1.1.
Реализации DXVA2: нативные и копируемые
Реализации DXVA2 бывают двух типов: аппаратная и с возвратом в память. В аппаратной реализации декодированное видео остаётся в памяти GPU до момента отображения. Видеодекодер должен быть подключён непосредственно к видеорендереру, без каких-либо промежуточных фильтров обработки. Видеорендерер также должен поддерживать DXVA, что ограничивает выбор доступных рендереров. В реализации с возвратом в память декодированное видео копируется из памяти GPU обратно в память CPU. Эта реализация не имеет вышеупомянутых ограничений и работает аналогично обычному программному декодеру, однако может возникать прерывистое воспроизведение видео, если GPU недостаточно быстро копирует данные обратно в память CPU. Аппаратный режим предпочтительнее, если не требуется дополнительная обработка, поскольку операции копирования увеличивают нагрузку на память GPU.
DXVA2 implementations come in two variants: native and copy back. With native implementation, the decoded video stays in GPU memory until it has been displayed. The video decoder must be connected to the video renderer with no intermediary processing filter. The video renderer must also support DXVA, which gives less freedom in the choice of renderers. With copy back implementation, the decoded video is copied from GPU memory back to the CPU's memory. This implementation doesn't have the limitations mentioned above and acts similarly to a normal software decoder; however, video stuttering will occur if the GPU is not fast enough to copy its memory back to the CPU's memory. Native mode is advantageous unless there is a need for customized processing, as the additional copy back operations will increase GPU memory load.