mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[mpp_enc_cfg]: Optimization on mpp_enc_cfg
1. Remove prefix before some args. 2. Add node count / info count calculation. NOTE: the info count is correct but node count may have error. Change-Id: I3a7d1005f440105eaf4b6d6326e92aa77d7d7e2a Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -26,7 +26,7 @@ typedef void* MppTrie;
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MPP_RET mpp_trie_init(MppTrie *trie, RK_S32 node_count);
|
MPP_RET mpp_trie_init(MppTrie *trie, RK_S32 node_count, RK_S32 info_count);
|
||||||
MPP_RET mpp_trie_deinit(MppTrie trie);
|
MPP_RET mpp_trie_deinit(MppTrie trie);
|
||||||
|
|
||||||
MPP_RET mpp_trie_add_info(MppTrie trie, const char **info);
|
MPP_RET mpp_trie_add_info(MppTrie trie, const char **info);
|
||||||
|
@@ -142,9 +142,12 @@ static const char *cfg_func_names[] = {
|
|||||||
#define EXPAND_AS_ARRAY(base, name, func_type, in_type, flag, field0, field1) \
|
#define EXPAND_AS_ARRAY(base, name, func_type, in_type, flag, field0, field1) \
|
||||||
&api_##base##_##name,
|
&api_##base##_##name,
|
||||||
|
|
||||||
|
#define EXPAND_AS_STRLEN(base, name, func_type, in_type, flag, field0, field1) \
|
||||||
|
const_strlen( #base":"#name ) +
|
||||||
|
|
||||||
#define ENTRY_TABLE(ENTRY) \
|
#define ENTRY_TABLE(ENTRY) \
|
||||||
/* rc config */ \
|
/* rc config */ \
|
||||||
ENTRY(rc, rc_mode, S32, MppEncRcMode, MPP_ENC_RC_CFG_CHANGE_RC_MODE, rc, rc_mode) \
|
ENTRY(rc, mode, S32, MppEncRcMode, MPP_ENC_RC_CFG_CHANGE_RC_MODE, rc, rc_mode) \
|
||||||
ENTRY(rc, bps_target, S32, RK_S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_target) \
|
ENTRY(rc, bps_target, S32, RK_S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_target) \
|
||||||
ENTRY(rc, bps_max, S32, RK_S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_max) \
|
ENTRY(rc, bps_max, S32, RK_S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_max) \
|
||||||
ENTRY(rc, bps_min, S32, RK_S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_min) \
|
ENTRY(rc, bps_min, S32, RK_S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_min) \
|
||||||
@@ -207,8 +210,8 @@ static const char *cfg_func_names[] = {
|
|||||||
/* jpeg config */ \
|
/* jpeg config */ \
|
||||||
ENTRY(jpeg, quant, S32, RK_S32, MPP_ENC_JPEG_CFG_CHANGE_QP, codec.jpeg, quant) \
|
ENTRY(jpeg, quant, S32, RK_S32, MPP_ENC_JPEG_CFG_CHANGE_QP, codec.jpeg, quant) \
|
||||||
/* split config */ \
|
/* split config */ \
|
||||||
ENTRY(split, split_mode, U32, RK_U32, MPP_ENC_SPLIT_CFG_CHANGE_MODE, split, split_mode) \
|
ENTRY(split, mode, U32, RK_U32, MPP_ENC_SPLIT_CFG_CHANGE_MODE, split, split_mode) \
|
||||||
ENTRY(split, split_arg, U32, RK_U32, MPP_ENC_SPLIT_CFG_CHANGE_ARG, split, split_arg)
|
ENTRY(split, arg, U32, RK_U32, MPP_ENC_SPLIT_CFG_CHANGE_ARG, split, split_arg)
|
||||||
|
|
||||||
ENTRY_TABLE(EXPAND_AS_FUNC)
|
ENTRY_TABLE(EXPAND_AS_FUNC)
|
||||||
ENTRY_TABLE(EXPAND_AS_API)
|
ENTRY_TABLE(EXPAND_AS_API)
|
||||||
@@ -217,6 +220,13 @@ static MppEncCfgApi *cfg_apis[] = {
|
|||||||
ENTRY_TABLE(EXPAND_AS_ARRAY)
|
ENTRY_TABLE(EXPAND_AS_ARRAY)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RK_S32 const_strlen(const char* str)
|
||||||
|
{
|
||||||
|
return *str ? 1 + const_strlen(str + 1) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static RK_S32 node_len = ENTRY_TABLE(EXPAND_AS_STRLEN) + 0;
|
||||||
|
|
||||||
class MppEncCfgService
|
class MppEncCfgService
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -243,19 +253,23 @@ MppEncCfgService::MppEncCfgService() :
|
|||||||
mCfgApi(NULL)
|
mCfgApi(NULL)
|
||||||
{
|
{
|
||||||
MPP_RET ret;
|
MPP_RET ret;
|
||||||
RK_U32 i;
|
RK_S32 i;
|
||||||
|
RK_S32 api_cnt = MPP_ARRAY_ELEMS(cfg_apis);
|
||||||
|
|
||||||
ret = mpp_trie_init(&mCfgApi, 600);
|
/*
|
||||||
|
* NOTE: The node_len is not the real node count should be allocated
|
||||||
|
* The max node count should be stream lengthg * 2 if each word is different.
|
||||||
|
*/
|
||||||
|
ret = mpp_trie_init(&mCfgApi, node_len, api_cnt);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mpp_err_f("failed to init enc cfg set trie\n");
|
mpp_err_f("failed to init enc cfg set trie\n");
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < MPP_ARRAY_ELEMS(cfg_apis); i++)
|
for (i = 0; i < api_cnt; i++)
|
||||||
mpp_trie_add_info(mCfgApi, &cfg_apis[i]->name);
|
mpp_trie_add_info(mCfgApi, &cfg_apis[i]->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
mpp_log_f("create config %d node %d info\n",
|
mpp_log_f("create info %d with node %d -> %d info\n",
|
||||||
mpp_trie_get_node_count(mCfgApi),
|
api_cnt, node_len, mpp_trie_get_node_count(mCfgApi));
|
||||||
mpp_trie_get_info_count(mCfgApi));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MppEncCfgService::~MppEncCfgService()
|
MppEncCfgService::~MppEncCfgService()
|
||||||
@@ -318,7 +332,11 @@ MPP_RET mpp_enc_cfg_deinit(MppEncCfg cfg)
|
|||||||
return MPP_NOK; \
|
return MPP_NOK; \
|
||||||
} \
|
} \
|
||||||
MppEncCfgApi *api = (MppEncCfgApi *)info; \
|
MppEncCfgApi *api = (MppEncCfgApi *)info; \
|
||||||
mpp_assert(api->type_set == func_enum); \
|
if (api->type_set != func_enum) { \
|
||||||
|
mpp_err_f("%s expect %s input NOT %s\n", api->name, \
|
||||||
|
cfg_func_names[api->type_set], \
|
||||||
|
cfg_func_names[func_enum]); \
|
||||||
|
} \
|
||||||
mpp_enc_cfg_dbg_set("name %s type %s\n", api->name, cfg_func_names[api->type_set]); \
|
mpp_enc_cfg_dbg_set("name %s type %s\n", api->name, cfg_func_names[api->type_set]); \
|
||||||
MPP_RET ret = ((func_type)api->api_set)(&p->cfg, val); \
|
MPP_RET ret = ((func_type)api->api_set)(&p->cfg, val); \
|
||||||
return ret; \
|
return ret; \
|
||||||
@@ -344,7 +362,11 @@ ENC_CFG_SET_ACCESS(mpp_enc_cfg_set_ptr, void *, SET_PTR, CfgSetPtr);
|
|||||||
return MPP_NOK; \
|
return MPP_NOK; \
|
||||||
} \
|
} \
|
||||||
MppEncCfgApi *api = (MppEncCfgApi *)info; \
|
MppEncCfgApi *api = (MppEncCfgApi *)info; \
|
||||||
mpp_assert(api->type_get == func_enum); \
|
if (api->type_get != func_enum) { \
|
||||||
|
mpp_err_f("%s expect %s input not %s\n", api->name, \
|
||||||
|
cfg_func_names[api->type_get], \
|
||||||
|
cfg_func_names[func_enum]); \
|
||||||
|
} \
|
||||||
mpp_enc_cfg_dbg_get("name %s type %s\n", api->name, cfg_func_names[api->type_get]); \
|
mpp_enc_cfg_dbg_get("name %s type %s\n", api->name, cfg_func_names[api->type_get]); \
|
||||||
MPP_RET ret = ((func_type)api->api_get)(&p->cfg, val); \
|
MPP_RET ret = ((func_type)api->api_get)(&p->cfg, val); \
|
||||||
return ret; \
|
return ret; \
|
||||||
|
@@ -88,7 +88,7 @@ static RK_S32 trie_get_node(MppTrieImpl *trie)
|
|||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET mpp_trie_init(MppTrie *trie, RK_S32 node_count)
|
MPP_RET mpp_trie_init(MppTrie *trie, RK_S32 node_count, RK_S32 info_count)
|
||||||
{
|
{
|
||||||
if (NULL == trie) {
|
if (NULL == trie) {
|
||||||
mpp_err_f("invalid NULL input trie automation\n");
|
mpp_err_f("invalid NULL input trie automation\n");
|
||||||
@@ -113,7 +113,7 @@ MPP_RET mpp_trie_init(MppTrie *trie, RK_S32 node_count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p->info_count = DEFAULT_INFO_COUNT;
|
p->info_count = info_count ? info_count : DEFAULT_INFO_COUNT;
|
||||||
p->info = mpp_calloc(const char **, p->info_count);
|
p->info = mpp_calloc(const char **, p->info_count);
|
||||||
if (NULL == p->info) {
|
if (NULL == p->info) {
|
||||||
mpp_err_f("failed to alloc %d storage\n", p->info_count);
|
mpp_err_f("failed to alloc %d storage\n", p->info_count);
|
||||||
@@ -175,16 +175,16 @@ MPP_RET mpp_trie_add_info(MppTrie trie, const char **info)
|
|||||||
MppTrieNode *node = NULL;
|
MppTrieNode *node = NULL;
|
||||||
const char *s = *info;
|
const char *s = *info;
|
||||||
RK_S32 len = strnlen(s, SZ_1K);
|
RK_S32 len = strnlen(s, SZ_1K);
|
||||||
RK_S16 next = 0;
|
RK_S32 next = 0;
|
||||||
RK_S16 idx = 0;
|
RK_S32 idx = 0;
|
||||||
RK_S32 i;
|
RK_S32 i;
|
||||||
|
|
||||||
trie_dbg_set("trie %p add info %s len %d\n", trie, s, len);
|
trie_dbg_set("trie %p add info %s len %d\n", trie, s, len);
|
||||||
|
|
||||||
for (i = 0; i < len && s[i]; i++) {
|
for (i = 0; i < len && s[i]; i++) {
|
||||||
RK_U32 key = s[i];
|
RK_U32 key = s[i];
|
||||||
RK_S16 key0 = (key >> 4) & 0xf;
|
RK_S32 key0 = (key >> 4) & 0xf;
|
||||||
RK_S16 key1 = (key >> 0) & 0xf;
|
RK_S32 key1 = (key >> 0) & 0xf;
|
||||||
|
|
||||||
node = p->nodes + idx;
|
node = p->nodes + idx;
|
||||||
next = node->next[key0];
|
next = node->next[key0];
|
||||||
@@ -250,32 +250,15 @@ const char **mpp_trie_get_info(MppTrie trie, const char *name)
|
|||||||
trie_dbg_get("trie %p search %s len %2d start\n", trie, name, len);
|
trie_dbg_get("trie %p search %s len %2d start\n", trie, name, len);
|
||||||
|
|
||||||
for (i = 0; i < len; i++, s++) {
|
for (i = 0; i < len; i++, s++) {
|
||||||
RK_U32 key = s[0];
|
idx = node->next[(s[0] >> 4) & 0xf];
|
||||||
RK_S16 key0 = (key >> 4) & 0xf;
|
if (!idx)
|
||||||
RK_S16 key1 = (key >> 0) & 0xf;
|
|
||||||
|
|
||||||
idx = node->next[key0];
|
|
||||||
|
|
||||||
trie_dbg_get("trie %p search %s pos %2d %c:%03d:key0:%2d -> %d\n",
|
|
||||||
trie, name, i, s[0], key, key0, idx);
|
|
||||||
|
|
||||||
if (idx == 0) {
|
|
||||||
trie_dbg_get("trie %p search %s pos %2d %c:%03d:key0:%2d failed\n",
|
|
||||||
trie, name, i, s[0], key, key0, idx);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
node = &nodes[idx];
|
node = &nodes[idx];
|
||||||
idx = node->next[key1];
|
|
||||||
|
|
||||||
trie_dbg_get("trie %p search %s pos %2d %c:%03d:key1:%2d\n",
|
idx = node->next[(s[0] >> 0) & 0xf];
|
||||||
trie, name, i, s[0], key, key1);
|
if (!idx)
|
||||||
|
|
||||||
if (idx == 0) {
|
|
||||||
trie_dbg_get("trie %p search %s pos %2d %c:%03d:key1:%2d failed\n",
|
|
||||||
trie, name, i, s[0], key, key1, idx);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
node = &nodes[idx];
|
node = &nodes[idx];
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "mpp_log.h"
|
#include "mpp_log.h"
|
||||||
#include "mpp_mem.h"
|
#include "mpp_mem.h"
|
||||||
|
#include "mpp_time.h"
|
||||||
#include "mpp_common.h"
|
#include "mpp_common.h"
|
||||||
|
|
||||||
#include "rk_venc_cfg.h"
|
#include "rk_venc_cfg.h"
|
||||||
@@ -27,6 +28,8 @@ int main()
|
|||||||
{
|
{
|
||||||
MPP_RET ret = MPP_OK;
|
MPP_RET ret = MPP_OK;
|
||||||
MppEncCfg cfg;
|
MppEncCfg cfg;
|
||||||
|
RK_S64 end = 0;
|
||||||
|
RK_S64 start = 0;
|
||||||
|
|
||||||
mpp_enc_cfg_show();
|
mpp_enc_cfg_show();
|
||||||
|
|
||||||
@@ -46,9 +49,13 @@ int main()
|
|||||||
mpp_log("before set: rc mode %d bps_target %d\n",
|
mpp_log("before set: rc mode %d bps_target %d\n",
|
||||||
impl->cfg.rc.rc_mode, impl->cfg.rc.bps_target);
|
impl->cfg.rc.rc_mode, impl->cfg.rc.bps_target);
|
||||||
|
|
||||||
ret = mpp_enc_cfg_set_s32(cfg, "rc:rc_mode", rc_mode);
|
start = mpp_time();
|
||||||
|
ret = mpp_enc_cfg_set_u32(cfg, "rc:mode", rc_mode);
|
||||||
|
ret = mpp_enc_cfg_set_s32(cfg, "rc:mode", rc_mode);
|
||||||
ret = mpp_enc_cfg_set_s32(cfg, "rc:bps", 400000);
|
ret = mpp_enc_cfg_set_s32(cfg, "rc:bps", 400000);
|
||||||
ret = mpp_enc_cfg_set_s32(cfg, "rc:bps_target", bps_target);
|
ret = mpp_enc_cfg_set_s32(cfg, "rc:bps_target", bps_target);
|
||||||
|
end = mpp_time();
|
||||||
|
mpp_log("set s32 time %lld us\n", end - start);
|
||||||
|
|
||||||
mpp_log("after set: rc mode %d bps_target %d\n",
|
mpp_log("after set: rc mode %d bps_target %d\n",
|
||||||
impl->cfg.rc.rc_mode, impl->cfg.rc.bps_target);
|
impl->cfg.rc.rc_mode, impl->cfg.rc.bps_target);
|
||||||
@@ -58,7 +65,7 @@ int main()
|
|||||||
|
|
||||||
mpp_log("before get: rc mode %d bps_target %d\n", rc_mode, bps_target);
|
mpp_log("before get: rc mode %d bps_target %d\n", rc_mode, bps_target);
|
||||||
|
|
||||||
ret = mpp_enc_cfg_get_s32(cfg, "rc:rc_mode", &rc_mode);
|
ret = mpp_enc_cfg_get_s32(cfg, "rc:mode", &rc_mode);
|
||||||
ret = mpp_enc_cfg_get_s32(cfg, "rc:bps_target", &bps_target);
|
ret = mpp_enc_cfg_get_s32(cfg, "rc:bps_target", &bps_target);
|
||||||
|
|
||||||
mpp_log("after get: rc mode %d bps_target %d\n", rc_mode, bps_target);
|
mpp_log("after get: rc mode %d bps_target %d\n", rc_mode, bps_target);
|
||||||
|
@@ -43,40 +43,42 @@ void *print_opt(void *ctx)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
TestAction test_acts[] = {
|
TestAction test_info[] = {
|
||||||
{ "rc:rc_mode", &test_acts[0], print_opt},
|
{ "rc:mode", &test_info[0], print_opt},
|
||||||
{ "rc:bps_target", &test_acts[1], print_opt},
|
{ "rc:bps_target", &test_info[1], print_opt},
|
||||||
{ "rc:bps_max", &test_acts[2], print_opt},
|
{ "rc:bps_max", &test_info[2], print_opt},
|
||||||
{ "rc:bps_min", &test_acts[3], print_opt},
|
{ "rc:bps_min", &test_info[3], print_opt},
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *test_str[] = {
|
const char *test_str[] = {
|
||||||
"rc:rc_mode",
|
"rc:mode",
|
||||||
"rc:bps_target",
|
"rc:bps_target",
|
||||||
"rc:bps_max",
|
"rc:bps_max",
|
||||||
};
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
MppTrie ac = NULL;
|
MppTrie trie = NULL;
|
||||||
void *info = NULL;
|
void *info = NULL;
|
||||||
RK_U32 i;
|
RK_U32 i;
|
||||||
RK_S64 end = 0;
|
RK_S64 end = 0;
|
||||||
RK_S64 start = 0;
|
RK_S64 start = 0;
|
||||||
|
RK_S32 info_cnt = MPP_ARRAY_ELEMS(test_info);
|
||||||
|
RK_S32 node_cnt = 100;
|
||||||
|
|
||||||
mpp_trie_init(&ac, 100);
|
mpp_trie_init(&trie, node_cnt, info_cnt);
|
||||||
|
|
||||||
start = mpp_time();
|
start = mpp_time();
|
||||||
mpp_trie_add_info(ac, &test_acts[0].name);
|
mpp_trie_add_info(trie, &test_info[0].name);
|
||||||
mpp_trie_add_info(ac, &test_acts[1].name);
|
mpp_trie_add_info(trie, &test_info[1].name);
|
||||||
mpp_trie_add_info(ac, &test_acts[2].name);
|
mpp_trie_add_info(trie, &test_info[2].name);
|
||||||
mpp_trie_add_info(ac, &test_acts[3].name);
|
mpp_trie_add_info(trie, &test_info[3].name);
|
||||||
end = mpp_time();
|
end = mpp_time();
|
||||||
mpp_log("add act time %lld us\n", end - start);
|
mpp_log("add act time %lld us\n", end - start);
|
||||||
|
|
||||||
for (i = 0; i < MPP_ARRAY_ELEMS(test_str); i++) {
|
for (i = 0; i < MPP_ARRAY_ELEMS(test_str); i++) {
|
||||||
start = mpp_time();
|
start = mpp_time();
|
||||||
info = mpp_trie_get_info(ac, test_str[i]);
|
info = mpp_trie_get_info(trie, test_str[i]);
|
||||||
end = mpp_time();
|
end = mpp_time();
|
||||||
if (info) {
|
if (info) {
|
||||||
TestAction *act = (TestAction *)info;
|
TestAction *act = (TestAction *)info;
|
||||||
@@ -88,7 +90,7 @@ int main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mpp_trie_deinit(ac);
|
mpp_trie_deinit(trie);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -125,7 +125,7 @@ static MPP_RET vpu_api_set_enc_cfg(MppCtx mpp_ctx, MppApi *mpi, MppEncCfg enc_cf
|
|||||||
mpp_enc_cfg_set_s32(enc_cfg, "prep:ver_stride", MPP_ALIGN(height, 16));
|
mpp_enc_cfg_set_s32(enc_cfg, "prep:ver_stride", MPP_ALIGN(height, 16));
|
||||||
mpp_enc_cfg_set_s32(enc_cfg, "prep:format", fmt);
|
mpp_enc_cfg_set_s32(enc_cfg, "prep:format", fmt);
|
||||||
|
|
||||||
mpp_enc_cfg_set_s32(enc_cfg, "rc:rc_mode", rc_mode ? MPP_ENC_RC_MODE_CBR : MPP_ENC_RC_MODE_FIXQP);
|
mpp_enc_cfg_set_s32(enc_cfg, "rc:mode", rc_mode ? MPP_ENC_RC_MODE_CBR : MPP_ENC_RC_MODE_FIXQP);
|
||||||
mpp_enc_cfg_set_s32(enc_cfg, "rc:bps_target", bps);
|
mpp_enc_cfg_set_s32(enc_cfg, "rc:bps_target", bps);
|
||||||
mpp_enc_cfg_set_s32(enc_cfg, "rc:bps_max", bps * 17 / 16);
|
mpp_enc_cfg_set_s32(enc_cfg, "rc:bps_max", bps * 17 / 16);
|
||||||
mpp_enc_cfg_set_s32(enc_cfg, "rc:bps_min", bps * 17 / 16);
|
mpp_enc_cfg_set_s32(enc_cfg, "rc:bps_min", bps * 17 / 16);
|
||||||
|
@@ -493,7 +493,7 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncTestData *p)
|
|||||||
mpp_enc_cfg_set_s32(cfg, "prep:ver_stride", p->ver_stride);
|
mpp_enc_cfg_set_s32(cfg, "prep:ver_stride", p->ver_stride);
|
||||||
mpp_enc_cfg_set_s32(cfg, "prep:format", p->fmt);
|
mpp_enc_cfg_set_s32(cfg, "prep:format", p->fmt);
|
||||||
|
|
||||||
mpp_enc_cfg_set_s32(cfg, "rc:rc_mode", rc_mode);
|
mpp_enc_cfg_set_s32(cfg, "rc:mode", rc_mode);
|
||||||
|
|
||||||
switch (rc_mode) {
|
switch (rc_mode) {
|
||||||
case MPP_ENC_RC_MODE_FIXQP : {
|
case MPP_ENC_RC_MODE_FIXQP : {
|
||||||
@@ -574,8 +574,8 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncTestData *p)
|
|||||||
|
|
||||||
if (p->split_mode) {
|
if (p->split_mode) {
|
||||||
mpp_log("split_mode %d split_arg %d\n", p->split_mode, p->split_arg);
|
mpp_log("split_mode %d split_arg %d\n", p->split_mode, p->split_arg);
|
||||||
mpp_enc_cfg_set_s32(cfg, "split:split_mode", p->split_mode);
|
mpp_enc_cfg_set_s32(cfg, "split:mode", p->split_mode);
|
||||||
mpp_enc_cfg_set_s32(cfg, "split:split_arg", p->split_arg);
|
mpp_enc_cfg_set_s32(cfg, "split:arg", p->split_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = mpi->control(ctx, MPP_ENC_SET_CFG, cfg);
|
ret = mpi->control(ctx, MPP_ENC_SET_CFG, cfg);
|
||||||
|
Reference in New Issue
Block a user