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 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)
The DXVA is used by software video decoders to define a codec-specific pipeline for hardware-accelerated decoding and rendering of the codec. The pipeline starts at the CPU which is used for parsing the media stream and conversion to DXVA-compatible structures. DXVA specifies a set of operations that can be hardware-accelerated and device driver interfaces (DDIs) that the graphic driver can implement to accelerate the operations. If the codec needs to do any of the defined operations, it can use these interfaces to access the hardware-accelerated implementation of these operations. If the graphic driver does not implement one or more of the interfaces, it is up to the codec to provide a software fallback for it. The decoded video is handed over to the hardware video renderer, where further video post-processing might be applied to it before being rendered to the device. The resulting pipeline is usable in a DirectShow-compatible application.
DXVA specifies the Motion Compensation DDI, which specifies the interfaces for iDCT operations, Huffman coding, motion compensation, alpha blending, inverse quantization, color space conversion, and frame-rate conversion operations, among others. 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.