aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoHalfBits <ffmpeg-devel@fluthaus.com>2021-09-26 14:47:52 +0200
committerRick Kern <kernrj@gmail.com>2021-09-27 07:06:06 -0400
commitb786bc7433dfe082441a57c1ba9ae9ea47904b78 (patch)
treed097d05063336c83fda8a3993e3cd28a14c654ae
parent90546c6ca70ee2316f3d7f0a860297a3d0978b79 (diff)
downloadffmpeg-b786bc7433dfe082441a57c1ba9ae9ea47904b78.tar.gz
avcodec/videotoolboxenc: Fixes non-B-Frame encoding
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@fluthaus.com> Signed-off-by: Rick Kern <kernrj@gmail.com>
-rw-r--r--libavcodec/videotoolboxenc.c5
1 files changed, 4 insertions, 1 deletions
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;
CFRelease(has_b_frames_cfbool);
}
avctx->has_b_frames = vtctx->has_b_frames;