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:
Wim Taymans 2012-07-11 12:37:05 +02:00
parent 7932f62891
commit 68860526e9

View file

@ -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: