diff options
author | Yue Heng <yue.heng@intel.com> | 2022-05-25 21:13:41 +0800 |
---|---|---|
committer | Haihao Xiang <haihao.xiang@intel.com> | 2022-06-06 13:56:10 +0800 |
commit | 11912f65ef5ad12db938e404eafc855af1bc3859 (patch) | |
tree | d178b8c9e6559ad9f4c2f4316f0a30a0b5fec09d /libavcodec/qsvenc.h | |
parent | e8381691813a4f10a280169a782a716568e57614 (diff) | |
download | ffmpeg-11912f65ef5ad12db938e404eafc855af1bc3859.tar.gz |
libavcodec/qsvenc: Add min/max QP control options for I/P/B frame
To do more accurate QP control, add min/max QP control on I/P/B frame
separately to qsv encoder. qmax and qmin still work but newly-added
options have higher priority.
Signed-off-by: Yue Heng <yue.heng@intel.com>
Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Diffstat (limited to 'libavcodec/qsvenc.h')
-rw-r--r-- | libavcodec/qsvenc.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libavcodec/qsvenc.h b/libavcodec/qsvenc.h index fec5e584db..b754ac4b56 100644 --- a/libavcodec/qsvenc.h +++ b/libavcodec/qsvenc.h @@ -100,6 +100,14 @@ #define QSV_OPTION_LOW_DELAY_BRC \ { "low_delay_brc", "Allow to strictly obey avg frame size", OFFSET(qsv.low_delay_brc), AV_OPT_TYPE_BOOL,{ .i64 = -1 }, -1, 1, VE }, +#define QSV_OPTION_MAX_MIN_QP \ +{ "max_qp_i", "Maximum video quantizer scale for I frame", OFFSET(qsv.max_qp_i), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 51, VE}, \ +{ "min_qp_i", "Minimum video quantizer scale for I frame", OFFSET(qsv.min_qp_i), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 51, VE}, \ +{ "max_qp_p", "Maximum video quantizer scale for P frame", OFFSET(qsv.max_qp_p), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 51, VE}, \ +{ "min_qp_p", "Minimum video quantizer scale for P frame", OFFSET(qsv.min_qp_p), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 51, VE}, \ +{ "max_qp_b", "Maximum video quantizer scale for B frame", OFFSET(qsv.max_qp_b), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 51, VE}, \ +{ "min_qp_b", "Minimum video quantizer scale for B frame", OFFSET(qsv.min_qp_b), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 51, VE}, + extern const AVCodecHWConfigInternal *const ff_qsv_enc_hw_configs[]; typedef int SetEncodeCtrlCB (AVCodecContext *avctx, @@ -209,6 +217,13 @@ typedef struct QSVEncContext { int co3_idx; int exthevctiles_idx; int vp9_idx; + + int max_qp_i; + int min_qp_i; + int max_qp_p; + int min_qp_p; + int max_qp_b; + int min_qp_b; } QSVEncContext; int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q); |