Commit 09b8f902 authored by Thiago Santos's avatar Thiago Santos

audiodecoder: return EOS when segment is over

if a buffer is clipped by being completely out of segment, check if this
buffer is after the end of the segment and return EOS upstream

https://bugzilla.gnome.org/show_bug.cgi?id=709224
parent d3ca7271
......@@ -901,6 +901,7 @@ gst_audio_decoder_push_forward (GstAudioDecoder * dec, GstBuffer * buf)
GstAudioDecoderPrivate *priv;
GstAudioDecoderContext *ctx;
GstFlowReturn ret = GST_FLOW_OK;
GstClockTime ts;
klass = GST_AUDIO_DECODER_GET_CLASS (dec);
priv = dec->priv;
......@@ -914,6 +915,7 @@ gst_audio_decoder_push_forward (GstAudioDecoder * dec, GstBuffer * buf)
}
ctx->had_output_data = TRUE;
ts = GST_BUFFER_TIMESTAMP (buf);
GST_LOG_OBJECT (dec,
"clipping buffer of size %" G_GSIZE_FORMAT " with ts %" GST_TIME_FORMAT
......@@ -926,6 +928,12 @@ gst_audio_decoder_push_forward (GstAudioDecoder * dec, GstBuffer * buf)
ctx->info.bpf);
if (G_UNLIKELY (!buf)) {
GST_DEBUG_OBJECT (dec, "no data after clipping to segment");
if (dec->output_segment.rate >= 0) {
if (ts >= dec->output_segment.stop)
ret = GST_FLOW_EOS;
} else if (ts < dec->output_segment.start) {
ret = GST_FLOW_EOS;
}
goto exit;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment