Hi,
I found a bug in libavcodec/qsvenc.c. You know, QSV has several
bitrate control modes (CBR, VBR, .. and so on). The bug is bitrate
setting in QVBR.
In the original code, bitrate value is set in "mfx.MaxKbps". Actually,
it must be "mfx.TargetKbps". As a result, FFmpeg's QVBR always works
in quite low bitrate (ignoring user set bitrate value).
Here is the patch for ffmpeg-4.3.1. (Since MaxKbos has no effects or
side-effects in QVBR, we can leave it as is.)
Best regards
diff --strip-trailing-cr -uNr ffmpeg-4.3.1.orig/libavcodec/qsvenc.c
ffmpeg-4.3.1/libavcodec/qsvenc.c
--- ffmpeg-4.3.1.orig/libavcodec/qsvenc.c 2020-07-11 19:39:30.000000000 +0900
+++ ffmpeg-4.3.1/libavcodec/qsvenc.c 2020-08-03 19:29:41.317275300 +0900
@@ -616,8 +616,10 @@
q->param.mfx.MaxKbps = max_bitrate_kbps /
brc_param_multiplier;
q->param.mfx.BRCParamMultiplier = brc_param_multiplier;
#if QSV_HAVE_QVBR
- if (q->param.mfx.RateControlMethod == MFX_RATECONTROL_QVBR)
+ if (q->param.mfx.RateControlMethod == MFX_RATECONTROL_QVBR) {
+ q->param.mfx.TargetKbps = q->param.mfx.MaxKbps;
q->extco3.QVBRQuality = av_clip(avctx->global_quality, 0, 51);
+ }
#endif
break;
case MFX_RATECONTROL_CQP:
@@ -652,6 +654,10 @@
#endif
}
--
Makoto KIMURA
email : [email protected]
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".