From 418a091240cc01b2d9f13a662cec39cdd9488b0c Mon Sep 17 00:00:00 2001 From: armando Date: Mon, 23 Mar 2026 11:31:30 +0800 Subject: [PATCH] change(isp): added lut table depth check --- components/esp_driver_isp/src/isp_lsc.c | 1 + .../esp_hal_cam/esp32p4/include/hal/isp_ll.h | 37 +++++++++++-------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/components/esp_driver_isp/src/isp_lsc.c b/components/esp_driver_isp/src/isp_lsc.c index 8ddf94126d1..a8133cdbc1b 100644 --- a/components/esp_driver_isp/src/isp_lsc.c +++ b/components/esp_driver_isp/src/isp_lsc.c @@ -35,6 +35,7 @@ esp_err_t esp_isp_lsc_allocate_gain_array(isp_proc_handle_t isp_proc, esp_isp_ls int num_grids_x = ISP_LSC_GET_GRIDS(isp_proc->h_res); int num_grids_y = ISP_LSC_GET_GRIDS(isp_proc->v_res); ESP_LOGD(TAG, "num_grids_x_max: %d, num_grids_x: %d, num_grids_y_max: %d, num_grids_y: %d", num_grids_x_max, num_grids_y_max, num_grids_x, num_grids_y); + ESP_RETURN_ON_FALSE(num_grids_x * num_grids_y <= ISP_LL_LUT_LSC_SIZE_MAX, ESP_ERR_INVALID_ARG, TAG, "invalid number of grids, max is %d, num_grids_x: %d, num_grids_y: %d", ISP_LL_LUT_LSC_SIZE_MAX, num_grids_x, num_grids_y); ESP_RETURN_ON_FALSE(num_grids_x <= num_grids_x_max && num_grids_y <= num_grids_y_max, ESP_ERR_INVALID_ARG, TAG, "invalid h_res or v_res"); gain_array->gain_r = (isp_lsc_gain_t *)heap_caps_calloc(1, num_grids_x * num_grids_y * sizeof(isp_lsc_gain_t), ISP_MEM_ALLOC_CAPS); diff --git a/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h b/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h index c1fb28f0c15..af73272f5a5 100644 --- a/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h +++ b/components/esp_hal_cam/esp32p4/include/hal/isp_ll.h @@ -121,15 +121,6 @@ extern "C" { ---------------------------------------------------------------*/ #define ISP_LL_BF_DEFAULT_TEMPLATE_VAL 15 -/*--------------------------------------------------------------- - DVP ----------------------------------------------------------------*/ -#define ISP_LL_DVP_CTLR_NUMS 1U -#define ISP_LL_DVP_DATA_WIDTH_MAX 16 -#define ISP_LL_DVP_DATA_TYPE_RAW8 0x2A -#define ISP_LL_DVP_DATA_TYPE_RAW10 0x2B -#define ISP_LL_DVP_DATA_TYPE_RAW12 0x2C - /*--------------------------------------------------------------- Color ---------------------------------------------------------------*/ @@ -139,12 +130,6 @@ extern "C" { #define ISP_LL_COLOR_BRIGNTNESS_MIN -128 #define ISP_LL_COLOR_BRIGNTNESS_MAX 127 -/*--------------------------------------------------------------- - LSC ----------------------------------------------------------------*/ -#define ISP_LL_LSC_GRID_HEIGHT 32 -#define ISP_LL_LSC_GRID_WIDTH 32 - /*--------------------------------------------------------------- CCM ---------------------------------------------------------------*/ @@ -162,6 +147,28 @@ extern "C" { ---------------------------------------------------------------*/ #define ISP_LL_HIST_CTLR_NUMS 1U +/*--------------------------------------------------------------- + DVP +---------------------------------------------------------------*/ +#define ISP_LL_DVP_CTLR_NUMS 1U +#define ISP_LL_DVP_DATA_WIDTH_MAX 16 +#define ISP_LL_DVP_DATA_TYPE_RAW8 0x2A +#define ISP_LL_DVP_DATA_TYPE_RAW10 0x2B +#define ISP_LL_DVP_DATA_TYPE_RAW12 0x2C + +/*--------------------------------------------------------------- + LSC +---------------------------------------------------------------*/ +#define ISP_LL_LSC_GRID_HEIGHT 32 +#define ISP_LL_LSC_GRID_WIDTH 32 + +/*--------------------------------------------------------------- + LUT +---------------------------------------------------------------*/ +#define ISP_LL_LUT_LSC_SIZE_MAX 560 +#define ISP_LL_LUT_DPC_SIZE_MAX 512 +#define ISP_LL_LUT_AWB_SIZE_MAX 104 + typedef union { struct { uint32_t fraction: ISP_LL_AWB_RGB_RATIO_FRAC_BITS;