diff --git a/mpp/codec/mpp_enc_v2.cpp b/mpp/codec/mpp_enc_v2.cpp index 9b301f78..ff467945 100644 --- a/mpp/codec/mpp_enc_v2.cpp +++ b/mpp/codec/mpp_enc_v2.cpp @@ -724,6 +724,7 @@ void *mpp_enc_thread(void *data) enc_dbg_detail("task %d rc frame end\n", frm->seq_idx); RUN_ENC_RC_FUNC(rc_frm_end, enc->rc_ctx, rc_task, mpp, ret); + if (frm->reencode) { enc_dbg_reenc("reencode time %d\n", frm->reencode_times); goto TASK_REENCODE; @@ -844,7 +845,8 @@ MPP_RET mpp_enc_init_v2(MppEnc *enc, MppEncCfg *cfg) p->enc_hal = enc_hal; p->mpp = cfg->mpp; - { // create header packet storage + { + // create header packet storage size_t size = SZ_1K; void *ptr = mpp_calloc_size(void, size); diff --git a/mpp/codec/rc/rc_model_v2.c b/mpp/codec/rc/rc_model_v2.c index d5ab0910..2f27754c 100644 --- a/mpp/codec/rc/rc_model_v2.c +++ b/mpp/codec/rc/rc_model_v2.c @@ -420,13 +420,10 @@ MPP_RET reenc_calc_cbr_ratio(RcModelV2Ctx *ctx, EncRcTaskInfo *cfg) RK_S32 target_bps = ctx->target_bps; RK_S32 water_level = 0; RK_S32 idx1, idx2; - RK_S32 i_flag = 0; RK_S32 bit_diff_ratio, ins_ratio, bps_ratio, wl_ratio; rc_dbg_func("enter %p\n", ctx); - i_flag = (ctx->frame_type == INTRA_FRAME); - if (real_bit + ctx->stat_watl > ctx->stat_watl_thrd) water_level = ctx->stat_watl_thrd - ctx->bit_per_frame; else @@ -454,7 +451,7 @@ MPP_RET reenc_calc_cbr_ratio(RcModelV2Ctx *ctx, EncRcTaskInfo *cfg) ins_ratio = 6 * ins_ratio; ins_ratio = mpp_clip(ins_ratio, -192, 256); } else { - if (i_flag) { + if (ctx->frame_type == INTRA_FRAME) { ins_ratio = 3 * ins_ratio; ins_ratio = mpp_clip(ins_ratio, -192, 256); } else { @@ -850,11 +847,11 @@ MPP_RET rc_model_v2_end(void *ctx, EncRcTask *task) } else { rc_dbg_rc("bits_mode_update real_bit %d", cfg->bit_real); bits_model_update(p, cfg->bit_real); - p->pre_target_bits = cfg->bit_target; - p->pre_real_bits = cfg->bit_real; p->last_inst_bps = p->ins_bps; p->last_frame_type = p->frame_type; } + p->pre_target_bits = cfg->bit_target; + p->pre_real_bits = cfg->bit_real; rc_dbg_func("leave %p\n", ctx); return MPP_OK;