From 5dd5b163aeb2539a2134c00ab15eabe5a322357d Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Thu, 7 Sep 2017 12:08:40 -0400 Subject: [PATCH] nlecomposition: Always execute seeks We have an optiominisation to avoid double seeks when a seek is passed the end of the current stack. The problem, is that we no longer flush the pipeline when this code is reached. This patch comments out this optimization adding a FIXME. As mention, flushing the stack instead of seeking would work, but does not seem trivial considering all the mechanic inplace to forward or not the events. https://bugzilla.gnome.org/show_bug.cgi?id=787405 --- plugins/nle/nlecomposition.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/nle/nlecomposition.c b/plugins/nle/nlecomposition.c index 61159cb188..151ddc0f8e 100644 --- a/plugins/nle/nlecomposition.c +++ b/plugins/nle/nlecomposition.c @@ -552,6 +552,10 @@ _seek_pipeline_func (NleComposition * comp, SeekData * seekd) GST_DEBUG_OBJECT (seekd->comp, "Segment now has flags:%d", priv->segment->flags); + /* FIXME: The idea was to avoid seeking on a stack if we know we will endup + * passed the end, but then we loose the flush, wich leads to hangs. Long + * term, we should just flush the stack instead to avoid the double seek. */ +#if 0 if (priv->segment->start >= NLE_OBJECT_STOP (seekd->comp)) { GST_INFO_OBJECT (seekd->comp, "Start %" GST_TIME_FORMAT " > comp->stop: %" GST_TIME_FORMAT @@ -560,6 +564,7 @@ _seek_pipeline_func (NleComposition * comp, SeekData * seekd) GST_FIXME_OBJECT (seekd->comp, "HANDLE error async!"); return; } +#endif _post_start_composition_update (seekd->comp, gst_event_get_seqnum (seekd->event), COMP_UPDATE_STACK_ON_SEEK);