[gst-devel] plugin opengl multiplatform

Julien Isorce julien.isorce at gmail.com
Fri May 16 02:42:02 CEST 2008


Hi,

I have found a way to implement the gstxoverlay interface and this is a link
that demonstrates it :
http://vulvteam.free.fr/gstreamer/gstreamer_opengl_3.zip<http://vulvteam.free.fr/gstreamer/gstreamer_opengl.zip>is
a zip file (9 MO) that contains 3 avi example files:

videoxoverlay.avi: The Id of a QWidget is passed to the glimagesink through
the gstxoverlay interface
cubexoverlay.avi: The Id of a QGLWidget is passed to the glimagesink through
the gstxoverlay interface, the video is played over a "rotating" cube
mousexoverlay.avi:The Id of a QWidget is passed to the glimagesink through
the gstxoverlay interface, the video is played over a "static" cube. The
mouse moves the cube.

I give again the previous links :
http://vulvteam.free.fr/gstreamer/gstreamer_opengl_2.zip<http://vulvteam.free.fr/gstreamer/gstreamer_opengl.zip>
http://vulvteam.free.fr/gstreamer/gstreamer_opengl.zip


Next step is to make a linux build in order to test this plugin on a Kunbutu
for example. (it should work but I need to verify it)

But for now the plugin is finished and works fine on win32.

Sincerely

Julien I.

2008/5/6 Julien Isorce <julien.isorce at gmail.com>:

> Hi,
>
> The third element, glvideomaker is now complete. It handles every RGB-like.
> It also handles I420, YV12, YUY2, UYVY and AYUV, trough FBO and GLSL. (GL
> flux to video flux). It must be connected to the glgraphicmaker (symetric
> element).
>
> To exposes the capabilities of the plugin I am working on, especially about
> colorspace conversion., I made other showcases :
> http://vulvteam.free.fr/gstreamer/gstreamer_opengl_2.zip<http://vulvteam.free.fr/gstreamer/gstreamer_opengl.zip>is a zip file (15.6 MO) that contains 3 avi example files.
>
> It was not easy to manage multiple FBO and one FBO with multiple attached
> textures, especially correclty switching between them. Then shader programs
> for "from GL to video conversion"(glvideomaler) were much complex than "from
> video to GL conversion"(glgraphicmaker).
> But now I think it's ok.
> And shader programs could be optimzed by everyone who want help, after I
> share the code.
>
> So before to share the code I want to implement the gstxoverlay interface.
> But I have to get ride of freeglut that is not an easy task.
> If someone want to help me in this last task, it will be appreciated.
>
> Other thing, I never tested my plugin on linux but I plan to do it. I
> should work thank's to freeglut, I hope :P. But I am not really aware with
> automake and autoconf. Help about this would be appreciated too.
>
> I am sorry, when I started the plugin I would just make a "patch" for the
> existing one. But the now I see that the mecanism is completely different
> (some parts are similar and the existing code helped me a lot at start).
> Also the existing code was less commented and it was quite impossible to
> enter. But I understand that it's a project made on spare time. Anyway, I
> could not start without the existing one.
>
> So, what the best way to proceed. Patch the existing one ? (impossible as I
> said), Fusion with the existing one ? (we can try), an other plugin ?
> (name?), an indepent plugin ?
> I would be happy to integrate the plugin to the gstreamer repository, but
> if you think (after looking the code) that the plugin is not that the
> gstreamer ommunity want, I can make an independent plugin.
>
> Sincerely
>
> Julien
>
>
> 2008/4/21 Julien Isorce <julien.isorce at gmail.com>:
>
>> Hi,
>>
>> Some news about the plugin I am working on my spare time:
>>
>> The plugin uses the opengl API. It uses also glew to automatically manage
>> extensions.
>> For now there is two elements (implementation is finished)
>> The first one is named glimagesink (as the current plugin-gl from David A.
>> Schleef). It handles every RGB-like. It also handles I420, YV12, YUY2, UYVY
>> and AYUV, trough GLSL (OpenGL shading language). (this is done and tested on
>> an ATI 9800 pro, an ATI X800 GTO and an recent NVIDIA card (I can search the
>> exact name if needed) )
>> The second element is named glgraphicmaker, it handles the same video
>> format inputs as the glimagesink. The output has the type video/x-raw-gl (as
>> in the current plugin-gl from David A. Schleef). I prefer to name it
>> "glgraphicmaker" instead of "glupload" because it is possible to define
>> reshape and draw callback from a gstreamer client code (usefull when someone
>> want to have a complex opengl scene without making an other filter). The
>> most important thing is that the graphic FPS can be synchronised or bigger
>> (I mean as fast as your graphic card can) than the input video framerate
>> (the client code can to turn on or off it). The glimagesink can be connected
>> to the glgraphicmaker in order to see the opengl scene.
>>
>> Now I am currently working on the symectric element that it is named
>> "glvideomaker". I prefer this name instead of "gldownload" for the same
>> reasons.
>>
>> The other thing that I want to talk about is the "freeglut" part in this
>> plugin. I use it to create the windows easily but there is a limitation.
>> It's not possible to implement the gstxoverlay interface because freeglut
>> cannot receive winId from an existing window. So, there is two solutions to
>> resolve this problem. The first one is to extract the small part I used in
>> freeglut and just put it into the plugin. The second solution is to use an
>> other opengl toolkit (glut-like) that could permit to implement the
>> gstxoverlay interface.
>> The second solution is possible because the deep mecanism of this plugin
>> will be the same (just by replacing freeglut fucntions by the identicals
>> functions from an other library)
>> What solution do you expect to be the best? If it's the second one, which
>> library are you thinking ?
>>
>> Sincerely
>>
>> Julien I.
>>
>>
>>
>> 2008/4/12 Julien Isorce <julien.isorce at gmail.com>:
>>
>>> Hi,
>>>
>>> Link : http://vulvteam.free.fr/gstreamer/gstreamer_opengl.zip is a zip
>>> file (5 MO) that contains 4 avi example file.
>>> The videos show capabilities of the plugin I am working on.
>>>
>>> It uses freeglut API but it could use an other glut-like multiplatform
>>> toolkit. The mecanism should be the same. I'ill make the plugin able to use
>>> any of them.
>>> Some work has to be done before sharing the code.
>>>
>>> I could say more about the plugin capabilities but examples are
>>> explicits. And I do not want overload this email.
>>> I am waiting remarks, requirements, advises etc ...
>>>
>>> Julien I.
>>>
>>> ps: Thanks to C.C. for a lot of discusions and advises.
>>>
>>>
>>
>>
>>
>>
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20080516/609606ce/attachment.htm>


More information about the gstreamer-devel mailing list