mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-09-27 05:25:53 +08:00
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:
@@ -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);
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user