fix[mpp_meta]: Add KEY_NPU_UOBJ_FLAG and KEY_NPU_SOBJ_FLAG

UOBJ: deliver userspace buffer for rk3588 and rk3576
SOBJ: deliver shared memory buffer for rv1126b

Sync to kmpp-develop patch with the same log:
If596371639eaedb01d6900c737d1f7fec49bf8d4

Change-Id: I8927f6341b5d3f94bf52af32c02b75cd24ad0681
Signed-off-by: timkingh.huang <timkingh.huang@rock-chips.com>
This commit is contained in:
timkingh.huang 2025-08-28 16:56:28 +08:00 committed by Herman Chen
parent 9a6bf0e0b0
commit 6588b71f2b
5 changed files with 16 additions and 8 deletions

View file

@ -121,12 +121,14 @@ typedef enum MppMetaKey_e {
KEY_QPMAP0 = FOURCC_META('e', 'q', 'm', '0'), KEY_QPMAP0 = FOURCC_META('e', 'q', 'm', '0'),
/* /*
* object dectection flag from NPU * shared memory buffer for object dectection flag from NPU, for rv1126b
* Picture width is aligned to 16, each 16x16 block is 8bit data. * Picture width is aligned to 16, each 16x16 block is 8bit data.
* H.264: 16x16 block is arranged in raster order. * H.264: 16x16 block is arranged in raster order.
* H.265: 16x16 block is reordered to ctu order then ctu raster order * H.265: 16x16 block is reordered to ctu order then ctu raster order
*/ */
KEY_NPU_OBJ_FLAG = FOURCC_META('n', 'p', 'u', 'f'), KEY_NPU_SOBJ_FLAG = FOURCC_META('n', 'p', 'u', 's'),
/* userspace object dectection flag from NPU, for rk3588 and rk3576 */
KEY_NPU_UOBJ_FLAG = FOURCC_META('n', 'p', 'u', 'u'),
/* /*
* smart v4 encoder input key * smart v4 encoder input key

View file

@ -330,7 +330,7 @@ rk_s32 kmpp_meta_dump_all(const char *caller)
KMPP_META_ACCESSOR(s32, rk_s32, TYPE_VAL_32, val_s32) KMPP_META_ACCESSOR(s32, rk_s32, TYPE_VAL_32, val_s32)
KMPP_META_ACCESSOR(s64, rk_s64, TYPE_VAL_64, val_s64) KMPP_META_ACCESSOR(s64, rk_s64, TYPE_VAL_64, val_s64)
KMPP_META_ACCESSOR(ptr, void *, TYPE_KPTR, val_ptr) KMPP_META_ACCESSOR(ptr, void *, TYPE_UPTR, val_ptr)
rk_s32 kmpp_meta_set_obj(KmppMeta meta, KmppMetaKey key, KmppObj val) rk_s32 kmpp_meta_set_obj(KmppMeta meta, KmppMetaKey key, KmppObj val)
{ {

View file

@ -25,6 +25,7 @@ void *meta_test(void *param)
KmppShmPtr packet; KmppShmPtr packet;
KmppShmPtr buffer; KmppShmPtr buffer;
KmppShmPtr sptr; KmppShmPtr sptr;
void *ptr;
RK_S32 val; RK_S32 val;
RK_S32 i; RK_S32 i;
@ -63,13 +64,15 @@ void *meta_test(void *param)
ret |= kmpp_meta_set_s32(meta[i], KEY_LONG_REF_IDX, 0); ret |= kmpp_meta_set_s32(meta[i], KEY_LONG_REF_IDX, 0);
ret |= kmpp_meta_set_s32(meta[i], KEY_ENC_AVERAGE_QP, 0); ret |= kmpp_meta_set_s32(meta[i], KEY_ENC_AVERAGE_QP, 0);
ret |= kmpp_meta_set_shm(meta[i], KEY_ROI_DATA, NULL); //ret |= kmpp_meta_set_shm(meta[i], KEY_ROI_DATA, NULL);
ret |= kmpp_meta_set_shm(meta[i], KEY_OSD_DATA, NULL); ret |= kmpp_meta_set_shm(meta[i], KEY_OSD_DATA, NULL);
ret |= kmpp_meta_set_shm(meta[i], KEY_OSD_DATA2, NULL); ret |= kmpp_meta_set_shm(meta[i], KEY_OSD_DATA2, NULL);
ret |= kmpp_meta_set_shm(meta[i], KEY_USER_DATA, NULL); ret |= kmpp_meta_set_shm(meta[i], KEY_USER_DATA, NULL);
ret |= kmpp_meta_set_shm(meta[i], KEY_USER_DATAS, NULL); ret |= kmpp_meta_set_shm(meta[i], KEY_USER_DATAS, NULL);
ret |= kmpp_meta_set_shm(meta[i], KEY_QPMAP0, NULL); ret |= kmpp_meta_set_shm(meta[i], KEY_QPMAP0, NULL);
ret |= kmpp_meta_set_shm(meta[i], KEY_NPU_SOBJ_FLAG, NULL);
ret |= kmpp_meta_set_ptr(meta[i], KEY_NPU_UOBJ_FLAG, NULL);
ret |= kmpp_meta_set_s32(meta[i], KEY_ENC_MARK_LTR, 0); ret |= kmpp_meta_set_s32(meta[i], KEY_ENC_MARK_LTR, 0);
ret |= kmpp_meta_set_s32(meta[i], KEY_ENC_USE_LTR, 0); ret |= kmpp_meta_set_s32(meta[i], KEY_ENC_USE_LTR, 0);
@ -94,13 +97,15 @@ void *meta_test(void *param)
ret |= kmpp_meta_get_s32(meta[i], KEY_LONG_REF_IDX, &val); ret |= kmpp_meta_get_s32(meta[i], KEY_LONG_REF_IDX, &val);
ret |= kmpp_meta_get_s32(meta[i], KEY_ENC_AVERAGE_QP, &val); ret |= kmpp_meta_get_s32(meta[i], KEY_ENC_AVERAGE_QP, &val);
ret |= kmpp_meta_get_shm(meta[i], KEY_ROI_DATA, &sptr); //ret |= kmpp_meta_get_shm(meta[i], KEY_ROI_DATA, &sptr);
ret |= kmpp_meta_get_shm(meta[i], KEY_OSD_DATA, &sptr); ret |= kmpp_meta_get_shm(meta[i], KEY_OSD_DATA, &sptr);
ret |= kmpp_meta_get_shm(meta[i], KEY_OSD_DATA2, &sptr); ret |= kmpp_meta_get_shm(meta[i], KEY_OSD_DATA2, &sptr);
ret |= kmpp_meta_get_shm(meta[i], KEY_USER_DATA, &sptr); ret |= kmpp_meta_get_shm(meta[i], KEY_USER_DATA, &sptr);
ret |= kmpp_meta_get_shm(meta[i], KEY_USER_DATAS, &sptr); ret |= kmpp_meta_get_shm(meta[i], KEY_USER_DATAS, &sptr);
ret |= kmpp_meta_get_shm(meta[i], KEY_QPMAP0, &buffer); ret |= kmpp_meta_get_shm(meta[i], KEY_QPMAP0, &buffer);
ret |= kmpp_meta_get_shm(meta[i], KEY_NPU_SOBJ_FLAG, &sptr);
ret |= kmpp_meta_get_ptr(meta[i], KEY_NPU_UOBJ_FLAG, &ptr);
ret |= kmpp_meta_get_s32(meta[i], KEY_ENC_MARK_LTR, &val); ret |= kmpp_meta_get_s32(meta[i], KEY_ENC_MARK_LTR, &val);
ret |= kmpp_meta_get_s32(meta[i], KEY_ENC_USE_LTR, &val); ret |= kmpp_meta_get_s32(meta[i], KEY_ENC_USE_LTR, &val);

View file

@ -128,7 +128,8 @@ static inline RK_U64 META_KEY_TO_U64(RK_U32 key, RK_U32 type)
ENTRY(KEY_USER_DATAS, TYPE_UPTR) \ ENTRY(KEY_USER_DATAS, TYPE_UPTR) \
ENTRY(KEY_QPMAP0, TYPE_SPTR) \ ENTRY(KEY_QPMAP0, TYPE_SPTR) \
/* buffer for super encode v3 */ \ /* buffer for super encode v3 */ \
ENTRY(KEY_NPU_OBJ_FLAG, TYPE_SPTR) \ ENTRY(KEY_NPU_SOBJ_FLAG, TYPE_SPTR) \
ENTRY(KEY_NPU_UOBJ_FLAG, TYPE_UPTR) \
ENTRY(KEY_BUFFER_UPSCALE, TYPE_SPTR) \ ENTRY(KEY_BUFFER_UPSCALE, TYPE_SPTR) \
ENTRY(KEY_BUFFER_DOWNSCALE, TYPE_SPTR) \ ENTRY(KEY_BUFFER_DOWNSCALE, TYPE_SPTR) \
\ \

View file

@ -42,7 +42,7 @@ static MPP_RET meta_set(MppMeta meta)
ret |= mpp_meta_set_ptr(meta, KEY_USER_DATAS, NULL); ret |= mpp_meta_set_ptr(meta, KEY_USER_DATAS, NULL);
ret |= mpp_meta_set_buffer(meta, KEY_QPMAP0, NULL); ret |= mpp_meta_set_buffer(meta, KEY_QPMAP0, NULL);
ret |= mpp_meta_set_ptr(meta, KEY_NPU_OBJ_FLAG, NULL); ret |= mpp_meta_set_ptr(meta, KEY_NPU_UOBJ_FLAG, NULL);
ret |= mpp_meta_set_s32(meta, KEY_ENC_MARK_LTR, 0); ret |= mpp_meta_set_s32(meta, KEY_ENC_MARK_LTR, 0);
ret |= mpp_meta_set_s32(meta, KEY_ENC_USE_LTR, 0); ret |= mpp_meta_set_s32(meta, KEY_ENC_USE_LTR, 0);
@ -85,7 +85,7 @@ static MPP_RET meta_get(MppMeta meta)
ret |= mpp_meta_get_ptr(meta, KEY_USER_DATAS, &ptr); ret |= mpp_meta_get_ptr(meta, KEY_USER_DATAS, &ptr);
ret |= mpp_meta_get_buffer(meta, KEY_QPMAP0, &buffer); ret |= mpp_meta_get_buffer(meta, KEY_QPMAP0, &buffer);
ret |= mpp_meta_get_ptr(meta, KEY_NPU_OBJ_FLAG, &ptr); ret |= mpp_meta_get_ptr(meta, KEY_NPU_UOBJ_FLAG, &ptr);
ret |= mpp_meta_get_s32(meta, KEY_ENC_MARK_LTR, &val); ret |= mpp_meta_get_s32(meta, KEY_ENC_MARK_LTR, &val);
ret |= mpp_meta_get_s32(meta, KEY_ENC_USE_LTR, &val); ret |= mpp_meta_get_s32(meta, KEY_ENC_USE_LTR, &val);