chore[mpp_enc_cfg]: Remove MppEncCodecCfg

1. Revert codec cfg to separate h264/h265/jpeg/vp8 cfg.
2. Update enc/dec/sys cfg_test print.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ida5da8a6b738fbf710e1ab590bc6b6f3438319c4
This commit is contained in:
Herman Chen 2025-09-08 17:39:17 +08:00
parent 4ed4f77864
commit f507421f8b
37 changed files with 193 additions and 203 deletions

View file

@ -198,6 +198,7 @@ typedef struct MppEncQueryCfg_t {
typedef enum MppEncBaseCfgChange_e {
MPP_ENC_BASE_CFG_CHANGE_LOW_DELAY = (1 << 0),
MPP_ENC_BASE_CFG_CHANGE_SMART_EN = (1 << 1),
MPP_ENC_BASE_CFG_CHANGE_CODING = (1 << 2),
MPP_ENC_BASE_CFG_CHANGE_ALL = (0xFFFFFFFF),
} MppEncBaseCfgChange;
@ -206,6 +207,7 @@ typedef struct MppEncBaseCfg_t {
RK_S32 low_delay;
RK_S32 smart_en;
MppCodingType coding;
} MppEncBaseCfg;
/*
@ -1218,28 +1220,6 @@ typedef struct MppEncVp8Cfg_t {
RK_S32 disable_ivf;
} MppEncVp8Cfg;
/**
* @ingroup rk_mpi
* @brief MPP encoder codec configuration parameters
* @details The encoder codec configuration parameters are different for each
* compression codings. For example, H.264 encoder can configure
* profile, level, qp, etc. while jpeg encoder can configure qp
* only. The detailed parameters can refer the corresponding data
* structure such as MppEncH264Cfg and MppEncJpegCfg. This data
* structure is associated with MPP_ENC_SET_CODEC_CFG command.
*/
typedef struct MppEncCodecCfg_t {
MppCodingType coding;
union {
RK_U32 change;
MppEncH264Cfg h264;
MppEncH265Cfg h265;
MppEncJpegCfg jpeg;
MppEncVp8Cfg vp8;
};
} MppEncCodecCfg;
typedef enum MppEncSliceSplit_e {
/* change on quant parameter */
MPP_ENC_SPLIT_CFG_CHANGE_MODE = (1 << 0),

View file

@ -143,8 +143,9 @@ void mpp_dec_cfg_show(void)
if (root) {
MppTrieInfo *node = root;
rk_s32 len = mpp_trie_get_name_max(trie);
mpp_log("%-32s %-6s | %6s | %4s | %4s\n", "name", "type", "offset", "size", "flag (hex)");
mpp_log("%-*s %-6s | %6s | %4s | %4s\n", len, "name", "type", "offset", "size", "flag (hex)");
do {
if (mpp_trie_info_is_self(node))
@ -153,17 +154,18 @@ void mpp_dec_cfg_show(void)
if (node->ctx_len == sizeof(KmppEntry)) {
KmppEntry *entry = (KmppEntry *)mpp_trie_info_ctx(node);
mpp_log("%-32s %-6s | %-6d | %-4d | %-4x\n", mpp_trie_info_name(node),
mpp_log("%-*s %-6s | %-6d | %-4d | %-4x\n", len, mpp_trie_info_name(node),
strof_elem_type(entry->tbl.elem_type), entry->tbl.elem_offset,
entry->tbl.elem_size, entry->tbl.flag_offset);
} else {
mpp_log("%-30s size - %d\n", mpp_trie_info_name(node), node->ctx_len);
mpp_log("%-*s size - %d\n", len, mpp_trie_info_name(node), node->ctx_len);
}
} while ((node = mpp_trie_get_info_next(trie, node)));
}
mpp_log("dumping valid configure string done\n");
mpp_log("total cfg count %d with %d node size %d\n", mpp_trie_get_info_count(trie),
mpp_log("dec cfg size %d count %d with trie node %d size %d\n",
sizeof(MppDecCfgSet), mpp_trie_get_info_count(trie),
mpp_trie_get_node_count(trie), mpp_trie_get_buf_size(trie));
}

View file

@ -69,6 +69,8 @@ static RK_U32 mpp_enc_cfg_debug = 0;
/* base config */ \
ENTRY(base, low_delay, S32, MPP_ENC_BASE_CFG_CHANGE_LOW_DELAY, base, low_delay) \
ENTRY(base, smart_en, S32, MPP_ENC_BASE_CFG_CHANGE_SMART_EN, base, smart_en) \
/* codec coding config */ \
ENTRY(codec, type, S32, MPP_ENC_BASE_CFG_CHANGE_CODING, base, coding) \
/* rc config */ \
ENTRY(rc, mode, S32, MPP_ENC_RC_CFG_CHANGE_RC_MODE, rc, rc_mode) \
ENTRY(rc, bps_target, S32, MPP_ENC_RC_CFG_CHANGE_BPS, rc, bps_target) \
@ -140,26 +142,24 @@ static RK_U32 mpp_enc_cfg_debug = 0;
ENTRY(prep, rotation, S32, MPP_ENC_PREP_CFG_CHANGE_ROTATION, prep, rotation_ext) \
ENTRY(prep, mirroring, S32, MPP_ENC_PREP_CFG_CHANGE_MIRRORING, prep, mirroring_ext) \
ENTRY(prep, flip, S32, MPP_ENC_PREP_CFG_CHANGE_FLIP, prep, flip) \
/* codec coding config */ \
ENTRY(codec, type, S32, 0, codec, coding) \
/* h264 config */ \
ENTRY(h264, stream_type, S32, MPP_ENC_H264_CFG_STREAM_TYPE, codec.h264, stream_type) \
ENTRY(h264, profile, S32, MPP_ENC_H264_CFG_CHANGE_PROFILE, codec.h264, profile) \
ENTRY(h264, level, S32, MPP_ENC_H264_CFG_CHANGE_PROFILE, codec.h264, level) \
ENTRY(h264, poc_type, U32, MPP_ENC_H264_CFG_CHANGE_POC_TYPE, codec.h264, poc_type) \
ENTRY(h264, log2_max_poc_lsb, U32, MPP_ENC_H264_CFG_CHANGE_MAX_POC_LSB, codec.h264, log2_max_poc_lsb) \
ENTRY(h264, log2_max_frm_num, U32, MPP_ENC_H264_CFG_CHANGE_MAX_FRM_NUM, codec.h264, log2_max_frame_num) \
ENTRY(h264, gaps_not_allowed, U32, MPP_ENC_H264_CFG_CHANGE_GAPS_IN_FRM_NUM, codec.h264, gaps_not_allowed) \
ENTRY(h264, cabac_en, S32, MPP_ENC_H264_CFG_CHANGE_ENTROPY, codec.h264, entropy_coding_mode_ex) \
ENTRY(h264, cabac_idc, S32, MPP_ENC_H264_CFG_CHANGE_ENTROPY, codec.h264, cabac_init_idc_ex) \
ENTRY(h264, trans8x8, S32, MPP_ENC_H264_CFG_CHANGE_TRANS_8x8, codec.h264, transform8x8_mode_ex) \
ENTRY(h264, const_intra, S32, MPP_ENC_H264_CFG_CHANGE_CONST_INTRA, codec.h264, constrained_intra_pred_mode) \
ENTRY(h264, scaling_list, S32, MPP_ENC_H264_CFG_CHANGE_SCALING_LIST, codec.h264, scaling_list_mode) \
ENTRY(h264, cb_qp_offset, S32, MPP_ENC_H264_CFG_CHANGE_CHROMA_QP, codec.h264, chroma_cb_qp_offset) \
ENTRY(h264, cr_qp_offset, S32, MPP_ENC_H264_CFG_CHANGE_CHROMA_QP, codec.h264, chroma_cr_qp_offset) \
ENTRY(h264, dblk_disable, S32, MPP_ENC_H264_CFG_CHANGE_DEBLOCKING, codec.h264, deblock_disable) \
ENTRY(h264, dblk_alpha, S32, MPP_ENC_H264_CFG_CHANGE_DEBLOCKING, codec.h264, deblock_offset_alpha) \
ENTRY(h264, dblk_beta, S32, MPP_ENC_H264_CFG_CHANGE_DEBLOCKING, codec.h264, deblock_offset_beta) \
ENTRY(h264, stream_type, S32, MPP_ENC_H264_CFG_STREAM_TYPE, h264, stream_type) \
ENTRY(h264, profile, S32, MPP_ENC_H264_CFG_CHANGE_PROFILE, h264, profile) \
ENTRY(h264, level, S32, MPP_ENC_H264_CFG_CHANGE_PROFILE, h264, level) \
ENTRY(h264, poc_type, U32, MPP_ENC_H264_CFG_CHANGE_POC_TYPE, h264, poc_type) \
ENTRY(h264, log2_max_poc_lsb, U32, MPP_ENC_H264_CFG_CHANGE_MAX_POC_LSB, h264, log2_max_poc_lsb) \
ENTRY(h264, log2_max_frm_num, U32, MPP_ENC_H264_CFG_CHANGE_MAX_FRM_NUM, h264, log2_max_frame_num) \
ENTRY(h264, gaps_not_allowed, U32, MPP_ENC_H264_CFG_CHANGE_GAPS_IN_FRM_NUM, h264, gaps_not_allowed) \
ENTRY(h264, cabac_en, S32, MPP_ENC_H264_CFG_CHANGE_ENTROPY, h264, entropy_coding_mode_ex) \
ENTRY(h264, cabac_idc, S32, MPP_ENC_H264_CFG_CHANGE_ENTROPY, h264, cabac_init_idc_ex) \
ENTRY(h264, trans8x8, S32, MPP_ENC_H264_CFG_CHANGE_TRANS_8x8, h264, transform8x8_mode_ex) \
ENTRY(h264, const_intra, S32, MPP_ENC_H264_CFG_CHANGE_CONST_INTRA, h264, constrained_intra_pred_mode) \
ENTRY(h264, scaling_list, S32, MPP_ENC_H264_CFG_CHANGE_SCALING_LIST, h264, scaling_list_mode) \
ENTRY(h264, cb_qp_offset, S32, MPP_ENC_H264_CFG_CHANGE_CHROMA_QP, h264, chroma_cb_qp_offset) \
ENTRY(h264, cr_qp_offset, S32, MPP_ENC_H264_CFG_CHANGE_CHROMA_QP, h264, chroma_cr_qp_offset) \
ENTRY(h264, dblk_disable, S32, MPP_ENC_H264_CFG_CHANGE_DEBLOCKING, h264, deblock_disable) \
ENTRY(h264, dblk_alpha, S32, MPP_ENC_H264_CFG_CHANGE_DEBLOCKING, h264, deblock_offset_alpha) \
ENTRY(h264, dblk_beta, S32, MPP_ENC_H264_CFG_CHANGE_DEBLOCKING, h264, deblock_offset_beta) \
ENTRY(h264, qp_init, S32, MPP_ENC_RC_CFG_CHANGE_QP_INIT, rc, qp_init) \
ENTRY(h264, qp_min, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE, rc, qp_min) \
ENTRY(h264, qp_max, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE, rc, qp_max) \
@ -167,23 +167,23 @@ static RK_U32 mpp_enc_cfg_debug = 0;
ENTRY(h264, qp_max_i, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE_I, rc, qp_max_i) \
ENTRY(h264, qp_step, S32, MPP_ENC_RC_CFG_CHANGE_QP_MAX_STEP, rc, qp_max_step) \
ENTRY(h264, qp_delta_ip, S32, MPP_ENC_RC_CFG_CHANGE_QP_IP, rc, qp_delta_ip) \
ENTRY(h264, max_tid, S32, MPP_ENC_H264_CFG_CHANGE_MAX_TID, codec.h264, max_tid) \
ENTRY(h264, max_ltr, S32, MPP_ENC_H264_CFG_CHANGE_MAX_LTR, codec.h264, max_ltr_frames) \
ENTRY(h264, prefix_mode, S32, MPP_ENC_H264_CFG_CHANGE_ADD_PREFIX, codec.h264, prefix_mode) \
ENTRY(h264, base_layer_pid, S32, MPP_ENC_H264_CFG_CHANGE_BASE_LAYER_PID, codec.h264, base_layer_pid) \
ENTRY(h264, constraint_set, U32, MPP_ENC_H264_CFG_CHANGE_CONSTRAINT_SET, codec.h264, constraint_set) \
ENTRY(h264, vui_en, U32, MPP_ENC_H264_CFG_CHANGE_VUI, codec.h264, vui.vui_en) \
ENTRY(h264, max_tid, S32, MPP_ENC_H264_CFG_CHANGE_MAX_TID, h264, max_tid) \
ENTRY(h264, max_ltr, S32, MPP_ENC_H264_CFG_CHANGE_MAX_LTR, h264, max_ltr_frames) \
ENTRY(h264, prefix_mode, S32, MPP_ENC_H264_CFG_CHANGE_ADD_PREFIX, h264, prefix_mode) \
ENTRY(h264, base_layer_pid, S32, MPP_ENC_H264_CFG_CHANGE_BASE_LAYER_PID, h264, base_layer_pid) \
ENTRY(h264, constraint_set, U32, MPP_ENC_H264_CFG_CHANGE_CONSTRAINT_SET, h264, constraint_set) \
ENTRY(h264, vui_en, U32, MPP_ENC_H264_CFG_CHANGE_VUI, h264, vui.vui_en) \
/* h265 config*/ \
ENTRY(h265, profile, S32, MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE, codec.h265, profile) \
ENTRY(h265, tier , S32, MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE, codec.h265, tier) \
ENTRY(h265, level, S32, MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE, codec.h265, level) \
ENTRY(h265, scaling_list, U32, MPP_ENC_H265_CFG_TRANS_CHANGE, codec.h265, trans_cfg.defalut_ScalingList_enable) \
ENTRY(h265, cb_qp_offset, S32, MPP_ENC_H265_CFG_TRANS_CHANGE, codec.h265, trans_cfg.cb_qp_offset) \
ENTRY(h265, cr_qp_offset, S32, MPP_ENC_H265_CFG_TRANS_CHANGE, codec.h265, trans_cfg.cr_qp_offset) \
ENTRY(h265, diff_cu_qp_delta_depth, S32, MPP_ENC_H265_CFG_TRANS_CHANGE, codec.h265, trans_cfg.diff_cu_qp_delta_depth) \
ENTRY(h265, dblk_disable, U32, MPP_ENC_H265_CFG_DBLK_CHANGE, codec.h265, dblk_cfg.slice_deblocking_filter_disabled_flag) \
ENTRY(h265, dblk_alpha, S32, MPP_ENC_H265_CFG_DBLK_CHANGE, codec.h265, dblk_cfg.slice_beta_offset_div2) \
ENTRY(h265, dblk_beta, S32, MPP_ENC_H265_CFG_DBLK_CHANGE, codec.h265, dblk_cfg.slice_tc_offset_div2) \
ENTRY(h265, profile, S32, MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE, h265, profile) \
ENTRY(h265, tier , S32, MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE, h265, tier) \
ENTRY(h265, level, S32, MPP_ENC_H265_CFG_PROFILE_LEVEL_TILER_CHANGE, h265, level) \
ENTRY(h265, scaling_list, U32, MPP_ENC_H265_CFG_TRANS_CHANGE, h265, trans_cfg.defalut_ScalingList_enable) \
ENTRY(h265, cb_qp_offset, S32, MPP_ENC_H265_CFG_TRANS_CHANGE, h265, trans_cfg.cb_qp_offset) \
ENTRY(h265, cr_qp_offset, S32, MPP_ENC_H265_CFG_TRANS_CHANGE, h265, trans_cfg.cr_qp_offset) \
ENTRY(h265, diff_cu_qp_delta_depth, S32, MPP_ENC_H265_CFG_TRANS_CHANGE, h265, trans_cfg.diff_cu_qp_delta_depth) \
ENTRY(h265, dblk_disable, U32, MPP_ENC_H265_CFG_DBLK_CHANGE, h265, dblk_cfg.slice_deblocking_filter_disabled_flag) \
ENTRY(h265, dblk_alpha, S32, MPP_ENC_H265_CFG_DBLK_CHANGE, h265, dblk_cfg.slice_beta_offset_div2) \
ENTRY(h265, dblk_beta, S32, MPP_ENC_H265_CFG_DBLK_CHANGE, h265, dblk_cfg.slice_tc_offset_div2) \
ENTRY(h265, qp_init, S32, MPP_ENC_RC_CFG_CHANGE_QP_INIT, rc, qp_init) \
ENTRY(h265, qp_min, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE, rc, qp_min) \
ENTRY(h265, qp_max, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE, rc, qp_max) \
@ -191,18 +191,18 @@ static RK_U32 mpp_enc_cfg_debug = 0;
ENTRY(h265, qp_max_i, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE_I, rc, qp_max_i) \
ENTRY(h265, qp_step, S32, MPP_ENC_RC_CFG_CHANGE_QP_MAX_STEP, rc, qp_max_step) \
ENTRY(h265, qp_delta_ip, S32, MPP_ENC_RC_CFG_CHANGE_QP_IP, rc, qp_delta_ip) \
ENTRY(h265, sao_luma_disable, S32, MPP_ENC_H265_CFG_SAO_CHANGE, codec.h265, sao_cfg.slice_sao_luma_disable) \
ENTRY(h265, sao_chroma_disable, S32, MPP_ENC_H265_CFG_SAO_CHANGE, codec.h265, sao_cfg.slice_sao_chroma_disable) \
ENTRY(h265, sao_bit_ratio, S32, MPP_ENC_H265_CFG_SAO_CHANGE, codec.h265, sao_cfg.sao_bit_ratio) \
ENTRY(h265, lpf_acs_sli_en, U32, MPP_ENC_H265_CFG_SLICE_LPFACS_CHANGE, codec.h265, lpf_acs_sli_en) \
ENTRY(h265, lpf_acs_tile_disable, U32, MPP_ENC_H265_CFG_TILE_LPFACS_CHANGE, codec.h265, lpf_acs_tile_disable) \
ENTRY(h265, auto_tile, S32, MPP_ENC_H265_CFG_TILE_CHANGE, codec.h265, auto_tile) \
ENTRY(h265, max_tid, S32, MPP_ENC_H265_CFG_CHANGE_MAX_TID, codec.h265, max_tid) \
ENTRY(h265, max_ltr, S32, MPP_ENC_H265_CFG_CHANGE_MAX_LTR, codec.h265, max_ltr_frames) \
ENTRY(h265, base_layer_pid, S32, MPP_ENC_H265_CFG_CHANGE_BASE_LAYER_PID, codec.h265, base_layer_pid) \
ENTRY(h265, const_intra, S32, MPP_ENC_H265_CFG_CHANGE_CONST_INTRA, codec.h265, const_intra_pred) \
ENTRY(h265, lcu_size, S32, MPP_ENC_H265_CFG_CHANGE_LCU_SIZE, codec.h265, max_cu_size) \
ENTRY(h265, vui_en, U32, MPP_ENC_H265_CFG_CHANGE_VUI, codec.h265, vui.vui_en) \
ENTRY(h265, sao_luma_disable, S32, MPP_ENC_H265_CFG_SAO_CHANGE, h265, sao_cfg.slice_sao_luma_disable) \
ENTRY(h265, sao_chroma_disable, S32, MPP_ENC_H265_CFG_SAO_CHANGE, h265, sao_cfg.slice_sao_chroma_disable) \
ENTRY(h265, sao_bit_ratio, S32, MPP_ENC_H265_CFG_SAO_CHANGE, h265, sao_cfg.sao_bit_ratio) \
ENTRY(h265, lpf_acs_sli_en, U32, MPP_ENC_H265_CFG_SLICE_LPFACS_CHANGE, h265, lpf_acs_sli_en) \
ENTRY(h265, lpf_acs_tile_disable, U32, MPP_ENC_H265_CFG_TILE_LPFACS_CHANGE, h265, lpf_acs_tile_disable) \
ENTRY(h265, auto_tile, S32, MPP_ENC_H265_CFG_TILE_CHANGE, h265, auto_tile) \
ENTRY(h265, max_tid, S32, MPP_ENC_H265_CFG_CHANGE_MAX_TID, h265, max_tid) \
ENTRY(h265, max_ltr, S32, MPP_ENC_H265_CFG_CHANGE_MAX_LTR, h265, max_ltr_frames) \
ENTRY(h265, base_layer_pid, S32, MPP_ENC_H265_CFG_CHANGE_BASE_LAYER_PID, h265, base_layer_pid) \
ENTRY(h265, const_intra, S32, MPP_ENC_H265_CFG_CHANGE_CONST_INTRA, h265, const_intra_pred) \
ENTRY(h265, lcu_size, S32, MPP_ENC_H265_CFG_CHANGE_LCU_SIZE, h265, max_cu_size) \
ENTRY(h265, vui_en, U32, MPP_ENC_H265_CFG_CHANGE_VUI, h265, vui.vui_en) \
/* vp8 config */ \
ENTRY(vp8, qp_init, S32, MPP_ENC_RC_CFG_CHANGE_QP_INIT, rc, qp_init) \
ENTRY(vp8, qp_min, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE, rc, qp_min) \
@ -211,15 +211,15 @@ static RK_U32 mpp_enc_cfg_debug = 0;
ENTRY(vp8, qp_max_i, S32, MPP_ENC_RC_CFG_CHANGE_QP_RANGE_I, rc, qp_max_i) \
ENTRY(vp8, qp_step, S32, MPP_ENC_RC_CFG_CHANGE_QP_MAX_STEP, rc, qp_max_step) \
ENTRY(vp8, qp_delta_ip, S32, MPP_ENC_RC_CFG_CHANGE_QP_IP, rc, qp_delta_ip) \
ENTRY(vp8, disable_ivf, S32, MPP_ENC_VP8_CFG_CHANGE_DIS_IVF, codec.vp8, disable_ivf) \
ENTRY(vp8, disable_ivf, S32, MPP_ENC_VP8_CFG_CHANGE_DIS_IVF, vp8, disable_ivf) \
/* jpeg config */ \
ENTRY(jpeg, quant, S32, MPP_ENC_JPEG_CFG_CHANGE_QP, codec.jpeg, quant) \
ENTRY(jpeg, qtable_y, Ptr, MPP_ENC_JPEG_CFG_CHANGE_QTABLE, codec.jpeg, qtable_y) \
ENTRY(jpeg, qtable_u, Ptr, MPP_ENC_JPEG_CFG_CHANGE_QTABLE, codec.jpeg, qtable_u) \
ENTRY(jpeg, qtable_v, Ptr, MPP_ENC_JPEG_CFG_CHANGE_QTABLE, codec.jpeg, qtable_v) \
ENTRY(jpeg, q_factor, S32, MPP_ENC_JPEG_CFG_CHANGE_QFACTOR, codec.jpeg, q_factor) \
ENTRY(jpeg, qf_max, S32, MPP_ENC_JPEG_CFG_CHANGE_QFACTOR, codec.jpeg, qf_max) \
ENTRY(jpeg, qf_min, S32, MPP_ENC_JPEG_CFG_CHANGE_QFACTOR, codec.jpeg, qf_min) \
ENTRY(jpeg, quant, S32, MPP_ENC_JPEG_CFG_CHANGE_QP, jpeg, quant) \
ENTRY(jpeg, qtable_y, Ptr, MPP_ENC_JPEG_CFG_CHANGE_QTABLE, jpeg, qtable_y) \
ENTRY(jpeg, qtable_u, Ptr, MPP_ENC_JPEG_CFG_CHANGE_QTABLE, jpeg, qtable_u) \
ENTRY(jpeg, qtable_v, Ptr, MPP_ENC_JPEG_CFG_CHANGE_QTABLE, jpeg, qtable_v) \
ENTRY(jpeg, q_factor, S32, MPP_ENC_JPEG_CFG_CHANGE_QFACTOR, jpeg, q_factor) \
ENTRY(jpeg, qf_max, S32, MPP_ENC_JPEG_CFG_CHANGE_QFACTOR, jpeg, qf_max) \
ENTRY(jpeg, qf_min, S32, MPP_ENC_JPEG_CFG_CHANGE_QFACTOR, jpeg, qf_min) \
/* split config */ \
ENTRY(split, mode, U32, MPP_ENC_SPLIT_CFG_CHANGE_MODE, split, split_mode) \
ENTRY(split, arg, U32, MPP_ENC_SPLIT_CFG_CHANGE_ARG, split, split_arg) \
@ -543,15 +543,18 @@ void mpp_enc_cfg_show(void)
{
MppEncCfgSrv *srv = get_srv_enc_cfg_f();
MppTrieInfo *root;
MppTrie trie;
if (!srv)
return;
mpp_log("dumping valid configure string start\n");
root = mpp_trie_get_info_first(srv->trie);
trie = srv->trie;
root = mpp_trie_get_info_first(trie);
if (root) {
MppTrieInfo *node = root;
rk_s32 len = mpp_trie_get_name_max(trie);
do {
if (mpp_trie_info_is_self(node))
@ -560,16 +563,16 @@ void mpp_enc_cfg_show(void)
if (node->ctx_len == sizeof(MppCfgInfo)) {
MppCfgInfo *info = (MppCfgInfo *)mpp_trie_info_ctx(node);
mpp_log("%-25s type %s - %d:%d\n", mpp_trie_info_name(node),
mpp_log("%-*s type %s - %d:%d\n", len, mpp_trie_info_name(node),
strof_cfg_type(info->data_type), info->data_offset, info->data_size);
} else {
mpp_log("%-25s size - %d\n", mpp_trie_info_name(node), node->ctx_len);
mpp_log("%-*s size - %d\n", len, mpp_trie_info_name(node), node->ctx_len);
}
} while ((node = mpp_trie_get_info_next(srv->trie, node)));
} while ((node = mpp_trie_get_info_next(trie, node)));
}
mpp_log("dumping valid configure string done\n");
mpp_log("total cfg count %d with %d node size %d\n",
mpp_trie_get_info_count(srv->trie), mpp_trie_get_node_count(srv->trie),
mpp_trie_get_buf_size(srv->trie));
mpp_log("enc cfg size %d count %d with trie node %d size %d\n",
sizeof(MppEncCfgSet), mpp_trie_get_info_count(trie),
mpp_trie_get_node_count(trie), mpp_trie_get_buf_size(trie));
}

View file

@ -712,22 +712,25 @@ void mpp_sys_cfg_show(void)
if (root) {
MppTrieInfo *node = root;
rk_s32 len = mpp_trie_get_name_max(trie);
do {
MppCfgInfo *info = (MppCfgInfo *)mpp_trie_info_ctx(node);
if (mpp_trie_info_is_self(node))
continue;
mpp_log("%-25s type %s\n", mpp_trie_info_name(node),
strof_cfg_type(info->data_type));
if (node->ctx_len == sizeof(MppCfgInfo)) {
MppCfgInfo *info = (MppCfgInfo *)mpp_trie_info_ctx(node);
node = mpp_trie_get_info_next(trie, node);
if (!node)
break;
} while (1);
mpp_log("%-*s type %s - %d:%d\n", len, mpp_trie_info_name(node),
strof_cfg_type(info->data_type), info->data_offset, info->data_size);
} else {
mpp_log("%-*s size - %d\n", len, mpp_trie_info_name(node), node->ctx_len);
}
} while ((node = mpp_trie_get_info_next(trie, node)));
}
mpp_log("dumping valid configure string done\n");
mpp_log("total cfg count %d with %d node size %d\n",
mpp_trie_get_info_count(trie),
mpp_trie_get_node_count(trie),
mpp_trie_get_buf_size(trie));
mpp_log("sys cfg size %d count %d with trie node %d size %d\n",
sizeof(MppSysCfgSet), mpp_trie_get_info_count(trie),
mpp_trie_get_node_count(trie), mpp_trie_get_buf_size(trie));
}

View file

@ -92,7 +92,7 @@ static void init_h264e_cfg_set(MppEncCfgSet *cfg, MppClientType type)
{
MppEncRcCfg *rc_cfg = &cfg->rc;
MppEncPrepCfg *prep = &cfg->prep;
MppEncH264Cfg *h264 = &cfg->codec.h264;
MppEncH264Cfg *h264 = &cfg->h264;
/*
* default codec:
@ -607,7 +607,7 @@ static MPP_RET h264e_proc_split_cfg(MppEncSliceSplit *dst, MppEncSliceSplit *src
static void h264e_check_cfg(MppEncCfgSet *cfg)
{
MppEncRcCfg *rc = &cfg->rc;
MppEncH264Cfg *h264 = &cfg->codec.h264;
MppEncH264Cfg *h264 = &cfg->h264;
if (rc->drop_mode == MPP_ENC_RC_DROP_FRM_PSKIP &&
rc->drop_gap == 0 &&
@ -647,8 +647,8 @@ static MPP_RET h264e_proc_cfg(void *ctx, MpiCmd cmd, void *param)
cfg->rc.refresh_length = cfg->rc.gop;
}
if (src->codec.h264.change)
ret |= h264e_proc_h264_cfg(&cfg->codec.h264, &src->codec.h264);
if (src->h264.change)
ret |= h264e_proc_h264_cfg(&cfg->h264, &src->h264);
if (src->split.change)
ret |= h264e_proc_split_cfg(&cfg->split, &src->split);
@ -657,8 +657,9 @@ static MPP_RET h264e_proc_cfg(void *ctx, MpiCmd cmd, void *param)
ret = h264e_proc_prep_cfg(&cfg->prep, param);
} break;
case MPP_ENC_SET_CODEC_CFG : {
MppEncCodecCfg *codec = (MppEncCodecCfg *)param;
ret = h264e_proc_h264_cfg(&cfg->codec.h264, &codec->h264);
MppEncH264Cfg *h264 = (MppEncH264Cfg *)param;
ret = h264e_proc_h264_cfg(&cfg->h264, h264);
} break;
case MPP_ENC_SET_SEI_CFG : {
} break;
@ -713,7 +714,7 @@ static MPP_RET h264e_gen_hdr(void *ctx, MppPacket pkt)
* After gen_hdr, the change of codec/prep must be cleared to 0,
* otherwise the change will affect the next idr frame
*/
p->cfg->codec.h264.change = 0;
p->cfg->h264.change = 0;
p->cfg->prep.change = 0;
h264e_dbg_func("leave\n");
@ -766,7 +767,7 @@ static MPP_RET h264e_start(void *ctx, HalEncTask *task)
if (base_layer_pid >= 0) {
H264eCtx *p = (H264eCtx *)ctx;
MppEncH264Cfg *h264 = &p->cfg->codec.h264;
MppEncH264Cfg *h264 = &p->cfg->h264;
h264->base_layer_pid = base_layer_pid;
}
@ -866,7 +867,7 @@ static MPP_RET h264e_proc_dpb(void *ctx, HalEncTask *task)
static MPP_RET h264e_proc_hal(void *ctx, HalEncTask *task)
{
H264eCtx *p = (H264eCtx *)ctx;
MppEncH264Cfg *h264 = &p->cfg->codec.h264;
MppEncH264Cfg *h264 = &p->cfg->h264;
h264e_dbg_func("enter\n");
@ -930,7 +931,7 @@ static MPP_RET h264e_proc_hal(void *ctx, HalEncTask *task)
static MPP_RET h264e_sw_enc(void *ctx, HalEncTask *task)
{
H264eCtx *p = (H264eCtx *)ctx;
MppEncH264Cfg *h264 = &p->cfg->codec.h264;
MppEncH264Cfg *h264 = &p->cfg->h264;
EncRcTaskInfo *rc_info = &task->rc_task->info;
MppPacket packet = task->packet;
void *pos = mpp_packet_get_pos(packet);

View file

@ -53,7 +53,7 @@ static const uint8_t inter_scl[64] = {
MPP_RET h264e_pps_update(H264ePps *pps, MppEncCfgSet *cfg)
{
MppEncH264Cfg *codec = &cfg->codec.h264;
MppEncH264Cfg *codec = &cfg->h264;
pps->pps_id = 0;
pps->sps_id = 0;

View file

@ -42,7 +42,7 @@ void h264e_slice_init(H264eSlice *slice, H264eReorderInfo *reorder,
RK_S32 h264e_slice_update(H264eSlice *slice, MppEncCfgSet *cfg,
H264eSps *sps, H264ePps *pps, H264eDpbFrm *frm)
{
MppEncH264Cfg *h264 = &cfg->codec.h264;
MppEncH264Cfg *h264 = &cfg->h264;
RK_S32 is_idr = frm->status.is_idr;
slice->mb_w = sps->pic_width_in_mbs;

View file

@ -63,7 +63,7 @@ MPP_RET h264e_sps_update(H264eSps *sps, MppEncCfgSet *cfg)
H264eVui *vui = &sps->vui;
MppEncPrepCfg *prep = &cfg->prep;
MppEncRcCfg *rc = &cfg->rc;
MppEncH264Cfg *h264 = &cfg->codec.h264;
MppEncH264Cfg *h264 = &cfg->h264;
MppEncRefCfg ref = cfg->ref_cfg;
MppEncCpbInfo *info = mpp_enc_ref_cfg_get_cpb_info(ref);
MppFrameFormat fmt = prep->format;
@ -315,11 +315,11 @@ MPP_RET h264e_sps_to_packet(H264eSps *sps, MppPacket packet, RK_S32 *offset,
/* log2_max_frame_num_minus4 */
mpp_writer_put_ue(bit, sps->log2_max_frame_num_minus4);
/* pic_order_cnt_type */
/* accodring usr cfg cfg->codec.h264.poc_type, hw may no support
/* accodring usr cfg cfg->h264.poc_type, hw may no support
will convert after get stream
*/
mpp_writer_put_ue(bit, cfg->codec.h264.poc_type);
if (cfg->codec.h264.poc_type == 0) {
mpp_writer_put_ue(bit, cfg->h264.poc_type);
if (cfg->h264.poc_type == 0) {
/* log2_max_pic_order_cnt_lsb_minus4 */
mpp_writer_put_ue(bit, sps->log2_max_poc_lsb_minus4);
}

View file

@ -40,7 +40,6 @@ static MPP_RET h265e_init(void *ctx, EncImplCfg *ctrlCfg)
{
H265eCtx *p = (H265eCtx *)ctx;
MPP_RET ret = MPP_OK;
MppEncCodecCfg *codec = NULL;
MppEncRcCfg *rc_cfg = &ctrlCfg->cfg->rc;
MppEncPrepCfg *prep = &ctrlCfg->cfg->prep;
MppEncH265Cfg *h265 = NULL;
@ -63,8 +62,7 @@ static MPP_RET h265e_init(void *ctx, EncImplCfg *ctrlCfg)
h265e_init_extra_info(p->extra_info);
/* set defualt value of codec */
codec = &p->cfg->codec;
h265 = &codec->h265;
h265 = &p->cfg->h265;
h265->intra_qp = 26;
h265->max_qp = 51;
h265->min_qp = 10;
@ -238,7 +236,7 @@ static MPP_RET h265e_gen_hdr(void *ctx, MppPacket pkt)
* After gen_hdr, the change of codec/prep must be cleared to 0,
* otherwise the change will affect the next idr frame
*/
p->cfg->codec.h265.change = 0;
p->cfg->h265.change = 0;
p->cfg->prep.change = 0;
h265e_dbg_func("leave ctx %p\n", ctx);
@ -292,7 +290,7 @@ static MPP_RET h265e_start(void *ctx, HalEncTask *task)
if (base_layer_pid >= 0) {
H265eCtx *p = (H265eCtx *)ctx;
MppEncH265Cfg *h265 = &p->cfg->codec.h265;
MppEncH265Cfg *h265 = &p->cfg->h265;
h265->base_layer_pid = base_layer_pid;
}
@ -338,7 +336,7 @@ static MPP_RET h265e_proc_dpb(void *ctx, HalEncTask *task)
static MPP_RET h265e_proc_hal(void *ctx, HalEncTask *task)
{
H265eCtx *p = (H265eCtx *)ctx;
MppEncH265Cfg *h265 = &p->cfg->codec.h265;
MppEncH265Cfg *h265 = &p->cfg->h265;
if (ctx == NULL) {
mpp_err_f("invalid NULL ctx\n");
@ -723,9 +721,9 @@ static MPP_RET h265e_proc_cfg(void *ctx, MpiCmd cmd, void *param)
cfg->rc.refresh_length = cfg->rc.gop;
}
if (src->codec.h265.change) {
ret |= h265e_proc_h265_cfg(&cfg->codec.h265, &src->codec.h265);
src->codec.h265.change = 0;
if (src->h265.change) {
ret |= h265e_proc_h265_cfg(&cfg->h265, &src->h265);
src->h265.change = 0;
}
if (src->split.change) {
ret |= h265e_proc_split_cfg(&cfg->split, &src->split);
@ -741,15 +739,16 @@ static MPP_RET h265e_proc_cfg(void *ctx, MpiCmd cmd, void *param)
ret = h265e_proc_prep_cfg(&cfg->prep, param);
} break;
case MPP_ENC_SET_CODEC_CFG: {
MppEncCodecCfg *codec = (MppEncCodecCfg *)param;
ret = h265e_proc_h265_cfg(&cfg->codec.h265, &codec->h265);
MppEncH265Cfg *h265 = (MppEncH265Cfg *)param;
ret = h265e_proc_h265_cfg(&cfg->h265, h265);
} break;
case MPP_ENC_SET_SEI_CFG: {
} break;
case MPP_ENC_SET_SPLIT : {
MppEncSliceSplit *src = (MppEncSliceSplit *)param;
MppEncH265SliceCfg *slice_cfg = &cfg->codec.h265.slice_cfg;
MppEncH265SliceCfg *slice_cfg = &cfg->h265.slice_cfg;
if (src->split_mode > MPP_ENC_SPLIT_NONE) {
slice_cfg->split_enable = 1;

View file

@ -114,7 +114,7 @@ void init_raster2pelxy(RK_U32 maxCUSize, RK_U32 maxDepth, RK_U32 *raster2pelx, R
MPP_RET h265e_set_vps(H265eCtx *ctx, H265eVps *vps)
{
RK_S32 i;
MppEncH265Cfg *codec = &ctx->cfg->codec.h265;
MppEncH265Cfg *codec = &ctx->cfg->h265;
ProfileTierLevel *profileTierLevel = &vps->m_ptl.m_generalPTL;
MppEncPrepCfg *prep = &ctx->cfg->prep;
MppEncRefCfg ref_cfg = ctx->cfg->ref_cfg;
@ -180,7 +180,7 @@ MPP_RET h265e_set_vps(H265eCtx *ctx, H265eVps *vps)
MPP_RET h265e_set_sps(H265eCtx *ctx, H265eSps *sps, H265eVps *vps)
{
RK_U32 i, c;
MppEncH265Cfg *codec = &ctx->cfg->codec.h265;
MppEncH265Cfg *codec = &ctx->cfg->h265;
MppEncPrepCfg *prep = &ctx->cfg->prep;
MppEncRcCfg *rc = &ctx->cfg->rc;
MppEncRefCfg ref_cfg = ctx->cfg->ref_cfg;
@ -401,7 +401,7 @@ MPP_RET h265e_set_sps(H265eCtx *ctx, H265eSps *sps, H265eVps *vps)
MPP_RET h265e_set_pps(H265eCtx *ctx, H265ePps *pps, H265eSps *sps)
{
MppEncH265Cfg *codec = &ctx->cfg->codec.h265;
MppEncH265Cfg *codec = &ctx->cfg->h265;
pps->m_bConstrainedIntraPred = codec->const_intra_pred;
pps->m_PPSId = 0;

View file

@ -210,7 +210,7 @@ void h265e_slice_init(void *ctx, EncFrmStatus curr)
H265eSps *sps = &p->sps;
H265ePps *pps = &p->pps;
MppEncCfgSet *cfg = p->cfg;
MppEncH265Cfg *codec = &cfg->codec.h265;
MppEncH265Cfg *codec = &cfg->h265;
MppEncPrepCfg *prep_cfg = &cfg->prep;
H265eSlice *slice = p->dpb->curr->slice;
p->slice = p->dpb->curr->slice;

View file

@ -146,7 +146,7 @@ static void fill_picture_parameters(const H265eCtx *h,
static void fill_slice_parameters( const H265eCtx *h,
H265eSlicParams *sp)
{
MppEncH265Cfg *codec = &h->cfg->codec.h265;
MppEncH265Cfg *codec = &h->cfg->h265;
H265eSlice *slice = h->slice;
memset(sp, 0, sizeof(H265eSlicParams));
if (codec->slice_cfg.split_enable) {

View file

@ -79,7 +79,7 @@ static MPP_RET jpege_init_v2(void *ctx, EncImplCfg *cfg)
{
/* init default rc config */
MppEncRcCfg *rc = &p->cfg->rc;
MppEncJpegCfg *jpeg_cfg = &p->cfg->codec.jpeg;
MppEncJpegCfg *jpeg_cfg = &p->cfg->jpeg;
rc->fps_in_flex = 0;
rc->fps_in_num = 30;
@ -99,7 +99,7 @@ static MPP_RET jpege_init_v2(void *ctx, EncImplCfg *cfg)
static MPP_RET jpege_deinit_v2(void *ctx)
{
JpegeCtx *p = (JpegeCtx *)ctx;
MppEncJpegCfg *jpeg_cfg = &p->cfg->codec.jpeg;
MppEncJpegCfg *jpeg_cfg = &p->cfg->jpeg;
jpege_dbg_func("enter ctx %p\n", ctx);
@ -390,9 +390,9 @@ static MPP_RET jpege_proc_cfg(void *ctx, MpiCmd cmd, void *param)
ret |= jpege_proc_prep_cfg(&cfg->prep, &src->prep);
src->prep.change = 0;
}
if (src->codec.jpeg.change) {
ret |= jpege_proc_jpeg_cfg(&cfg->codec.jpeg, &src->codec.jpeg, &cfg->rc);
src->codec.jpeg.change = 0;
if (src->jpeg.change) {
ret |= jpege_proc_jpeg_cfg(&cfg->jpeg, &src->jpeg, &cfg->rc);
src->jpeg.change = 0;
}
if (src->split.change) {
ret |= jpege_proc_split_cfg(&cfg->split, &src->split);
@ -403,8 +403,9 @@ static MPP_RET jpege_proc_cfg(void *ctx, MpiCmd cmd, void *param)
ret = jpege_proc_prep_cfg(&cfg->prep, param);
} break;
case MPP_ENC_SET_CODEC_CFG : {
MppEncCodecCfg *codec = (MppEncCodecCfg *)param;
ret = jpege_proc_jpeg_cfg(&cfg->codec.jpeg, &codec->jpeg, &cfg->rc);
MppEncJpegCfg *jpeg = (MppEncJpegCfg *)param;
ret = jpege_proc_jpeg_cfg(&cfg->jpeg, jpeg, &cfg->rc);
} break;
case MPP_ENC_SET_IDR_FRAME :
case MPP_ENC_SET_OSD_PLT_CFG :
@ -539,7 +540,7 @@ static MPP_RET jpege_proc_hal(void *ctx, HalEncTask *task)
JpegeSyntax *syntax = &p->syntax;
MppEncCfgSet *cfg = p->cfg;
MppEncPrepCfg *prep = &cfg->prep;
MppEncCodecCfg *codec = &cfg->codec;
MppEncJpegCfg *jpeg = &cfg->jpeg;
MppEncSliceSplit *split = &cfg->split;
jpege_dbg_func("enter ctx %p\n", ctx);
@ -555,12 +556,12 @@ static MPP_RET jpege_proc_hal(void *ctx, HalEncTask *task)
syntax->mirroring = prep->mirroring;
syntax->offset_x = mpp_frame_get_offset_x(frame);
syntax->offset_y = mpp_frame_get_offset_y(frame);
syntax->quality = codec->jpeg.quant;
syntax->q_factor = codec->jpeg.q_factor;
syntax->qf_min = codec->jpeg.qf_min;
syntax->qf_max = codec->jpeg.qf_max;
syntax->qtable_y = codec->jpeg.qtable_y;
syntax->qtable_c = codec->jpeg.qtable_u;
syntax->quality = jpeg->quant;
syntax->q_factor = jpeg->q_factor;
syntax->qf_min = jpeg->qf_min;
syntax->qf_max = jpeg->qf_max;
syntax->qtable_y = jpeg->qtable_y;
syntax->qtable_c = jpeg->qtable_u;
syntax->part_rows = 0;
syntax->restart_ri = 0;
syntax->low_delay = 0;

View file

@ -303,9 +303,9 @@ static MPP_RET vp8e_proc_cfg(void *ctx, MpiCmd cmd, void *param)
ret |= vp8e_proc_prep_cfg(&cfg->prep, &src->prep);
src->prep.change = 0;
}
if (src->codec.vp8.change) {
ret |= vp8e_proc_vp8_cfg(&cfg->codec.vp8, &src->codec.vp8);
src->codec.vp8.change = 0;
if (src->vp8.change) {
ret |= vp8e_proc_vp8_cfg(&cfg->vp8, &src->vp8);
src->vp8.change = 0;
}
if (src->split.change) {
ret |= vp8e_proc_split_cfg(&cfg->split, &src->split);

View file

@ -235,15 +235,15 @@ static MPP_RET check_enc_task_wait(MppEncImpl *enc, EncAsyncWait *wait)
return ret;
}
static RK_S32 check_codec_to_resend_hdr(MppEncCodecCfg *codec)
static RK_S32 check_codec_to_resend_hdr(MppEncCfgSet *cfg)
{
switch (codec->coding) {
switch (cfg->base.coding) {
case MPP_VIDEO_CodingAVC : {
if (codec->h264.change)
if (cfg->h264.change)
return 1;
} break;
case MPP_VIDEO_CodingHEVC : {
if (codec->h265.change)
if (cfg->h265.change)
return 1;
} break;
case MPP_VIDEO_CodingVP8 :
@ -268,7 +268,7 @@ static RK_S32 check_resend_hdr(MpiCmd cmd, void *param, MppEncCfgSet *cfg, RK_BO
*encode_idr = RK_TRUE;
if (cfg->codec.coding == MPP_VIDEO_CodingMJPEG) {
if (cfg->base.coding == MPP_VIDEO_CodingMJPEG) {
*encode_idr = RK_FALSE;
return 0;
}
@ -327,7 +327,7 @@ static RK_S32 check_resend_hdr(MpiCmd cmd, void *param, MppEncCfgSet *cfg, RK_BO
break;
}
if (check_codec_to_resend_hdr(&cfg->codec)) {
if (check_codec_to_resend_hdr(cfg)) {
resend = 5;
break;
}
@ -1050,6 +1050,9 @@ MPP_RET mpp_enc_proc_cfg(MppEncImpl *enc, MpiCmd cmd, void *param)
if (change & MPP_ENC_BASE_CFG_CHANGE_SMART_EN)
dst->base.smart_en = src->base.smart_en;
if (change & MPP_ENC_BASE_CFG_CHANGE_CODING)
dst->base.coding = src->base.coding;
src->base.change = 0;
}
@ -1329,9 +1332,9 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set)
{
MppEncRcCfg *rc = &cfg_set->rc;
MppEncPrepCfg *prep = &cfg_set->prep;
MppEncCodecCfg *codec = &cfg_set->codec;
MppEncRefCfgImpl *ref = (MppEncRefCfgImpl *)cfg_set->ref_cfg;
MppEncCpbInfo *info = &ref->cpb_info;
MppCodingType coding = cfg_set->base.coding;
cfg->width = prep->width;
cfg->height = prep->height;
@ -1386,7 +1389,7 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set)
cfg->stats_time = mpp_clip(cfg->stats_time, 1, 60);
/* quality configure */
switch (codec->coding) {
switch (coding) {
case MPP_VIDEO_CodingAVC :
case MPP_VIDEO_CodingHEVC :
case MPP_VIDEO_CodingVP8 : {
@ -1403,7 +1406,7 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set)
cfg->fqp_max_i = rc->fqp_max_i == INT_MAX ? cfg->max_i_quality : rc->fqp_max_i;
} break;
case MPP_VIDEO_CodingMJPEG : {
MppEncJpegCfg *jpeg = &codec->jpeg;
MppEncJpegCfg *jpeg = &cfg_set->jpeg;
cfg->init_quality = jpeg->q_factor;
cfg->max_quality = jpeg->qf_max;
@ -1416,7 +1419,7 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set)
cfg->fqp_max_p = 100 - jpeg->qf_min;
} break;
default : {
mpp_err_f("unsupport coding type %d\n", codec->coding);
mpp_err_f("unsupport coding type %d\n", coding);
} break;
}
@ -1450,8 +1453,7 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set)
}
}
if (codec->coding == MPP_VIDEO_CodingAVC ||
codec->coding == MPP_VIDEO_CodingHEVC) {
if (coding == MPP_VIDEO_CodingAVC || coding == MPP_VIDEO_CodingHEVC) {
mpp_log("mode %s bps [%d:%d:%d] fps %s [%d/%d] -> %s [%d/%d] gop i [%d] v [%d]\n",
name_of_rc_mode[cfg->mode],
rc->bps_min, rc->bps_target, rc->bps_max,

View file

@ -133,7 +133,7 @@ MPP_RET mpp_enc_init_v2(MppEnc *enc, MppEncInitCfg *cfg)
}
/* NOTE: setup configure coding for check */
p->cfg.codec.coding = coding;
p->cfg.base.coding = coding;
p->cfg.plt_cfg.plt = &p->cfg.plt_data;
mpp_enc_ref_cfg_init(&p->cfg.ref_cfg);
ret = mpp_enc_ref_cfg_copy(p->cfg.ref_cfg, mpp_enc_ref_default());
@ -363,10 +363,10 @@ MPP_RET mpp_enc_control_v2(MppEnc ctx, MpiCmd cmd, void *param)
MPP_SWAP(RK_S32, cfg->prep.width, cfg->prep.height);
}
/* cleanup output change flag to avoid extra change flag bit when user resend the cfg */
cfg->base.change = 0;
cfg->rc.change = 0;
cfg->prep.change = 0;
cfg->hw.change = 0;
cfg->codec.change = 0;
cfg->split.change = 0;
cfg->tune.change = 0;
} break;

View file

@ -101,7 +101,7 @@ MPP_RET h264e_vepu_stream_amend_config(HalH264eVepuStreamAmend *ctx,
H264eSlice *slice, H264ePrefixNal *prefix)
{
MppEncRefCfgImpl *ref = (MppEncRefCfgImpl *)cfg->ref_cfg;
MppEncH264Cfg *h264 = &cfg->codec.h264;
MppEncH264Cfg *h264 = &cfg->h264;
MppEncH264HwCfg *hw_cfg = &h264->hw_cfg;
if (ref->lt_cfg_cnt || ref->st_cfg_cnt > 1 ||
@ -120,7 +120,7 @@ MPP_RET h264e_vepu_stream_amend_config(HalH264eVepuStreamAmend *ctx,
h264e_vepu_stream_amend_init(ctx);
}
slice->pic_order_cnt_type = cfg->codec.h264.poc_type;
slice->pic_order_cnt_type = cfg->h264.poc_type;
ctx->slice = slice;
if (ref->lt_cfg_cnt || ref->st_cfg_cnt > 1)

View file

@ -250,7 +250,6 @@ MPP_RET hal_info_from_enc_cfg(HalInfo ctx, MppEncCfgSet *cfg)
{
MppEncRcCfg *rc = &cfg->rc;
MppEncPrepCfg *prep = &cfg->prep;
MppEncCodecCfg *codec = &cfg->codec;
HalInfoImpl *info = (HalInfoImpl *)ctx;
RK_U32 profile = 0;
RK_U64 val = 0;
@ -274,10 +273,10 @@ MPP_RET hal_info_from_enc_cfg(HalInfo ctx, MppEncCfgSet *cfg)
switch (info->coding) {
case MPP_VIDEO_CodingAVC : {
profile = codec->h264.profile;
profile = cfg->h264.profile;
} break;
case MPP_VIDEO_CodingHEVC : {
profile = codec->h265.profile;
profile = cfg->h265.profile;
} break;
case MPP_VIDEO_CodingMJPEG :
case MPP_VIDEO_CodingVP8 :

View file

@ -546,7 +546,7 @@ static MPP_RET hal_h264e_vepu510_get_task(void *hal, HalEncTask *task)
HalH264eVepu510Ctx *ctx = (HalH264eVepu510Ctx *)hal;
MppEncCfgSet *cfg_set = ctx->cfg;
MppEncRefCfgImpl *ref = (MppEncRefCfgImpl *)cfg_set->ref_cfg;
MppEncH264HwCfg *hw_cfg = &cfg_set->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &cfg_set->h264.hw_cfg;
RK_U32 updated = update_vepu510_syntax(ctx, &task->syntax);
EncFrmStatus *frm_status = &task->rc_task->frm;
H264eFrmInfo *frms = ctx->frms;
@ -2396,7 +2396,7 @@ static MPP_RET hal_h264e_vepu510_wait(void *hal, HalEncTask *task)
MppPacket pkt = task->packet;
RK_S32 offset = mpp_packet_get_length(pkt);
H264NaluType type = task->rc_task->frm.is_idr ? H264_NALU_TYPE_IDR : H264_NALU_TYPE_SLICE;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->h264.hw_cfg;
RK_S32 i;
hal_h264e_dbg_func("enter %p\n", hal);
@ -2468,7 +2468,7 @@ static MPP_RET hal_h264e_vepu510_wait(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = task->hw_length;
amend->slice->is_multi_slice = (ctx->cfg->split.split_mode > 0);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
task->hw_length = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -545,7 +545,7 @@ static MPP_RET hal_h264e_vepu511_get_task(void *hal, HalEncTask *task)
HalH264eVepu511Ctx *ctx = (HalH264eVepu511Ctx *)hal;
MppEncCfgSet *cfg_set = ctx->cfg;
MppEncRefCfgImpl *ref = (MppEncRefCfgImpl *)cfg_set->ref_cfg;
MppEncH264HwCfg *hw_cfg = &cfg_set->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &cfg_set->h264.hw_cfg;
RK_U32 updated = update_vepu511_syntax(ctx, &task->syntax);
EncFrmStatus *frm_status = &task->rc_task->frm;
H264eFrmInfo *frms = ctx->frms;
@ -2357,7 +2357,7 @@ static MPP_RET hal_h264e_vepu511_wait(void *hal, HalEncTask *task)
MppPacket pkt = task->packet;
RK_S32 offset = mpp_packet_get_length(pkt);
H264NaluType type = task->rc_task->frm.is_idr ? H264_NALU_TYPE_IDR : H264_NALU_TYPE_SLICE;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->h264.hw_cfg;
RK_S32 i;
hal_h264e_dbg_func("enter %p\n", hal);
@ -2429,7 +2429,7 @@ static MPP_RET hal_h264e_vepu511_wait(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = task->hw_length;
amend->slice->is_multi_slice = (ctx->cfg->split.split_mode > 0);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
task->hw_length = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -349,7 +349,7 @@ static RK_U32 update_vepu540c_syntax(HalH264eVepu540cCtx *ctx, MppSyntax *syntax
static MPP_RET hal_h264e_vepu540c_get_task(void *hal, HalEncTask *task)
{
HalH264eVepu540cCtx *ctx = (HalH264eVepu540cCtx *)hal;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->h264.hw_cfg;
RK_U32 updated = update_vepu540c_syntax(ctx, &task->syntax);
EncFrmStatus *frm_status = &task->rc_task->frm;
hal_h264e_dbg_func("enter %p\n", hal);
@ -1671,7 +1671,7 @@ static MPP_RET hal_h264e_vepu540c_wait(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = task->hw_length;
amend->slice->is_multi_slice = (ctx->cfg->split.split_mode > 0);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
task->hw_length = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -342,7 +342,7 @@ static RK_U32 update_vepu541_syntax(HalH264eVepu541Ctx *ctx, MppSyntax *syntax)
static MPP_RET hal_h264e_vepu541_get_task(void *hal, HalEncTask *task)
{
HalH264eVepu541Ctx *ctx = (HalH264eVepu541Ctx *)hal;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->h264.hw_cfg;
RK_U32 updated = update_vepu541_syntax(ctx, &task->syntax);
EncFrmStatus *frm_status = &task->rc_task->frm;
@ -1789,7 +1789,7 @@ static MPP_RET hal_h264e_vepu541_wait(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = task->hw_length;
amend->slice->is_multi_slice = (ctx->cfg->split.split_mode > 0);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
task->hw_length = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -568,7 +568,7 @@ static MPP_RET hal_h264e_vepu580_get_task(void *hal, HalEncTask *task)
HalH264eVepu580Ctx *ctx = (HalH264eVepu580Ctx *)hal;
MppEncCfgSet *cfg_set = ctx->cfg;
MppEncRefCfgImpl *ref = (MppEncRefCfgImpl *)cfg_set->ref_cfg;
MppEncH264HwCfg *hw_cfg = &cfg_set->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &cfg_set->h264.hw_cfg;
RK_U32 updated = update_vepu580_syntax(ctx, &task->syntax);
EncFrmStatus *frm_status = &task->rc_task->frm;
H264eFrmInfo *frms = ctx->frms;
@ -2369,7 +2369,7 @@ static MPP_RET hal_h264e_vepu580_wait(void *hal, HalEncTask *task)
MppPacket pkt = task->packet;
RK_S32 offset = mpp_packet_get_length(pkt);
H264NaluType type = task->rc_task->frm.is_idr ? H264_NALU_TYPE_IDR : H264_NALU_TYPE_SLICE;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->codec.h264.hw_cfg;
MppEncH264HwCfg *hw_cfg = &ctx->cfg->h264.hw_cfg;
RK_S32 i;
hal_h264e_dbg_func("enter %p\n", hal);
@ -2441,7 +2441,7 @@ static MPP_RET hal_h264e_vepu580_wait(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = task->hw_length;
amend->slice->is_multi_slice = (ctx->cfg->split.split_mode > 0);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
task->hw_length = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -1303,8 +1303,7 @@ static MPP_RET vepu510_h265_set_rc_regs(H265eV510HalContext *ctx, H265eV510RegSe
MppEncCfgSet *cfg = ctx->cfg;
MppEncRcCfg *rc = &cfg->rc;
MppEncHwCfg *hw = &cfg->hw;
MppEncCodecCfg *codec = &cfg->codec;
MppEncH265Cfg *h265 = &codec->h265;
MppEncH265Cfg *h265 = &cfg->h265;
RK_S32 mb_wd32 = (syn->pp.pic_width + 31) / 32;
RK_S32 mb_h32 = (syn->pp.pic_height + 31) / 32;

View file

@ -1263,8 +1263,7 @@ static void vepu511_h265_set_rc_regs(H265eV511HalContext *ctx, H265eV511RegSet *
MppEncCfgSet *cfg = ctx->cfg;
MppEncRcCfg *rc = &cfg->rc;
MppEncHwCfg *hw = &cfg->hw;
MppEncCodecCfg *codec = &cfg->codec;
MppEncH265Cfg *h265 = &codec->h265;
MppEncH265Cfg *h265 = &cfg->h265;
RK_S32 mb_wd32 = (syn->pp.pic_width + 31) / 32;
RK_S32 mb_h32 = (syn->pp.pic_height + 31) / 32;
@ -2132,7 +2131,7 @@ static void vepu511_h265_global_cfg_set(H265eV511HalContext *ctx, H265eV511RegSe
H265eVepu511Param *reg_param = &regs->reg_param;
RK_S32 lambda_idx_p = ctx->cfg->tune.lambda_idx_i;
reg_frm->sao_cfg.sao_lambda_multi = ctx->cfg->codec.h265.sao_cfg.sao_bit_ratio;
reg_frm->sao_cfg.sao_lambda_multi = ctx->cfg->h265.sao_cfg.sao_bit_ratio;
if (ctx->frame_type == INTRA_FRAME) {
memcpy(&reg_param->pprd_lamb_satd_0_51[0], lambda_tbl_pre_intra, sizeof(lambda_tbl_pre_intra));

View file

@ -712,8 +712,7 @@ static MPP_RET vepu540c_h265_set_rc_regs(H265eV540cHalContext *ctx, H265eV540cRe
MppEncCfgSet *cfg = ctx->cfg;
MppEncRcCfg *rc = &cfg->rc;
MppEncHwCfg *hw = &cfg->hw;
MppEncCodecCfg *codec = &cfg->codec;
MppEncH265Cfg *h265 = &codec->h265;
MppEncH265Cfg *h265 = &cfg->h265;
RK_S32 mb_wd32 = (syn->pp.pic_width + 31) / 32;
RK_S32 mb_h32 = (syn->pp.pic_height + 31) / 32;

View file

@ -976,8 +976,7 @@ static MPP_RET vepu541_h265_set_rc_regs(H265eV541HalContext *ctx, H265eV541RegSe
MppEncCfgSet *cfg = ctx->cfg;
MppEncRcCfg *rc = &cfg->rc;
MppEncHwCfg *hw = &cfg->hw;
MppEncCodecCfg *codec = &cfg->codec;
MppEncH265Cfg *h265 = &codec->h265;
MppEncH265Cfg *h265 = &cfg->h265;
RK_S32 mb_wd64, mb_h64;
mb_wd64 = (syn->pp.pic_width + 63) / 64;
mb_h64 = (syn->pp.pic_height + 63) / 64;

View file

@ -1896,8 +1896,7 @@ static MPP_RET vepu580_h265_set_rc_regs(H265eV580HalContext *ctx, H265eV580RegSe
MppEncCfgSet *cfg = ctx->cfg;
MppEncRcCfg *rc = &cfg->rc;
MppEncHwCfg *hw = &cfg->hw;
MppEncCodecCfg *codec = &cfg->codec;
MppEncH265Cfg *h265 = &codec->h265;
MppEncH265Cfg *h265 = &cfg->h265;
RK_S32 mb_wd64, mb_h64;
mb_wd64 = (syn->pp.pic_width + 63) / 64;
mb_h64 = (syn->pp.pic_height + 63) / 64;

View file

@ -680,7 +680,7 @@ static MPP_RET hal_h264e_vepu1_wait_v2(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = hw_mbrc->out_strm_size;
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
ctx->hw_mbrc.out_strm_size = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -745,7 +745,7 @@ static MPP_RET hal_h264e_vepu2_wait_v2(void *hal, HalEncTask *task)
if (amend->enable) {
amend->old_length = hw_mbrc->out_strm_size;
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->codec.h264.hw_cfg);
h264e_vepu_stream_amend_proc(amend, &ctx->cfg->h264.hw_cfg);
ctx->hw_mbrc.out_strm_size = amend->new_length;
} else if (amend->prefix) {
/* check prefix value */

View file

@ -1061,7 +1061,7 @@ MPP_RET hal_jpege_vepu2_ret_task(void *hal, HalEncTask *task)
else
rc_info->quality_real = ctx->hal_rc.q_factor;
} else {
rc_info->quality_real = ctx->cfg->codec.jpeg.q_factor;
rc_info->quality_real = ctx->cfg->jpeg.q_factor;
}
return MPP_OK;

View file

@ -1574,7 +1574,7 @@ MPP_RET hal_vp8e_update_buffers(void *hal, HalEncTask *task)
{
HalEncTask *enc_task = task;
RK_U8 *p_out = mpp_buffer_get_ptr(enc_task->output);
RK_S32 disable_ivf = ctx->cfg->codec.vp8.disable_ivf;
RK_S32 disable_ivf = ctx->cfg->vp8.disable_ivf;
mpp_buffer_sync_begin(buffers->hw_size_table_buf);

View file

@ -495,7 +495,7 @@ static MPP_RET hal_vp8e_vepu1_get_task_v2(void *hal, HalEncTask *task)
ctx->frame_type = task->rc_task->frm.is_intra ? VP8E_FRM_KEY : VP8E_FRM_P;
if (!ctx->cfg->codec.vp8.disable_ivf && !ctx->ivf_hdr_rdy) {
if (!ctx->cfg->vp8.disable_ivf && !ctx->ivf_hdr_rdy) {
RK_U8 *p_out = mpp_buffer_get_ptr(task->output);
write_ivf_header(hal, p_out);

View file

@ -497,7 +497,7 @@ static MPP_RET hal_vp8e_vepu2_get_task_v2(void *hal, HalEncTask *task)
ctx->frame_type = task->rc_task->frm.is_intra ? VP8E_FRM_KEY : VP8E_FRM_P;
if (!ctx->cfg->codec.vp8.disable_ivf && !ctx->ivf_hdr_rdy) {
if (!ctx->cfg->vp8.disable_ivf && !ctx->ivf_hdr_rdy) {
RK_U8 *p_out = mpp_buffer_get_ptr(task->output);
write_ivf_header(hal, p_out);

View file

@ -10,6 +10,8 @@
#include "rk_venc_ref.h"
#include "mpp_rc_defs.h"
#include "kmpp_obj.h"
/*
* MppEncCfgSet shows the relationship between different configuration
* Due to the huge amount of configurable parameters we need to setup
@ -29,7 +31,10 @@ typedef struct MppEncCfgSet_t {
MppEncHwCfg hw;
// codec detail config
MppEncCodecCfg codec;
MppEncH264Cfg h264;
MppEncH265Cfg h265;
MppEncJpegCfg jpeg;
MppEncVp8Cfg vp8;
MppEncSliceSplit split;
MppEncRefCfg ref_cfg;
@ -49,8 +54,6 @@ typedef struct MppEncCfgSet_t {
MppEncFineTuneCfg tune;
} MppEncCfgSet;
#include "kmpp_obj.h"
typedef struct MppEncCfgImpl_t {
RK_U32 is_kobj;
union {

View file

@ -50,7 +50,6 @@ typedef struct {
MppEncCfg cfg;
MppEncPrepCfg prep_cfg;
MppEncRcCfg rc_cfg;
MppEncCodecCfg codec_cfg;
MppEncOSDPltCfg osd_plt_cfg;
MppEncOSDPlt osd_plt;
MppEncOSDData osd_data;
@ -309,6 +308,8 @@ MPP_RET test_mt_cfg_setup(MpiEncMtCtxInfo *info)
if (!p->bps)
p->bps = p->width * p->height / 8 * (p->fps_out_num / p->fps_out_den);
mpp_enc_cfg_set_s32(cfg, "codec:type", p->type);
mpp_enc_cfg_set_s32(cfg, "prep:width", p->width);
mpp_enc_cfg_set_s32(cfg, "prep:height", p->height);
mpp_enc_cfg_set_s32(cfg, "prep:hor_stride", p->hor_stride);

View file

@ -79,7 +79,6 @@ typedef struct {
MppEncCfg cfg;
MppEncPrepCfg prep_cfg;
MppEncRcCfg rc_cfg;
MppEncCodecCfg codec_cfg;
MppEncSliceSplit split_cfg;
MppEncOSDPltCfg osd_plt_cfg;
MppEncOSDPlt osd_plt;
@ -434,6 +433,8 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info)
if (!p->bps)
p->bps = p->width * p->height / 8 * (p->fps_out_num / p->fps_out_den);
mpp_enc_cfg_set_s32(cfg, "codec:type", p->type);
/* setup preprocess parameters */
mpp_enc_cfg_set_s32(cfg, "prep:width", p->width);
mpp_enc_cfg_set_s32(cfg, "prep:height", p->height);