- DirectX Video Acceleration
-
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.[1] 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.[1]
Contents
Overview
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 any of the supported 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.[2][3] It also includes three sub-specifications: Deinterlacing DDI, COPP DDI and ProcAmp DDI.[4] 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 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 on Windows Vista and later
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 support for hardware acceleration of more operations. Also, the DDI functions are directly available to callers and need not be mediated by the video renderer.[5] As such, pipelines for simply decoding the media (without rendering) or post-processing and rendering (without decoding) can also be created. These features require the Windows Display Driver Model drivers, which limit DXVA 2.0 to Windows Vista, Windows Server 2008[5][1], Windows 7, Windows Server 2008 R2 and Windows 8. DXVA 2.0 supports only Enhanced Video Renderer as the video renderer on Vista, Windows 7 & Windows 8.[1] (With Windows XP, DXVA-Rendering is possible with VMR9 and the well-known Overlay Mixer.) DXVA integrates with Media Foundation and allows DXVA pipelines to be exposed as Media Foundation Transforms (MFTs). Even decoder pipelines or post-processing pipelines can be exposed as MFTs, which can be used by the Media Foundation topology loader to create a full media playback pipeline. DXVA 1.0 is emulated using DXVA 2.0.[1] DXVA 2.0 does not include the COPP DDI, rather it uses PVP for protected content. For Windows XP and Windows 2000 DXVA 1.0 can be used. Windows 7 supports DXVA-HD[6] if WDDM 1.1 is supported.
Software support
- Media Player Classic Home Cinema
- ffdshow-tryouts (Since Revision 3185)
- XBMC Media Center
- Boxee
- MediaPortal
- Microsoft Windows Vista/Windows 7/Windows 8 internal MPEG-2 decoder
- [[Nero Showtime]
- [[Nero MediaHub/ Nero Kwik Media]
- PowerDVD
- WinDVD
- Windows Media Player 11 (WMV3 only)
- Windows Media Player 12
- Adobe Flash version 10.3
- DivX H.264 Decoder (version 1.2, part of the DivX Plus software)
- VLC media player (DXVA 2.0 only)[7] (since version 1.1)
- CoreAVC[8] (since version 2.5.0)
- Elecard MPEG-2 PlugIn for WMP and MPEG Player
- Freemake Video Converter (Since version 2.2 beta)
See also
- Nvidia PureVideo - the bit-stream technology from NVIDIA used in their graphics chips to accelerate video decoding on hardware GPU with DXVA.
- UVD (Unified Video Decoder) - is the video decoding bit-stream technology from ATI Technologies to support hardware (GPU) decode with DXVA.
- Intel Clear Video - Intel's hardware video decoding technology
- Media Foundation (and its Enhanced Video Renderer) which DXVA 2.0 uses.
- VDPAU (Video Decode and Presentation API for Unix)
- X-Video Bitstream Acceleration (XvBA), the X11 equivalent of DXVA for MPEG-2, H.264, and VC-1
- X-Video Motion Compensation, the X11 equivalent for MPEG-2 video codec only
- Video Acceleration API (VA API)
- Video Decode Acceleration Framework is Apple Inc.s API for hardware-accelerated decoding of H.264 on Mac OS X
- VideoToolBox is an undocumented API from Apple Inc. for hardware-accelerated decoding on Apple TV and Mac OS X 10.5 or later.[9]
- OpenVideo Decode (OVD) – an new open cross-platform video acceleration API from AMD.[10]
- OpenMAX IL (Open Media Acceleration Integration Layer) - a royalty-free cross-platform media abstraction API from the Khronos Group
References
- ^ a b c d e "DirectX Video Acceleration 2.0". http://msdn2.microsoft.com/en-us/library/aa965263.aspx. Retrieved 2007-10-24.
- ^ "Introduction to DirectX VA". http://msdn2.microsoft.com/en-us/library/ms799545.aspx. Retrieved 2007-10-24.
- ^ "Microsoft DirectX Video Acceleration (DirectX VA) support". http://forum.videolan.org/viewtopic.php?t=9421. Retrieved 2007-10-24.
- ^ "DirectX Video Acceleration". http://msdn2.microsoft.com/en-us/library/ms798379.aspx. Retrieved 2007-10-24.
- ^ a b "What's New in DirectShow". http://msdn2.microsoft.com/en-us/library/ms788119.aspx. Retrieved 2007-10-24.
- ^ DXVA-HD
- ^ http://wiki.videolan.org/VLC_DxVA2
- ^ http://corecodec.com/products/coreavc/changelog
- ^ http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC for iOS and Apple TV now available
- ^ http://developer.amd.com/gpu/AMDAPPSDK/assets/OpenVideo_Decode_API.PDF OpenVideo Decode (OVD) API
External links
- DirectX Video Acceleration
- DXVAChecker, utility listing supported DXVA modes on the given computer
Microsoft APIs and frameworks Graphics Audio Multimedia DirectX (Media Objects · Video Acceleration) · DirectInput · DirectShow · Image Mastering API · Managed DirectX · Media Foundation · XNA · Windows Media · Video for WindowsWeb Data access Networking Communication Administration and
managementComponent model Libraries Device drivers Windows Driver Model · Windows Driver Foundation (KMDF · UMDF) · WDDM · NDIS · UAA · Broadcast Driver Architecture · VxDSecurity .NET Software factories IPC Accessibility Text and multilingual
supportCategories:- Microsoft application programming interfaces
- DirectX
- Video acceleration
- Device drivers
- Microsoft Windows
Wikimedia Foundation. 2010.