So, I've been working with this for a while now. I'm trying to design a video streamer using the raspberry pi 2 and GLimagesink. I have the omx plugins working with hardware acceleration, and everything works fine when running two pipelines to transmit video back and forth. My issue comes in to play when I try to embed GLimagesink in a widget. I've used the example on this page: http://code.metager.de/source/xref/freedesktop/gstreamer/gst/plugins-gl/tests/examples/qt/videooverlay/videooverlay.cpp and everything compiled fine. It was just when I tried to run the program the videotestsrc was drawn in the middle of the screen and not on the widget. I've also tried QtGstreamer using the voip example and still haven't had any luck. if someone could point me in the right direction that would be awesome!
The library versions I'm using are: Qt5.5.1, Gstreamer(base, good, bad, omx, libav) all pulled from git. I'm willing to use other options if they're out there. Thanks! |
On 12/08/15 21:08, Nuzut wrote:
> So, I've been working with this for a while now. I'm trying to design a video > streamer using the raspberry pi 2 and GLimagesink. I have the omx plugins > working with hardware acceleration, and everything works fine when running > two pipelines to transmit video back and forth. My issue comes in to play > when I try to embed GLimagesink in a widget. I've used the example on this > page: > http://code.metager.de/source/xref/freedesktop/gstreamer/gst/plugins-gl/tests/examples/qt/videooverlay/videooverlay.cpp > and everything compiled fine. It was just when I tried to run the program > the videotestsrc was drawn in the middle of the screen and not on the > widget. I've also tried QtGstreamer using the voip example and still haven't > had any luck. if someone could point me in the right direction that would be > awesome! > > The library versions I'm using are: Qt5.5.1, Gstreamer(base, good, bad, omx, > libav) all pulled from git. I'm willing to use other options if they're out > there. The trend with recent GUI toolkit frameworks is to perform rendering entirely client side and avoid actual windows (X11, wayland, or otherwise). This of course does not fit very well with GstVideoOverlay and as a result, a number of sinks have been implemented for various toolkits. For Qt there is currently only a qmlglsink that will draw into a qml based scene but no Qt Widget based element (yet!). The element has not been tested on the rpi however there would only need to be a couple of changes in the element at most to make it work there as well. I currently don't have my rpi with me to be able to check if it works or not. Cheers -Matt > Thanks! > > > > -- > View this message in context: http://gstreamer-devel.966125.n4.nabble.com/GLimagesink-in-a-widget-tp4673122.html > Sent from the GStreamer-devel mailing list archive at Nabble.com. > _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (484 bytes) Download Attachment |
Well another option for me is to draw the video output on top of the widget (kind of like it's floating). Could you recommend something like that? I've tried GLimagesink and FBDevsink, neither will draw anywhere else other than the center of the screen. It'd be cool if I had a way of setting some properties and moving their windows around. It needs to be something hardware accelerated though.
|
On 14/08/15 18:09, Nuzut wrote:
> Well another option for me is to draw the video output on top of the widget > (kind of like it's floating). Could you recommend something like that? I've > tried GLimagesink and FBDevsink, neither will draw anywhere else other than > the center of the screen. It'd be cool if I had a way of setting some > properties and moving their windows around. It needs to be something > hardware accelerated though. Floating windows is not a great way to render a video into a GUI toolkit as you will not be able to synchonize window moves or resizes properly. You really need to have a sink that deals with how you want to use the GL texture and the GUI toolkit specific operations for it. Dispmanx windows are created by default on the rpi in glimagesink which currently will show up in the centre of the screen. Adding properties is never going to be cross platform as on wayland, you are unable to position your window yourself. You can try glimagesink with different window systems, e.g. setting GST_GL_WINDOW=x11 or GST_GL_WINDOW=wayland for example and see if that changes things for you. -Cheers Matt _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (484 bytes) Download Attachment |
HI ..
I have Similar requirement with GTK. @OP any luck with above suggestion ? Basically i want to embedd glimagesink into GTKDrawable so that i can use full-screen video and also key events for play/pause/quit etc. My code works fine on host machine for xvimagesink. But same doesnt work on RSPI3. Thanks & Regards Munez |
On 23/09/16 14:50, munezbn.dev wrote:
> HI .. > > I have Similar requirement with GTK. @OP any luck with above suggestion ? > Basically i want to embedd glimagesink into GTKDrawable so that i can use > full-screen video and also key events for play/pause/quit etc. My code works > fine on host machine for xvimagesink. But same doesnt work on RSPI3. Unfortunately, Gtk+ on the Raspberry Pi uses X11 (or wayland) where glimagesink has to use dispmanx for access to OpenGL which are not compatible. You can use the gtkglsink element in GStreamer 1.8 which uses Gtk+'s OpenGL widget in Gtk+ 3.20 to draw instead (at the cost of software OpenGL rendering), alternatively, gtkglarea in Gtk+ 3.22 can use GLES although I'm not sure if that's hooked up for the RPi's GLES stack. Cheers -Matt > Thanks & Regards > Munez _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (495 bytes) Download Attachment |
Thanks for the reply Matt. Unfortunately I cannot enable GTK+ 3 version in Buildroot. It requires OPENGL/EGL based on mesa3d. But on raspberry pi we use native rpi-userland instead of MESA3D. There is separate thread on this topic. Ok, Currently glimagesink displays the video in the center of the screen which is not stretched/scaled ( Not full screen) .. If i dont use GTK widget, and if i want to render video in full-screen using glimagesink , how should I proceed. Can i use gl scaling elements ? Thanks & Regards Munez |
On 25/09/16 14:35, munezbn.dev wrote:
> Matthew Waters wrote >> On 23/09/16 14:50, munezbn.dev wrote: >>> HI .. >>> >>> I have Similar requirement with GTK. @OP any luck with above suggestion ? >>> Basically i want to embedd glimagesink into GTKDrawable so that i can use >>> full-screen video and also key events for play/pause/quit etc. My code >>> works >>> fine on host machine for xvimagesink. But same doesnt work on RSPI3. >> Unfortunately, Gtk+ on the Raspberry Pi uses X11 (or wayland) where >> glimagesink has to use dispmanx for access to OpenGL which are not >> compatible. You can use the gtkglsink element in GStreamer 1.8 which >> uses Gtk+'s OpenGL widget in Gtk+ 3.20 to draw instead (at the cost of >> software OpenGL rendering), alternatively, gtkglarea in Gtk+ 3.22 can >> use GLES although I'm not sure if that's hooked up for the RPi's GLES >> stack. >> >> Cheers >> -Matt > Thanks for the reply Matt. Unfortunately I cannot enable GTK+ 3 version in > Buildroot. It requires OPENGL/EGL based on mesa3d. But on raspberry pi we > use native rpi-userland instead of MESA3D. There is separate thread on this > topic. much better off using. > Ok, Currently glimagesink displays the video in the center of the screen > which is not stretched/scaled ( Not full screen) .. If i dont use GTK > widget, and if i want to render video in full-screen using glimagesink , how > should I proceed. Can i use gl scaling elements ? That is one option that would give you an output surface that's fullscreen. Cheers -Matt > Thanks & Regards > Munez _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (495 bytes) Download Attachment |
Thanks for pointing it out. I will try that and get back to you. |
HI Matt,
When i enabled MESA3D VC4 driver and disable userland, omenmax implementation will not be available hence gst-omx plugin will not build. For my player application i want to use gst-omx plugin on raspberry pie. Since i am beginner in gstreamer i wanted to know below points. 1] if i have to use glcolorscale in code ( not command line ) i have to create glcolorscale element and link before sink element. But how do i set the resolution which i want to scale. I didn't find any properties in that element. 2] Is glcolorscale hardware accelerated ? 3] in my player, how can i get the screen resolution info so that i can scale the video to match the screen resolution. All i want is to play the video in fullscreen on raspberry pi using gstreamer .. omxplayer by default plays in fullscreen. Thanks & Regards Munez |
Hi Matt,
The gst_gl_window_dispmanx_egl_set_window_handle() is empty and does nothing. static void gst_gl_window_dispmanx_egl_set_window_handle (GstGLWindow * window, guintptr handle) { } Is this a bug ? Because after i modified this function i was able to set custom window and move the window from app. But still no luck with fullscreen. Im still debugging Thanks & Regards Munez |
This post was updated on .
I raised a bug and proposed a patch. Kindly have look https://bugzilla.gnome.org/show_bug.cgi?id=772608 |
Free forum by Nabble | Edit this page |