mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +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_DEBUG_OBJECT (sink, "step started at running_time %" GST_TIME_FORMAT,
|
||||||
GST_TIME_ARGS (current->start));
|
GST_TIME_ARGS (current->start));
|
||||||
|
|
||||||
if (current->amount == -1) {
|
GST_DEBUG_OBJECT (sink, "step amount: %" G_GUINT64_FORMAT ", format: %s, "
|
||||||
GST_DEBUG_OBJECT (sink, "step amount == -1, stop stepping");
|
"rate: %f", current->amount, gst_format_get_name (current->format),
|
||||||
current->valid = FALSE;
|
current->rate);
|
||||||
} else {
|
|
||||||
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
|
static void
|
||||||
|
@ -1840,6 +1835,9 @@ handle_stepping (GstBaseSink * sink, GstSegment * segment,
|
||||||
{
|
{
|
||||||
gboolean step_end = FALSE;
|
gboolean step_end = FALSE;
|
||||||
|
|
||||||
|
if (current->amount == -1)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
/* see if we need to skip this buffer because of stepping */
|
/* see if we need to skip this buffer because of stepping */
|
||||||
switch (current->format) {
|
switch (current->format) {
|
||||||
case GST_FORMAT_TIME:
|
case GST_FORMAT_TIME:
|
||||||
|
|
Loading…
Reference in a new issue