aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2018-02-12 23:01:24 +0000
committerMark Thompson <sw@jkqxz.net>2018-02-12 23:01:24 +0000
commitde3be1d09f31e0f5c72240fc0270067c5c6d2510 (patch)
tree3fc245c4c4532ba2338ca00fd7590ff1af7674a2
parente9dfc6f9006f81d6267d183b00616053b514df8f (diff)
parent8bb9824fcbc5a6ebf68391d70a2c4f03447990d2 (diff)
downloadffmpeg-de3be1d09f31e0f5c72240fc0270067c5c6d2510.tar.gz
Merge commit '8bb9824fcbc5a6ebf68391d70a2c4f03447990d2'
* commit '8bb9824fcbc5a6ebf68391d70a2c4f03447990d2': qsvenc: AVBR is not supported on non-windows OS Merged-by: Mark Thompson <sw@jkqxz.net>
-rw-r--r--libavcodec/qsvenc.c17
-rw-r--r--libavcodec/qsvenc.h2
2 files changed, 16 insertions, 3 deletions
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
index fee2f9f0e8..74c273ccf9 100644
--- a/libavcodec/qsvenc.c
+++ b/libavcodec/qsvenc.c
@@ -85,7 +85,9 @@ static const struct {
{ MFX_RATECONTROL_CBR, "CBR" },
{ MFX_RATECONTROL_VBR, "VBR" },
{ MFX_RATECONTROL_CQP, "CQP" },
+#if QSV_HAVE_AVBR
{ MFX_RATECONTROL_AVBR, "AVBR" },
+#endif
#if QSV_HAVE_LA
{ MFX_RATECONTROL_LA, "LA" },
#endif
@@ -161,11 +163,14 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q,
} 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);
- } else if (info->RateControlMethod == MFX_RATECONTROL_AVBR) {
+ }
+#if QSV_HAVE_AVBR
+ else if (info->RateControlMethod == MFX_RATECONTROL_AVBR) {
av_log(avctx, AV_LOG_VERBOSE,
"TargetKbps: %"PRIu16"; Accuracy: %"PRIu16"; Convergence: %"PRIu16"\n",
info->TargetKbps, info->Accuracy, info->Convergence);
}
+#endif
#if QSV_HAVE_LA
else if (info->RateControlMethod == MFX_RATECONTROL_LA
#if QSV_HAVE_LA_HRD
@@ -325,10 +330,14 @@ static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q)
else if (avctx->rc_max_rate == avctx->bit_rate) {
rc_mode = MFX_RATECONTROL_CBR;
rc_desc = "constant bitrate (CBR)";
- } else if (!avctx->rc_max_rate) {
+ }
+#if QSV_HAVE_AVBR
+ else if (!avctx->rc_max_rate) {
rc_mode = MFX_RATECONTROL_AVBR;
rc_desc = "average variable bitrate (AVBR)";
- } else {
+ }
+#endif
+ else {
rc_mode = MFX_RATECONTROL_VBR;
rc_desc = "variable bitrate (VBR)";
}
@@ -514,11 +523,13 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
q->param.mfx.QPB = av_clip(quant * fabs(avctx->b_quant_factor) + avctx->b_quant_offset, 0, 51);
break;
+#if QSV_HAVE_AVBR
case MFX_RATECONTROL_AVBR:
q->param.mfx.TargetKbps = avctx->bit_rate / 1000;
q->param.mfx.Convergence = q->avbr_convergence;
q->param.mfx.Accuracy = q->avbr_accuracy;
break;
+#endif
#if QSV_HAVE_LA
case MFX_RATECONTROL_LA:
q->param.mfx.TargetKbps = avctx->bit_rate / 1000;
diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h
index 88e0728110..fb5fd68edc 100644
--- a/libavcodec/qsvenc.h
+++ b/libavcodec/qsvenc.h
@@ -46,10 +46,12 @@
#define QSV_HAVE_LA_HRD QSV_VERSION_ATLEAST(1, 11)
#if defined(_WIN32)
+#define QSV_HAVE_AVBR QSV_VERSION_ATLEAST(1, 3)
#define QSV_HAVE_ICQ QSV_VERSION_ATLEAST(1, 8)
#define QSV_HAVE_VCM QSV_VERSION_ATLEAST(1, 8)
#define QSV_HAVE_QVBR QSV_VERSION_ATLEAST(1, 11)
#else
+#define QSV_HAVE_AVBR 0
#define QSV_HAVE_ICQ 0
#define QSV_HAVE_VCM 0
#define QSV_HAVE_QVBR 0