feat[mpp_enc_cfg]: Change to object implement

Modification Point:
1. Use enc configure object macro.
2. Use kmpp_obj_update to sync user cfg setup.
3. Distinguish between user mode and kernel mode for enc obj.
4. EncImpl only check codec related SET_CFG result.
5. Refactor SET_CFG flow.
6. Adapter jpeg q_mode feature.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: xiaoxu.chen <xiaoxu.chen@rock-chips.com>
Change-Id: I2856acdf863189fdaa29121ad8bc007fe90b5ab5
This commit is contained in:
Herman Chen 2025-09-10 14:47:39 +08:00 committed by xiaoxu.chen
parent 17a370d2d0
commit 067de5647a
38 changed files with 1627 additions and 2918 deletions

View file

@ -37,6 +37,7 @@ static char *kcfg_names[] = {
[MPP_VENC_KCFG_TYPE_RESET] = "KmppVencResetCfg",
[MPP_VENC_KCFG_TYPE_START] = "KmppVencStartCfg",
[MPP_VENC_KCFG_TYPE_STOP] = "KmppVencStopCfg",
[MPP_VENC_KCFG_TYPE_ST_CFG] = "KmppVencStCfg",
};
static KmppObjDef kcfg_defs[MPP_VENC_KCFG_TYPE_BUTT] = {NULL};

View file

@ -492,16 +492,13 @@ static MPP_RET control(Kmpp *ctx, MpiCmd cmd, MppParam param)
switch (cmd) {
case MPP_ENC_SET_CFG :
case MPP_ENC_GET_CFG : {
MppEncCfgImpl *impl = (MppEncCfgImpl *)param;
mpp_assert(impl->is_kobj);
if (impl->is_kobj) {
KmppObj obj = impl->obj;
KmppObj obj = (KmppObj)param;
if (kmpp_obj_is_kobj(obj)) {
arg = kmpp_obj_to_shm(obj);
size = kmpp_obj_to_shm_size(obj);
} else {
mpp_loge("can not set non-kobj %p to kmpp\n", impl);
mpp_loge("can not set non-kobj %p to kmpp\n", obj);
return MPP_NOK;
}
} break;