diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2020-09-14 14:24:51 +0300 |
---|---|---|
committer | Seungha Yang <seungha@centricular.com> | 2020-10-14 17:36:00 +0900 |
commit | e8a6aec213a1417fde6ced7679ff21b1b7d38bae (patch) | |
tree | 885e5aac44662b84ed181120ec04bc0317c75261 | |
parent | 19fecdd28e2004b2ca4d503ffa32f132bb679f7a (diff) | |
download | gst-libav-e8a6aec213a1417fde6ced7679ff21b1b7d38bae.tar.gz |
avviddec: Forward flow returns from draining instead of assuming OK
It might be useful for upstream to know that draining/finishing didn't
succeed, and why.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/94>
-rw-r--r-- | ext/libav/gstavviddec.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index aa4ad3d..ac9af5b 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -1740,7 +1740,7 @@ static GstFlowReturn gst_ffmpegviddec_drain (GstVideoDecoder * decoder) { GstFFMpegVidDec *ffmpegdec = (GstFFMpegVidDec *) decoder; - GstFlowReturn ret; + GstFlowReturn ret = GST_FLOW_OK; gboolean got_frame = FALSE; if (!ffmpegdec->opened) @@ -1755,7 +1755,7 @@ gst_ffmpegviddec_drain (GstVideoDecoder * decoder) avcodec_flush_buffers (ffmpegdec->context); done: - return GST_FLOW_OK; + return ret; send_packet_failed: GST_WARNING_OBJECT (ffmpegdec, "send packet failed, could not drain decoder"); @@ -1933,12 +1933,15 @@ gst_ffmpegviddec_stop (GstVideoDecoder * decoder) static GstFlowReturn gst_ffmpegviddec_finish (GstVideoDecoder * decoder) { - gst_ffmpegviddec_drain (decoder); + GstFlowReturn flow_ret; + + flow_ret = gst_ffmpegviddec_drain (decoder); + /* note that finish can and should clean up more drastically, * but drain is also invoked on e.g. packet loss in GAP handling */ gst_ffmpegviddec_flush (decoder); - return GST_FLOW_OK; + return flow_ret; } static gboolean |