GNOME Bugzilla – Bug 522203
[playbin] streamselector forwards NEWSEGMENT twice
Last modified: 2008-10-30 11:52:41 UTC
Hi, since [0] streamselector will send a NEWSEGMENT event on the srcpad whenever it receives a NEWSEGMENT event from any sinkpad. This causes multiple NEWSEGMENTS in some cases, breaking playback completely (sinks accumulate segments, timestamps are wrong or better far too early, pipeline stops). I have a testcase locally (can't share it unfortunately) where it breaks playback reproducible. Reverting [0] fixes it for me, Wim will investigate how to fix this properly ;) [0] http://webcvs.freedesktop.org/gstreamer/gst-plugins-base/gst/playback/gststreamselector.c?r1=1.29&r2=1.30
The current stream selector fails here (case 1): - sink0 receives segment, it's not active -> event dropped and pending = TRUE - sink0 receives data, it becomes active -> segment and data pushed - sink1 receives segment, it's not active -> event dropped and pending = TRUE - data on sink0 will push a new segment again The current stream selector works here (case 2) - sink0 receives segment, it's not active -> event dropped and pending = TRUE - sink1 receives segment, it's not active -> event dropped and pending = TRUE - data on sink0 or sink1 is pushed after sending a segment Reverting the patch makes case 1 work again but makes case 2 fail. I was testing a file that requires case 2 to work.
It's too late to cook up a complete fix, I vote for reverting it and make case 2 fail, like it did before (this impacts matroska with multiple streams).
Ok, so let's revert and keep this bug as blocker for 0.10.19?
yes
OK - make it so
My case is btw an AVI file with one video stream and two mp3 audio streams...
Reverted: * gst/playback/gststreamselector.c: (gst_selector_pad_event), (gst_selector_pad_chain): * gst/playback/gststreamselector.h: Revert change that caused regression until a real fix is found. Fixes #522203. Leaving this bug open to track progress.
input-selector should not have this problem.
closing, we should use input-selector.