Throubles with Autovideosink ([xcb] Most likely this is a multi-threaded client and XInitThreads has not been called)

Giacomo D omagico.olo at gmail.com
Fri Nov 27 00:30:38 PST 2015


*Hi everyone,
I'm writing an application which receives .mp4 streams over RTSP. I receive
them and show them like below:*

        p_description = "playbin uri=%s " %uri + "mute=true"
        new_pipeline = Gst.parse_launch(p_description)
        new_pipeline.name = "pipeline_" + str(self.n_branch)
        videobin = Gst.Bin.new("videobin"+str(self.n_branch))
        timeoverlay =
Gst.ElementFactory.make("timeoverlay","timeoverlay"+str(self.n_branch))
        videobin.add(timeoverlay)
        pad = timeoverlay.get_static_pad("video_sink")
        ghostpad = Gst.GhostPad.new("sink", pad)
        videobin.add_pad(ghostpad)
        queuesink =
Gst.ElementFactory.make("queue","queuesink"+str(self.n_branch))
        videobin.add(queuesink)
        videosink =
Gst.ElementFactory.make("autovideosink","autovideosink"+str(self.n_branch))
        videobin.add(videosink)

        timeoverlay.link(queuesink):

        queuesink.link(videosink):

        new_pipeline.set_property("video-sink", videobin)

        # Sets buses for events on the pipeline
        # bus = new_pipeline.get_bus()
        # bus.add_signal_watch()
        # bus.enable_sync_message_emission()
        # bus.connect("message", self.on_message)
        # bus.connect("sync-message::element", self.on_sync_message)

        new_pipeline.set_state(Gst.State.PLAYING)
*
I'm having some issues because I used xvimagesink and my application crashes
sometimes on a particular .mp4 configuration:*

0:00:00.558593949   616      0x1082f70 WARN                 basesrc
gstbasesrc.c:2943:gst_base_src_loop:<udpsrc1> error: Errore interno nel
flusso di dati.
0:00:00.558637417   616      0x1082f70 WARN                 basesrc
gstbasesrc.c:2943:gst_base_src_loop:<udpsrc1> error: streaming task paused,
reason not-linked (-1)
0:00:00.569523427   616      0x1068770 WARN           basetransform
gstbasetransform.c:1414:gst_base_transform_setcaps:<videoconvert0> transform
could not transform video/x-raw(memory:VASurface), format=(string)I420,
width=(int)1280, height=(int)720, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2,
colorimetry=(string)bt709, framerate=(fraction)0/1 in anything we support
0:00:00.569718285   616      0x1068770 WARN           basetransform
gstbasetransform.c:1414:gst_base_transform_setcaps:<videoconvert0> transform
could not transform video/x-raw(memory:VASurface), format=(string)I420,
width=(int)1280, height=(int)720, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2,
colorimetry=(string)bt709, framerate=(fraction)0/1 in anything we support
*
If I change to autovideosink the problem is resolved! 
But I have to change my application because autovideosink hasn't
"set_window_handle(xid)" method.
So I add "bus.connect("sync-message::element", self.on_sync_message)" to
capture my imagesink so:*

if message.get_structure().get_name() == 'prepare-window-handle':
            newimagesink = message.src
*
But I'm getting another crash:*

[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not
been called
[xcb] Aborting, sorry about that.
python3.4: ../../src/xcb_io.c:274: poll_for_event: asserzione
"!xcb_xlib_threads_sequence_lost" non riuscita.
*
If I add autovideosink slowly the problem doesn't appear...

Is there someone who can help me?
Thanks,
G.*






--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Throubles-with-Autovideosink-xcb-Most-likely-this-is-a-multi-threaded-client-and-XInitThreads-has-no-tp4674668.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list