mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-01 07:22:08 +08:00
[mpp_enc_cfg]: combine gop and ref cfg config.
Signed-off-by: xueman.ruan <xueman.ruan@rock-chips.com> Change-Id: Ia15a0128d03b1a2624410b6f2a13effe3a03c47c
This commit is contained in:
@@ -295,6 +295,8 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info)
|
||||
RK_U32 rotation;
|
||||
RK_U32 mirroring;
|
||||
RK_U32 flip;
|
||||
RK_U32 gop_mode = p->gop_mode;
|
||||
MppEncRefCfg ref = NULL;
|
||||
|
||||
/* setup default parameter */
|
||||
if (p->fps_in_den == 0)
|
||||
@@ -324,7 +326,6 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info)
|
||||
mpp_enc_cfg_set_s32(cfg, "rc:fps_out_flex", p->fps_out_flex);
|
||||
mpp_enc_cfg_set_s32(cfg, "rc:fps_out_num", p->fps_out_num);
|
||||
mpp_enc_cfg_set_s32(cfg, "rc:fps_out_denorm", p->fps_out_den);
|
||||
mpp_enc_cfg_set_s32(cfg, "rc:gop", p->gop_len ? p->gop_len : p->fps_out_num * 2);
|
||||
|
||||
/* drop frame or not when bitrate overflow */
|
||||
mpp_enc_cfg_set_u32(cfg, "rc:drop_mode", MPP_ENC_RC_DROP_FRM_DISABLED);
|
||||
@@ -467,12 +468,31 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info)
|
||||
mpp_enc_cfg_set_s32(cfg, "prep:rotation", rotation);
|
||||
mpp_enc_cfg_set_s32(cfg, "prep:flip", flip);
|
||||
|
||||
// config gop_len and ref cfg
|
||||
mpp_enc_cfg_set_s32(cfg, "rc:gop", p->gop_len ? p->gop_len : p->fps_out_num * 2);
|
||||
|
||||
mpp_env_get_u32("gop_mode", &gop_mode, gop_mode);
|
||||
|
||||
if (gop_mode) {
|
||||
mpp_enc_ref_cfg_init(&ref);
|
||||
|
||||
if (p->gop_mode < 4)
|
||||
mpi_enc_gen_ref_cfg(ref, gop_mode);
|
||||
else
|
||||
mpi_enc_gen_smart_gop_ref_cfg(ref, p->gop_len, p->vi_len);
|
||||
|
||||
mpp_enc_cfg_set_ptr(cfg, "rc:ref_cfg", ref);
|
||||
}
|
||||
|
||||
ret = mpi->control(ctx, MPP_ENC_SET_CFG, cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpi control enc set cfg failed ret %d\n", ret);
|
||||
goto RET;
|
||||
}
|
||||
|
||||
if (ref)
|
||||
mpp_enc_ref_cfg_deinit(&ref);
|
||||
|
||||
/* optional */
|
||||
{
|
||||
RK_U32 sei_mode;
|
||||
@@ -495,27 +515,6 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info)
|
||||
}
|
||||
}
|
||||
|
||||
RK_U32 gop_mode = p->gop_mode;
|
||||
|
||||
mpp_env_get_u32("gop_mode", &gop_mode, gop_mode);
|
||||
if (gop_mode) {
|
||||
MppEncRefCfg ref;
|
||||
|
||||
mpp_enc_ref_cfg_init(&ref);
|
||||
|
||||
if (p->gop_mode < 4)
|
||||
mpi_enc_gen_ref_cfg(ref, gop_mode);
|
||||
else
|
||||
mpi_enc_gen_smart_gop_ref_cfg(ref, p->gop_len, p->vi_len);
|
||||
|
||||
ret = mpi->control(ctx, MPP_ENC_SET_REF_CFG, ref);
|
||||
if (ret) {
|
||||
mpp_err("mpi control enc set ref cfg failed ret %d\n", ret);
|
||||
goto RET;
|
||||
}
|
||||
mpp_enc_ref_cfg_deinit(&ref);
|
||||
}
|
||||
|
||||
/* setup test mode by env */
|
||||
mpp_env_get_u32("osd_enable", &p->osd_enable, 0);
|
||||
mpp_env_get_u32("osd_mode", &p->osd_mode, MPP_ENC_OSD_PLT_TYPE_DEFAULT);
|
||||
|
Reference in New Issue
Block a user