mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-28 20:05:38 +00:00
basesink: handle step end correctly
when we have a new step event with a -1 amount, make sure that we follow the regular code path so that the stop_end handler is called as usual. This takes care of flushing the buffer in case of a flushing step and also posts a step end message. See https://bugzilla.gnome.org/show_bug.cgi?id=679378
This commit is contained in:
parent
7932f62891
commit
68860526e9
1 changed files with 6 additions and 8 deletions
|
@ -1758,14 +1758,9 @@ start_stepping (GstBaseSink * sink, GstSegment * segment,
|
|||
GST_DEBUG_OBJECT (sink, "step started at running_time %" GST_TIME_FORMAT,
|
||||
GST_TIME_ARGS (current->start));
|
||||
|
||||
if (current->amount == -1) {
|
||||
GST_DEBUG_OBJECT (sink, "step amount == -1, stop stepping");
|
||||
current->valid = FALSE;
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (sink, "step amount: %" G_GUINT64_FORMAT ", format: %s, "
|
||||
"rate: %f", current->amount, gst_format_get_name (current->format),
|
||||
current->rate);
|
||||
}
|
||||
GST_DEBUG_OBJECT (sink, "step amount: %" G_GUINT64_FORMAT ", format: %s, "
|
||||
"rate: %f", current->amount, gst_format_get_name (current->format),
|
||||
current->rate);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1840,6 +1835,9 @@ handle_stepping (GstBaseSink * sink, GstSegment * segment,
|
|||
{
|
||||
gboolean step_end = FALSE;
|
||||
|
||||
if (current->amount == -1)
|
||||
return TRUE;
|
||||
|
||||
/* see if we need to skip this buffer because of stepping */
|
||||
switch (current->format) {
|
||||
case GST_FORMAT_TIME:
|
||||
|
|
Loading…
Reference in a new issue