Microsoft DirectX Video Acceleration (DirectX VA) support
This feature/function request is both for hardware acceleration (motion compensation) and post-processing via Microsofts DirectX Video Acceleration (DXVA) API, (be nice if the options would be added in the DivX codec config settings then auto-detect if the video cards supported it and to what extent);
Hope VLC's codec/demuxer developer(s) can look into if this could be fully or partially used for most of its supported codecs and graphic/video controllers?
Summery: Microsoft DirectX Video Acceleration (DXVA) allows DirectShow based software decoders to accelerate video playback directly on the graphics processors (GPU) if your graphics processor supports DXVA and has built-in technology to accelerate MPEG-4 ASP file playback, DXVA can provide (GPU) hardware acceleration. DXVA is an application programming interface (API) with a corresponding motion compensation device driver interface (DDI) for acceleration of digital video decoding. DDIs are also provided as part of DXVA; a deinterlacing DDI for deinterlacing and frame-rate conversion of video content, and hardware upconverting, and a to support ProcAmp DDI control and postprocessing of video content. DXVA provides an interface definition focused on support of MPEG-2 "main profile" video (formally ITU-T H.262 | ISO/IEC 13818-2), but is also intended to support other key video codecs, like example, H.263 and H.261, and MPEG-1, and MPEG-4.
A good exampel of the benifits of using DVXA for video acceleration is that you could decode HDTV (720p/1080i) MPEG-4 with a PIII 1400Mhz CPU (possible even less), a task that would normaly require a P4 2,400Mhz CPU if the card does not support DVXA HWMC. Or if you have a faster CPU then you can record something at the same time as you are playing back something else on the same Windows PC, (as with DXVA most of the playback/decoding effort gets loaded onto the GPU so the CPU can be doing something more/else).
Other post-processing featutes achivable via DVXA (if the video adapter hardware support it):
- Hardware iDCT motion compensation and subpicture decoding
- Hardware based IDCT (Inverse Discrete Cosine Transform)
- IQ (Inverse quantization)
- Full-frame video playback of HDTV content on slow CPU's (1000Mhz+ ?)
- Independent hardware color controls for video overlay
- Hardware colorspace conversion (YUV 4:2:2 and 4:2:0)
- 5tap horizontal by 3tap vertical filtering
- 8:1 up/down scaling
- Perpixel color keying
- Multiple video windows supported for CSC and filtering
- Subpicture alphablended compositing
- Alpha-Blending Surface
- Real-time frame-rate conversion
Developer links:
- Microsoft Developer information on DirectX Video Acceleration
- How Decoders Use IAMVideoAccelerator
- Mapping DirectX Video Acceleration to IAMVideoAccelerator
- DVXA API/DDI Specification (Rev 1.0) (DirectX 8.1 C++ Archive)
- DirectShow DirectX Video Acceleration Video Subtypes
- Enabling DirectX Video Acceleration in a custom player
- Windows Media Format 9.5 SDK Enabling DirectX Video Acceleration
- DirectX Video Acceleration Video Subtypes (DirectX 9.0 C++ Archive)
- IAMVideoAccelerator Operational Specification (DirectX 9.0 C++ Archive)
- DirectX Video Acceleration Motion Compensation Callbacks
- Calling the Deinterlace DDI from a User-Mode Component
- Per-Pixel Alpha Blending (DirectX 9.0 C++ Archive)
....AND MUCH MORE available on a Microsoft Development Network search
PS! I know mosy GPUs don't support DVXA HWMC for MPEG-4 yet but many more will sure come out soon...