For those that were excited last week by the French student proposing an H.264 VA-API/VDPAU state tracker for Gallium3D
that in turn was revised to WebM or Theora acceleration support instead
(since no current-generation GPUs have dedicated video decode engines for these formats), Emeric has firmed up his proposal.
If the work is accepted by Google, this French student will be targeting a Gallium3D state tracker for the Google VP8 (WebM) format. This Google VP8 format support will be exposed by NVIDIA's Video Decode and Presentation API for Unix. VDPAU right now only has support for MPEG-1, MPEG-2, MPEG-4 ASP, H.264 / MPEG-4 AVC, VC-1, and WMV3/WM9 within NVIDIA's binary driver. However, NVIDIA has released VDPAU as a standalone library
with open header files. Support for VP8 should be able to be extended most easily with VDPAU compared to VA-API (or dare I mention XvBA or XvMC).
Emeric would look to bring a pure software implementation of VP8 up first in a Gallium3D state tracker and ensure that it works with the different multimedia applications that implement the VDPAU interface, such as MythTV, VLC, MPlayer, etc. After that point, shader-based optimizations will come and other work to make it faster performing on GPUs.
Emeric is hoping not to have to write his own VP8 decoder to start with, but rather to take advantage of one of the existing decoders, such as the official Google VP8 library or what's been written by FFmpeg. This will allow him to spend more of the summer focusing upon the GPU / Gallium3D integration.
The revised plans were outlined in this mailing list message
Also what's worth noting is the legal view of the Mesa / X developers concerning an H.264 state tracker for Gallium3D, since that too would be troubled by patents:
We talked about it already, in person, at XDC a few years ago. The basic agreement was that Theora was the only reasonable codec that could be shipped in Fedora and Debian; other codecs would probably be #define'd or commented out. I'm not sure if this is something we need to worry about immediately, especially if you're targeting VP8, which is roughly as safe as Theora.
But they still won't merge the floating point and render buffer work
to Mesa master, even if it's concealed behind an "--enable-patented" build switch. There's been interest in merging the code
along with the Mesa S3TC library
, but no actions were taken
. When combining the floating-point GL3 work with that of the other OpenGL 3.x improvements, Unigine Heaven and Tropics can run on Gallium3D
at a slow pace.
Since Google opened up VP8, there shouldn't be any legal issues with this state tracker should it successfully materialize.