[FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: add low-latency encoding

James Almer jamrial at gmail.com
Thu May 18 14:36:41 EEST 2023


On 5/18/2023 7:15 AM, xufuji456 wrote:
> Signed-off-by: xufuji456 <839789740 at qq.com>
> ---
>   libavcodec/videotoolboxenc.c | 12 ++++++++++++
>   1 file changed, 12 insertions(+)
> 
> diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
> index c6f22723d6..88334f1851 100644
> --- a/libavcodec/videotoolboxenc.c
> +++ b/libavcodec/videotoolboxenc.c
> @@ -251,6 +251,8 @@ typedef struct VTEncContext {
>   
>       /* can't be bool type since AVOption will access it as int */
>       int a53_cc;
> +
> +    int low_latency;
>   } VTEncContext;
>   
>   static int vtenc_populate_extradata(AVCodecContext   *avctx,
> @@ -1441,6 +1443,16 @@ static int vtenc_create_encoder(AVCodecContext   *avctx,
>           }
>       }
>   
> +    if (vtctx->low_latency) {

Nothing seems to set this?

Also, you should check the existing AV_CODEC_FLAG_LOW_DELAY flag instead.

> +        status = VTSessionSetProperty(vtctx->session,
> +                                      kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
> +                                      kCFBooleanTrue);
> +
> +        if (status) {
> +            av_log(avctx, AV_LOG_ERROR, "Error setting low latency property: %d\n", status);
> +        }
> +    }
> +
>       status = VTCompressionSessionPrepareToEncodeFrames(vtctx->session);
>       if (status) {
>           av_log(avctx, AV_LOG_ERROR, "Error: cannot prepare encoder: %d\n", status);


More information about the ffmpeg-devel mailing list