If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

WebM, Theora Acceleration Talked About For Gallium3D

03-26-2011, 11:00 AM

Phoronix: WebM, Theora Acceleration Talked About For Gallium3D

Earlier this week I mentioned a student developer looking to partake in Google's Summer of Code was interested in creating an H.264 state tracker for Gallium3D whereby any graphics card with a Gallium3D driver could have H.264 video decoding support using VA-API / VDPAU and accelerating the operations in shaders on the GPU, where in theory at least it would be universally supported across all drivers on this architecture. It's still looking hopeful that this will be hacked on this summer, but a few interesting points have been expressed...

Comment

can someone explain why the WebM format is being implemented using OpenCL (the github project and Veerappan) and they try to implement h264 using shaders???

is it simply a different solution or there are technical reasons behind it?? from what i read many people say both formats are similar.

I believe it is just different people approaching the problem in different ways based on their interests and comfort level with various technologies. Programming shaders directly in driver code makes it easier to integrate the resulting code into an efficient driver stack without having to copy buffers around more than necessary but results in a less portable solution -- programming in OpenCL allows to you focus more on getting the algorithms and implementation right without having to worry about hardware specifics and should give a more portable result.

Programming in OpenGL with GLSL shaders would probably be somewhere in between but not sure if that would be best of both worlds or worst.

Comment

In response to the VDPAU vs VA-api comments when I was speaking with some devs previously I was told this wasn't much of a big deal as a decent state tracker would be able to expose both api's without too much dificulty

Comment

"- It was also mentioned there is someone working on WebM support over OpenCL (see the GitHub), but that's currently slower than a CPU-based solution and the open-source drivers currently don't have OpenCL support. "

also, i wonder why non of the devs in the [Mesa-dev] GSoC : Video decoding state tracker for Gallium3d thread mention using the ffmpeg xVP8 with it's optimisations by Jason Garrett-Glaser,Ronald S. Bultje etc being the fastest CPU VP8 code http://x264dev.multimedia.cx/archives/499 and good reference to the spec as a base for any Gsoc prototype

Comment

can someone explain why the WebM format is being implemented using OpenCL (the github project and Veerappan) and they try to implement h264 using shaders???

is it simply a different solution or there are technical reasons behind it?? from what i read many people say both formats are similar.

I decided on OpenCL purely for portability reasons. If I had written a Gallium state tracker specifically for WebM video, the state tracker would only really be useful with Mesa. By doing OpenCL, I don't have to write OpenGL/GLSL (I have basic familiarity with it, but I'm no expert), and I also get the ability to support Mac/Linux/Windows on any usable hardware. As a bonus, Mesa will be able to handle WebM over OpenCL as soon as the Clover project gets to a usable state.

Comment

hopefully there will be a gsoc project on clover and we might have something by the end of summer.

Also i assume that since the two codecs have many similarities it wont be a huuuge thing to add the other codec on one of the projects if someone wants to do that. (shader based webm and h264 on Opencl)