From c70028a97632fd9874ef4abad2f275ba4aa23653 Mon Sep 17 00:00:00 2001 From: "xiaoxu.chen" Date: Thu, 31 Jul 2025 11:25:03 +0800 Subject: [PATCH] test[mpi_enc_test]: Add jpeg roi test Change-Id: Ie76605bca67c39ca47b2200418190ee4af22e0df Signed-off-by: xiaoxu.chen --- test/mpi_enc_test.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/test/mpi_enc_test.c b/test/mpi_enc_test.c index 3ebf5e18..78bebbd2 100644 --- a/test/mpi_enc_test.c +++ b/test/mpi_enc_test.c @@ -97,6 +97,7 @@ typedef struct { MppEncOSDData osd_data; RoiRegionCfg roi_region; MppEncROICfg roi_cfg; + MppJpegROICfg roi_jpeg_cfg; // input / output MppBufferGroup buf_grp; @@ -134,6 +135,7 @@ typedef struct { RK_U32 user_data_enable; RK_U32 roi_enable; + RK_U32 roi_jpeg_enable; // rate control runtime parameter RK_S32 fps_in_flex; @@ -722,6 +724,7 @@ MPP_RET test_mpp_enc_cfg_setup(MpiEncMultiCtxInfo *info) /* setup test mode by env */ 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("roi_enable", &p->roi_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_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) { MppEncUserData user_data; char *str = "this is user data\n"; @@ -941,6 +944,37 @@ MPP_RET test_mpp_run(MpiEncMultiCtxInfo *info) /* send roi info by metadata */ 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)