About DXVA 2.0

DirectX Video Acceleration (DXVA) is an API and a corresponding DDI for using hardware acceleration to speed up video processing. Software codecs and software video processors can use DXVA to offload certain CPU-intensive operations to the GPU. For example, a software decoder can offload the inverse discrete cosine transform (iDCT) to the GPU.

In DXVA, some decoding operations are implemented by the graphics hardware driver. This set of functionality is termed the accelerator. Other decoding operations are implemented by user-mode application software, called the host decoder or software decoder. (The terms host decoder and software decoder are equivalent.) Processing performed by the accelerator is called off-host processing. Typically the accelerator uses the GPU to speed up some operations. Whenever the accelerator performs a decoding operation, the host decoder must convey to the accelerator buffers containing the information needed to perform the operation

The DXVA 2 API requires Windows Vista or later. The DXVA 1 API is still supported in Windows Vista for backward compatibility. An emulation layer is provided that converts between either version of the API and the opposite version of the DDI:

  • If the graphics driver conforms to the Windows Display Driver Model (WDDM), DXVA 1 API calls are converted to DXVA 2 DDI calls.
  • If the graphics drivers uses the older Windows XP Display Driver Model (XPDM), DXVA 2 API calls are converted to DXVA 1 DDI calls.

The following table shows the operating system requirements and the supported video renderers for each version of the DXVA API.

API Version Requirements Video Renderer Support
DXVA 1 Windows 2000 or later Overlay Mixer, VMR-7, VMR-9 (DirectShow only)
DXVA 2 Windows Vista EVR (DirectShow and Media Foundation)

 

In DXVA 1, the software decoder must access the API through the video renderer. There is no way to use the DXVA 1 API without calling into the video renderer. This limitation has been removed with DXVA 2. Using DXVA 2, the host decoder (or any application) can access the API directly, through the IDirectXVideoDecoderService interface.

The DXVA 1 documentation describes the decoding structures used for the following video standards:

  • ITU-T Rec. H.261
  • ITU-T Rec. H.263
  • MPEG-1 video
  • MPEG-2 Main Profile video

The following specifications define DXVA extensions for other video standards:

DXVA 1 and DXVA 2 use the same data structures for decoding. However, the procedure for configuring the decoding session has changed. DXVA 1 uses a "probe and lock" mechanism, wherein the host decoder can test various configurations before setting the desired configuration on the accelerator. In DXVA 2, the accelerator returns a list of supported configurations and the host decoder selects one from the list. Details are given in the following sections:

DirectX Video Acceleration 2.0

DXVA 1.0 specification