mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[rc]: Fix pre_i_qp update error
1. The pre_i_qp should use scale_qp to update rather then the start_qp which has substracted by ip_qp_delta. 2. Reduce default ip_qp_delta to 2 for H.264 and 4 for H.265. Change-Id: Ie43ba15c8bd524bd10aac6053306f72e8759370c Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -166,7 +166,7 @@ static void init_h264e_cfg_set(MppEncCfgSet *cfg, MppClientType type)
|
|||||||
/* default max/min intra qp is not set */
|
/* default max/min intra qp is not set */
|
||||||
rc_cfg->qp_max_i = 0;
|
rc_cfg->qp_max_i = 0;
|
||||||
rc_cfg->qp_min_i = 0;
|
rc_cfg->qp_min_i = 0;
|
||||||
rc_cfg->qp_delta_ip = 4;
|
rc_cfg->qp_delta_ip = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void h264e_add_syntax(H264eCtx *ctx, H264eSyntaxType type, void *p)
|
static void h264e_add_syntax(H264eCtx *ctx, H264eSyntaxType type, void *p)
|
||||||
|
@@ -150,7 +150,7 @@ static MPP_RET h265e_init(void *ctx, EncImplCfg *ctrlCfg)
|
|||||||
rc_cfg->qp_min = 10;
|
rc_cfg->qp_min = 10;
|
||||||
rc_cfg->qp_max_i = 51;
|
rc_cfg->qp_max_i = 51;
|
||||||
rc_cfg->qp_min_i = 15;
|
rc_cfg->qp_min_i = 15;
|
||||||
rc_cfg->qp_delta_ip = 6;
|
rc_cfg->qp_delta_ip = 4;
|
||||||
rc_cfg->qp_delta_vi = 2;
|
rc_cfg->qp_delta_vi = 2;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&p->rc_list);
|
INIT_LIST_HEAD(&p->rc_list);
|
||||||
|
@@ -1398,7 +1398,7 @@ MPP_RET rc_model_v2_hal_end(void *ctx, EncRcTask *task)
|
|||||||
rc_dbg_func("enter ctx %p task %p\n", ctx, task);
|
rc_dbg_func("enter ctx %p task %p\n", ctx, task);
|
||||||
|
|
||||||
if (frm->is_intra)
|
if (frm->is_intra)
|
||||||
p->pre_i_qp = p->start_qp;
|
p->pre_i_qp = p->cur_scale_qp >> 6;
|
||||||
else
|
else
|
||||||
p->pre_p_qp = p->cur_scale_qp >> 6;
|
p->pre_p_qp = p->cur_scale_qp >> 6;
|
||||||
|
|
||||||
|
@@ -327,7 +327,7 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncTestData *p)
|
|||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 20);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 20);
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 20);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 20);
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 20);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 20);
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 4);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 2);
|
||||||
} break;
|
} break;
|
||||||
case MPP_ENC_RC_MODE_CBR :
|
case MPP_ENC_RC_MODE_CBR :
|
||||||
case MPP_ENC_RC_MODE_VBR :
|
case MPP_ENC_RC_MODE_VBR :
|
||||||
@@ -337,7 +337,7 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncTestData *p)
|
|||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 10);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_min", 10);
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 51);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_max_i", 51);
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 10);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_min_i", 10);
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 4);
|
mpp_enc_cfg_set_s32(cfg, "rc:qp_ip", 2);
|
||||||
} break;
|
} break;
|
||||||
default : {
|
default : {
|
||||||
mpp_err_f("unsupport encoder rc mode %d\n", p->rc_mode);
|
mpp_err_f("unsupport encoder rc mode %d\n", p->rc_mode);
|
||||||
|
Reference in New Issue
Block a user