summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2020-09-09 08:55:28 +0200
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-09-30 00:44:33 +0000
commit4f71fa2f3a60f06aaf5d527f90ba3c9baeb705c6 (patch)
tree41f84540c14360dc7514ce699d0f442ece16c6b4
parent1721eed5ba6dc6a6d1da5da502a3e32a4ead8cbc (diff)
downloadgst-libav-4f71fa2f3a60f06aaf5d527f90ba3c9baeb705c6.tar.gz
avauddec: Avoid dropping non-OK flow return
When sucessfully finishing out frames (or finishing configuration), we must make sure we don't override any failing GstFlowReturn that might have been detected previously. Failure to do this would result in not propagating not-linked, flushing, etc... Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/96>
-rw-r--r--ext/libav/gstavauddec.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/libav/gstavauddec.c b/ext/libav/gstavauddec.c
index 756f92d..f43bfad 100644
--- a/ext/libav/gstavauddec.c
+++ b/ext/libav/gstavauddec.c
@@ -722,7 +722,10 @@ gst_ffmpegauddec_handle_frame (GstAudioDecoder * decoder, GstBuffer * inbuf)
}
} while (got_frame);
- if (is_header || got_any_frames) {
+ /* Only override the flow return value if previously did have a GST_FLOW_OK.
+ * Failure to do this would result in skipping downstream issues caught in
+ * earlier steps. */
+ if (ret == GST_FLOW_OK && (is_header || got_any_frames)) {
ret =
gst_audio_decoder_finish_frame (GST_AUDIO_DECODER (ffmpegdec), NULL, 1);
}