GNOME Bugzilla – Bug 665390
[pipeline] conflicting element base_time
Last modified: 2011-12-22 11:35:29 UTC
Created attachment 202596 [details] [review] pipeline: only have a top-level pipeline do pipeline time management Consider a (unusual case of a) pipeline within a pipeline, going ASYNC to PLAYING (due to e.g. a live src). Then the top-level pipeline will set up a base_time (to be distributed), however the contained pipeline will do the same, so we end up distributing that one's base_time to all elements. When the pipeline has prerolled and is then finally going to PLAYING (all the way), the top-level will have it (original) base_time distributed again. So, elements end up with conflicting/changing base_time (without intermittent state change), and afaik this should not happen (and is at least Not Nice). Problem stems from the ASYNC_DONE state change handling explicitly checking for a top-level pipeline/bin, whereas the time (etc) manipulation in GstPipeline happens unconditionally. Simple patch attached makes the latter also conditional (though not sure if it needs something more subtle there).
Makes sense
commit f2d76b7e7b1af42963e3c252fcce9f5ac7911ce4 Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> Date: Fri Dec 2 14:10:32 2011 +0100 pipeline: only have a top-level pipeline do pipeline management Fixes #665390.