diff options
author | Mark Thompson <sw@jkqxz.net> | 2018-02-12 23:01:24 +0000 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2018-02-12 23:01:24 +0000 |
commit | de3be1d09f31e0f5c72240fc0270067c5c6d2510 (patch) | |
tree | 3fc245c4c4532ba2338ca00fd7590ff1af7674a2 | |
parent | e9dfc6f9006f81d6267d183b00616053b514df8f (diff) | |
parent | 8bb9824fcbc5a6ebf68391d70a2c4f03447990d2 (diff) | |
download | ffmpeg-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.c | 17 | ||||
-rw-r--r-- | libavcodec/qsvenc.h | 2 |
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 |