aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCosmin Stejerean <cosmin@cosmin.at>2024-02-23 23:21:39 +0000
committerJames Almer <jamrial@gmail.com>2024-02-27 19:38:23 -0300
commit69dd1ce610fcffec453a0663c613c9b13165fd9e (patch)
treebc422bb586aa86960770cbcdcfff119f11fdf535
parent0c204ce9f6b6d1ac3c0ed399bb8b7aa8768d05d9 (diff)
downloadffmpeg-69dd1ce610fcffec453a0663c613c9b13165fd9e.tar.gz
avcodec/libsvtav1: send the EOS signal without a one frame delay to allow for the library to operate in a low-delay mode
Co-authored-by: Amir Naghdinezhad <amir.naghdinezhad@intel.com> Signed-off-by: Cosmin Stejerean <cosmin@cosmin.at> Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r--libavcodec/libsvtav1.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 3b41f5a39e..1eda63200c 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -539,6 +539,14 @@ static int eb_receive_packet(AVCodecContext *avctx, AVPacket *pkt)
if (svt_ret == EB_NoErrorEmptyQueue)
return AVERROR(EAGAIN);
+#if SVT_AV1_CHECK_VERSION(2, 0, 0)
+ if (headerPtr->flags & EB_BUFFERFLAG_EOS) {
+ svt_enc->eos_flag = EOS_RECEIVED;
+ svt_av1_enc_release_out_buffer(&headerPtr);
+ return AVERROR_EOF;
+ }
+#endif
+
ref = get_output_ref(avctx, svt_enc, headerPtr->n_filled_len);
if (!ref) {
av_log(avctx, AV_LOG_ERROR, "Failed to allocate output packet.\n");
@@ -573,8 +581,10 @@ static int eb_receive_packet(AVCodecContext *avctx, AVPacket *pkt)
if (headerPtr->pic_type == EB_AV1_NON_REF_PICTURE)
pkt->flags |= AV_PKT_FLAG_DISPOSABLE;
+#if !(SVT_AV1_CHECK_VERSION(2, 0, 0))
if (headerPtr->flags & EB_BUFFERFLAG_EOS)
svt_enc->eos_flag = EOS_RECEIVED;
+#endif
ff_side_data_set_encoder_stats(pkt, headerPtr->qp * FF_QP2LAMBDA, NULL, 0, pict_type);