summaryrefslogtreecommitdiff
path: root/ext/libav/gstavaudenc.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-09-30 16:13:28 +0300
committerTim-Philipp Müller <tim@centricular.com>2020-10-14 11:41:04 +0100
commit9e28867e864044a746c3289bc1ee552e1e19bea7 (patch)
tree4cf8c4a0fc245f4f0300d1a5d2c5b70dcf19675c /ext/libav/gstavaudenc.c
parent747a0fb72cb59d7060147ea20108421fe2a22300 (diff)
downloadgst-libav-9e28867e864044a746c3289bc1ee552e1e19bea7.tar.gz
avauddec/audenc/videnc: Don't return GST_FLOW_EOS when draining
Same behaviour as for avviddec now. FFmpeg will return AVERROR_EOF when it's completely drained but we should not return that here or otherwise upstream will receive EOS and not forward us more data. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/103>
Diffstat (limited to 'ext/libav/gstavaudenc.c')
-rw-r--r--ext/libav/gstavaudenc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c
index c4c7aab..e58dbe4 100644
--- a/ext/libav/gstavaudenc.c
+++ b/ext/libav/gstavaudenc.c
@@ -605,6 +605,14 @@ gst_ffmpegaudenc_drain (GstFFMpegAudEnc * ffmpegaudenc)
avcodec_flush_buffers (ffmpegaudenc->context);
+ /* FFMpeg will return AVERROR_EOF if it's internal was fully drained
+ * then we are translating it to GST_FLOW_EOS. However, because this behavior
+ * is fully internal stuff of this implementation and gstaudioencoder
+ * baseclass doesn't convert this GST_FLOW_EOS to GST_FLOW_OK,
+ * convert this flow returned here */
+ if (ret == GST_FLOW_EOS)
+ ret = GST_FLOW_OK;
+
return ret;
}