[FFmpeg-devel] [PATCH] avcodec/videotoolboxenc: Fixes non-B-Frame encoding

Rick Kern kernrj at gmail.com
Mon Sep 27 14:12:04 EEST 2021


On Sun, Sep 26, 2021 at 8:48 AM NoHalfBits <ffmpeg-devel at fluthaus.com>
wrote:

> Sets vtctx->has_b_frames to 0 if the VideoToolbox compression
> session will not emit B-frames (and, in consequence, no valid
> DTSs). Required for the handling of invalid DTSs in
> 'vtenc_cm_to_avpacket' (line 2018ff) to work correctly and not
> abort encoding with "DTS is invalid." when no B-frames are
> generated.
>
> Signed-off-by: NoHalfBits <ffmpeg-devel at fluthaus.com>
> ---
>  libavcodec/videotoolboxenc.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c
> index 8dfd6e3d0c..93c3898fb5 100644
> --- a/libavcodec/videotoolboxenc.c
> +++ b/libavcodec/videotoolboxenc.c
> @@ -1516,7 +1516,10 @@ static av_cold int vtenc_init(AVCodecContext *avctx)
>      if (!status && has_b_frames_cfbool) {
>          //Some devices don't output B-frames for main profile, even if
> requested.
>          // HEVC has b-pyramid
> -        vtctx->has_b_frames = (CFBooleanGetValue(has_b_frames_cfbool) &&
> avctx->codec_id == AV_CODEC_ID_HEVC) ? 2 : 1;
> +        if (CFBooleanGetValue(has_b_frames_cfbool))
> +            vtctx->has_b_frames = avctx->codec_id == AV_CODEC_ID_HEVC ? 2
> : 1;
> +        else
> +            vtctx->has_b_frames = 0;
>
Pushed, thanks.

         CFRelease(has_b_frames_cfbool);
>      }
>      avctx->has_b_frames = vtctx->has_b_frames;
> --
> 2.30.1 (Apple Git-130)
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>


More information about the ffmpeg-devel mailing list