mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 09:06:50 +08:00
[mpp_enc_cfg]: Add low delay to MppEncCfgSet
Change-Id: I5f9e595b44cc39cc255c69a875618ea36de5e878 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -149,6 +149,20 @@
|
||||
* + + + +
|
||||
*/
|
||||
|
||||
/*
|
||||
* base working mode parameter
|
||||
*/
|
||||
typedef enum MppEncBaseCfgChange_e {
|
||||
MPP_ENC_BASE_CFG_CHANGE_LOW_DELAY = (1 << 0),
|
||||
MPP_ENC_BASE_CFG_CHANGE_ALL = (0xFFFFFFFF),
|
||||
} MppEncBaseCfgChange;
|
||||
|
||||
typedef struct MppEncBaseCfg_t {
|
||||
RK_U32 change;
|
||||
|
||||
RK_S32 low_delay;
|
||||
} MppEncBaseCfg;
|
||||
|
||||
/*
|
||||
* Rate control parameter
|
||||
*/
|
||||
|
@@ -149,6 +149,8 @@ static const char *cfg_func_names[] = {
|
||||
const_strlen( #base":"#name ) +
|
||||
|
||||
#define ENTRY_TABLE(ENTRY) \
|
||||
/* base config */ \
|
||||
ENTRY(base, low_delay, S32, RK_S32, MPP_ENC_BASE_CFG_CHANGE_LOW_DELAY, base, low_delay) \
|
||||
/* rc config */ \
|
||||
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) \
|
||||
@@ -263,7 +265,7 @@ 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) - 50;
|
||||
static RK_S32 node_len = ENTRY_TABLE(EXPAND_AS_STRLEN) - 40;
|
||||
|
||||
class MppEncCfgService
|
||||
{
|
||||
|
@@ -519,6 +519,23 @@ MPP_RET mpp_enc_proc_cfg(MppEncImpl *enc, MpiCmd cmd, void *param)
|
||||
MPP_RET ret = MPP_OK;
|
||||
|
||||
switch (cmd) {
|
||||
case MPP_ENC_SET_CFG : {
|
||||
MppEncCfgImpl *impl = (MppEncCfgImpl *)param;
|
||||
MppEncCfgSet *src = &impl->cfg;
|
||||
RK_U32 change = src->base.change;
|
||||
|
||||
/* get base cfg here */
|
||||
if (change) {
|
||||
MppEncCfgSet *dst = &enc->cfg;
|
||||
|
||||
if (change & MPP_ENC_BASE_CFG_CHANGE_LOW_DELAY)
|
||||
dst->base.low_delay = src->base.low_delay;
|
||||
|
||||
src->base.change = 0;
|
||||
}
|
||||
|
||||
ret = enc_impl_proc_cfg(enc->impl, cmd, param);
|
||||
} break;
|
||||
case MPP_ENC_GET_HDR_SYNC :
|
||||
case MPP_ENC_GET_EXTRA_INFO : {
|
||||
/*
|
||||
|
@@ -29,6 +29,8 @@
|
||||
* For normal user rc and prep config are enough.
|
||||
*/
|
||||
typedef struct MppEncCfgSet_t {
|
||||
MppEncBaseCfg base;
|
||||
|
||||
// esential config
|
||||
MppEncPrepCfg prep;
|
||||
MppEncRcCfg rc;
|
||||
|
Reference in New Issue
Block a user