mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-13 21:03:41 +08:00
[rc_model_v2]: Add force frame qp path
Change-Id: Ic7bf13188357e20d4851fc045cc77cf8611c83b7 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -890,6 +890,7 @@ MPP_RET rc_model_v2_hal_start(void *ctx, EncRcTask *task)
|
||||
RcModelV2Ctx *p = (RcModelV2Ctx *)ctx;
|
||||
EncFrmStatus *frm = &task->frm;
|
||||
EncRcTaskInfo *info = &task->info;
|
||||
EncRcForceCfg *force = &task->force;
|
||||
RK_S32 mb_w = MPP_ALIGN(p->usr_cfg.width, 16) / 16;
|
||||
RK_S32 mb_h = MPP_ALIGN(p->usr_cfg.height, 16) / 16;
|
||||
RK_S32 bit_min = info->bit_min;
|
||||
@@ -899,13 +900,21 @@ MPP_RET rc_model_v2_hal_start(void *ctx, EncRcTask *task)
|
||||
RK_S32 quality_max = info->quality_max;
|
||||
RK_S32 quality_target = info->quality_target;
|
||||
|
||||
if (p->usr_cfg.mode == RC_FIXQP) {
|
||||
return MPP_OK;
|
||||
}
|
||||
rc_dbg_func("enter p %p task %p\n", p, task);
|
||||
|
||||
rc_dbg_rc("seq_idx %d intra %d\n", frm->seq_idx, frm->is_intra);
|
||||
|
||||
if (force->force_flag & ENC_RC_FORCE_QP) {
|
||||
RK_S32 qp = force->force_qp;
|
||||
info->quality_target = qp;
|
||||
info->quality_max = qp;
|
||||
info->quality_min = qp;
|
||||
return MPP_OK;
|
||||
}
|
||||
|
||||
if (p->usr_cfg.mode == RC_FIXQP)
|
||||
return MPP_OK;
|
||||
|
||||
/* setup quality parameters */
|
||||
if (p->first_frm_flg && frm->is_intra) {
|
||||
RK_S32 dealt_qp = p->usr_cfg.i_quality_delta;
|
||||
@@ -974,7 +983,8 @@ MPP_RET rc_model_v2_hal_start(void *ctx, EncRcTask *task)
|
||||
}
|
||||
rc_dbg_rc("i_quality_delta %d, vi_quality_delta %d", dealt_qp, p->usr_cfg.vi_quality_delta);
|
||||
}
|
||||
p->start_qp = mpp_clip( p->start_qp, info->quality_min, info->quality_max);
|
||||
|
||||
p->start_qp = mpp_clip(p->start_qp, info->quality_min, info->quality_max);
|
||||
info->quality_target = p->start_qp;
|
||||
|
||||
rc_dbg_rc("bitrate [%d : %d : %d] -> [%d : %d : %d]\n",
|
||||
|
Reference in New Issue
Block a user