<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi,<div><br></div><div>I have decided to go for glimagesink path and I have get the basic pipeline up and running with gstreamer 1.6 in my platform. </div><div>Here is my next questions.</div><div><span style="font-size: 12pt;">1. We use triple buffers in our application. As far as I could read from the gst-vaapi code, the textures are created in </span><span style="font-size: 12pt;">gl_create_texture function in </span><span style="font-size: 12pt;"> gstvaapiutils_glx.c. However, I couldn't find out where this is used exactly in gst-vaapidecode. Can anybody help?</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">2. I see in gstglimagesink code that many times next_buffer and next_buffer2 or similarly stored_buffer[0] and stored_buffer[1] are used. Are we using dual buffer there?</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">3. Is my understanding correct that vaapidecode creates the textures and uploads them and gstglimagesink draws them? </span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">Thanks</span></div><div><span style="font-size: 12pt;">Regards</span></div><br><div>> Date: Tue, 29 Sep 2015 18:11:47 +0200<br>> From: vjaquez@igalia.com<br>> To: libva@lists.freedesktop.org<br>> Subject: Re: [Libva] gst-vaapi, uploading to own textures<br>> <br>> You can either use clutter-gst, (if you are using gstreamer 1.6)<br>> glimagesink, or craft your on video sink.<br>> <br>> The simplest way is, if you use clutter, embedded a cluttervideosink actor in<br>> your code.<br>> <br>> If you write your own video sink, you would handle the GstVidoeGLTextureUpload<br>> meta:<br>> <br>> http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideometa.html#GstVideoGLTextureUpload<br>> <br>> WebKitGTK+ does that with its own video sink (though, it is moving to use<br>> glimagesink).<br>> <br>> <br>> In the case of using glimagesink, you can connect the 'client-draw' signal and<br>> render the given texture:<br>> <br>> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gl/sdl/sdlshare2.c?h=1.6<br>> <br>> There's another option, juggling with the GL context:<br>> <br>> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gl/sdl/sdlshare.c?h=1.6<br>> <br>> <br>> vmjl<br>> <br>> On 09/29/15 at 12:38pm, Dolevo Jay wrote:<br>> > Hi,<br>> > In my device, I receive video streams from different sources (local or remote). After decoding them, I show them on the display using OpenGL. So far, all decoding was done in software. I was receiving RGB frames from each source and uploading them to certain textures to render them. The sources are now decoded in hardware using gstreamer-vaapi. An example gst line is as follows: gst-launch-1.0 filesrc location=/store/1.mp4 ! qtdemux ! vaapidecode ! vaapisink display=2This works great. However, as you might imagine, vaapisink creates its own wondow and draw the decoded frames onto it. What I would like to do is to feed the textures that I created in my application and feed them to vaapidecode or vaapisink element so that the rendering can happen in my canvas. I have been digging into the vaapidecode and vaapisink elements to see where the textures are uploaded, but couldn't spot the exact line to feed my texture info into. Could anyone help me? A function name, or a line number or any hint would be greatly appreciated.<br>> > Thanks,<br>> > <br>> <br>> > _______________________________________________<br>> > Libva mailing list<br>> > Libva@lists.freedesktop.org<br>> > http://lists.freedesktop.org/mailman/listinfo/libva<br>> <br>> _______________________________________________<br>> Libva mailing list<br>> Libva@lists.freedesktop.org<br>> http://lists.freedesktop.org/mailman/listinfo/libva<br></div> </div></body>
</html>