Gstreamer playbin integration in QT application
arnaud.tonda at gmail.com
Mon Jul 25 02:37:35 PDT 2011
2011/7/23 George Kiagiadakis <kiagiadakis.george at gmail.com>
> On Fri, Jul 22, 2011 at 3:49 PM, arnaud tonda <arnaud.tonda at gmail.com> wrote:
> > secondly i tried to use playbin2 and the problem is there.
> > i get the video-sink element of playbin2 but before pipeline is playing
> > video-sink is null.
> This is correct, because the video sink is created when the playbin
> switches to the PAUSED state, and it is created in another thread.
> To make this work, you need to connect to the bus sync-message signal,
> wait for the "prepare-xwindow-id" message and set the window ID from
> there. Of course you need to save the window id earlier because you
> can't call QWidget::winId() from another thread.
> See http://cgit.freedesktop.org/gstreamer/qt-gstreamer/tree/src/QGst/Ui/videowidget.cpp#n139
> for an example.
Thanks for the reply, i will try this.
> > if i overload video-sink with a xvimagesink element video-sink is not null,
> > and i can use gst_x_overlay_set_xwindow_id on this.
> > but it result on a fullscreen video.... i think something is wrong but i
> > don't understand what....
> Maybe something is not correctly in sync. Try calling
> QApplication::syncX() before setting the window id.
> > the gst_bus_add_watch did not work. the attached callback is never called.
> > Has it work on the standalone C source code i think it is due to the QT
> > event loop but i can't confirm.
> > am i right?
> It depends. On Unix/X11, Qt can optionally use the Glib event loop,
> which achieves proper integration with the bus watch. Most
> distributions compile Qt with Glib support, so it should work.
> However, if you have compiled Qt yourself, you may have omited Glib
> support... But to make sure it works in either case, you need to write
> some dispatcher that will poll the bus for new messages from the Qt
> main loop.
> See http://cgit.freedesktop.org/gstreamer/qt-gstreamer/tree/src/QGst/bus.cpp#n29
> for an example.
> PS: You can also just use QtGStreamer... ;)
Yes, i know about QTGstreamer but the problem is that i must (for the
moment) use QT3.3. so i cant use this and cant compile my own
QTGstreamer. it's boring it would be a real time saver.....
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
téléphone : 06 34 23 57 78
More information about the gstreamer-devel