diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2020-09-14 14:24:51 +0300 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-09-30 00:44:33 +0000 |
commit | 2761e58578186d2885850db7536e81eb7f4c079b (patch) | |
tree | 8647a6f0875a0d8e2f7a8f8f04720ce1e82ea272 | |
parent | 4f71fa2f3a60f06aaf5d527f90ba3c9baeb705c6 (diff) | |
download | gst-libav-2761e58578186d2885850db7536e81eb7f4c079b.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/96>
-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 aca53b1..d9eb178 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -1810,7 +1810,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) @@ -1825,7 +1825,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"); @@ -2003,12 +2003,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 |