mirror of
https://github.com/nyanmisaka/mpp.git
synced 2026-01-24 03:30:40 +01:00
fix[kmpp_obj]: Fix grp_cfg and buf_cfg leak in kmpp_obj_test
1. Use mem pool to alloc KmppObjImpl 2. Add kmpp_obj_put_impl to release KmppObjImpl header only. 3. Add grp_cfg and buf_cfg release operation. 4. Use MPP_SINGLETON to init kmpp_venc_cfg. Signed-off-by: Herman Chen <herman.chen@rock-chips.com> Change-Id: I865d4d990d7e89598b2f17d85460b809f7f602df
This commit is contained in:
parent
e0e59e5ce2
commit
5497c458fe
7 changed files with 131 additions and 104 deletions
|
|
@ -255,38 +255,39 @@ KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, VAL_ENTRY_TBL, VAL_ENTRY_TBL,
|
|||
|
||||
void CONCAT_US(KMPP_OBJ_NAME, register)(void)
|
||||
{
|
||||
rk_s32 impl_size = (sizeof(KMPP_OBJ_IMPL_TYPE) + KMPP_OBJ_EXTRA_SIZE + 3) & ~3;
|
||||
rk_s32 __flag_base = impl_size << 3;
|
||||
rk_s32 __flag_step = 0;
|
||||
rk_s32 __flag_prev = 0;
|
||||
rk_s32 __flag_record[ELEM_FLAG_RECORD_MAX];
|
||||
(void) __flag_base;
|
||||
(void) __flag_step;
|
||||
(void) __flag_prev;
|
||||
(void) __flag_record;
|
||||
|
||||
mpp_env_get_u32(TO_STR(CONCAT_US(KMPP_OBJ_NAME, debug)), &KMPP_OBJ_DEF_DEUBG(KMPP_OBJ_NAME), 0);
|
||||
|
||||
KMPP_OBJ_DBG_LOG("register enter\n");
|
||||
|
||||
kmpp_objdef_get(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), TO_STR(KMPP_OBJ_INTF_TYPE));
|
||||
if (KMPP_OBJ_DEF(KMPP_OBJ_NAME)) {
|
||||
KMPP_OBJ_DBG_LOG(TO_STR(KMPP_OBJ_NAME) " found at kernel\n");
|
||||
return;
|
||||
} else {
|
||||
rk_s32 __entry_size = (sizeof(KMPP_OBJ_IMPL_TYPE) + KMPP_OBJ_EXTRA_SIZE + 3) & ~3;
|
||||
rk_s32 __flag_base = __entry_size << 3;
|
||||
rk_s32 __flag_step = 0;
|
||||
rk_s32 __flag_prev = 0;
|
||||
rk_s32 __flag_record[ELEM_FLAG_RECORD_MAX];
|
||||
(void) __flag_base;
|
||||
(void) __flag_step;
|
||||
(void) __flag_prev;
|
||||
(void) __flag_record;
|
||||
|
||||
kmpp_objdef_register(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), __entry_size, TO_STR(KMPP_OBJ_INTF_TYPE));
|
||||
if (!KMPP_OBJ_DEF(KMPP_OBJ_NAME)) {
|
||||
mpp_loge_f(TO_STR(KMPP_OBJ_NAME) " init failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
KMPP_OBJ_DBG_LOG(TO_STR(KMPP_OBJ_NAME) " registered at userspace\n");
|
||||
|
||||
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, ENTRY_TO_TRIE, ENTRY_TO_TRIE,
|
||||
ENTRY_TO_TRIE, ENTRY_TO_TRIE, ENTRY_TO_TRIE)
|
||||
kmpp_objdef_add_entry(KMPP_OBJ_DEF(KMPP_OBJ_NAME), NULL, NULL);
|
||||
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, ENTRY_QUERY, ENTRY_QUERY,
|
||||
HOOK_QUERY, HOOK_QUERY, ENTRY_NOTHING);
|
||||
}
|
||||
|
||||
KMPP_OBJ_DBG_LOG("register enter\n");
|
||||
|
||||
kmpp_objdef_register(&KMPP_OBJ_DEF(KMPP_OBJ_NAME), impl_size, TO_STR(KMPP_OBJ_INTF_TYPE));
|
||||
if (!KMPP_OBJ_DEF(KMPP_OBJ_NAME)) {
|
||||
mpp_loge_f(TO_STR(KMPP_OBJ_NAME) " init failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, ENTRY_TO_TRIE, ENTRY_TO_TRIE,
|
||||
ENTRY_TO_TRIE, ENTRY_TO_TRIE, ENTRY_TO_TRIE)
|
||||
kmpp_objdef_add_entry(KMPP_OBJ_DEF(KMPP_OBJ_NAME), NULL, NULL);
|
||||
KMPP_OBJ_ENTRY_TABLE(KMPP_OBJ_NAME, ENTRY_QUERY, ENTRY_QUERY,
|
||||
HOOK_QUERY, HOOK_QUERY, ENTRY_NOTHING);
|
||||
|
||||
#if defined(KMPP_OBJ_FUNC_INIT)
|
||||
kmpp_objdef_add_init(KMPP_OBJ_DEF(KMPP_OBJ_NAME), KMPP_OBJ_FUNC_INIT);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue