avcodec/videotoolboxenc: ensure bitrate is set in low_delay mode

VideoToolbox doesn't support automatic bitrate in low delay mode.
Check bitrate and show error message so user knows what's going
wrong.

(cherry picked from commit c1dc2e2b7cc8df8a40b616793d1204be0e71103c)
Signed-off-by: Marvin Scholz <epirat07@gmail.com>
This commit is contained in:
Zhao Zhili 2025-09-10 20:29:47 +08:00 committed by Marvin Scholz
parent 0ca188e0d6
commit b9dd25b80a

View file

@ -1711,6 +1711,12 @@ static int vtenc_configure_encoder(AVCodecContext *avctx)
// low-latency mode: eliminate frame reordering, follow a one-in-one-out encoding mode
if ((avctx->flags & AV_CODEC_FLAG_LOW_DELAY) &&
((avctx->codec_id == AV_CODEC_ID_H264) || (TARGET_CPU_ARM64 && avctx->codec_id == AV_CODEC_ID_HEVC))) {
if (!avctx->bit_rate) {
av_log(avctx, AV_LOG_ERROR, "Doesn't support automatic bitrate in low_delay mode, "
"please specify bitrate explicitly\n");
status = AVERROR(EINVAL);
goto init_cleanup;
}
CFDictionarySetValue(enc_info,
compat_keys.kVTVideoEncoderSpecification_EnableLowLatencyRateControl,
kCFBooleanTrue);