summaryrefslogtreecommitdiff
path: root/ext
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 /ext
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>
Diffstat (limited to 'ext')
-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);
}