summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-09-14 14:24:51 +0300
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-09-30 00:44:33 +0000
commit2761e58578186d2885850db7536e81eb7f4c079b (patch)
tree8647a6f0875a0d8e2f7a8f8f04720ce1e82ea272
parent4f71fa2f3a60f06aaf5d527f90ba3c9baeb705c6 (diff)
downloadgst-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.c11
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