summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2020-09-09 08:55:28 +0200
committerSeungha Yang <seungha@centricular.com>2020-10-14 17:35:55 +0900
commit19fecdd28e2004b2ca4d503ffa32f132bb679f7a (patch)
tree28eb276db9d05816d486fab1e8f8a3ae4f599f34
parent970c83ea282caf3a6550894403a5dc9a49ec9945 (diff)
downloadgst-libav-19fecdd28e2004b2ca4d503ffa32f132bb679f7a.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/94>
-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 1193243..ea27d31 100644
--- a/ext/libav/gstavauddec.c
+++ b/ext/libav/gstavauddec.c
@@ -720,7 +720,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);
}