[enc]: fix IDR not encoded problem

When GOP is set to 60 that is the same as the default GOP by
application, igop at reference module isn't set as expected, that leads
to CPB not be cleaned correctly and IDR frame won't be encoded.

see [issue](https://redmine.rock-chips.com/issues/374780)

Change-Id: I2f1030cab700aa560dea07284b820a73c637631e
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
This commit is contained in:
Johnson Ding
2022-10-11 14:18:09 +08:00
parent 1f8ec3b78d
commit a9cb2cff35
3 changed files with 13 additions and 0 deletions

View File

@@ -138,6 +138,7 @@ MPP_RET mpp_enc_init_v2(MppEnc *enc, MppEncInitCfg *cfg)
mpp_enc_ref_cfg_init(&p->cfg.ref_cfg);
ret = mpp_enc_ref_cfg_copy(p->cfg.ref_cfg, mpp_enc_ref_default());
ret = mpp_enc_refs_set_cfg(p->refs, mpp_enc_ref_default());
mpp_enc_refs_set_rc_igop(p->refs, p->cfg.rc.gop);
sem_init(&p->enc_reset, 0, 0);
sem_init(&p->cmd_start, 0, 0);

View File

@@ -591,6 +591,12 @@ MPP_RET mt_test_res_init(MpiEncMtCtxInfo *info)
return ret;
}
ret = p->mpi->control(p->ctx, MPP_ENC_GET_CFG, p->cfg);
if (ret) {
mpp_err_f("get enc cfg failed ret %d\n", ret);
return ret;
}
ret = test_mt_cfg_setup(info);
if (ret) {
mpp_err_f("test mpp setup failed ret %d\n", ret);

View File

@@ -917,6 +917,12 @@ void *enc_test(void *arg)
goto MPP_TEST_OUT;
}
ret = p->mpi->control(p->ctx, MPP_ENC_GET_CFG, p->cfg);
if (ret) {
mpp_err_f("get enc cfg failed ret %d\n", ret);
goto MPP_TEST_OUT;
}
ret = test_mpp_enc_cfg_setup(info);
if (ret) {
mpp_err_f("test mpp setup failed ret %d\n", ret);