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

James Almer jamrial at gmail.com
Tue Feb 27 23:19:47 EET 2024


On 2/23/2024 8:21 PM, Cosmin Stejerean via ffmpeg-devel wrote:
> From: Cosmin Stejerean <cosmin at cosmin.at>
> 
> Co-authored-by: Amir Naghdinezhad <amir.naghdinezhad at intel.com>
> Signed-off-by: Cosmin Stejerean <cosmin at cosmin.at>
> ---
>   libavcodec/libsvtav1.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
> 
> 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)

SVT-AV1 1.8.0 has this value set to 1.8.0, same as in the current git 
head commit. Is this in preparation for an upcoming release?

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


More information about the ffmpeg-devel mailing list