[gst-devel] VA-API support

Gwenole Beauchesne gbeauchesne at splitted-desktop.com
Tue May 11 10:23:03 CEST 2010


Hi,

On Tue, 11 May 2010, Edward Hervey wrote:

>>    * Fully Open Source solution
>>    * VA-API support from 0.29 to 0.31
>>    * OpenGL rendering through VA/GLX or GLX texture-from-pixmap + FBO
>
>  I wonder how we could integrate this with the existing GL plugins and
> the ongoing cairo work Benjamin has been doing. Carl-Anton has started
> doing cairo support for the VDPAU plugins, maybe you can check out his
> work or you guys can exchange tips.

The libs provide helpers for easy integration into an OpenGL environment. 
If you have an OpenGL texture & target around, you just create a 
GstVaapiTexture from it and transfer VA surfaces to it when you get one. 
The real data being transported will remain a VA surface though.

For Cairo, I currently have no idea. At some point, I would want cairo-gl 
to directly handle VA surfaces too. e.g. for a fully accelerated Flash 
implementation (with Gnash).

>>    * libgstreamer0.10-dev >= 0.10.0
>>    * libgstreamer-plugins-base0.10-dev >= 0.10.0
>
>  Hmm... You might want to make it require more recent versions, those
> are almost 5 years old and a lot has changed since. A core/base from a
> year ago should do it, while not forcing people to use just-released
> versions.

I have not properly checked, but the very minimal would indeed be 0.10.25. 
It's just that I was lazy and did not want to try earlier version.

>>    * libva-dev >= 0.31.0-1+sds9 (VA/GLX)
>
>  Is that version needed even if you have a intel GPU ? Or is it only if
> you want to use the other backends ? You mention above it has VA-API
> support from 0.29 to 0.31.

Yes, you can use any libVA. The wording is incomplete. If you want the 
VA/GLX extensions, you need the -sds packages. Otherwise, it will work 
with the various upstream libVA version too. Note however that I will only 
build xvba-video against the libVA we use. For vdpau-video, you can build 
it against the current libVA 0.31 (upstream) and it works as well.

VA/GLX is being worked on on the Intel side too, so this will be 
integrated in a way or another. Definitively, modern drivers don't (and 
won't) use GLX texture-from-pixmap to render to an OpenGL texture. So, if 
you want OpenGL support, it's better to use the VA/GLX extensions anyway.

>  * Do you have a code repository ? It would be nice for other
> developers to follow/contribute if you had a git repository somewhere
> (maybe even on github/gitorious).

Well, for now, I am more concerned about getting it to work through 
decodebin2 or playbin2. So, there currently is not much to see since I 
currently don't see much myself to fix this problem yet. :-/

>  * Would be nice to share code between the vdpau and the vaapi plugins
> (like the bitstream parsing parts that both (and other HW-accelerated
> plugins) require). This might be made easier if we integrated your
> plugins in -bad, and you'd get the bonus side-effect of having the rest
> of the GStreamer community maintaining/improving your code as well :)

Actually, the way I developed the GstVaapi* helper libs could be made a 
plain GstVa with interfaces to implement either VA-API or VDPAU. ;-) i.e. 
there are hardly VA bits directly exposed in this GstVaapi API. If there 
are, they should be made private.

Anyway, I don't mind if this is integrated into -bad, thus the indirection 
through a github repo becomes useless and things indeed get simpler. ;-)

>  * Your plugins are LGPL... but they depend on a library (in gst-libs/)
> which is GPL, making the plugins GPL. Any reason for that ?

If this is the case, then it's a bug. I have just checked again, the 
gst-libs/ library is LGPL and the plugins are GPL. What makes you think 
the plugins were LGPL and libs GPL? I probably mixed up some doc then.

Regards,
Gwenole.




More information about the gstreamer-devel mailing list