diff mbox series

[FFmpeg-devel] avcodec/libsvtav1: send the EOS signal without a one frame delay to allow for the library to operate in a low-delay mode

Message ID 0101018f98b9a2c9-01b87943-0e31-4780-a2a7-d2f58757741e-000000@us-west-2.amazonses.com
State New
Headers show
Series [FFmpeg-devel] avcodec/libsvtav1: send the EOS signal without a one frame delay to allow for the library to operate in a low-delay mode | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished

Commit Message

Cosmin Stejerean May 21, 2024, 1:17 a.m. UTC
From: Cosmin Stejerean <cosmin@cosmin.at>

Co-authored-by: Amir Naghdinezhad <amir.naghdinezhad@intel.com>
Signed-off-by: Cosmin Stejerean <cosmin@cosmin.at>
---
 libavcodec/libsvtav1.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Cosmin Stejerean May 21, 2024, 3:38 a.m. UTC | #1
> On May 20, 2024, at 6:17 PM, Cosmin Stejerean via ffmpeg-devel <ffmpeg-devel@ffmpeg.org> wrote:
> 
> From: Cosmin Stejerean <cosmin@cosmin.at>
> 
> Co-authored-by: Amir Naghdinezhad <amir.naghdinezhad@intel.com>
> Signed-off-by: Cosmin Stejerean <cosmin@cosmin.at>
> ---
> libavcodec/libsvtav1.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
> 

Disregard this one, it was previously applied. It was left over in my patches folder by mistake and git send-email picked it up again.

- Cosmin
diff mbox series

Patch

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);