diff options
author | Konda Raju <kraju@nvidia.com> | 2017-02-28 11:09:12 +0530 |
---|---|---|
committer | Timo Rothenpieler <timo@rothenpieler.org> | 2017-03-01 13:15:34 +0100 |
commit | 5f44a4a0a97e802479e6ce689d719e5277267f22 (patch) | |
tree | fa5039683cc3e42b3a98a8bb5e240341e22f50e3 /libavcodec/nvenc.c | |
parent | a549243b89da7df5504253b9679b777834014b7f (diff) | |
download | ffmpeg-5f44a4a0a97e802479e6ce689d719e5277267f22.tar.gz |
avcodec/nvenc: add initial QP value options
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
Diffstat (limited to 'libavcodec/nvenc.c')
-rw-r--r-- | libavcodec/nvenc.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index fbd42f4138..d9fef525dd 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -547,16 +547,33 @@ static av_cold void set_vbr(AVCodecContext *avctx) } rc->enableInitialRCQP = 1; - rc->initialRCQP.qpInterP = qp_inter_p; - if (avctx->i_quant_factor != 0.0 && avctx->b_quant_factor != 0.0) { - rc->initialRCQP.qpIntra = av_clip( - qp_inter_p * fabs(avctx->i_quant_factor) + avctx->i_quant_offset + 0.5, 0, 51); - rc->initialRCQP.qpInterB = av_clip( - qp_inter_p * fabs(avctx->b_quant_factor) + avctx->b_quant_offset + 0.5, 0, 51); + if (ctx->init_qp_p < 0) { + rc->initialRCQP.qpInterP = qp_inter_p; } else { - rc->initialRCQP.qpIntra = qp_inter_p; - rc->initialRCQP.qpInterB = qp_inter_p; + rc->initialRCQP.qpInterP = ctx->init_qp_p; + } + + if (ctx->init_qp_i < 0) { + if (avctx->i_quant_factor != 0.0 && avctx->b_quant_factor != 0.0) { + rc->initialRCQP.qpIntra = av_clip( + rc->initialRCQP.qpInterP * fabs(avctx->i_quant_factor) + avctx->i_quant_offset + 0.5, 0, 51); + } else { + rc->initialRCQP.qpIntra = rc->initialRCQP.qpInterP; + } + } else { + rc->initialRCQP.qpIntra = ctx->init_qp_i; + } + + if (ctx->init_qp_b < 0) { + if (avctx->i_quant_factor != 0.0 && avctx->b_quant_factor != 0.0) { + rc->initialRCQP.qpInterB = av_clip( + rc->initialRCQP.qpInterP * fabs(avctx->b_quant_factor) + avctx->b_quant_offset + 0.5, 0, 51); + } else { + rc->initialRCQP.qpInterB = rc->initialRCQP.qpInterP; + } + } else { + rc->initialRCQP.qpInterB = ctx->init_qp_b; } } |