[FFmpeg-devel] [PATCH 4/5] lavc/qsvenc: dump parameters for VP9 encoding in verbose mode
Haihao Xiang
haihao.xiang at intel.com
Mon Dec 13 08:50:37 EET 2021
---
libavcodec/qsvenc.c | 80 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index a2a8a79189..106438f227 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -343,6 +343,84 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q,
}
+static void dump_video_vp9_param(AVCodecContext *avctx, QSVEncContext *q,
+ mfxExtBuffer **coding_opts)
+{
+ mfxInfoMFX *info = &q->param.mfx;
+#if QSV_HAVE_EXT_VP9_PARAM
+ mfxExtVP9Param *vp9_param = (mfxExtVP9Param *)coding_opts[0];
+#endif
+#if QSV_HAVE_CO2
+ mfxExtCodingOption2 *co2 = (mfxExtCodingOption2*)coding_opts[1];
+#endif
+
+ av_log(avctx, AV_LOG_VERBOSE, "profile: %s \n",
+ print_profile(avctx->codec_id, info->CodecProfile));
+
+ av_log(avctx, AV_LOG_VERBOSE, "GopPicSize: %"PRIu16"; GopRefDist: %"PRIu16"; GopOptFlag: ",
+ info->GopPicSize, info->GopRefDist);
+ if (info->GopOptFlag & MFX_GOP_CLOSED)
+ av_log(avctx, AV_LOG_VERBOSE, "closed ");
+ if (info->GopOptFlag & MFX_GOP_STRICT)
+ av_log(avctx, AV_LOG_VERBOSE, "strict ");
+ av_log(avctx, AV_LOG_VERBOSE, "; IdrInterval: %"PRIu16"\n", info->IdrInterval);
+
+ av_log(avctx, AV_LOG_VERBOSE, "TargetUsage: %"PRIu16"; RateControlMethod: %s\n",
+ info->TargetUsage, print_ratecontrol(info->RateControlMethod));
+
+ if (info->RateControlMethod == MFX_RATECONTROL_CBR ||
+ info->RateControlMethod == MFX_RATECONTROL_VBR) {
+ av_log(avctx, AV_LOG_VERBOSE,
+ "BufferSizeInKB: %"PRIu16"; InitialDelayInKB: %"PRIu16"; TargetKbps: %"PRIu16"; MaxKbps: %"PRIu16"; BRCParamMultiplier: %"PRIu16"\n",
+ info->BufferSizeInKB, info->InitialDelayInKB, info->TargetKbps, info->MaxKbps, info->BRCParamMultiplier);
+ } else if (info->RateControlMethod == MFX_RATECONTROL_CQP) {
+ av_log(avctx, AV_LOG_VERBOSE, "QPI: %"PRIu16"; QPP: %"PRIu16"; QPB: %"PRIu16"\n",
+ info->QPI, info->QPP, info->QPB);
+ }
+#if QSV_HAVE_ICQ
+ else if (info->RateControlMethod == MFX_RATECONTROL_ICQ) {
+ av_log(avctx, AV_LOG_VERBOSE, "ICQQuality: %"PRIu16"\n", info->ICQQuality);
+ }
+#endif
+ else {
+ av_log(avctx, AV_LOG_VERBOSE, "Unsupported ratecontrol method: %d \n", info->RateControlMethod);
+ }
+
+ av_log(avctx, AV_LOG_VERBOSE, "NumRefFrame: %"PRIu16"\n", info->NumRefFrame);
+
+#if QSV_HAVE_CO2
+ av_log(avctx, AV_LOG_VERBOSE,
+ "IntRefType: %"PRIu16"; IntRefCycleSize: %"PRIu16"; IntRefQPDelta: %"PRId16"\n",
+ co2->IntRefType, co2->IntRefCycleSize, co2->IntRefQPDelta);
+
+ av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSize: %d; ", co2->MaxFrameSize);
+ av_log(avctx, AV_LOG_VERBOSE, "\n");
+
+ av_log(avctx, AV_LOG_VERBOSE,
+ "BitrateLimit: %s; MBBRC: %s; ExtBRC: %s\n",
+ print_threestate(co2->BitrateLimit), print_threestate(co2->MBBRC),
+ print_threestate(co2->ExtBRC));
+
+#if QSV_HAVE_VDENC
+ av_log(avctx, AV_LOG_VERBOSE, "VDENC: %s\n", print_threestate(info->LowPower));
+#endif
+
+#if QSV_VERSION_ATLEAST(1, 9)
+ av_log(avctx, AV_LOG_VERBOSE,
+ "MinQPI: %"PRIu8"; MaxQPI: %"PRIu8"; MinQPP: %"PRIu8"; MaxQPP: %"PRIu8"; MinQPB: %"PRIu8"; MaxQPB: %"PRIu8"\n",
+ co2->MinQPI, co2->MaxQPI, co2->MinQPP, co2->MaxQPP, co2->MinQPB, co2->MaxQPB);
+#endif
+#endif
+
+ av_log(avctx, AV_LOG_VERBOSE, "FrameRateExtD: %"PRIu32"; FrameRateExtN: %"PRIu32" \n",
+ info->FrameInfo.FrameRateExtD, info->FrameInfo.FrameRateExtN);
+
+#if QSV_HAVE_EXT_VP9_PARAM
+ av_log(avctx, AV_LOG_VERBOSE, "WriteIVFHeaders: %s \n",
+ print_threestate(vp9_param->WriteIVFHeaders));
+#endif
+}
+
static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q)
{
const char *rc_desc;
@@ -941,6 +1019,8 @@ static int qsv_retrieve_enc_vp9_params(AVCodecContext *avctx, QSVEncContext *q)
q->packet_size = q->param.mfx.BufferSizeInKB * q->param.mfx.BRCParamMultiplier * 1000;
+ dump_video_vp9_param(avctx, q, ext_buffers);
+
return 0;
}
--
2.17.1
More information about the ffmpeg-devel
mailing list