feat[mpp_enc_cfg]: Separate init function

Add mpp_enc_cfg_init_k for kernel encoder config init.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I4ebdc179b27115d72a2efa213405cbb4dca564d0
This commit is contained in:
Herman Chen
2025-09-10 16:18:17 +08:00
parent fdba12d3fa
commit 5d9da6f29e
3 changed files with 26 additions and 37 deletions

View File

@@ -15,14 +15,13 @@ typedef void* MppEncCfg;
extern "C" {
#endif
/* legacy interface */
/* userspace encoder config init */
MPP_RET mpp_enc_cfg_init(MppEncCfg *cfg);
/* kernel encoder config init */
MPP_RET mpp_enc_cfg_init_k(MppEncCfg *cfg);
/* common config deinit */
MPP_RET mpp_enc_cfg_deinit(MppEncCfg cfg);
/* new interface */
RK_S32 mpp_enc_cfg_get(MppEncCfg *cfg, const char *name, void *val);
RK_S32 mpp_enc_cfg_put(MppEncCfg cfg);
MPP_RET mpp_enc_cfg_set_s32(MppEncCfg cfg, const char *name, RK_S32 val);
MPP_RET mpp_enc_cfg_set_u32(MppEncCfg cfg, const char *name, RK_U32 val);
MPP_RET mpp_enc_cfg_set_s64(MppEncCfg cfg, const char *name, RK_S64 val);

View File

@@ -403,15 +403,10 @@ MPP_RET mpp_enc_cfg_init(MppEncCfg *cfg)
return ret;
}
MPP_RET mpp_enc_cfg_deinit(MppEncCfg cfg)
{
return mpp_enc_cfg_put(cfg);
}
RK_S32 mpp_enc_cfg_get(MppEncCfg *cfg, const char *name, void *val)
RK_S32 mpp_enc_cfg_init_k(MppEncCfg *cfg)
{
static const char *kcfg_name = "KmppVencStCfg";
(void)val;
MppEncCfgImpl *impl = NULL;
if (!cfg) {
mpp_err_f("invalid NULL input config\n");
@@ -421,34 +416,26 @@ RK_S32 mpp_enc_cfg_get(MppEncCfg *cfg, const char *name, void *val)
mpp_env_get_u32("mpp_enc_cfg_debug", &mpp_enc_cfg_debug, 0);
*cfg = NULL;
if (!name || !strcmp(name, "MppEncCfg")) {
return mpp_enc_cfg_init(cfg);
} else if (!strcmp(name, kcfg_name)) {
MppEncCfgImpl *impl = NULL;
impl = mpp_calloc(MppEncCfgImpl, 1);
if (!impl) {
mpp_err_f("create MppEncCfgImpl failed\n");
return MPP_ERR_NOMEM;
}
impl->is_kobj = 1;
kmpp_obj_get_by_name_f(&impl->obj, kcfg_name);
if (!impl->obj) {
mpp_err_f("failed to get obj by name %s\n", kcfg_name);
MPP_FREE(impl);
return MPP_ERR_NOMEM;
}
*cfg = impl;
return MPP_OK;
impl = mpp_calloc(MppEncCfgImpl, 1);
if (!impl) {
mpp_err_f("create MppEncCfgImpl failed\n");
return MPP_ERR_NOMEM;
}
mpp_loge_f("invalid cfg %s\n", name);
impl->is_kobj = 1;
kmpp_obj_get_by_name_f(&impl->obj, kcfg_name);
if (!impl->obj) {
mpp_err_f("failed to get obj by name %s\n", kcfg_name);
MPP_FREE(impl);
return MPP_ERR_NOMEM;
}
return MPP_NOK;
*cfg = impl;
return MPP_OK;
}
RK_S32 mpp_enc_cfg_put(MppEncCfg cfg)
RK_S32 mpp_enc_cfg_deinit(MppEncCfg cfg)
{
MppEncCfgImpl *impl = (MppEncCfgImpl *)cfg;

View File

@@ -1167,9 +1167,12 @@ void *enc_test(void *arg)
goto MPP_TEST_OUT;
}
ret = mpp_enc_cfg_get(&p->cfg, cmd->kmpp_en ? "KmppVencStCfg" : "MppEncCfg", NULL);
if (cmd->kmpp_en)
ret = mpp_enc_cfg_init_k(&p->cfg);
else
ret = mpp_enc_cfg_init(&p->cfg);
if (ret) {
mpp_err_f("mpp_enc_cfg_get failed ret %d\n", ret);
mpp_err_f("mpp_enc_cfg_init failed ret %d\n", ret);
goto MPP_TEST_OUT;
}