test[mpi_enc_test]: Add jpeg roi test

Change-Id: Ie76605bca67c39ca47b2200418190ee4af22e0df
Signed-off-by: xiaoxu.chen <xiaoxu.chen@rock-chips.com>
This commit is contained in:
xiaoxu.chen
2025-07-31 11:25:03 +08:00
parent 8808b16d7a
commit c70028a976

View File

@@ -97,6 +97,7 @@ typedef struct {
MppEncOSDData osd_data; MppEncOSDData osd_data;
RoiRegionCfg roi_region; RoiRegionCfg roi_region;
MppEncROICfg roi_cfg; MppEncROICfg roi_cfg;
MppJpegROICfg roi_jpeg_cfg;
// input / output // input / output
MppBufferGroup buf_grp; MppBufferGroup buf_grp;
@@ -134,6 +135,7 @@ typedef struct {
RK_U32 user_data_enable; RK_U32 user_data_enable;
RK_U32 roi_enable; RK_U32 roi_enable;
RK_U32 roi_jpeg_enable;
// rate control runtime parameter // rate control runtime parameter
RK_S32 fps_in_flex; RK_S32 fps_in_flex;
@@ -722,6 +724,7 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info)
/* setup test mode by env */ /* setup test mode by env */
mpp_env_get_u32("osd_enable", &p->osd_enable, 0); mpp_env_get_u32("osd_enable", &p->osd_enable, 0);
mpp_env_get_u32("roi_jpeg_enable", &p->roi_jpeg_enable, 0);
mpp_env_get_u32("osd_mode", &p->osd_mode, MPP_ENC_OSD_PLT_TYPE_DEFAULT); mpp_env_get_u32("osd_mode", &p->osd_mode, MPP_ENC_OSD_PLT_TYPE_DEFAULT);
mpp_env_get_u32("roi_enable", &p->roi_enable, 0); mpp_env_get_u32("roi_enable", &p->roi_enable, 0);
mpp_env_get_u32("user_data_enable", &p->user_data_enable, 0); mpp_env_get_u32("user_data_enable", &p->user_data_enable, 0);
@@ -861,7 +864,7 @@ MPP_RET test_mpp_run(MpiEncMultiCtxInfo *info)
mpp_meta_set_packet(meta, KEY_OUTPUT_PACKET, packet); mpp_meta_set_packet(meta, KEY_OUTPUT_PACKET, packet);
mpp_meta_set_buffer(meta, KEY_MOTION_INFO, p->md_info); mpp_meta_set_buffer(meta, KEY_MOTION_INFO, p->md_info);
if (p->osd_enable || p->user_data_enable || p->roi_enable) { if (p->osd_enable || p->user_data_enable || p->roi_enable || p->roi_jpeg_enable) {
if (p->user_data_enable) { if (p->user_data_enable) {
MppEncUserData user_data; MppEncUserData user_data;
char *str = "this is user data\n"; char *str = "this is user data\n";
@@ -941,6 +944,37 @@ MPP_RET test_mpp_run(MpiEncMultiCtxInfo *info)
/* send roi info by metadata */ /* send roi info by metadata */
mpp_enc_roi_setup_meta(p->roi_ctx, meta); mpp_enc_roi_setup_meta(p->roi_ctx, meta);
} }
if (p->roi_jpeg_enable) {
RK_U32 index;
RK_U32 width = 128;
RK_U32 height = 128;
RK_U32 start_x = 0;
RK_U32 start_y = 0;
p->roi_jpeg_cfg.change = 1;
p->roi_jpeg_cfg.non_roi_en = 1;
p->roi_jpeg_cfg.non_roi_level = 0;
for (index = 0; index < 16; index++) {
if ((start_x + width) > p->width || (start_y + height) > p->height)
break;
p->roi_jpeg_cfg.regions[index].roi_en = 1;
p->roi_jpeg_cfg.regions[index].x = start_x;
p->roi_jpeg_cfg.regions[index].y = start_y;
p->roi_jpeg_cfg.regions[index].w = width;
p->roi_jpeg_cfg.regions[index].h = height;
p->roi_jpeg_cfg.regions[index].level = 63;
start_x += width;
start_y += height;
}
if (p->init_kcfg)
ret = mpi->control(ctx, MPP_ENC_SET_JPEG_ROI_CFG, &p->roi_jpeg_cfg);
else
mpp_meta_set_ptr(meta, KEY_JPEG_ROI_DATA, (void*)&p->roi_jpeg_cfg);
}
} }
if (!p->first_frm) if (!p->first_frm)