GNOME Bugzilla – Bug 722372
rtpjitterbuffer: Got data flow before stream-start event
Last modified: 2014-01-18 09:39:28 UTC
Just pulled and built all GStreamer master branches and I am getting these critical warnings. It doesn't happen with 1.2.2. The test consists of an gst-rtsp-server test-launch and a rtspsrc client: ./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )" and gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test latency=200 drop-on-latency=true ! decodebin ! videoconvert ! fakesink It doesn't always happen, you might need to cancel the client and re-run it a few times. Similar errors happen with other pipelines. ------- (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<rtpjitterbuffer0:src> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<rtpptdemux0:sink> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-CRITICAL **: gst_pad_push_event: assertion 'GST_IS_EVENT (event)' failed (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<rtpptdemux0:src_96> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<recv_rtp_src_0_3062232036_96:proxypad4> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<manager:recv_rtp_src_0_3062232036_96> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<recv_rtp_src_0_3062232036_96:proxypad5> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<rtspsrc0:recv_rtp_src_0_3062232036_96> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<decodebin0:sink> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<sink:proxypad0> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<typefind:sink> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<typefind:src> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<rtph264depay0:sink> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<rtph264depay0:src> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<h264parse0:sink> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<h264parse0:src> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<capsfilter0:sink> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3974:gst_pad_push_data:<capsfilter0:src> Got data flow before stream-start event (gst-launch-1.0:33571): GStreamer-WARNING **: gstpad.c:3740:gst_pad_chain_data_unchecked:<avdec_h264-0:sink> Got data flow before stream-start event
Created attachment 266499 [details] GST_DEBUG=4
That suggests this is rtpjitterbuffer sending data-flow before stream-start sometimes.
(In reply to comment #2) > That suggests this is rtpjitterbuffer sending data-flow before stream-start > sometimes. Is there any recent change in gstreamer core that would make this appear now? I have other pipelines (source code) that behave correctly with 1.2.2 but since I updated to master they have the similar problem. I am not saying my pipelines are correct, I am just wondering if there was any fix in the core that would cause this to show up now.
I'm not aware of any core changes that seem related here... but all the RTP RTX changes recently might be. Or are your other pipelines not RTP related at all?
(In reply to comment #4) > I'm not aware of any core changes that seem related here... but all the RTP RTX > changes recently might be. > > Or are your other pipelines not RTP related at all? Yes, no RTP related.
Can you provide simpler testcases than RTP pipelines then, something minimal? Or do some "git bisect" to find the offending commit?
(In reply to comment #6) > Can you provide simpler testcases than RTP pipelines then, something minimal? > Or do some "git bisect" to find the offending commit? The pipeline was wrong. It used some old code to use a queue as a source (old days, I think). I have replaced that with an appsrc which solves this. I am still wondering what change cause the problem to pop up now. I'll try bisect for that.
Created attachment 266512 [details] [review] do not drop events when latency is set The bug seems was introduced in the commit below. Serialized events are now queued in the jitter buffer. When latency is set the events are drop. This patch doesn't drop events even latency is set. ---- eee515cb2c1367b4bd60f3e19251f42c3edd6ffe is the first bad commit commit eee515cb2c1367b4bd60f3e19251f42c3edd6ffe Author: Wim Taymans <wtaymans@redhat.com> Date: Tue Dec 10 11:57:37 2013 +0100 rtpjitterbuffer: serialize events in the buffer Serialize events into the jitterbuffer by inserting them with a -1 seqnum. Update unit test to expect events from the streaming thread. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=652986 :040000 040000 a049aaedf7cd696f8db6623796e1949904903561 622211fe4c0ab8a32214163119e0406f52a5bb43 M gst :040000 040000 d417324e3be002a6a5977d1c8ff6fc2765279d80 f0dcf2b2546831bec8c0a443ed209ef8c17953ff M tests
Created attachment 266591 [details] [review] do not drop events when latency is set (reword commit) Same patch with updated commit log to follow same format as other commits.
Almost, don't indent the lines after the first :) commit cdbb2ba6b8550d1527acdc5baaf0184658489ecc Author: Aleix Conchillo Flaqué <aleix@oblong.com> Date: Thu Jan 16 17:36:12 2014 -0800 rtpjitterbuffer: do not drop serialized events when latency is set Serialized events are now queued in the jitter buffer, so we don't want to drop them even latency is set. https://bugzilla.gnome.org/show_bug.cgi?id=722372