海思视觉--sensor驱动配置验证

目录

提供已验证sensor驱动配置验证

SC035HGS_MIPI_24Minput_2lane_10bit_405Mbps_640x480_180fps.patch


提供已验证出流的sensor驱动配置

对于提供的sensor驱动配置patch已经过实测出流,如果使用后不能出流可能和当前硬件有关(如lane/dev等);

SC035HGS_MIPI_24Minput_2lane_10bit_405Mbps_640x480_180fps.patch

diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/interdrv/sysconfig/sys_cfg.c b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/interdrv/sysconfig/sys_cfg.c
index 6f94620..d657a9e 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/interdrv/sysconfig/sys_cfg.c
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/interdrv/sysconfig/sys_cfg.c
@@ -21,6 +21,7 @@
 #define BOARD_NAME_LEN 64
 
 #define SENSOR_NAME_SC4336P "sc4336p"
+#define SENSOR_NAME_SC035HGS "sc035hgs"
 #define SENSOR_NAME_GC4023 "gc4023"
 #define SENSOR_NAME_SC450AI "sc450ai"
 #define SENSOR_NAME_SC500AI "sc500ai"
@@ -78,9 +79,9 @@ void *sys_config_get_reg_gpio(void)
     return g_reg_gpio_base;
 }
 
-static char g_sensor_list[SENSOR_LIST_CMDLINE_LEN] = "sns0=sc4336p,sns1=sc4336p";
+static char g_sensor_list[SENSOR_LIST_CMDLINE_LEN] = "sns0=sc035hgs,sns1=sc035hgs";
 static int g_vi_intf_type = VI_MIPI_RX_MODE;
-static char g_vi_sensor_name[SENSOR_NUM][SENSOR_NAME_LEN] = {SENSOR_NAME_SC4336P, SENSOR_NAME_SC4336P};
+static char g_vi_sensor_name[SENSOR_NUM][SENSOR_NAME_LEN] = {SENSOR_NAME_SC035HGS, SENSOR_NAME_SC035HGS};
 static int g_board = BOARD_DMEB_QFN;
 static char g_board_name[BOARD_NAME_LEN] = BOARD_NAME_DMEB_QFN;        /* sck dmeb_qfn dmeb_bga */
 static bool g_ir_auto_en = 0;
@@ -91,7 +92,7 @@ osal_setup_str_param(board, g_board_name);
 osal_setup_num_param(ir_auto, g_ir_auto_en);
 #else
 module_param_string(sensors, g_sensor_list, SENSOR_LIST_CMDLINE_LEN, 0600);
-MODULE_PARM_DESC(sensors, "sns0=sc4336p,sns1=sc4336p");
+MODULE_PARM_DESC(sensors, "sns0=sc4336p/sc035hgs,sns1=sc4336p/sc035hgs");
 module_param_string(board, g_board_name, BOARD_NAME_LEN, 0600);
 module_param_named(ir_auto, g_ir_auto_en, bool, 0600);
 #endif
@@ -288,7 +289,8 @@ static unsigned int parse_sensor_clock(const char *name, unsigned int name_len)
         (strncmp(SENSOR_NAME_SC450AI, name, len) == 0) ||
         (strncmp(SENSOR_NAME_SC500AI, name, len) == 0)) {
         clock = 0xA001;   /* 27M */
-    } else if ((strncmp(SENSOR_NAME_OS04D10, name, len) == 0)) {
+    } else if ((strncmp(SENSOR_NAME_SC035HGS, name, len) == 0) ||
+               (strncmp(SENSOR_NAME_OS04D10, name, len) == 0)) {
         clock = 0x4001;  /* 24M */
     } else if (strncmp(MIPI_AD, name, len) == 0) {
         clock = 0x8010; /* 37.125M */
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/include/ot_sns_ctrl.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/include/ot_sns_ctrl.h
index d75c887..6ec8215 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/include/ot_sns_ctrl.h
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/include/ot_sns_ctrl.h
@@ -79,6 +79,7 @@ extern ot_isp_sns_obj g_sns_sc500ai_obj;
 extern ot_isp_sns_obj g_sns_sc850sl_obj;
 extern ot_isp_sns_obj g_sns_gst412c_obj;
 extern ot_isp_sns_obj g_sns_sc4336p_obj;
+extern ot_isp_sns_obj g_sns_sc035hgs_obj;
 extern ot_isp_sns_obj g_sns_gc4023_obj;
 extern ot_isp_sns_obj g_sns_sc431hai_obj;
 
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/Makefile b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/Makefile
new file mode 100644
index 0000000..54c3d63
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/Makefile
@@ -0,0 +1,73 @@
+#
+# sensor lib Makefile
+#
+ifeq ($(PARAM_FILE), )
+    PARAM_FILE:=../../../../../../../Makefile.param
+    include $(PARAM_FILE)
+endif
+
+
+ifeq ($(CBB_PARAM_FILE), )
+    CBB_PARAM_FILE:=../../../../../Makefile.param
+    include $(CBB_PARAM_FILE)
+endif
+
+ISP_PATH := $(ISP_ROOT)
+EXT_PATH := $(ISP_PATH)/ext_drv/$(OT_ARCH)
+3A_PATH  := $(ISP_PATH)/user/3a
+LIBPATH = ../../../lib
+OBJPATH = $(TEMP_PATH)/$(subst $(SDK_PATH)/,,$(CURDIR))/obj
+
+ARFLAGS = rcv
+ARFLAGS_SO = $(LIBS_LD_CFLAGS)
+ARFLAGS_SO += -shared -fPIC -o
+CFLAGS  += -Wall -fPIC -D$(OT_FPGA)
+CFLAGS  += -O2
+CFLAGS  += $(LIBS_CFLAGS)
+
+ifeq ($(ISP_INI_CONFIG), y)
+CFLAGS += -D INIFILE_CONFIG_MODE
+endif
+
+
+
+ifeq ($(CONFIG_JPEGEDCF), y)
+     CFLAGS += -D ENABLE_JPEGEDCF
+endif
+
+ISP_INC := $(ISP_PATH)/include
+CUR_INC := ./
+SNS_COM_INC := ./../common/
+3A_INC := $(3A_PATH)/include
+INC := -I$(ISP_INC) -I$(CUR_INC) -I$(SNS_COM_INC) -I$(3A_INC) $(COMM_INC)
+DEPEND_FILE := $(foreach file,$(subst -I, ,$(CUR_INC)), $(wildcard $(file)/*.h))
+
+COMPILE = $(CC) $(CFLAGS) $(DFLAGS)
+
+$(OBJPATH)/%.o: ./%.c $(DEPEND_FILE)
+	@[ -e $(LIBPATH) ] || mkdir -p $(LIBPATH)
+	@[ -e $(dir $@) ] || mkdir -p $(dir $@)
+	@$(COMPILE) -o $@ -c $< $(INC)
+
+SRCS = $(wildcard ./*.c ./../common/*.c)
+OBJS = $(SRCS:%.c=%.o)
+OBJS := $(OBJS:./%=$(OBJPATH)/%)
+
+LIB_NAME := libsns_sc035hgs
+TARGETLIB := $(LIBPATH)/$(LIB_NAME).a
+TARGETLIB_SO := $(LIBPATH)/$(LIB_NAME).so
+
+all:$(TARGETLIB)
+$(TARGETLIB):$(OBJS)
+	@($(AR) $(ARFLAGS) $(TARGETLIB) $(OBJS))
+	@($(CC) $(ARFLAGS_SO) $(TARGETLIB_SO) $(OBJS))
+	@mkdir -p $(REL_LIB)
+	@cp $(TARGETLIB_SO) $(REL_LIB)
+	@cp $(TARGETLIB) $(REL_LIB)
+clean:
+	@$(RM) -rf $(TARGETLIB) $(OBJS)
+	@$(RM) -rf $(LIBPATH) $(OBJPATH)
+	@$(RM) -rf $(REL_LIB)/$(LIB_NAME).a
+	@$(RM) -rf $(REL_LIB)/$(LIB_NAME).so
+aa:
+	echo "$(INC)"
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cfg.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cfg.h
new file mode 100644
index 0000000..98706a5
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cfg.h
@@ -0,0 +1,140 @@
+/*
+  Copyright (c), 2001-2025, Shenshu Tech. Co., Ltd.
+ */
+
+#ifndef SC035HGS_CFG_H
+#define SC035HGS_CFG_H
+
+#include "sensor_common.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+/* SC035HGS_MIPI_24Minput_2lane_10bit_405Mbps_640x480_180fps */
+static cis_reg_cfg sc035hgs_linear_640x480_180fps_10bit[] = {
+    {0x0103, 0x01},
+    {0x0100, 0x00},
+    {0x36e9, 0x80},
+    {0x36f9, 0x80},
+    {0x3000, 0x00},
+    {0x3001, 0x00},
+    {0x300f, 0x0f},
+    {0x3018, 0x33},
+    {0x3019, 0xfc},
+    {0x301c, 0x78},
+    {0x301f, 0xcc},
+    {0x3031, 0x0a},
+    {0x3037, 0x20},
+    {0x303f, 0x01},
+    {0x320c, 0x03},
+    {0x320d, 0x54},
+    {0x320e, 0x02},
+    {0x320f, 0x10},
+    {0x3217, 0x00},
+    {0x3218, 0x00},
+    {0x3220, 0x10},
+    {0x3223, 0x48},
+    {0x3226, 0x74},
+    {0x3227, 0x07},
+    {0x323b, 0x00},
+    {0x3250, 0xf0},
+    {0x3251, 0x02},
+    {0x3252, 0x02},
+    {0x3253, 0x08},
+    {0x3254, 0x02},
+    {0x3255, 0x07},
+    {0x3304, 0x48},
+    {0x3305, 0x00},
+    {0x3306, 0x60},
+    {0x3309, 0x50},
+    {0x330a, 0x00},
+    {0x330b, 0xc0},
+    {0x330c, 0x18},
+    {0x330f, 0x40},
+    {0x3310, 0x10},
+    {0x3314, 0x70},
+    {0x3315, 0x30},
+    {0x3316, 0x68},
+    {0x3317, 0x16},
+    {0x3329, 0x5c},
+    {0x332d, 0x5c},
+    {0x332f, 0x60},
+    {0x3335, 0x64},
+    {0x3344, 0x64},
+    {0x335b, 0x80},
+    {0x335f, 0x80},
+    {0x3366, 0x06},
+    {0x3385, 0x31},
+    {0x3387, 0x39},
+    {0x3389, 0x01},
+    {0x33b1, 0x03},
+    {0x33b2, 0x06},
+    {0x33bd, 0xe0},
+    {0x33bf, 0x10},
+    {0x3621, 0xa4},
+    {0x3622, 0x05},
+    {0x3624, 0x47},
+    {0x3630, 0x4a},
+    {0x3631, 0x58},
+    {0x3633, 0x52},
+    {0x3635, 0x03},
+    {0x3636, 0x25},
+    {0x3637, 0x8a},
+    {0x3638, 0x0f},
+    {0x3639, 0x08},
+    {0x363a, 0x00},
+    {0x363b, 0x48},
+    {0x363c, 0x86},
+    {0x363e, 0xf8},
+    {0x3640, 0x00},
+    {0x3641, 0x01},
+    {0x36ea, 0xf1},
+    {0x36eb, 0x0e},
+    {0x36ec, 0x1e},
+    {0x36ed, 0x03},
+    {0x36fa, 0xf1},
+    {0x36fb, 0x10},
+    {0x36fc, 0x00},
+    {0x36fd, 0x03},
+    {0x3908, 0x91},
+    {0x391b, 0x81},
+    {0x3d08, 0x01},
+    {0x3e01, 0x14},
+    {0x3e02, 0x80},
+    {0x3e03, 0x2b},
+    {0x3e06, 0x0c},
+    {0x3f04, 0x03},
+    {0x3f05, 0x34},
+    {0x4500, 0x59},
+    {0x4501, 0xc4},
+    {0x4603, 0x00},
+    {0x4800, 0x64},
+    {0x4809, 0x01},
+    {0x4810, 0x00},
+    {0x4811, 0x01},
+    {0x4837, 0x31},
+    {0x5011, 0x00},
+    {0x5988, 0x02},
+    {0x598e, 0x03},
+    {0x598f, 0x0c},
+    {0x36e9, 0x53},
+    {0x36f9, 0x53},
+    {0x0100, 0x01},
+    {0x4418, 0x0a},
+    {0x363d, 0x10},
+    {0x4419, 0x80},
+};
+
+static cis_reg_cfg sc035hgs_standby_cfg[] = {
+    {0x0100, 0x00},
+};
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos.c b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos.c
new file mode 100644
index 0000000..43089dd
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos.c
@@ -0,0 +1,1304 @@
+/*
+  Copyright (c), 2001-2025, Shenshu Tech. Co., Ltd.
+ */
+
+#include <stdio.h>
+#include "sensor_common.h"
+#include "ot_mpi_isp.h"
+#include "ot_mpi_ae.h"
+#include "ot_mpi_awb.h"
+#include "sc035hgs_cmos.h"
+#include "sc035hgs_cmos_param.h"
+#include "sc035hgs_sensor_ctrl.h"
+
+/****************************************************************************
+ * global variables                                                            *
+ ****************************************************************************/
+static cis_info g_sc035hgs_info[OT_ISP_MAX_PIPE_NUM] = {
+    [0 ...(OT_ISP_MAX_PIPE_NUM - 1)] {
+        .mutex = PTHREAD_MUTEX_INITIALIZER,
+        .sns_id = SC035HGS_ID,
+        .fswdr_mode = OT_ISP_FSWDR_NORMAL_MODE,
+        .quick_start_en = TD_FALSE,
+        .fast_ae_en = TD_FALSE,
+        .bus_info = { .i2c_dev = -1 },
+        .sns_state = TD_NULL,
+        .blc_clamp_info = TD_TRUE,
+        .mode_tbl = {
+            {
+                SC035HGS_VMAX_LINEAR,
+                SC035HGS_FULL_LINES_MAX_LINEAR,
+                SC035HGS_FPS_MAX_LINEAR,
+                SC035HGS_FPS_MIN_LINEAR,
+                SC035HGS_WIDTH_LINEAR,
+                SC035HGS_HEIGHT_LINEAR,
+                SC035HGS_MODE_LINEAR,
+                OT_WDR_MODE_NONE,
+                "SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE"
+            },
+        },
+        .i2c.fd = -1,
+    }
+};
+
+/****************************************************************************
+  Again & Dgain table for TABLE Mode                                        *
+ ****************************************************************************/
+#define SC035HGS_AGAIN_NODE_NUM               6
+#define SC035HGS_AGAIN_ADDR_INDEX_NODE_NUM    6
+#define SC035HGS_DGAIN_NODE_NUM               128
+#define SC035HGS_DGAIN_ADDR_INDEX_NODE_NUM    128
+
+static td_u32 again_index[SC035HGS_AGAIN_NODE_NUM] = {
+    1024,  2048,  4096,  8192, 16384, 32768
+};
+
+static td_u32 dgain_index[SC035HGS_DGAIN_NODE_NUM] = {
+    1024, 1056, 1088, 1120,  1152, 1184, 1216, 1248,  1280, 1312, 1344, 1376,
+    1408, 1440, 1472, 1504,  1536, 1568, 1600, 1632,  1664, 1696, 1728, 1760,
+    1792, 1824, 1856, 1888,  1920, 1952, 1984, 2016,  2048, 2112, 2176, 2240,
+    2304, 2368, 2432, 2496,  2560, 2624, 2688, 2752,  2816, 2880, 2944, 3008,
+    3072, 3136, 3200, 3264,  3328, 3392, 3456, 3520,  3584, 3648, 3712, 3776,
+    3840, 3904, 3968, 4032,  4096, 4224, 4352, 4480,  4608, 4736, 4864, 4992,
+    5120, 5248, 5376, 5504,  5632, 5760, 5888, 6016,  6144, 6272, 6400, 6528,
+    6656, 6784, 6912, 7040,  7168, 7296, 7424, 7552,  7680, 7808, 7936, 8064,
+    8192, 8448, 8704, 8960,  9216, 9472, 9728, 9984, 10240, 10496, 10752, 11008,
+    11264, 11520, 11776, 12032, 12288, 12544, 12800, 13056, 13312, 13568, 13824, 14080,
+    14336, 14592, 14848, 15104, 15360, 15616, 15872, 16128
+};
+
+
+static td_u32 again_table[SC035HGS_AGAIN_ADDR_INDEX_NODE_NUM] = {
+    0x0, 0x8, 0x9, 0xb, 0x0f, 0x1f
+};
+
+static td_u32 dgain_table[SC035HGS_DGAIN_ADDR_INDEX_NODE_NUM] = {
+    0x0080, 0x0084, 0x0088, 0x008C, 0x0090, 0x0094, 0x0098, 0x009C, 0x00A0, 0x00A4, 0x00A8, 0x00AC,
+    0x00B0, 0x00B4, 0x00B8, 0x00BC, 0x00C0, 0x00C4, 0x00C8, 0x00CC, 0x00D0, 0x00D4, 0x00D8, 0x00DC,
+    0x00E0, 0x00E4, 0x00E8, 0x00EC, 0x00F0, 0x00F4, 0x00F8, 0x00FC, 0x0180, 0x0184, 0x0188, 0x018C,
+    0x0190, 0x0194, 0x0198, 0x019C, 0x01A0, 0x01A4, 0x01A8, 0x01AC, 0x01B0, 0x01B4, 0x01B8, 0x01BC,
+    0x01C0, 0x01C4, 0x01C8, 0x01CC, 0x01D0, 0x01D4, 0x01D8, 0x01DC, 0x01E0, 0x01E4, 0x01E8, 0x01EC,
+    0x01F0, 0x01F4, 0x01F8, 0x01FC, 0x0380, 0x0384, 0x0388, 0x038C, 0x0390, 0x0394, 0x0398, 0x039C,
+    0x03A0, 0x03A4, 0x03A8, 0x03AC, 0x03B0, 0x03B4, 0x03B8, 0x03BC, 0x03C0, 0x03C4, 0x03C8, 0x03CC,
+    0x03D0, 0x03D4, 0x03D8, 0x03DC, 0x03E0, 0x03E4, 0x03E8, 0x03EC, 0x03F0, 0x03F4, 0x03F8, 0x03FC,
+    0x0780, 0x0784, 0x0788, 0x078C, 0x0790, 0x0794, 0x0798, 0x079C, 0x07A0, 0x07A4, 0x07A8, 0x07AC,
+    0x07B0, 0x07B4, 0x07B8, 0x07BC, 0x07C0, 0x07C4, 0x07C8, 0x07CC, 0x07D0, 0x07D4, 0x07D8, 0x07DC,
+    0x07E0, 0x07E4, 0x07E8, 0x07EC, 0x07F0, 0x07F4, 0x07F8, 0x07FC,
+};
+
+static td_bool g_standby_cfg_init[OT_ISP_MAX_PIPE_NUM] = {0};
+
+/****************************************************************************
+ * common functions                                                         *
+ ****************************************************************************/
+static cis_info *cmos_get_info(ot_vi_pipe vi_pipe)
+{
+    if (vi_pipe < 0 || vi_pipe >= OT_ISP_MAX_PIPE_NUM) {
+        return TD_NULL;
+    }
+    return &g_sc035hgs_info[vi_pipe];
+}
+
+static ot_isp_sns_state *cmos_get_state(ot_vi_pipe vi_pipe)
+{
+    if (vi_pipe < 0 || vi_pipe >= OT_ISP_MAX_PIPE_NUM) {
+        return TD_NULL;
+    }
+    return cmos_get_info(vi_pipe)->sns_state;
+}
+
+static void cmos_err_mode_print(const ot_isp_cmos_sns_image_mode *sns_image_mode, const ot_isp_sns_state *sns_state)
+{
+    isp_err_trace("Not support! Width:%u, Height:%u, Fps:%f, WDRMode:%d\n",
+        (sns_image_mode)->width, (sns_image_mode)->height, (sns_image_mode)->fps, (sns_state)->wdr_mode);
+}
+
+static td_void cmos_get_ae_comm_default(cis_info *cis, ot_isp_ae_sensor_default *ae_sns_dft,
+    const ot_isp_sns_state *sns_state)
+{
+    td_u32 lines;
+    td_float max_fps = STANDARD_FPS; /* maxfps 30 */
+
+    lines = cis->mode_tbl[sns_state->img_mode].ver_lines;
+    max_fps = cis->mode_tbl[sns_state->img_mode].max_fps;
+    if (sns_state->img_mode == SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE) {
+        ae_sns_dft->int_time_accu.accu_type = OT_ISP_AE_ACCURACY_LINEAR;
+        ae_sns_dft->int_time_accu.accuracy = INT_TIME_ACCURACY;
+        ae_sns_dft->int_time_accu.offset = 0.386; /* 0.386 line */
+    }
+
+    ae_sns_dft->full_lines_std = sns_state->fl_std;
+    ae_sns_dft->flicker_freq = FLICKER_FREQ; /* light flicker freq: 50Hz, accuracy: 256 */
+    ae_sns_dft->full_lines_max = cis->mode_tbl[sns_state->img_mode].max_ver_lines;
+    ae_sns_dft->hmax_times = (td_u32)((1000000000) / ((td_float)lines * max_fps)); /* 1000000000ns, 30fps */
+
+    ae_sns_dft->again_accu.accu_type = OT_ISP_AE_ACCURACY_TABLE;
+    ae_sns_dft->again_accu.accuracy  = AGAIN_ACCURACY;
+
+    ae_sns_dft->dgain_accu.accu_type = OT_ISP_AE_ACCURACY_TABLE;
+    ae_sns_dft->dgain_accu.accuracy = DGAIN_ACCURACY;
+
+    ae_sns_dft->isp_dgain_shift = ISP_DGAIN_SHIFT;
+    ae_sns_dft->min_isp_dgain_target = ISP_DGAIN_TARGET_MIN << ae_sns_dft->isp_dgain_shift; /* min 1 */
+    ae_sns_dft->max_isp_dgain_target = ISP_DGAIN_TARGET_MAX << ae_sns_dft->isp_dgain_shift; /* max 32 */
+    (td_void)memcpy_s(&ae_sns_dft->piris_attr, sizeof(ot_isp_piris_attr), &g_piris, sizeof(ot_isp_piris_attr));
+    if (cis->lines_per500ms == 0) {
+        ae_sns_dft->lines_per500ms = (td_u32)((td_float)lines * max_fps / 2); /* 30fps, div 2 */
+    } else {
+        ae_sns_dft->lines_per500ms = cis->lines_per500ms;
+    }
+
+    ae_sns_dft->max_iris_fno = OT_ISP_IRIS_F_NO_1_4;
+    ae_sns_dft->min_iris_fno = OT_ISP_IRIS_F_NO_5_6;
+
+    ae_sns_dft->ae_route_ex_valid = TD_FALSE;
+    ae_sns_dft->ae_route_attr.total_num = 0;
+    ae_sns_dft->ae_route_attr_ex.total_num = 0;
+    ae_sns_dft->quick_start.quick_start_enable = cis->quick_start_en;
+    ae_sns_dft->quick_start.black_frame_num = 0;
+    ae_sns_dft->ae_stat_pos = cis->ae_stat_pos; /* 1 use be stat to AE */
+    return;
+}
+
+static td_void cmos_get_ae_linear_default(cis_info *cis, ot_isp_ae_sensor_default *ae_sns_dft,
+    const ot_isp_sns_state *sns_state)
+{
+    ae_sns_dft->max_again = SC035HGS_AGAIN_MAX; /* max 32768 */
+    ae_sns_dft->min_again = SC035HGS_AGAIN_MIN;  /* min 1024 */
+    ae_sns_dft->max_again_target = ae_sns_dft->max_again;
+    ae_sns_dft->min_again_target = ae_sns_dft->min_again;
+
+    ae_sns_dft->max_dgain = SC035HGS_DGAIN_MAX; /* max 15.75*1024 = 16128 */
+    ae_sns_dft->min_dgain = SC035HGS_DGAIN_MIN;  /* min 1024 */
+    ae_sns_dft->max_dgain_target = ae_sns_dft->max_dgain;
+    ae_sns_dft->min_dgain_target = ae_sns_dft->min_dgain;
+
+    ae_sns_dft->ae_compensation = AE_COMENSATION_DEFAULT;
+    ae_sns_dft->ae_exp_mode = OT_ISP_AE_EXP_HIGHLIGHT_PRIOR;
+    ae_sns_dft->init_exposure =
+        (cis->init_exposure != 0) ? cis->init_exposure : INIT_EXP_DEFAULT_LINEAR; /* init 148859 */
+
+    ae_sns_dft->max_int_time = sns_state->fl_std - FL_OFFSET_LINEAR;
+    ae_sns_dft->min_int_time = 2; /* min int 2 */
+    ae_sns_dft->max_int_time_target = MAX_INT_TIME_TARGET; /* max int 65535 */
+    ae_sns_dft->min_int_time_target = ae_sns_dft->min_int_time;
+    ae_sns_dft->ae_route_ex_valid = cis->ae_route_ex_valid;
+    (td_void)memcpy_s(&ae_sns_dft->ae_route_attr, sizeof(ot_isp_ae_route),
+                      &cis->init_ae_route,  sizeof(ot_isp_ae_route));
+    (td_void)memcpy_s(&ae_sns_dft->ae_route_attr_ex, sizeof(ot_isp_ae_route_ex),
+                      &cis->init_ae_route_ex, sizeof(ot_isp_ae_route_ex));
+    return;
+}
+
+static td_s32 cmos_get_ae_default(ot_vi_pipe vi_pipe, ot_isp_ae_sensor_default *ae_sns_dft)
+{
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(ae_sns_dft);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    sns_state = cis->sns_state;
+
+    sns_check_pointer_return(sns_state);
+
+    (td_void)memset_s(&ae_sns_dft->ae_route_attr, sizeof(ot_isp_ae_route), 0, sizeof(ot_isp_ae_route));
+
+    cmos_get_ae_comm_default(cis, ae_sns_dft, sns_state);
+
+    switch (sns_state->wdr_mode) {
+        case OT_WDR_MODE_NONE:   /* linear mode */
+            cmos_get_ae_linear_default(cis, ae_sns_dft, sns_state);
+            break;
+        default:
+            cmos_get_ae_linear_default(cis, ae_sns_dft, sns_state);
+            break;
+    }
+
+    return TD_SUCCESS;
+}
+
+static td_void cmos_config_vmax(ot_isp_sns_state *sns_state, td_u32 vmax)
+{
+    if (sns_state->wdr_mode == OT_WDR_MODE_NONE) {
+        sns_state->regs_info[0].i2c_data[VMAX_L_IDX].data = low_8bits(vmax);
+        sns_state->regs_info[0].i2c_data[VMAX_H_IDX].data = high_8bits(vmax);
+    }
+    return;
+}
+
+/* the function of sensor set fps */
+static td_void cmos_fps_set(ot_vi_pipe vi_pipe, td_float fps, ot_isp_ae_sensor_default *ae_sns_dft)
+{
+    td_u32 lines;
+    td_u32 lines_max;
+    td_u32 vmax;
+    td_float max_fps;
+    td_float min_fps;
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+    sns_check_pointer_void_return(ae_sns_dft);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    lines = cis->mode_tbl[sns_state->img_mode].ver_lines;
+    lines_max = cis->mode_tbl[sns_state->img_mode].max_ver_lines;
+    max_fps = cis->mode_tbl[sns_state->img_mode].max_fps;
+    min_fps = cis->mode_tbl[sns_state->img_mode].min_fps;
+
+    if ((fps > max_fps) || (fps < min_fps)) {
+        isp_err_trace("ISP sensor sc035hgs Not support Fps: %f\n", fps);
+        return;
+    }
+
+    vmax = (td_u32)(lines * max_fps / div_0_to_1_float(fps));
+    vmax = (vmax > lines_max) ? lines_max : vmax;
+
+    cmos_config_vmax(sns_state, vmax);
+    sns_state->fl_std = vmax;
+    ae_sns_dft->lines_per500ms = (td_u32)(lines * max_fps / 2); /* 30/2 */
+    cis->lines_per500ms = ae_sns_dft->lines_per500ms;
+
+    ae_sns_dft->fps = fps;
+    ae_sns_dft->full_lines_std = sns_state->fl_std;
+    if (sns_state->wdr_mode == OT_WDR_MODE_NONE) {
+        ae_sns_dft->max_int_time = sns_state->fl_std - FL_OFFSET_LINEAR;
+    }
+
+    sns_state->fl[0] = sns_state->fl_std;
+    ae_sns_dft->full_lines = sns_state->fl[0];
+    ae_sns_dft->hmax_times =
+        (td_u32)((1000000000) / (sns_state->fl_std * div_0_to_1_float(fps))); /* 1000000000ns */
+
+    return;
+}
+
+static td_void cmos_slow_framerate_set(ot_vi_pipe vi_pipe, td_u32 full_lines, ot_isp_ae_sensor_default *ae_sns_dft)
+{
+    td_u32 vmax;
+    td_u32 lines, lines_max;
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+    sns_check_pointer_void_return(ae_sns_dft);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    lines = cis->mode_tbl[sns_state->img_mode].ver_lines;
+    lines_max = cis->mode_tbl[sns_state->img_mode].max_ver_lines;
+
+    vmax = full_lines + FL_OFFSET_LINEAR;
+
+    vmax = clip3(vmax, lines, lines_max);
+    sns_state->fl[0] = vmax;
+
+    sns_state->regs_info[0].i2c_data[VMAX_L_IDX].data = low_8bits(vmax);
+    sns_state->regs_info[0].i2c_data[VMAX_H_IDX].data = high_8bits(vmax);
+
+    if (sns_state->wdr_mode == OT_WDR_MODE_NONE) {
+        ae_sns_dft->max_int_time = sns_state->fl[0] - FL_OFFSET_LINEAR;
+    }
+    ae_sns_dft->full_lines = full_lines;
+    return;
+}
+
+static td_void cmos_inttime_update_linear(cis_info *cis, ot_isp_sns_state *sns_state, td_u32 int_time)
+{
+    if (cis->quick_start_en == TD_TRUE && cis->i2c.fd >= 0) {
+        cis_write_reg(&cis->i2c, SC035HGS_EXPO_L_ADDR, lower_4bits(int_time));
+        cis_write_reg(&cis->i2c, SC035HGS_EXPO_M_ADDR, higher_8bits(int_time));
+        cis_write_reg(&cis->i2c, SC035HGS_EXPO_H_ADDR, higher_4bits(int_time));
+    } else {
+        sns_state->regs_info[0].i2c_data[EXPO_L_IDX].data = lower_4bits(int_time);
+        sns_state->regs_info[0].i2c_data[EXPO_M_IDX].data = higher_8bits(int_time);
+        sns_state->regs_info[0].i2c_data[EXPO_H_IDX].data = higher_4bits(int_time);
+    }
+
+    return;
+}
+
+/* while isp notify ae to update sensor regs, ae call these funcs. */
+static td_void cmos_inttime_update(ot_vi_pipe vi_pipe, td_u32 int_time)
+{
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    if (sns_state->wdr_mode == OT_WDR_MODE_NONE) {
+        cmos_inttime_update_linear(cis, sns_state, int_time);
+    }
+
+    return;
+}
+
+static td_void cmos_again_calc_table(ot_vi_pipe vi_pipe, td_u32 *again_lin, td_u32 *again_db)
+{
+    int i;
+    sns_check_pointer_void_return(again_lin);
+    sns_check_pointer_void_return(again_db);
+    ot_unused(vi_pipe);
+
+    if (*again_lin >= again_index[SC035HGS_AGAIN_ADDR_INDEX_NODE_NUM - 1]) {
+        *again_lin = again_index[SC035HGS_AGAIN_ADDR_INDEX_NODE_NUM - 1];
+        *again_db = again_table[SC035HGS_AGAIN_NODE_NUM - 1];
+        return;
+    }
+
+    for (i = 1; i < SC035HGS_AGAIN_NODE_NUM; i++) {
+        if (*again_lin < again_index[i]) {
+            *again_lin = again_index[i - 1];
+            *again_db = again_table[i - 1];
+            break;
+        }
+    }
+
+    return;
+}
+
+static td_void cmos_dgain_calc_table(ot_vi_pipe vi_pipe, td_u32 *dgain_lin, td_u32 *dgain_db)
+{
+    int i;
+
+    sns_check_pointer_void_return(dgain_lin);
+    sns_check_pointer_void_return(dgain_db);
+    ot_unused(vi_pipe);
+
+    if (*dgain_lin >= dgain_index[SC035HGS_DGAIN_ADDR_INDEX_NODE_NUM - 1]) {
+        *dgain_lin = dgain_index[SC035HGS_DGAIN_ADDR_INDEX_NODE_NUM - 1];
+        *dgain_db = dgain_table[SC035HGS_DGAIN_NODE_NUM - 1];
+        return;
+    }
+
+    for (i = 1; i < SC035HGS_DGAIN_NODE_NUM; i++) {
+        if (*dgain_lin < dgain_index[i]) {
+            *dgain_lin = dgain_index[i - 1];
+            *dgain_db = dgain_table[i - 1];
+            break;
+        }
+    }
+    return;
+}
+
+static td_void cmos_gains_update(ot_vi_pipe vi_pipe, td_u32 again, td_u32 dgain)
+{
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+    cis_i2c *i2c = TD_NULL;
+    td_u8 reg_0x3e09;
+    td_u8 reg_0x3e07;
+    td_u8 reg_0x3e06;
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    i2c = &cis->i2c;
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    reg_0x3e06 = high_8bits(dgain);
+    reg_0x3e07 = low_8bits (dgain);
+    reg_0x3e09 = low_8bits (again);
+
+    if (cis->quick_start_en == TD_TRUE && cis->i2c.fd >= 0) {
+        cis_write_reg(i2c, SC035HGS_DGAIN_H_ADDR, reg_0x3e06);
+        cis_write_reg(i2c, SC035HGS_DGAIN_L_ADDR, reg_0x3e07);
+        cis_write_reg(i2c, SC035HGS_AGAIN_L_ADDR, reg_0x3e09);
+    } else {
+        sns_state->regs_info[0].i2c_data[DGAIN_H_IDX].data = reg_0x3e06;
+        sns_state->regs_info[0].i2c_data[DGAIN_L_IDX].data = reg_0x3e07;
+        sns_state->regs_info[0].i2c_data[AGAIN_L_IDX].data = reg_0x3e09;
+    }
+
+    return;
+}
+
+static td_void cmos_get_inttime_max(ot_vi_pipe vi_pipe, td_u16 man_ratio_enable, td_u32 *ratio,
+    ot_isp_ae_int_time_range *int_time, td_u32 *lf_max_int_time)
+{
+    ot_isp_sns_state *sns_state = TD_NULL;
+    ot_unused(man_ratio_enable);
+    sns_check_pipe_void_return(vi_pipe);
+    sns_check_pointer_void_return(ratio);
+    sns_check_pointer_void_return(int_time);
+    sns_check_pointer_void_return(lf_max_int_time);
+    sns_state = cmos_get_state(vi_pipe);
+    sns_check_pointer_void_return(sns_state);
+
+    return;
+}
+
+/* Only used in LINE_WDR mode */
+static td_void cmos_ae_fswdr_attr_set(ot_vi_pipe vi_pipe, ot_isp_ae_fswdr_attr *ae_fswdr_attr)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+    sns_check_pointer_void_return(ae_fswdr_attr);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    cis->fswdr_mode = ae_fswdr_attr->fswdr_mode;
+    cis->max_time_get_cnt = 0;
+
+    return;
+}
+
+static td_void cmos_ae_quick_start_status_set(ot_vi_pipe vi_pipe, td_bool quick_start_en)
+{
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    cis->quick_start_en = quick_start_en;
+    sns_state->sync_init = TD_FALSE;
+}
+
+static td_void cmos_fast_ae_attr_get(ot_vi_pipe vi_pipe, ot_isp_ae_fast_ae_attr *fast_ae_attr)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+    sns_check_pointer_void_return(fast_ae_attr);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+    fast_ae_attr->enable = cis->fast_ae_en;
+    fast_ae_attr->sns_delay_frame = 1 + 2; /* delay 1 + 2 frame */
+}
+
+static td_void cmos_fast_ae_attr_set(ot_vi_pipe vi_pipe, const ot_isp_ae_fast_ae_attr *fast_ae_attr)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+    sns_check_pointer_void_return(fast_ae_attr);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+    cis->fast_ae_en = fast_ae_attr->enable;
+}
+
+static td_void cmos_init_ae_exp_function(ot_isp_ae_sensor_exp_func *exp_func)
+{
+    (td_void)memset_s(exp_func, sizeof(ot_isp_ae_sensor_exp_func), 0, sizeof(ot_isp_ae_sensor_exp_func));
+    exp_func->pfn_cmos_get_ae_default    = cmos_get_ae_default;
+    exp_func->pfn_cmos_fps_set           = cmos_fps_set;
+    exp_func->pfn_cmos_slow_framerate_set = cmos_slow_framerate_set;
+    exp_func->pfn_cmos_inttime_update    = cmos_inttime_update;
+    exp_func->pfn_cmos_gains_update      = cmos_gains_update;
+    exp_func->pfn_cmos_again_calc_table  = cmos_again_calc_table;
+    exp_func->pfn_cmos_dgain_calc_table   = cmos_dgain_calc_table;
+    exp_func->pfn_cmos_get_inttime_max   = cmos_get_inttime_max;
+    exp_func->pfn_cmos_ae_fswdr_attr_set = cmos_ae_fswdr_attr_set;
+    exp_func->pfn_cmos_ae_quick_start_status_set = cmos_ae_quick_start_status_set;
+    exp_func->pfn_cmos_ae_fast_ae_attr_get = cmos_fast_ae_attr_get;
+    exp_func->pfn_cmos_ae_fast_ae_attr_set = cmos_fast_ae_attr_set;
+
+    return;
+}
+
+static td_s32 cmos_awb_get_default(ot_vi_pipe vi_pipe, ot_isp_awb_sensor_default *awb_sns_dft)
+{
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(awb_sns_dft);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_return(sns_state);
+
+    (td_void)memset_s(awb_sns_dft, sizeof(ot_isp_awb_sensor_default), 0, sizeof(ot_isp_awb_sensor_default));
+    awb_sns_dft->wb_ref_temp = CALIBRATE_STATIC_TEMP; /* wb_ref_temp 4950 */
+
+    awb_sns_dft->gain_offset[0] = CALIBRATE_STATIC_WB_R_GAIN;
+    awb_sns_dft->gain_offset[1] = CALIBRATE_STATIC_WB_GR_GAIN;
+    awb_sns_dft->gain_offset[2] = CALIBRATE_STATIC_WB_GB_GAIN; /* index 2 */
+    awb_sns_dft->gain_offset[3] = CALIBRATE_STATIC_WB_B_GAIN; /* index 3 */
+
+    awb_sns_dft->wb_para[0] = CALIBRATE_AWB_P1;
+    awb_sns_dft->wb_para[1] = CALIBRATE_AWB_P2;
+    awb_sns_dft->wb_para[2] = CALIBRATE_AWB_Q1; /* index 2 */
+    awb_sns_dft->wb_para[3] = CALIBRATE_AWB_A1; /* index 3 */
+    awb_sns_dft->wb_para[4] = CALIBRATE_AWB_B1; /* index 4 */
+    awb_sns_dft->wb_para[5] = CALIBRATE_AWB_C1; /* index 5 */
+
+    awb_sns_dft->golden_rgain = GOLDEN_RGAIN;
+    awb_sns_dft->golden_bgain = GOLDEN_BGAIN;
+
+    switch (sns_state->wdr_mode) {
+        case OT_WDR_MODE_NONE:
+            (td_void)memcpy_s(&awb_sns_dft->ccm, sizeof(ot_isp_awb_ccm), &g_awb_ccm, sizeof(ot_isp_awb_ccm));
+            (td_void)memcpy_s(&awb_sns_dft->agc_tbl, sizeof(ot_isp_awb_agc_table),
+                              &g_awb_agc_table, sizeof(ot_isp_awb_agc_table));
+            break;
+
+        default:
+            (td_void)memcpy_s(&awb_sns_dft->ccm, sizeof(ot_isp_awb_ccm), &g_awb_ccm, sizeof(ot_isp_awb_ccm));
+            (td_void)memcpy_s(&awb_sns_dft->agc_tbl, sizeof(ot_isp_awb_agc_table),
+                              &g_awb_agc_table, sizeof(ot_isp_awb_agc_table));
+            break;
+    }
+
+    awb_sns_dft->init_rgain = cis->init_wb_r_gain;
+    awb_sns_dft->init_ggain = cis->init_wb_g_gain;
+    awb_sns_dft->init_bgain = cis->init_wb_b_gain;
+    awb_sns_dft->sample_rgain = cis->sample_r_gain;
+    awb_sns_dft->sample_bgain = cis->sample_b_gain;
+
+    return TD_SUCCESS;
+}
+
+static td_void cmos_init_awb_exp_function(ot_isp_awb_sensor_exp_func *exp_func)
+{
+    (td_void)memset_s(exp_func, sizeof(ot_isp_awb_sensor_exp_func), 0, sizeof(ot_isp_awb_sensor_exp_func));
+
+    exp_func->pfn_cmos_get_awb_default = cmos_awb_get_default;
+
+    return;
+}
+
+static td_void cmos_isp_get_dng_default(const ot_isp_sns_state *sns_state, ot_isp_cmos_default *isp_def)
+{
+    ot_isp_cmos_dng_color_param dng_color_param = {{ 286, 256, 608 }, { 415, 256, 429 },
+        { 2810, { 0x01AC, 0x8093, 0x8019, 0x8070, 0x01EA, 0x807A, 0x802A, 0x80F3, 0x021D }},
+        { 4940, { 0x01D7, 0x8084, 0x8053, 0x8053, 0x01D9, 0x8086, 0x8010, 0x80B3, 0x01C3 }}};
+
+    (td_void)memcpy_s(&isp_def->dng_color_param, sizeof(ot_isp_cmos_dng_color_param), &dng_color_param,
+                      sizeof(ot_isp_cmos_dng_color_param));
+
+    switch (sns_state->img_mode) {
+        case SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE:
+            isp_def->sns_mode.dng_raw_format.bits_per_sample = DNG_RAW_FORMAT_BIT_LINEAR; /* 10bit */
+            isp_def->sns_mode.dng_raw_format.white_level = DNG_RAW_FORMAT_WHITE_LEVEL_LINEAR; /* max 1023 */
+            break;
+        default:
+            break;
+    }
+    isp_def->sns_mode.dng_raw_format.default_scale.default_scale_hor.denominator = 1;
+    isp_def->sns_mode.dng_raw_format.default_scale.default_scale_hor.numerator = 1;
+    isp_def->sns_mode.dng_raw_format.default_scale.default_scale_ver.denominator = 1;
+    isp_def->sns_mode.dng_raw_format.default_scale.default_scale_ver.numerator = 1;
+    isp_def->sns_mode.dng_raw_format.cfa_repeat_pattern_dim.repeat_pattern_dim_row = 2; /* pattern 2 */
+    isp_def->sns_mode.dng_raw_format.cfa_repeat_pattern_dim.repeat_pattern_dim_col = 2; /* pattern 2 */
+    isp_def->sns_mode.dng_raw_format.black_level_repeat_dim.repeat_row = 2; /* pattern 2 */
+    isp_def->sns_mode.dng_raw_format.black_level_repeat_dim.repeat_col = 2; /* pattern 2 */
+    isp_def->sns_mode.dng_raw_format.cfa_layout = OT_ISP_CFALAYOUT_TYPE_RECTANGULAR;
+    isp_def->sns_mode.dng_raw_format.cfa_plane_color[0] = 0;
+    isp_def->sns_mode.dng_raw_format.cfa_plane_color[1] = 1;
+    isp_def->sns_mode.dng_raw_format.cfa_plane_color[2] = 2; /* index 2, cfa_plane_color 2 */
+    isp_def->sns_mode.dng_raw_format.cfa_pattern[0] = 0;
+    isp_def->sns_mode.dng_raw_format.cfa_pattern[1] = 1;
+    isp_def->sns_mode.dng_raw_format.cfa_pattern[2] = 1; /* index 2, cfa_pattern 1 */
+    isp_def->sns_mode.dng_raw_format.cfa_pattern[3] = 2; /* index 3, cfa_pattern 2 */
+    isp_def->sns_mode.valid_dng_raw_format = TD_TRUE;
+
+    return;
+}
+
+static void cmos_isp_get_linear_default(ot_isp_cmos_default *isp_def)
+{
+    isp_def->key.bit1_demosaic         = 1;
+    isp_def->demosaic                  = &g_cmos_demosaic;
+    isp_def->key.bit1_sharpen          = 1;
+    isp_def->sharpen                   = &g_cmos_yuv_sharpen;
+    isp_def->key.bit1_drc              = 1;
+    isp_def->drc                       = &g_cmos_drc;
+    isp_def->key.bit1_bayer_nr         = 1;
+    isp_def->bayer_nr                  = &g_cmos_bayer_nr;
+    isp_def->key.bit1_anti_false_color = 1;
+    isp_def->anti_false_color          = &g_cmos_anti_false_color;
+    isp_def->key.bit1_cac              = 1;
+    isp_def->cac                       = &g_cmos_cac;
+    isp_def->key.bit1_ldci             = 1;
+    isp_def->ldci                      = &g_cmos_ldci;
+    isp_def->key.bit1_gamma            = 1;
+    isp_def->gamma                     = &g_cmos_gamma;
+    isp_def->key.bit1_clut             = 1;
+    isp_def->clut                      = &g_cmos_clut;
+#ifdef CONFIG_OT_ISP_CR_SUPPORT
+    isp_def->key.bit1_ge               = 1;
+    isp_def->ge                        = &g_cmos_ge;
+#endif
+    isp_def->key.bit1_dehaze = 1;
+    isp_def->dehaze = &g_cmos_dehaze;
+    isp_def->key.bit1_ca = 1;
+    isp_def->ca = &g_cmos_ca;
+    (td_void)memcpy_s(&isp_def->noise_calibration, sizeof(ot_isp_noise_calibration),
+                      &g_cmos_noise_calibration, sizeof(ot_isp_noise_calibration));
+    return;
+}
+
+static td_s32 cmos_isp_get_default(ot_vi_pipe vi_pipe, ot_isp_cmos_default *isp_def)
+{
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(isp_def);
+    sns_state = cmos_get_state(vi_pipe);
+    sns_check_pointer_return(sns_state);
+
+    (td_void)memset_s(isp_def, sizeof(ot_isp_cmos_default), 0, sizeof(ot_isp_cmos_default));
+#ifdef CONFIG_OT_ISP_CA_SUPPORT
+    isp_def->key.bit1_ca      = 1;
+    isp_def->ca               = &g_cmos_ca;
+#endif
+    isp_def->key.bit1_dpc     = 1;
+    isp_def->dpc              = &g_cmos_dpc;
+
+    isp_def->key.bit1_wdr     = 1;
+    isp_def->wdr              = &g_cmos_wdr;
+
+    isp_def->key.bit1_lsc      = 0;
+    isp_def->lsc               = &g_cmos_lsc;
+
+    isp_def->key.bit1_acs      = 0;
+    isp_def->acs               = &g_cmos_acs;
+
+#ifdef CONFIG_OT_ISP_PREGAMMA_SUPPORT
+    isp_def->key.bit1_pregamma = 0;
+    isp_def->pregamma          = &g_cmos_pregamma;
+#endif
+    switch (sns_state->wdr_mode) {
+        case OT_WDR_MODE_NONE:
+            cmos_isp_get_linear_default(isp_def);
+            break;
+        default:
+            cmos_isp_get_linear_default(isp_def);
+            break;
+    }
+
+    isp_def->wdr_switch_attr.exp_ratio[0] = 0x40;
+
+    isp_def->sns_mode.sns_id = SC035HGS_ID;
+    isp_def->sns_mode.sns_mode = sns_state->img_mode;
+    cmos_isp_get_dng_default(sns_state, isp_def);
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_isp_get_black_level(ot_vi_pipe vi_pipe, ot_isp_cmos_black_level *black_level)
+{
+    td_s32  i;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(black_level);
+    sns_state = cmos_get_state(vi_pipe);
+    sns_check_pointer_return(sns_state);
+
+    (td_void)memcpy_s(black_level, sizeof(ot_isp_cmos_black_level), &g_cmos_blc, sizeof(ot_isp_cmos_black_level));
+
+    /* Don't need to update black level when iso change */
+    black_level->auto_attr.update = TD_FALSE;
+
+    /* black level of linear mode */
+    if (sns_state->wdr_mode == OT_WDR_MODE_NONE) {
+        for (i = 0; i < OT_ISP_BAYER_CHN_NUM; i++) {
+            black_level->auto_attr.black_level[0][i] = BLACK_LEVEL_DEFAULT;
+        }
+    } else { /* black level of DOL mode */
+        for (i = 0; i < OT_ISP_WDR_MAX_FRAME_NUM; i++) {
+            black_level->auto_attr.black_level[i][0] = BLACK_LEVEL_DEFAULT;
+            black_level->auto_attr.black_level[i][1] = BLACK_LEVEL_DEFAULT;
+            black_level->auto_attr.black_level[i][2] = BLACK_LEVEL_DEFAULT; /* index 2 */
+            black_level->auto_attr.black_level[i][3] = BLACK_LEVEL_DEFAULT; /* index 3 */
+        }
+    }
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_isp_get_blc_clamp_info(ot_vi_pipe vi_pipe, td_bool *blc_clamp_en)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(blc_clamp_en);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    *blc_clamp_en = cis->blc_clamp_info;
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_isp_set_wdr_mode(ot_vi_pipe vi_pipe, td_u8 mode)
+{
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+
+    sns_state = cmos_get_state(vi_pipe);
+    sns_check_pointer_return(sns_state);
+
+    sns_state->sync_init = TD_FALSE;
+
+    switch (mode & 0x3F) {
+        case OT_WDR_MODE_NONE:
+            sns_state->wdr_mode = OT_WDR_MODE_NONE;
+            printf("linear mode\n");
+            break;
+
+        default:
+            isp_err_trace("Not support this mode!\n");
+            return TD_FAILURE;
+    }
+
+    (td_void)memset_s(sns_state->wdr_int_time, sizeof(sns_state->wdr_int_time), 0, sizeof(sns_state->wdr_int_time));
+
+    return TD_SUCCESS;
+}
+
+static td_void cmos_comm_sns_reg_info_init(cis_info *cis, ot_isp_sns_state *sns_state)
+{
+    td_u32 i;
+    sns_state->regs_info[0].sns_type = OT_ISP_SNS_TYPE_I2C;
+    sns_state->regs_info[0].com_bus.i2c_dev = cis->bus_info.i2c_dev;
+    if (cis->quick_start_en) {
+        sns_state->regs_info[0].cfg2_valid_delay_max = 1; /* delay_max 1 */
+    } else {
+        sns_state->regs_info[0].cfg2_valid_delay_max = 2; /* delay_max 2 */
+    }
+    sns_state->regs_info[0].reg_num = REG_MAX_IDX;
+
+    for (i = 0; i < sns_state->regs_info[0].reg_num; i++) {
+        sns_state->regs_info[0].i2c_data[i].update = TD_TRUE;
+        sns_state->regs_info[0].i2c_data[i].dev_addr = SC035HGS_I2C_ADDR;
+        sns_state->regs_info[0].i2c_data[i].addr_byte_num = SC035HGS_ADDR_BYTE;
+        sns_state->regs_info[0].i2c_data[i].data_byte_num = SC035HGS_DATA_BYTE;
+    }
+
+    /* Linear Mode Regs */
+    sns_state->regs_info[0].i2c_data[EXPO_L_IDX].delay_frame_num = 0;
+    sns_state->regs_info[0].i2c_data[EXPO_L_IDX].reg_addr = SC035HGS_EXPO_L_ADDR;
+    sns_state->regs_info[0].i2c_data[EXPO_M_IDX].delay_frame_num = 0;
+    sns_state->regs_info[0].i2c_data[EXPO_M_IDX].reg_addr = SC035HGS_EXPO_M_ADDR;
+    sns_state->regs_info[0].i2c_data[EXPO_H_IDX].delay_frame_num = 0;
+    sns_state->regs_info[0].i2c_data[EXPO_H_IDX].reg_addr = SC035HGS_EXPO_H_ADDR;
+
+    sns_state->regs_info[0].i2c_data[AGAIN_L_IDX].delay_frame_num = 0;
+    sns_state->regs_info[0].i2c_data[AGAIN_L_IDX].reg_addr = SC035HGS_AGAIN_L_ADDR;
+
+    sns_state->regs_info[0].i2c_data[DGAIN_H_IDX].delay_frame_num = 0;
+    sns_state->regs_info[0].i2c_data[DGAIN_H_IDX].reg_addr = SC035HGS_DGAIN_H_ADDR;
+    sns_state->regs_info[0].i2c_data[DGAIN_L_IDX].delay_frame_num = 0;
+    sns_state->regs_info[0].i2c_data[DGAIN_L_IDX].reg_addr = SC035HGS_DGAIN_L_ADDR;
+
+    sns_state->regs_info[0].i2c_data[VMAX_L_IDX].delay_frame_num = 1;
+    sns_state->regs_info[0].i2c_data[VMAX_L_IDX].reg_addr = SC035HGS_VMAX_L_ADDR;
+    sns_state->regs_info[0].i2c_data[VMAX_H_IDX].delay_frame_num = 1;
+    sns_state->regs_info[0].i2c_data[VMAX_H_IDX].reg_addr = SC035HGS_VMAX_H_ADDR;
+    return;
+}
+
+static td_void cmos_sns_config_logic_update(ot_vi_pipe vi_pipe, ot_isp_sns_state *sns_state)
+{
+    ot_unused(vi_pipe);
+}
+
+static td_void cmos_sns_reg_info_update(ot_vi_pipe vi_pipe, ot_isp_sns_state *sns_state)
+{
+    td_u32 i;
+    ot_unused(vi_pipe);
+
+    for (i = 0; i < sns_state->regs_info[0].reg_num; i++) {
+        if (sns_state->regs_info[0].i2c_data[i].data ==
+            sns_state->regs_info[1].i2c_data[i].data) {
+            sns_state->regs_info[0].i2c_data[i].update = TD_FALSE;
+        } else {
+            sns_state->regs_info[0].i2c_data[i].update = TD_TRUE;
+        }
+    }
+
+    cmos_sns_config_logic_update(vi_pipe, sns_state);
+
+    return;
+}
+
+static td_s32 cmos_isp_get_sns_regs_info(ot_vi_pipe vi_pipe, ot_isp_sns_regs_info *sns_regs_info)
+{
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(sns_regs_info);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_return(sns_state);
+
+    if ((sns_state->sync_init == TD_FALSE) || (sns_regs_info->config == TD_FALSE)) {
+        cmos_comm_sns_reg_info_init(cis, sns_state);
+        sns_state->sync_init = TD_TRUE;
+    } else {
+        cmos_sns_reg_info_update(vi_pipe, sns_state);
+    }
+
+    sns_regs_info->config = TD_FALSE;
+    (td_void)memcpy_s(sns_regs_info, sizeof(ot_isp_sns_regs_info),
+                      &sns_state->regs_info[0], sizeof(ot_isp_sns_regs_info));
+    (td_void)memcpy_s(&sns_state->regs_info[1], sizeof(ot_isp_sns_regs_info),
+                      &sns_state->regs_info[0], sizeof(ot_isp_sns_regs_info));
+    sns_state->fl[1] = sns_state->fl[0];
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_isp_get_standby_cfg(ot_vi_pipe vi_pipe, ot_isp_sns_regs_info *standby_cfg)
+{
+    td_s32 ret;
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(standby_cfg);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    standby_cfg->sns_type = OT_ISP_SNS_TYPE_I2C;
+    standby_cfg->com_bus.i2c_dev = cis->bus_info.i2c_dev;
+    ret = sc035hgs_get_standby_cfg(standby_cfg);
+    if (ret == TD_SUCCESS) {
+        g_standby_cfg_init[vi_pipe] = TD_TRUE;
+    }
+
+    return TD_SUCCESS;
+}
+
+
+static td_void cmos_isp_config_image_mode_param(ot_vi_pipe vi_pipe, td_u8 sns_image_mode,
+    ot_isp_sns_state *sns_state)
+{
+    ot_unused(vi_pipe);
+    switch (sns_image_mode) {
+        case SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE:
+            sns_state->fl_std = SC035HGS_VMAX_LINEAR;
+            break;
+        default:
+            sns_state->fl_std = SC035HGS_VMAX_LINEAR;
+            break;
+    }
+
+    return;
+}
+
+static td_s32 cmos_isp_set_image_mode(ot_vi_pipe vi_pipe, const ot_isp_cmos_sns_image_mode *sns_image_mode)
+{
+    td_u32 i;
+    td_u8 image_mode;
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(sns_image_mode);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_return(sns_state);
+
+    image_mode = sns_state->img_mode;
+
+    for (i = 0; i < SC035HGS_MODE_MAX; i++) {
+        if (sns_image_mode->fps <= cis->mode_tbl[i].max_fps &&
+            sns_image_mode->width <= cis->mode_tbl[i].width &&
+            sns_image_mode->height <= cis->mode_tbl[i].height &&
+            sns_state->wdr_mode == cis->mode_tbl[i].wdr_mode) {
+            image_mode = (sc035hgs_res_mode)i;
+            break;
+        }
+    }
+
+    if (i >= SC035HGS_MODE_MAX) {
+        cmos_err_mode_print(sns_image_mode, sns_state);
+        return TD_FAILURE;
+    }
+
+    cmos_isp_config_image_mode_param(vi_pipe, image_mode, sns_state);
+
+    if ((sns_state->init == TD_TRUE) && (image_mode == sns_state->img_mode)) {
+        return OT_ISP_DO_NOT_NEED_SWITCH_IMAGEMODE; /* Don't need to switch image_mode */
+    }
+
+    sns_state->sync_init = TD_FALSE;
+    sns_state->img_mode = image_mode;
+    sns_state->fl[0] = sns_state->fl_std;
+    sns_state->fl[1] = sns_state->fl[0];
+
+    return TD_SUCCESS;
+}
+
+static td_bool cmos_isp_get_quick_start_flag(ot_vi_pipe vi_pipe)
+{
+    td_s32 ret;
+    ot_isp_ctrl_param isp_ctrl_param = {};
+
+    ret = ot_mpi_isp_get_ctrl_param(vi_pipe, &isp_ctrl_param);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("pipe[%d] call ot_mpi_isp_get_ctrl_param failed! ret = 0x%x, quick_start_flag force set to 0!\n",
+            vi_pipe, ret);
+        return TD_FALSE;
+    }
+
+    return isp_ctrl_param.quick_start_en;
+}
+
+static void cmos_isp_init(ot_vi_pipe vi_pipe)
+{
+    td_s32           ret;
+    td_bool          quick_start_flag = TD_FALSE;
+    cis_info *cis = TD_NULL;
+    ot_isp_sns_state *sensor_state = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    sensor_state = cis->sns_state;
+    sns_check_pointer_void_return(sensor_state);
+
+    cis->i2c.addr = SC035HGS_I2C_ADDR;
+    cis->i2c.addr_byte_num = SC035HGS_ADDR_BYTE;
+    cis->i2c.data_byte_num = SC035HGS_DATA_BYTE;
+
+    ret = cis_i2c_init(cis);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("i2c init failed!\n");
+        return;
+    }
+
+    quick_start_flag = cmos_isp_get_quick_start_flag(vi_pipe);
+    if (quick_start_flag == TD_TRUE) {
+        sensor_state->init = TD_TRUE;
+        return;
+    }
+
+    /* When sensor first init, config all registers */
+    sc035hgs_linear_640x480_180fps_10bit_init(cis);
+
+    sensor_state->init = TD_TRUE;
+
+    return;
+}
+
+static void cmos_isp_exit(ot_vi_pipe vi_pipe)
+{
+    td_s32 ret;
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    ret = cis_i2c_exit(cis);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("SC500AI exit failed!\n");
+    }
+
+    return;
+}
+
+static td_void cmos_isp_global_init(ot_vi_pipe vi_pipe)
+{
+    ot_isp_sns_state *sns_state = TD_NULL;
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    sns_state->init      = TD_FALSE;
+    sns_state->sync_init = TD_FALSE;
+    sns_state->img_mode  = SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE;
+    sns_state->wdr_mode  = OT_WDR_MODE_NONE;
+    sns_state->fl_std    = SC035HGS_VMAX_LINEAR;
+    sns_state->fl[0]     = SC035HGS_VMAX_LINEAR;
+    sns_state->fl[1]     = SC035HGS_VMAX_LINEAR;
+
+    (td_void)memset_s(&sns_state->regs_info[0], sizeof(ot_isp_sns_regs_info), 0, sizeof(ot_isp_sns_regs_info));
+    (td_void)memset_s(&sns_state->regs_info[1], sizeof(ot_isp_sns_regs_info), 0, sizeof(ot_isp_sns_regs_info));
+
+    return;
+}
+
+static td_void cmos_isp_set_pixel_detect(ot_vi_pipe vi_pipe, td_bool enable)
+{
+    td_u32 full_lines_5fps, lines_max;
+    ot_isp_sns_state *sns_state = TD_NULL;
+    cis_info *cis = TD_NULL;
+    cis_i2c *i2c = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    i2c = &cis->i2c;
+    sns_state = cis->sns_state;
+    sns_check_pointer_void_return(sns_state);
+
+    if (sns_state->wdr_mode == OT_WDR_MODE_2To1_LINE) {
+        return;
+    } else {
+        if (sns_state->img_mode == SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE) {
+            full_lines_5fps = (SC035HGS_VMAX_LINEAR * STANDARD_FPS) / 5; /* 180fps to 5fps */
+        } else {
+            return;
+        }
+    }
+
+    if (enable) { /* setup for ISP pixel calibration mode */
+        cis_write_reg(i2c, SC035HGS_AGAIN_L_ADDR, 0x00);
+
+        cis_write_reg(i2c, SC035HGS_DGAIN_H_ADDR, 0x00);
+        cis_write_reg(i2c, SC035HGS_DGAIN_L_ADDR, 0x80);
+
+        cis_write_reg(i2c, SC035HGS_VMAX_L_ADDR, low_8bits(full_lines_5fps));
+        cis_write_reg(i2c, SC035HGS_VMAX_H_ADDR, high_8bits(full_lines_5fps));
+
+        cis_write_reg(i2c, SC035HGS_EXPO_L_ADDR, lower_4bits(full_lines_5fps - FL_OFFSET_LINEAR));
+        cis_write_reg(i2c, SC035HGS_EXPO_M_ADDR, higher_8bits(full_lines_5fps - FL_OFFSET_LINEAR));
+        cis_write_reg(i2c, SC035HGS_EXPO_H_ADDR, higher_4bits(full_lines_5fps - FL_OFFSET_LINEAR));
+    } else { /* setup for ISP 'normal mode' */
+        lines_max = cis->mode_tbl[sns_state->img_mode].max_ver_lines;
+        sns_state->fl_std = (sns_state->fl_std > lines_max) ? lines_max : sns_state->fl_std;
+        cis_write_reg(i2c, SC035HGS_VMAX_L_ADDR, low_8bits(sns_state->fl_std));
+        cis_write_reg(i2c, SC035HGS_VMAX_H_ADDR, high_8bits(sns_state->fl_std));
+        sns_state->sync_init = TD_FALSE;
+    }
+    return;
+}
+
+static td_void cmos_init_sensor_exp_function(ot_isp_sns_exp_func *sensor_exp_func)
+{
+    (td_void)memset_s(sensor_exp_func, sizeof(ot_isp_sns_exp_func), 0, sizeof(ot_isp_sns_exp_func));
+
+    sensor_exp_func->pfn_cmos_sns_init              = cmos_isp_init;
+    sensor_exp_func->pfn_cmos_sns_exit              = cmos_isp_exit;
+    sensor_exp_func->pfn_cmos_sns_global_init       = cmos_isp_global_init;
+    sensor_exp_func->pfn_cmos_set_image_mode        = cmos_isp_set_image_mode;
+    sensor_exp_func->pfn_cmos_set_wdr_mode          = cmos_isp_set_wdr_mode;
+    sensor_exp_func->pfn_cmos_get_isp_default       = cmos_isp_get_default;
+    sensor_exp_func->pfn_cmos_get_isp_black_level   = cmos_isp_get_black_level;
+    sensor_exp_func->pfn_cmos_get_blc_clamp_info    = cmos_isp_get_blc_clamp_info;
+    sensor_exp_func->pfn_cmos_set_pixel_detect      = cmos_isp_set_pixel_detect;
+    sensor_exp_func->pfn_cmos_get_sns_reg_info      = cmos_isp_get_sns_regs_info;
+    sensor_exp_func->pfn_cmos_get_standby_cfg       = cmos_isp_get_standby_cfg;
+}
+
+static td_s32 cmos_register_callback(ot_vi_pipe vi_pipe, ot_isp_3a_alg_lib *ae_lib, ot_isp_3a_alg_lib *awb_lib)
+{
+    td_s32 ret;
+    cis_register reg = {0};
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(ae_lib);
+    sns_check_pointer_return(awb_lib);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    cis->pipe = vi_pipe;
+
+    reg.ae_lib = ae_lib;
+    reg.awb_lib = awb_lib;
+
+    cmos_init_sensor_exp_function(&reg.isp_register.sns_exp);
+    cmos_init_ae_exp_function(&reg.ae_register.sns_exp);
+    cmos_init_awb_exp_function(&reg.awb_register.sns_exp);
+
+    ret = cis_register_callback(cis, &reg);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("cis_register_callback failed!\n");
+        return ret;
+    }
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_unregister_callback(ot_vi_pipe vi_pipe, ot_isp_3a_alg_lib *ae_lib, ot_isp_3a_alg_lib *awb_lib)
+{
+    td_s32 ret;
+    cis_register reg = {0};
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(ae_lib);
+    sns_check_pointer_return(awb_lib);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    reg.ae_lib = ae_lib;
+    reg.awb_lib = awb_lib;
+    ret = cis_unregister_callback(cis, &reg);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("cis_register_callback failed!\n");
+        return ret;
+    }
+
+    return TD_SUCCESS;
+}
+
+static void cmos_standby(ot_vi_pipe vi_pipe)
+{
+    td_s32 ret = TD_SUCCESS;
+    cis_info *cis = TD_NULL;
+
+    if (g_standby_cfg_init[vi_pipe] == TD_TRUE) {
+        return;
+    }
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    ret += cis_write_reg(&cis->i2c, 0x0100, 0x00);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("write register failed!\n");
+    }
+    return;
+}
+
+static void cmos_restart(ot_vi_pipe vi_pipe)
+{
+    td_s32 ret = TD_SUCCESS;
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_void_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_void_return(cis);
+
+    ret += cis_write_reg(&cis->i2c, 0x0100, 0x01);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("write register failed!\n");
+    }
+    return;
+}
+
+static td_s32 cmos_write_register(ot_vi_pipe vi_pipe, td_u32 addr, td_u32 data)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    sns_check_return(cis_write_reg(&cis->i2c, addr, data));
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_read_register(ot_vi_pipe vi_pipe, td_u32 addr)
+{
+    ot_unused(vi_pipe);
+    ot_unused(addr);
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_set_bus_info(ot_vi_pipe vi_pipe, ot_isp_sns_commbus sns_bus_info)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    cis->bus_info.i2c_dev = sns_bus_info.i2c_dev;
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_set_init(ot_vi_pipe vi_pipe, ot_isp_init_attr *init_attr)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(init_attr);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    cis_init_attr(cis, init_attr);
+
+    return TD_SUCCESS;
+}
+
+static td_s32 cmos_set_fast_ae(ot_vi_pipe vi_pipe, ot_isp_sns_fast_ae_attr *fast_ae_attr)
+{
+    cis_info *cis = TD_NULL;
+
+    sns_check_pipe_return(vi_pipe);
+    sns_check_pointer_return(fast_ae_attr);
+
+    cis = cmos_get_info(vi_pipe);
+    sns_check_pointer_return(cis);
+
+    cis->fast_ae_en = fast_ae_attr->enable;
+    return TD_SUCCESS;
+}
+
+ot_isp_sns_obj g_sns_sc035hgs_obj = {
+    .pfn_register_callback     = cmos_register_callback,
+    .pfn_un_register_callback  = cmos_unregister_callback,
+    .pfn_standby               = cmos_standby,
+    .pfn_restart               = cmos_restart,
+    .pfn_mirror_flip           = TD_NULL,
+    .pfn_set_blc_clamp         = TD_NULL,
+    .pfn_write_reg             = cmos_write_register,
+    .pfn_read_reg              = cmos_read_register,
+    .pfn_set_bus_info          = cmos_set_bus_info,
+    .pfn_set_init              = cmos_set_init,
+    .pfn_set_fast_ae           = cmos_set_fast_ae
+};
+
+ot_isp_sns_obj *sc035hgs_get_obj(td_void)
+{
+    return &g_sns_sc035hgs_obj;
+}
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos.h
new file mode 100644
index 0000000..ebaf5e1
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos.h
@@ -0,0 +1,163 @@
+/*
+  Copyright (c), 2001-2025, Shenshu Tech. Co., Ltd.
+ */
+
+#ifndef SC035HGS_CMOS_H
+#define SC035HGS_CMOS_H
+
+#include "ot_common_isp.h"
+#include "ot_sns_ctrl.h"
+#include "securec.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+/****************************************************************************
+ * basic info config                                                        *
+ ****************************************************************************/
+/* sensor ID & Resolution */
+#define SC035HGS_ID             35
+#define SC035HGS_WIDTH          640
+#define SC035HGS_HEIGHT         480
+
+/* sensor Register Address */
+#define SC035HGS_EXPO_H_ADDR          0x3E00
+#define SC035HGS_EXPO_M_ADDR          0x3E01
+#define SC035HGS_EXPO_L_ADDR          0x3E02
+#define SC035HGS_AGAIN_L_ADDR         0x3E09
+#define SC035HGS_DGAIN_H_ADDR         0x3E06
+#define SC035HGS_DGAIN_L_ADDR         0x3E07
+#define SC035HGS_VMAX_H_ADDR          0x320E
+#define SC035HGS_VMAX_L_ADDR          0x320F
+
+/****************************************************************************
+ * i2c bus config                                                           *
+ ****************************************************************************/
+/* sensor I2C bus config */
+#define SC035HGS_I2C_ADDR    0x60
+#define SC035HGS_ADDR_BYTE   2
+#define SC035HGS_DATA_BYTE   1
+
+/* common I2C bus config */
+#define I2C_DEV_FILE_NUM    16
+#define I2C_BUF_NUM         8
+
+/****************************************************************************
+ * sensor lines configs                                                     *
+ ****************************************************************************/
+/* linear mode: 24M input, 2lane, 10bit, 405Mbps, 640x480@180fps */
+#define SC035HGS_INCREASE_LINES 0
+#define SC035HGS_VMAX_VAL_LINEAR 528
+#define SC035HGS_FULL_LINES_MAX_LINEAR 0x9480 /* 528 * 180 / 2.5fps */
+#define SC035HGS_VMAX_LINEAR     (SC035HGS_VMAX_VAL_LINEAR + SC035HGS_INCREASE_LINES)
+#define SC035HGS_FPS_MAX_LINEAR 180
+#define SC035HGS_FPS_MIN_LINEAR 2.5
+#define SC035HGS_WIDTH_LINEAR 640
+#define SC035HGS_HEIGHT_LINEAR 480
+#define SC035HGS_MODE_LINEAR 0
+
+/****************************************************************************
+ * sensor ae configs                                                        *
+ ****************************************************************************/
+#define SC035HGS_AGAIN_MIN    1024
+#define SC035HGS_AGAIN_MAX    32768
+
+#define SC035HGS_DGAIN_MIN    1024
+#define SC035HGS_DGAIN_MAX    16128
+
+#define ISP_DGAIN_SHIFT           8
+#define ISP_DGAIN_TARGET_MIN      1
+#define ISP_DGAIN_TARGET_MAX      32
+#define ISP_DGAIN_TARGET_WDR_MIN  1
+#define ISP_DGAIN_TARGET_WDR_MAX  4
+#define INT_TIME_ACCURACY      1
+#define AGAIN_ACCURACY         1
+#define DGAIN_ACCURACY         1
+
+#define FL_OFFSET_LINEAR       10
+/****************************************************************************
+ * sensor awb calibrate configs                                             *
+ ****************************************************************************/
+/* awb static param for Fuji Lens New IR_Cut */
+#define CALIBRATE_STATIC_TEMP       5000
+#define CALIBRATE_STATIC_WB_R_GAIN  409
+#define CALIBRATE_STATIC_WB_GR_GAIN 256
+#define CALIBRATE_STATIC_WB_GB_GAIN 256
+#define CALIBRATE_STATIC_WB_B_GAIN  452
+
+/* Calibration results for Auto WB Planck */
+#define CALIBRATE_AWB_P1 (36)
+#define CALIBRATE_AWB_P2 220
+#define CALIBRATE_AWB_Q1 0
+#define CALIBRATE_AWB_A1 218409
+#define CALIBRATE_AWB_B1 128
+#define CALIBRATE_AWB_C1 (-167686)
+
+/* Rgain and Bgain of the golden sample */
+#define GOLDEN_RGAIN                                  0
+#define GOLDEN_BGAIN                                  0
+
+/****************************************************************************
+ * sensor other configs                                                     *
+ ****************************************************************************/
+#define STANDARD_FPS              180
+#define FLICKER_FREQ            (50 * 256)  /* light flicker freq: 50Hz, accuracy: 256 */
+#define INIT_EXP_DEFAULT_LINEAR   328
+#define MAX_INT_TIME_TARGET       65535
+#define AE_COMENSATION_DEFAULT    0x40
+/* Black level */
+#define BLACK_LEVEL_DEFAULT            0x410
+/* DNG */
+#define DNG_RAW_FORMAT_BIT_LINEAR         10 /* raw 10 bit */
+#define DNG_RAW_FORMAT_WHITE_LEVEL_LINEAR 1023 /* 2^10 - 1 */
+
+/****************************************************************************
+ * assist function macros                                                   *
+ ****************************************************************************/
+#define high_8bits(x)   (((x) & 0xff00) >> 8)
+#define low_8bits(x)    ((x) & 0x00ff)
+#define lower_4bits(x)  (((x) & 0x000F) << 4)
+#define higher_8bits(x) (((x) & 0x0FF0) >> 4)
+#define higher_4bits(x) (((x) & 0xF000) >> 12)
+#ifndef clip3
+#define clip3(x, min, max) ((x) < (min) ? (min) : ((x) > (max) ? (max) : (x)))
+#endif
+#ifndef max
+#define max(a, b) (((a) < (b)) ?  (b) : (a))
+#endif
+#ifndef min
+#define min(a, b) (((a) > (b)) ?  (b) : (a))
+#endif
+
+/****************************************************************************
+ * sensor data type defines                                                 *
+ ****************************************************************************/
+/* define your sensor modes */
+typedef enum {
+    SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE = 0,
+    SC035HGS_MODE_MAX
+} sc035hgs_res_mode;
+
+typedef enum {
+    EXPO_L_IDX = 0,
+    EXPO_M_IDX,
+    EXPO_H_IDX,
+    AGAIN_L_IDX,
+    DGAIN_L_IDX,
+    DGAIN_H_IDX,
+    VMAX_L_IDX,
+    VMAX_H_IDX,
+    REG_MAX_IDX
+} sc035hgs_linear_reg_index;
+
+ot_isp_sns_obj *sc035hgs_get_obj(td_void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif /* End of #ifdef __cplusplus */
+#endif /* SC035HGS_CMOS_H */
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos_param.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos_param.h
new file mode 100644
index 0000000..c2ef5ca
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_cmos_param.h
@@ -0,0 +1,3035 @@
+/*
+  Copyright (c), 2001-2025, Shenshu Tech. Co., Ltd.
+ */
+
+#ifndef SC035HGS_CMOS_PARAM_H
+#define SC035HGS_CMOS_PARAM_H
+
+#include "ot_common_awb.h"
+#include "ot_common_isp.h"
+#include "ot_common_sns.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+static ot_isp_piris_attr g_piris = {
+    0,   // bStepFNOTableChange
+    1,   // bZeroIsMax
+    94,  // u16TotalStep
+    62,  // u16StepCount
+    /* Step-F number mapping table. Must be from small to large. F1.0 is 1024 and F32.0 is 1 */
+    { 30,  35,  40,  45,  50,  56,  61,  67,  73,  79,  85,  92,  98,  105, 112, 120, 127, 135, 143, 150, 158,
+      166, 174, 183, 191, 200, 208, 217, 225, 234, 243, 252, 261, 270, 279, 289, 298, 307, 316, 325, 335, 344,
+      353, 362, 372, 381, 390, 399, 408, 417, 426, 435, 444, 453, 462, 470, 478, 486, 493, 500, 506, 512 },
+    OT_ISP_IRIS_F_NO_1_4,  // enMaxIrisFNOTarget
+    OT_ISP_IRIS_F_NO_5_6,   // enMinIrisFNOTarget
+    1,
+    512,
+    32
+};
+
+static const ot_isp_cmos_black_level g_cmos_blc = {
+    TD_FALSE, /* user_black_level_en */
+    {
+        {1200, 1200, 1200, 1200},
+        {1200, 1200, 1200, 1200},
+        {1200, 1200, 1200, 1200},
+        {1200, 1200, 1200, 1200},
+    },   /* user_black_level */
+    OT_ISP_BLACK_LEVEL_MODE_AUTO, /* ot_isp_black_level_mode */
+    {
+        {
+            {0x400, 0x400, 0x400, 0x400},
+            {0x400, 0x400, 0x400, 0x400},
+            {0x400, 0x400, 0x400, 0x400},
+            {0x400, 0x400, 0x400, 0x400},
+        },
+    }, /* manual_attr */
+    {
+        OT_ISP_DYNAMIC_PATTERN_RGB, /* ot_isp_black_level_dynamic_pattern */
+        {0, 0, 2592, 14}, /* ob_area */
+        0,    /* low_threshold */
+        4095,  /* high_threshold */
+        {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},    /* dynablc offset */
+        0x0,    /* dynablc tolerance */
+        0x0,    /* filter_strength */
+        0x0,    /* separate_mode */
+        {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024},
+        0,
+        /* calibration black level */
+    }, /* dynamic_attr */
+    {
+        0,                            /* update mode 0 */
+        {
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+        },
+    },
+    {
+        {2688, 1520},
+    },
+};
+
+static const ot_isp_cmos_black_level g_cmos_blc_wdr = {
+    TD_FALSE, /* user_black_level_en */
+    {
+        {1200, 1200, 1200, 1200},
+        {1200, 1200, 1200, 1200},
+        {1200, 1200, 1200, 1200},
+        {1200, 1200, 1200, 1200},
+    },   /* user_black_level */
+    OT_ISP_BLACK_LEVEL_MODE_AUTO, /* ot_isp_black_level_mode */
+    {
+        {
+            {0x400, 0x400, 0x400, 0x400},
+            {0x400, 0x400, 0x400, 0x400},
+            {0x400, 0x400, 0x400, 0x400},
+            {0x400, 0x400, 0x400, 0x400},
+        },
+    }, /* manual_attr */
+    {
+        OT_ISP_DYNAMIC_PATTERN_RGB, /* ot_isp_black_level_dynamic_pattern */
+        {0, 0, 3840, 20}, /* ob_area */
+        0x0,    /* low_threshold */
+        0xbb8,  /* high_threshold */
+        {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},    /* dynablc offset */
+        0x0,    /* dynablc tolerance */
+        0x0,    /* filter_strength */
+        0x0,    /* separate_mode */
+        {1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024},
+        0,
+        /* calibration black level */
+    }, /* dynamic_attr */
+    {
+        0,                            /* update mode 0 */
+        {
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+            {0x400, 0x400, 0x400, 0x400}, /* black level */
+        },
+    },
+    {
+        {2688, 1520},
+    },
+};
+static const ot_isp_dp_dynamic_attr g_cmos_dpc = {
+    1,              /* dynamic correction enable */
+
+    {
+        {
+            0,          /* twinkle suppression enable */
+            6,          /* twinkle suppression threshold */
+            21,         /* twinkle suppression slop */
+            0,          /* 0, auto mode; 1, manual mode */
+            {
+                0,      /* manual mode strength */
+                0,      /* manual mode blend ratio */
+            },
+            {
+                { 0, 0, 0, 152, 220, 220, 220, 220, 220, 220, 152, 152, 152, 152, 152, 152 }, /* strength[16] */
+                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50 },                     /* blend_ratio[16] */
+            },
+            96,         /* strength for bright area */
+            63,         /* strength for dark area */
+        }, /* dynamic config for linear frame */
+	}
+};
+
+static const ot_isp_dp_dynamic_attr g_cmos_dpc_wdr = {
+    1,              /* dynamic correction enable */
+
+    {
+        {
+            0,          /* twinkle suppression enable */
+            6,          /* twinkle suppression threshold */
+            21,         /* twinkle suppression slop */
+            0,          /* 0, auto mode; 1, manual mode */
+            {
+                0,      /* manual mode strength */
+                0,      /* manual mode blend ratio */
+            },
+            {
+                { 230, 230, 230, 235, 235, 235, 240, 240, 240, 250, 250, 250, 250, 250, 250, 250 }, /* strength[16] */
+                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },               /* blend_ratio[16] */
+            },
+            96,         /* strength for bright area */
+            63,         /* strength for dark area */
+        }, /* dynamic config for short frame */
+
+        {
+            0,          /* twinkle suppression enable */
+            6,          /* twinkle suppression threshold */
+            21,         /* twinkle suppression slop */
+            0,          /* 0, auto mode; 1, manual mode */
+            {
+                0,      /* manual mode strength */
+                0,      /* manual mode blend ratio */
+            },
+            {
+                { 230, 230, 230, 235, 235, 235, 240, 240, 240, 250, 250, 250, 250, 250, 250, 250 }, /* strength[16] */
+                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },              /* blend_ratio[16] */
+            },
+            96,         /* strength for bright area */
+            63,         /* strength for dark area */
+        }, /* dynamic config for long frame */
+    }
+};
+
+#ifdef CONFIG_OT_ISP_CR_SUPPORT
+static const ot_isp_cr_attr g_cmos_ge = {
+    1,   /* en */
+    9,   /* slope */
+    9,   /* sensi_slope */
+    300, /* sensi_threshold */
+    { 128, 128, 128, 128, 129, 129, 129, 129, 130, 130, 130, 130, 131, 131, 131, 131 }, /* strength */
+    { 300, 300, 300, 300, 310, 310, 310, 310, 320, 320, 320, 320, 330, 330, 330, 330 }, /* threshold */
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* filter_mode */
+    { 1024, 1024, 1024, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048 } /* np_offset */
+};
+#endif
+
+static const ot_isp_demosaic_attr g_cmos_demosaic = {
+    1, /* en */
+    OT_OP_MODE_AUTO, /* op_type */
+    128, /* aidm_blend_ratio */
+    {
+        48, /* nddm_strength */
+        64, /* nddm_mf_detail_strength */
+        { 0 }, /* hf_detail_strength */
+        2, /* detail_smooth_range */
+        0, /* color_noise_f_threshold */
+        8, /* color_noise_f_strength */
+        1, /* color_noise_y_threshold */
+        10, /* color_noise_y_strength */
+    },
+    {
+        /* nddm_strength */
+        { 48, 48, 48, 54, 54, 54, 48, 40, 40, 48, 48, 48, 48, 48, 48, 48 },
+        /* nddm_mf_detail_strength */
+        { 82, 74, 68, 60, 54, 50, 44, 40, 40, 40, 40, 32, 16, 16, 16, 16 },
+        /* hf_detail_strength */
+        {
+            { 0, 0, 1, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 },
+        },
+        /* detail_smooth_range */
+        { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 7, 7, 7, 7 },
+        /* color_noise_f_threshold */
+        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+        /* color_noise_f_strength */
+        { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 },
+        /* color_noise_y_threshold */
+        { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+        /* color_noise_y_strength */
+        { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
+    }
+};
+
+static const ot_isp_anti_false_color_attr g_cmos_anti_false_color = {
+    1,                  /* en */
+    OT_OP_MODE_AUTO,    /* op_type */
+    { 8, 8 },           /* manual_attr */
+    {
+        { 10, 10, 8, 8, 7, 7, 7, 6, 6, 6, 5, 4, 3, 2, 1, 0 }, /* anti_false_color_threshold */
+        {  0,  4, 8, 8, 7, 7, 7, 6, 6, 6, 5, 4, 3, 2, 1, 0 }, /* anti_false_color_strength */
+    }
+};
+
+static const ot_isp_cac_attr g_cmos_cac = {
+    1, /* en */
+    OT_OP_MODE_AUTO, /* op_type */
+    1, /* detect_mode */
+    35, /* purple_upper_limit */
+    (-15), /* purple_lower_limit */
+    /* acac_cfg */
+    {
+        {
+            {10, 300}, /* edge_threshold */
+            16, /* edge_gain */
+            3, /* cac_rb_strength */
+            63, /* purple_alpha */
+            63, /* edge_alpha */
+            25, /* satu_low_threshold */
+            16383, /* satu_high_threshold */
+        },
+        {
+            /* edge_threshold */
+            {
+                {100, 100, 100, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150},
+                {500, 500, 500, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600}
+            },
+            /* edge_gain */
+            { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 },
+            /* cac_rb_strength */
+            { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
+            /* purple_alpha */
+            { 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 },
+            /* edge_alpha */
+            { 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 },
+            /* satu_low_threshold */
+            { 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 },
+            /* satu_high_threshold */
+            { 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383, 16383,
+              16383, 16383 },
+        }
+    },
+    /* lcac_cfg */
+    {
+        60, /* purple_detect_range */
+        200, /* var_threshold */
+        { 1500, 1500, 0 }, /* r_detect_threshold */
+        { 1500, 1500, 0 }, /* g_detect_threshold */
+        { 4095, 1500, 0 }, /* b_detect_threshold */
+        {
+            0, /* de_purple_cr_strength */
+            3, /* de_purple_cb_strength */
+        },
+        {
+            /* de_purple_cr_strength */
+            { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+            /* de_purple_cb_strength */
+            { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
+        }
+    }
+};
+
+static ot_isp_noise_calibration g_cmos_noise_calibration  = {
+    {
+        0, 0.0002908287, 0.0213421710, 0.0000000897, 0.0001242161, 0.0114417665,
+        0.0002908287, 0.0213421710, 0.0000000897, 0.0001242161, 0.0114417665, 3200.0000000000, 0, 0, 0, 0
+    }
+};
+
+static const ot_isp_nr_attr g_cmos_bayer_nr = {
+    1,      /* bEnable */
+    OT_OP_MODE_AUTO,      /* enOpType */
+    {
+        1,      /* md_enable */
+    },
+    0,      /* lsc_nr_enable */
+    0,      /* lsc_ratio1 */
+    {
+        85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+        85, 85, 85, 85, 85, 85, 90, 90, 90, 95, 95, 95, 100, 100, 100, 100, 100
+    },   /* CoringRatio */
+    {
+        128, 128, 128, 128, 128, 128, 110, 90,
+        77, 77, 77, 77, 77, 77, 77, 77,    // u1.7 x 32  (128 = 1.0f)  mix_gain
+        77, 77, 77, 77, 77, 77, 77, 77,
+        77, 77, 77, 77, 77, 77, 77, 77
+    },
+    OT_ISP_MD_MODE,      /* ref_mode */
+    0,      /* load_ref_enable */
+    /* snr_cfg */
+    {
+        0, /* snr_version */
+        {
+            {
+                /* snr auto */
+                {
+                    {
+                        {108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108},
+                        {108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108},
+                        {108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108},
+                        {108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108}
+                    },
+                    {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, /* sfm0_detail_prot */
+                    {512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, 512}, /* sfm1_str */
+                    {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, /* sfm1_adp_strength */
+                    {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, /* sfm6_strength */
+                    {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, /* sfm7_strength */
+                    {100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, /* sth */
+                    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* tss */
+                    {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128}, /* fine_str */
+                    {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, /* coring_wgt */
+                    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* coring_mot_ratio */
+                    {   /* noisesd_lut */
+                        {2, 2, 3, 3, 4, 6, 7, 15, 29, 59, 117, 234, 255, 255, 255, 255},
+                        {2, 2, 3, 3, 4, 6, 7, 15, 29, 59, 117, 234, 255, 255, 255, 255},
+                        {2, 2, 3, 3, 4, 6, 7, 15, 29, 59, 117, 234, 255, 255, 255, 255},
+                        {3, 4, 6, 8, 11, 15, 21, 32, 50, 82, 142, 255, 255, 255, 255, 255},
+                        {4, 6, 8, 11, 15, 21, 30, 43, 65, 100, 164, 255, 255, 255, 255, 255},
+                        {5, 7, 9, 13, 18, 26, 36, 52, 76, 116, 183, 255, 255, 255, 255, 255},
+                        {6, 8, 11, 15, 21, 29, 41, 60, 87, 129, 201, 255, 255, 255, 255, 255},
+                        {7, 9, 12, 17, 23, 33, 46, 66, 96, 142, 217, 255, 255, 255, 255, 255},
+                        {7, 10, 13, 18, 26, 36, 50, 72, 104, 153, 232, 255, 255, 255, 255, 255},
+                        {8, 10, 14, 20, 28, 39, 54, 78, 112, 164, 246, 255, 255, 255, 255, 255},
+                        {8, 11, 15, 21, 29, 41, 58, 83, 119, 174, 255, 255, 255, 255, 255, 255},
+                        {9, 12, 16, 22, 31, 44, 62, 88, 126, 183, 255, 255, 255, 255, 255, 255},
+                        {9, 12, 17, 23, 33, 46, 65, 93, 133, 192, 255, 255, 255, 255, 255, 255},
+                        {10, 13, 18, 25, 34, 48, 68, 97, 139, 201, 255, 255, 255, 255, 255, 255},
+                        {10, 14, 19, 26, 36, 50, 71, 101, 145, 209, 255, 255, 255, 255, 255, 255},
+                        {11, 14, 19, 27, 37, 53, 74, 105, 150, 217, 255, 255, 255, 255, 255, 255},
+                        {11, 15, 20, 28, 39, 54, 77, 109, 156, 224, 255, 255, 255, 255, 255, 255},
+                        {11, 15, 21, 29, 40, 56, 79, 113, 161, 232, 255, 255, 255, 255, 255, 255},
+                        {12, 16, 21, 30, 41, 58, 82, 117, 166, 239, 255, 255, 255, 255, 255, 255},
+                        {12, 16, 22, 30, 43, 60, 85, 120, 171, 246, 255, 255, 255, 255, 255, 255},
+                        {13, 17, 23, 31, 44, 62, 87, 124, 176, 252, 255, 255, 255, 255, 255, 255},
+                        {13, 17, 23, 32, 45, 63, 89, 127, 181, 255, 255, 255, 255, 255, 255, 255},
+                        {13, 17, 24, 33, 46, 65, 92, 130, 185, 255, 255, 255, 255, 255, 255, 255},
+                        {14, 18, 24, 34, 47, 67, 94, 133, 190, 255, 255, 255, 255, 255, 255, 255},
+                        {14, 18, 25, 35, 48, 68, 96, 137, 194, 255, 255, 255, 255, 255, 255, 255},
+                        {14, 19, 26, 35, 50, 70, 98, 140, 198, 255, 255, 255, 255, 255, 255, 255},
+                        {14, 19, 26, 36, 51, 71, 100, 143, 203, 255, 255, 255, 255, 255, 255, 255},
+                        {15, 19, 27, 37, 52, 73, 102, 146, 207, 255, 255, 255, 255, 255, 255, 255},
+                        {15, 20, 27, 38, 53, 74, 104, 148, 211, 255, 255, 255, 255, 255, 255, 255},
+                        {15, 20, 28, 38, 54, 75, 106, 151, 215, 255, 255, 255, 255, 255, 255, 255},
+                        {16, 21, 28, 39, 55, 77, 108, 154, 219, 255, 255, 255, 255, 255, 255, 255},
+                        {16, 21, 29, 40, 56, 78, 110, 157, 222, 255, 255, 255, 255, 255, 255, 255}
+                    },
+                },
+
+                /* snr manual */
+                {
+                    { 108, 108, 108, 108 }, /* snr_sfm0_coarstr */
+                    16, /* sfm0_detail_prot */
+                    512, /* sfm1_str */
+                    2, /* sfm1_adp_strength */
+                    64, /* sfm6_strength */
+                    64, /* sfm7_strength */
+                    100, /* sth */
+                    0, /* tss */
+                    128, /* fine_str */
+                    50, /* coring_wgt */
+                    0,  /* coring_mot_ratio */
+                    {
+                        7, 7, 7, 21, 29, 35, 40, 45, 49, 53, 56, 60, 63, 66, 69, 72,
+                        74, 77, 79, 82, 84, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107
+                    },  /* noisesd_lut */
+                },
+            },
+        },
+    },
+    /* md_cfg */
+    {
+        .md_cfg = {
+            /* md auto */
+            {
+                {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, /* md_mode */
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, /* md_size_ratio */
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, /* md_anti_flicker_str */
+                {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26},   /* md_static_ratio */
+                {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},   /* md_motion_ratio */
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},   /* md_static_finestr */
+                {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}, /* tnr_tfs */
+                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* user_define_md */
+                {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* user_define_slope */
+                {90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90}, /* user_define_dark_thresh */
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, /* user_define_color_thresh */
+                {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, /* sfr_r */
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, /* sfr_g */
+                {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}  /* sfr_b */
+            },
+
+            /* md_manual */
+            {
+                2, /* md_mode */
+                32, /* md_size_ratio */
+                32, /* md_anti_flicker_str */
+                26, /* md_static_ratio */
+                13, /* md_motion_ratio */
+                32, /* md_static_finestr */
+                255, /* tnr_tfs */
+                0, /* user_define_md */
+                0, /* user_define_bright_thresh */
+                90, /* user_define_dark_thresh */
+                16, /* user_define_color_thresh */
+                26, /* sfr_r */
+                32, /* sfr_g */
+                26  /* sfr_b */
+            },
+        },
+    },
+    /* wdr_cfg */
+    {
+        {16, 16, 16, 16}, /* sfm0_wdr_frame_str */
+        {16, 16, 16, 16}, /* sfm0_fusion_frame_str */
+        {64, 16, 16, 16}, /* snr_wdr_sfm6_strength */
+        {64, 16, 16, 16}, /* snr_wdr_sfm7_strength */
+        {64, 16, 16, 16}, /* snr_fusion_sfm6_strength */
+        {64, 16, 16, 16}, /* snr_fusion_sfm7_strength */
+        {16, 16, 16, 16}, /* md_wdr_frame_str */
+        {16, 16, 16, 16}, /* md_fusion_frame_str */
+    },
+    /* dering_cfg */
+    {
+        {
+            {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, /* dering_strength */
+            {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, /* dering_thresh */
+            {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, /* dering_static_str */
+            {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, /* dering_motion_str */
+        },
+        {
+            64, /* dering_strength */
+            64, /* dering_thresh */
+            16, /* dering_static_str */
+            16, /* dering_motion_str */
+        },
+    },
+};
+
+static const ot_isp_ldci_attr g_cmos_ldci = {
+    /* enable */
+    1,
+    /* gauss_lpf_sigma */
+    36,
+    /* ot_op_mode */
+    0,
+
+    /* ot_isp_ldci_manual_attr */
+    {
+        /* ot_isp_ldci_he_wgt_attr */
+        {
+            /* he_pos_wgt */
+            {
+                50, 80, 32
+            },
+            /* he_neg_wgt */
+            {
+                60, 80, 128
+            }
+        },
+
+        /* blc_ctrl */
+        20
+    },
+
+    /* ot_isp_ldci_auto_attr */
+    {
+        /* he_wgt[OT_ISP_AUTO_ISO_NUM] */
+        {
+            {{50, 80, 32}, {60, 80, 128}},
+            {{45, 80, 16}, {45, 80, 128}},
+            {{42, 70, 0}, {45, 80, 128}},
+            {{40, 70, 0}, {45, 80, 0}},
+            {{35, 70, 0}, {24, 72, 0}},
+            {{32, 64, 0}, {12, 64, 0}},
+            {{12, 24, 0}, {8, 54, 0}},
+            {{8, 20, 0}, {6, 36, 0}},
+            {{6, 12, 0}, {0, 8, 0}},
+            {{0, 8, 0}, {0, 6, 0}},
+            {{0, 6, 0}, {0, 2, 0}},
+            {{0, 2, 0}, {0, 1, 0}},
+            {{0, 1, 0}, {0, 1, 0}},
+            {{0, 1, 0}, {0, 1, 0}},
+            {{0, 1, 0}, {0, 1, 0}},
+            {{0, 1, 0}, {0, 1, 0}}
+        },
+
+        /* blc_ctrl */
+        { 20, 20, 20, 20, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }
+    },
+
+    /* tpr_incr_coef */
+    8,
+    /* tpr_decr_coef */
+    8
+};
+
+static const ot_isp_gamma_attr g_cmos_gamma = {
+    1,
+    {
+        0,   13,   27,   40,   54,   68,   81,   95,  108,  121,  135,  150,  166,  180,  195,  210,  226,  242,
+        259,  269,  281,  292,  303,  315,  327,  339,  352,  364,  376,  389,  402,  415,  425,  435,  446,  456,
+        467,  477,  488,  499,  510,  521,  532,  543,  555,  566,  578,  591,  602,  613,  625,  636,  648,  659,
+        671,  683,  695,  708,  721,  734,  748,  762,  777,  792,  809,  817,  826,  836,  845,  855,  865,  875,
+        885,  896,  906,  917,  928,  939,  950,  961,  972,  983,  994, 1005, 1017, 1028, 1039, 1051, 1062, 1073,
+        1085, 1096, 1107, 1118, 1129, 1140, 1151, 1161, 1172, 1182, 1193, 1203, 1213, 1223, 1234, 1244, 1254, 1264,
+        1274, 1284, 1295, 1305, 1315, 1325, 1336, 1346, 1357, 1367, 1378, 1389, 1400, 1411, 1422, 1433, 1445, 1456,
+        1468, 1480, 1493, 1499, 1505, 1511, 1518, 1524, 1531, 1537, 1544, 1551, 1558, 1564, 1571, 1578, 1585, 1592,
+        1599, 1607, 1614, 1621, 1628, 1635, 1643, 1650, 1657, 1665, 1672, 1679, 1687, 1694, 1702, 1709, 1716, 1724,
+        1731, 1738, 1746, 1753, 1761, 1768, 1775, 1783, 1790, 1797, 1804, 1811, 1819, 1826, 1833, 1840, 1847, 1854,
+        1861, 1867, 1874, 1881, 1888, 1894, 1901, 1907, 1914, 1920, 1926, 1932, 1939, 1945, 1951, 1956, 1962, 1968,
+        1974, 1980, 1986, 1991, 1997, 2003, 2008, 2014, 2020, 2025, 2031, 2036, 2042, 2047, 2052, 2058, 2063, 2068,
+        2074, 2079, 2084, 2089, 2094, 2099, 2105, 2110, 2115, 2120, 2125, 2130, 2135, 2140, 2145, 2150, 2154, 2159,
+        2164, 2169, 2174, 2179, 2183, 2188, 2193, 2198, 2202, 2207, 2212, 2217, 2221, 2226, 2231, 2235, 2240, 2244,
+        2249, 2254, 2258, 2263, 2268, 2272, 2277, 2281, 2286, 2290, 2295, 2299, 2304, 2308, 2312, 2317, 2321, 2325,
+        2330, 2334, 2338, 2342, 2347, 2351, 2355, 2359, 2363, 2368, 2372, 2376, 2380, 2384, 2388, 2392, 2396, 2400,
+        2404, 2408, 2412, 2416, 2420, 2424, 2428, 2432, 2436, 2439, 2443, 2447, 2451, 2455, 2459, 2463, 2466, 2470,
+        2474, 2478, 2482, 2485, 2489, 2493, 2497, 2500, 2504, 2508, 2512, 2515, 2519, 2523, 2527, 2530, 2534, 2538,
+        2541, 2545, 2548, 2552, 2556, 2559, 2563, 2566, 2570, 2574, 2577, 2581, 2584, 2588, 2591, 2594, 2598, 2601,
+        2605, 2608, 2612, 2615, 2618, 2622, 2625, 2629, 2632, 2635, 2639, 2642, 2645, 2649, 2652, 2655, 2659, 2662,
+        2665, 2668, 2672, 2675, 2678, 2681, 2685, 2688, 2691, 2694, 2698, 2701, 2704, 2707, 2710, 2714, 2717, 2720,
+        2723, 2727, 2730, 2733, 2736, 2739, 2743, 2746, 2749, 2752, 2755, 2758, 2762, 2765, 2768, 2771, 2774, 2777,
+        2781, 2784, 2787, 2790, 2793, 2796, 2800, 2803, 2806, 2809, 2812, 2815, 2818, 2821, 2824, 2827, 2831, 2834,
+        2837, 2840, 2843, 2846, 2849, 2852, 2855, 2858, 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885, 2887,
+        2890, 2893, 2896, 2899, 2902, 2905, 2908, 2910, 2913, 2916, 2919, 2922, 2924, 2927, 2930, 2933, 2936, 2938,
+        2941, 2944, 2946, 2949, 2952, 2954, 2957, 2960, 2962, 2965, 2967, 2970, 2972, 2975, 2978, 2980, 2983, 2985,
+        2988, 2990, 2993, 2995, 2998, 3000, 3002, 3005, 3007, 3010, 3012, 3015, 3017, 3019, 3022, 3024, 3026, 3029,
+        3031, 3034, 3036, 3038, 3041, 3043, 3045, 3048, 3050, 3052, 3055, 3057, 3059, 3062, 3064, 3066, 3069, 3071,
+        3073, 3075, 3078, 3080, 3082, 3085, 3087, 3089, 3092, 3094, 3096, 3098, 3101, 3103, 3105, 3107, 3110, 3112,
+        3114, 3116, 3119, 3121, 3123, 3125, 3128, 3130, 3132, 3134, 3136, 3139, 3141, 3143, 3145, 3147, 3149, 3152,
+        3154, 3156, 3158, 3160, 3162, 3165, 3167, 3169, 3171, 3173, 3175, 3177, 3179, 3182, 3184, 3186, 3188, 3190,
+        3192, 3194, 3196, 3198, 3201, 3203, 3205, 3207, 3209, 3211, 3213, 3215, 3217, 3219, 3221, 3223, 3225, 3227,
+        3230, 3232, 3234, 3236, 3238, 3240, 3242, 3244, 3246, 3248, 3250, 3252, 3254, 3256, 3258, 3260, 3262, 3264,
+        3266, 3268, 3270, 3272, 3274, 3276, 3278, 3280, 3282, 3283, 3285, 3287, 3289, 3291, 3293, 3295, 3297, 3299,
+        3301, 3303, 3305, 3307, 3309, 3311, 3312, 3314, 3316, 3318, 3320, 3322, 3324, 3326, 3328, 3330, 3332, 3334,
+        3335, 3337, 3339, 3341, 3343, 3345, 3347, 3349, 3351, 3353, 3355, 3356, 3358, 3360, 3362, 3364, 3366, 3368,
+        3370, 3371, 3373, 3375, 3377, 3379, 3381, 3382, 3384, 3386, 3388, 3390, 3392, 3393, 3395, 3397, 3399, 3401,
+        3403, 3404, 3406, 3408, 3410, 3412, 3413, 3415, 3417, 3419, 3421, 3423, 3424, 3426, 3428, 3430, 3432, 3434,
+        3435, 3437, 3439, 3441, 3443, 3445, 3447, 3448, 3450, 3452, 3454, 3456, 3458, 3460, 3462, 3464, 3466, 3468,
+        3470, 3472, 3474, 3475, 3477, 3479, 3481, 3483, 3486, 3488, 3490, 3492, 3494, 3496, 3498, 3500, 3502, 3504,
+        3506, 3508, 3510, 3512, 3514, 3517, 3519, 3521, 3523, 3525, 3527, 3529, 3531, 3533, 3536, 3538, 3540, 3542,
+        3544, 3546, 3548, 3550, 3553, 3555, 3557, 3559, 3561, 3563, 3565, 3568, 3570, 3572, 3574, 3576, 3578, 3580,
+        3582, 3585, 3587, 3589, 3591, 3593, 3595, 3597, 3599, 3601, 3603, 3605, 3608, 3610, 3612, 3614, 3616, 3618,
+        3620, 3622, 3624, 3626, 3628, 3630, 3632, 3634, 3636, 3638, 3640, 3642, 3645, 3647, 3649, 3651, 3653, 3655,
+        3657, 3659, 3661, 3663, 3665, 3667, 3669, 3671, 3673, 3675, 3677, 3679, 3681, 3683, 3685, 3687, 3689, 3691,
+        3693, 3695, 3697, 3699, 3701, 3704, 3706, 3708, 3710, 3712, 3714, 3716, 3718, 3720, 3722, 3724, 3726, 3728,
+        3730, 3732, 3734, 3736, 3738, 3740, 3742, 3744, 3746, 3748, 3750, 3752, 3754, 3756, 3758, 3760, 3762, 3764,
+        3766, 3767, 3769, 3771, 3773, 3775, 3777, 3779, 3781, 3783, 3785, 3787, 3789, 3791, 3793, 3795, 3797, 3799,
+        3801, 3803, 3804, 3806, 3808, 3810, 3812, 3814, 3816, 3818, 3820, 3822, 3824, 3826, 3828, 3830, 3832, 3834,
+        3836, 3837, 3839, 3841, 3843, 3845, 3847, 3849, 3851, 3853, 3855, 3857, 3858, 3860, 3862, 3864, 3866, 3868,
+        3870, 3872, 3873, 3875, 3877, 3879, 3881, 3883, 3885, 3887, 3888, 3890, 3892, 3894, 3896, 3898, 3900, 3902,
+        3904, 3905, 3907, 3909, 3911, 3913, 3915, 3917, 3919, 3920, 3922, 3924, 3926, 3928, 3930, 3932, 3934, 3935,
+        3937, 3939, 3941, 3943, 3945, 3947, 3949, 3950, 3952, 3954, 3955, 3957, 3959, 3961, 3963, 3965, 3967, 3969,
+        3971, 3972, 3974, 3976, 3977, 3979, 3981, 3983, 3985, 3987, 3989, 3991, 3993, 3994, 3996, 3998, 4000, 4001,
+        4003, 4005, 4006, 4008, 4010, 4012, 4014, 4016, 4018, 4020, 4022, 4023, 4025, 4027, 4028, 4030, 4032, 4034,
+        4036, 4037, 4039, 4041, 4042, 4044, 4046, 4048, 4050, 4052, 4054, 4056, 4058, 4059, 4061, 4063, 4064, 4066,
+        4068, 4070, 4072, 4073, 4075, 4077, 4078, 4080, 4082, 4084, 4086, 4087, 4089, 4091, 4092, 4094, 4095,
+    },
+    3,
+};
+
+#ifdef CONFIG_OT_ISP_PREGAMMA_SUPPORT
+static const ot_isp_pregamma_attr g_cmos_pregamma = {
+    0,
+    {
+        0,       12417,   21619,   29902,   37641,   44997,   52063,   58896,   65536,   72012,   78344,   84552,
+        90647,   96641,   102544,  108363,  114105,  119775,  125379,  130921,  136406,  141835,  147213,  152542,
+        157825,  163065,  168262,  173420,  178540,  183623,  188671,  193686,  198668,  203619,  208541,  213433,
+        218298,  223136,  227947,  232734,  237496,  242234,  246949,  251642,  256313,  260962,  265592,  270201,
+        274790,  279360,  283912,  288446,  292962,  297460,  301942,  306407,  310855,  315288,  319706,  324108,
+        328495,  332868,  337226,  341571,  345901,  350218,  354522,  358813,  363091,  367356,  371609,  375850,
+        380079,  384296,  388502,  392696,  396880,  401052,  405213,  409364,  413504,  417634,  421754,  425863,
+        429963,  434053,  438134,  442205,  446266,  450319,  454362,  458396,  462422,  466438,  470446,  474446,
+        478437,  482420,  486395,  490361,  494320,  498270,  502213,  506148,  510076,  513996,  517908,  521813,
+        525711,  529601,  533485,  537361,  541231,  545093,  548949,  552798,  556640,  560475,  564305,  568127,
+        571943,  575753,  579557,  583354,  587145,  590930,  594709,  598482,  602249,  606010,  609765,  613515,
+        617259,  620997,  624729,  628456,  632178,  635894,  639604,  643309,  647009,  650704,  654393,  658077,
+        661756,  665430,  669099,  672763,  676421,  680075,  683724,  687368,  691008,  694642,  698272,  701897,
+        705517,  709133,  712744,  716351,  719953,  723550,  727143,  730732,  734316,  737896,  741471,  745043,
+        748610,  752172,  755731,  759285,  762835,  766381,  769923,  773461,  776995,  780525,  784050,  787572,
+        791090,  794604,  798114,  801620,  805123,  808622,  812116,  815608,  819095,  822579,  826059,  829535,
+        833008,  836477,  839942,  843404,  846862,  850317,  853768,  857216,  860661,  864102,  867539,  870973,
+        874404,  877831,  881255,  884676,  888093,  891507,  894918,  898326,  901730,  905131,  908529,  911924,
+        915316,  918704,  922090,  925472,  928851,  932227,  935600,  938970,  942337,  945701,  949062,  952420,
+        955775,  959127,  962477,  965823,  969166,  972507,  975845,  979179,  982511,  985840,  989167,  992490,
+        995811,  999129,  1002444, 1005757, 1009067, 1012374, 1015678, 1018980, 1022279, 1025575, 1028869, 1032160,
+        1035448, 1038734, 1042017, 1045298, 1048575
+    }
+};
+#endif
+
+static const ot_isp_sharpen_attr g_cmos_yuv_sharpen = {
+    /* en */
+    1,
+    /* motion_en */
+    0,
+    /* motion_threshold0 */
+    2,
+    /* motion_threshold1 */
+    8,
+    /* motion_gain0 */
+    0,
+    /* motion_gain1 */
+    256,
+    /* skin_umin */
+    100,
+    /* skin_vmin */
+    135,
+    /* skin_umax */
+    128,
+    /* skin_vmax */
+    150,
+    /* op_type */
+    OT_OP_MODE_AUTO,
+    /* detail_map */
+    OT_ISP_SHARPEN_NORMAL,
+    /* manual para */
+    {
+        /* luma_wgt[OT_ISP_SHARPEN_LUMA_NUM] */
+        {
+            31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+            31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31
+        },
+        /* texture_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            250, 420, 390, 390, 390, 390, 390, 370, 350, 330, 310, 290, 270, 270, 270, 270,
+            270, 270, 266, 260, 244, 230, 230, 230, 230, 230, 230, 210, 190, 190, 170, 150
+        },
+        /* edge_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            120, 123, 125, 128, 130, 135, 140, 148, 160, 168, 180, 190, 200, 210, 210, 210,
+            210, 210, 200, 190, 185, 175, 165, 160, 146, 136, 130, 128, 125, 123, 120, 120
+        },
+        /* texture_freq */
+        190,
+        /* edge_freq */
+        128,
+        /* over_shoot */
+        65,
+        /* under_shoot */
+        75,
+        /* motion_texture_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            250, 420, 390, 390, 390, 390, 390, 370, 350, 330, 310, 290, 270, 270, 270, 270,
+            270, 270, 266, 260, 244, 230, 230, 230, 230, 230, 230, 210, 190, 190, 170, 150
+        },
+        /* motion_edge_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            120, 123, 125, 128, 130, 135, 140, 148, 160, 168, 180, 190, 200, 210, 210, 210,
+            210, 210, 200, 190, 185, 175, 165, 160, 146, 136, 130, 128, 125, 123, 120, 120
+        },
+        /* motion_texture_freq */
+        190,
+        /* motion_edge_freq */
+        128,
+        /* motion_over_shoot */
+        65,
+        /* motion_under_shoot */
+        75,
+        /* u8shoot_sup_str */
+        7,
+        /* u8shoot_sup_adj */
+        9,
+        /* detail_ctrl */
+        128,
+        /* detail_ctrl_threshold */
+        180,
+        /* edge_filt_strength */
+        60,
+        /* edge_filt_max_cap */
+        18,
+        /* r_gain */
+        20,
+        /* g_gain */
+        32,
+        /* b_gain */
+        20,
+        /* skin_gain */
+        25,
+        /* max_sharp_gain */
+        40,
+        {
+            /* shoot_inner_threshold */
+            0,
+            /* shoot_outer_threshold */
+            0,
+            /* shoot_protect_threshold */
+            0,
+        },
+
+        {
+            /* edge_rly_fine_threshold */
+            0,
+            /* edge_rly_coarse_threshold */
+            0,
+            /* edge_overshoot */
+            65,
+            /* edge_undershoot */
+            120,
+            /* edge_gain_by_rly[OT_ISP_SHARPEN_RLYWGT_NUM] */
+            {
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            },
+            /* edge_rly_by_mot[OT_ISP_SHARPEN_STDGAIN_NUM] */
+            {
+                16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+            },
+            /* edge_rly_by_luma[OT_ISP_SHARPEN_STDGAIN_NUM] */
+            {
+                16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+            },
+        },
+        {
+            /* mf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM] */
+            {
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            },
+            /* hf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM] */
+            {
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            },
+            /* lmt_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM] */
+            {
+                16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+            },
+        },
+    },
+    /* auto para */
+    {
+        /* luma_wgt[OT_ISP_SHARPEN_GAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+        {
+            { 31, 31, 20, 20, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
+            { 31, 31, 20, 20, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
+            { 31, 31, 20, 20, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
+            { 31, 31, 20, 20, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
+            { 31, 31, 20, 20, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
+            { 31, 31, 20, 20, 17, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
+            { 31, 31, 20, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 },
+            { 31, 31, 23, 23, 23, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21 },
+            { 31, 31, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 },
+            { 31, 31, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 28, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }
+        },
+        /* texture_strength[OT_ISP_SHARPEN_GAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+        {
+            { 153, 153, 160, 145, 130, 130, 130, 105, 105, 105, 105, 85, 85, 85, 85, 85 },
+            { 172, 167, 190, 170, 145, 145, 145, 120, 120, 120, 120, 100, 100, 100, 100, 100 },
+            { 186, 178, 220, 195, 165, 165, 160, 140, 140, 135, 135, 120, 120, 120, 120, 120 },
+            { 201, 192, 255, 215, 180, 180, 175, 160, 160, 150, 150, 135, 135, 140, 140, 140 },
+            { 217, 207, 275, 230, 200, 200, 185, 175, 175, 160, 160, 150, 150, 160, 160, 160 },
+            { 233, 223, 285, 245, 210, 215, 200, 190, 190, 170, 170, 165, 165, 180, 180, 180 },
+            { 251, 239, 280, 260, 225, 225, 215, 205, 205, 180, 180, 185, 185, 200, 200, 200 },
+            { 269, 255, 275, 265, 240, 240, 230, 220, 220, 190, 190, 200, 200, 210, 210, 210 },
+            { 286, 272, 270, 270, 250, 250, 240, 225, 225, 200, 200, 220, 220, 220, 220, 220 },
+            { 300, 288, 265, 270, 250, 260, 245, 235, 235, 210, 210, 235, 235, 230, 230, 230 },
+            { 308, 299, 260, 265, 250, 270, 255, 245, 245, 220, 220, 245, 245, 230, 230, 230 },
+            { 312, 307, 260, 260, 250, 275, 260, 250, 250, 230, 230, 255, 255, 230, 230, 230 },
+            { 313, 310, 255, 255, 245, 280, 265, 255, 255, 235, 235, 265, 265, 230, 230, 230 },
+            { 311, 311, 250, 250, 240, 285, 270, 255, 255, 240, 240, 275, 275, 230, 230, 230 },
+            { 306, 311, 245, 245, 240, 290, 275, 250, 255, 245, 245, 280, 280, 230, 230, 230 },
+            { 297, 308, 240, 240, 240, 295, 280, 240, 250, 250, 250, 285, 285, 230, 230, 230 },
+            { 285, 301, 235, 235, 235, 295, 280, 235, 250, 250, 255, 290, 290, 230, 230, 230 },
+            { 273, 291, 230, 230, 230, 290, 280, 230, 250, 250, 260, 295, 295, 230, 230, 230 },
+            { 263, 281, 225, 225, 225, 285, 275, 225, 245, 250, 265, 300, 300, 225, 225, 225 },
+            { 255, 271, 225, 220, 220, 275, 270, 225, 245, 250, 270, 300, 300, 220, 220, 220 },
+            { 249, 259, 220, 215, 215, 270, 265, 225, 240, 245, 275, 300, 300, 210, 210, 210 },
+            { 243, 248, 220, 210, 210, 260, 260, 220, 235, 245, 280, 305, 305, 200, 200, 200 },
+            { 234, 238, 215, 205, 205, 255, 255, 220, 230, 240, 280, 305, 305, 190, 190, 190 },
+            { 224, 228, 215, 200, 200, 245, 245, 220, 230, 240, 285, 310, 310, 180, 180, 180 },
+            { 216, 218, 210, 195, 195, 235, 240, 215, 225, 235, 285, 310, 310, 175, 175, 175 },
+            { 208, 208, 200, 190, 190, 230, 235, 215, 220, 230, 285, 305, 305, 170, 170, 170 },
+            { 201, 201, 195, 180, 180, 220, 225, 210, 220, 225, 285, 305, 305, 160, 160, 160 },
+            { 195, 195, 185, 175, 175, 205, 220, 205, 215, 220, 285, 300, 300, 160, 160, 160 },
+            { 188, 188, 175, 170, 170, 195, 210, 195, 210, 215, 280, 300, 300, 150, 150, 150 },
+            { 181, 181, 170, 160, 160, 180, 205, 195, 205, 210, 280, 300, 300, 145, 145, 145 },
+            { 175, 175, 160, 155, 155, 165, 195, 195, 200, 205, 275, 300, 300, 130, 130, 130 },
+            { 171, 171, 150, 150, 150, 150, 150, 150, 195, 200, 270, 300, 300, 115, 115, 115 }
+        },
+        /* edge_strength */
+        {
+            { 195, 195, 195, 195, 195, 195, 400, 440, 500, 475, 475, 475, 475, 475, 475, 475 },
+            { 210, 210, 200, 200, 200, 200, 400, 440, 500, 485, 485, 485, 485, 485, 485, 485 },
+            { 235, 235, 220, 220, 220, 220, 400, 440, 500, 495, 495, 495, 495, 495, 495, 495 },
+            { 260, 260, 230, 230, 230, 230, 400, 440, 500, 500, 500, 500, 500, 500, 500, 500 },
+            { 295, 295, 240, 240, 240, 240, 400, 440, 500, 510, 510, 510, 510, 510, 510, 510 },
+            { 320, 320, 250, 250, 250, 250, 400, 440, 500, 520, 520, 520, 520, 520, 520, 520 },
+            { 340, 340, 260, 260, 260, 260, 420, 460, 540, 530, 530, 530, 530, 530, 530, 530 },
+            { 350, 350, 270, 270, 270, 270, 420, 460, 540, 540, 540, 540, 540, 540, 540, 540 },
+            { 360, 360, 280, 280, 280, 280, 420, 460, 540, 545, 545, 545, 545, 545, 545, 545 },
+            { 360, 360, 280, 280, 280, 280, 420, 460, 540, 550, 550, 550, 550, 550, 550, 550 },
+            { 355, 355, 285, 285, 285, 285, 420, 460, 540, 560, 560, 560, 560, 560, 560, 560 },
+            { 345, 345, 290, 290, 290, 290, 420, 460, 540, 565, 565, 565, 565, 565, 565, 565 },
+            { 335, 335, 290, 290, 290, 290, 420, 460, 540, 570, 570, 570, 570, 570, 570, 570 },
+            { 330, 330, 295, 295, 295, 295, 430, 470, 550, 575, 575, 575, 575, 575, 575, 575 },
+            { 325, 325, 295, 295, 295, 295, 430, 470, 550, 580, 580, 580, 580, 580, 580, 580 },
+            { 320, 320, 295, 295, 295, 295, 440, 470, 550, 575, 575, 575, 575, 575, 575, 575 },
+            { 315, 315, 295, 295, 295, 295, 440, 470, 550, 570, 570, 570, 570, 570, 570, 570 },
+            { 310, 310, 295, 295, 295, 295, 450, 480, 580, 565, 565, 565, 565, 565, 565, 565 },
+            { 305, 305, 295, 295, 295, 295, 460, 500, 580, 560, 560, 560, 560, 560, 560, 560 },
+            { 295, 295, 290, 290, 290, 290, 460, 500, 580, 555, 555, 555, 555, 555, 555, 555 },
+            { 285, 285, 285, 285, 285, 285, 460, 500, 580, 550, 550, 550, 550, 550, 550, 550 },
+            { 280, 280, 280, 280, 280, 280, 460, 500, 580, 540, 540, 540, 540, 540, 540, 540 },
+            { 275, 275, 275, 275, 275, 275, 460, 500, 580, 535, 535, 535, 535, 535, 535, 535 },
+            { 265, 265, 265, 265, 265, 265, 460, 500, 580, 530, 530, 530, 530, 530, 530, 530 },
+            { 250, 250, 250, 250, 250, 250, 460, 500, 580, 520, 520, 520, 520, 520, 520, 520 },
+            { 240, 240, 240, 240, 240, 240, 470, 500, 580, 515, 515, 515, 515, 515, 515, 515 },
+            { 220, 220, 220, 220, 220, 220, 470, 500, 580, 510, 510, 510, 510, 510, 510, 510 },
+            { 200, 200, 200, 200, 200, 200, 470, 500, 580, 500, 500, 500, 500, 500, 500, 500 },
+            { 180, 180, 180, 180, 180, 180, 480, 500, 580, 495, 495, 495, 495, 495, 495, 495 },
+            { 160, 160, 160, 160, 160, 160, 480, 500, 580, 485, 485, 485, 485, 485, 485, 485 },
+            { 140, 140, 140, 140, 140, 140, 480, 500, 580, 480, 480, 480, 480, 480, 480, 480 },
+            { 125, 125, 125, 125, 125, 125, 480, 500, 580, 470, 470, 470, 470, 470, 470, 470 }
+        },
+        /* texture_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 180, 190, 190, 170, 170, 170, 160, 140, 128, 128, 128, 100, 100, 100, 100, 100 },
+        /* edge_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 128, 100, 100, 100, 100, 100, 100, 100, 100, 100, 96, 96, 96, 96, 96, 96 },
+        /* over_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 60, 62, 62, 64, 64, 64, 56, 52, 50, 50, 30, 10, 10, 10, 10, 10 },
+        /* under_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 60, 62, 62, 64, 64, 64, 54, 50, 50, 30, 20, 20, 15, 15, 15, 15 },
+        /* motion_texture_strength[OT_ISP_SHARPEN_GAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+        {
+            { 153, 153, 160, 145, 130, 130, 130, 105, 105, 105, 105, 85, 85, 85, 85, 85 },
+            { 172, 167, 190, 170, 145, 145, 145, 120, 120, 120, 120, 100, 100, 100, 100, 100 },
+            { 186, 178, 220, 195, 165, 165, 160, 140, 140, 135, 135, 120, 120, 120, 120, 120 },
+            { 201, 192, 255, 215, 180, 180, 175, 160, 160, 150, 150, 135, 135, 140, 140, 140 },
+            { 217, 207, 275, 230, 200, 200, 185, 175, 175, 160, 160, 150, 150, 160, 160, 160 },
+            { 233, 223, 285, 245, 210, 215, 200, 190, 190, 170, 170, 165, 165, 180, 180, 180 },
+            { 251, 239, 280, 260, 225, 225, 215, 205, 205, 180, 180, 185, 185, 200, 200, 200 },
+            { 269, 255, 275, 265, 240, 240, 230, 220, 220, 190, 190, 200, 200, 210, 210, 210 },
+            { 286, 272, 270, 270, 250, 250, 240, 225, 225, 200, 200, 220, 220, 220, 220, 220 },
+            { 300, 288, 265, 270, 250, 260, 245, 235, 235, 210, 210, 235, 235, 230, 230, 230 },
+            { 308, 299, 260, 265, 250, 270, 255, 245, 245, 220, 220, 245, 245, 230, 230, 230 },
+            { 312, 307, 260, 260, 250, 275, 260, 250, 250, 230, 230, 255, 255, 230, 230, 230 },
+            { 313, 310, 255, 255, 245, 280, 265, 255, 255, 235, 235, 265, 265, 230, 230, 230 },
+            { 311, 311, 250, 250, 240, 285, 270, 255, 255, 240, 240, 275, 275, 230, 230, 230 },
+            { 306, 311, 245, 245, 240, 290, 275, 250, 255, 245, 245, 280, 280, 230, 230, 230 },
+            { 297, 308, 240, 240, 240, 295, 280, 240, 250, 250, 250, 285, 285, 230, 230, 230 },
+            { 285, 301, 235, 235, 235, 295, 280, 235, 250, 250, 255, 290, 290, 230, 230, 230 },
+            { 273, 291, 230, 230, 230, 290, 280, 230, 250, 250, 260, 295, 295, 230, 230, 230 },
+            { 263, 281, 225, 225, 225, 285, 275, 225, 245, 250, 265, 300, 300, 225, 225, 225 },
+            { 255, 271, 225, 220, 220, 275, 270, 225, 245, 250, 270, 300, 300, 220, 220, 220 },
+            { 249, 259, 220, 215, 215, 270, 265, 225, 240, 245, 275, 300, 300, 210, 210, 210 },
+            { 243, 248, 220, 210, 210, 260, 260, 220, 235, 245, 280, 305, 305, 200, 200, 200 },
+            { 234, 238, 215, 205, 205, 255, 255, 220, 230, 240, 280, 305, 305, 190, 190, 190 },
+            { 224, 228, 215, 200, 200, 245, 245, 220, 230, 240, 285, 310, 310, 180, 180, 180 },
+            { 216, 218, 210, 195, 195, 235, 240, 215, 225, 235, 285, 310, 310, 175, 175, 175 },
+            { 208, 208, 200, 190, 190, 230, 235, 215, 220, 230, 285, 305, 305, 170, 170, 170 },
+            { 201, 201, 195, 180, 180, 220, 225, 210, 220, 225, 285, 305, 305, 160, 160, 160 },
+            { 195, 195, 185, 175, 175, 205, 220, 205, 215, 220, 285, 300, 300, 160, 160, 160 },
+            { 188, 188, 175, 170, 170, 195, 210, 195, 210, 215, 280, 300, 300, 150, 150, 150 },
+            { 181, 181, 170, 160, 160, 180, 205, 195, 205, 210, 280, 300, 300, 145, 145, 145 },
+            { 175, 175, 160, 155, 155, 165, 195, 195, 200, 205, 275, 300, 300, 130, 130, 130 },
+            { 171, 171, 150, 150, 150, 150, 150, 150, 195, 200, 270, 300, 300, 115, 115, 115 }
+        },
+        /* motion_edge_strength     */
+        {
+            { 195, 195, 195, 195, 195, 195, 400, 440, 500, 475, 475, 475, 475, 475, 475, 475 },
+            { 210, 210, 200, 200, 200, 200, 400, 440, 500, 485, 485, 485, 485, 485, 485, 485 },
+            { 235, 235, 220, 220, 220, 220, 400, 440, 500, 495, 495, 495, 495, 495, 495, 495 },
+            { 260, 260, 230, 230, 230, 230, 400, 440, 500, 500, 500, 500, 500, 500, 500, 500 },
+            { 295, 295, 240, 240, 240, 240, 400, 440, 500, 510, 510, 510, 510, 510, 510, 510 },
+            { 320, 320, 250, 250, 250, 250, 400, 440, 500, 520, 520, 520, 520, 520, 520, 520 },
+            { 340, 340, 260, 260, 260, 260, 420, 460, 540, 530, 530, 530, 530, 530, 530, 530 },
+            { 350, 350, 270, 270, 270, 270, 420, 460, 540, 540, 540, 540, 540, 540, 540, 540 },
+            { 360, 360, 280, 280, 280, 280, 420, 460, 540, 545, 545, 545, 545, 545, 545, 545 },
+            { 360, 360, 280, 280, 280, 280, 420, 460, 540, 550, 550, 550, 550, 550, 550, 550 },
+            { 355, 355, 285, 285, 285, 285, 420, 460, 540, 560, 560, 560, 560, 560, 560, 560 },
+            { 345, 345, 290, 290, 290, 290, 420, 460, 540, 565, 565, 565, 565, 565, 565, 565 },
+            { 335, 335, 290, 290, 290, 290, 420, 460, 540, 570, 570, 570, 570, 570, 570, 570 },
+            { 330, 330, 295, 295, 295, 295, 430, 470, 550, 575, 575, 575, 575, 575, 575, 575 },
+            { 325, 325, 295, 295, 295, 295, 430, 470, 550, 580, 580, 580, 580, 580, 580, 580 },
+            { 320, 320, 295, 295, 295, 295, 440, 470, 550, 575, 575, 575, 575, 575, 575, 575 },
+            { 315, 315, 295, 295, 295, 295, 440, 470, 550, 570, 570, 570, 570, 570, 570, 570 },
+            { 310, 310, 295, 295, 295, 295, 450, 480, 580, 565, 565, 565, 565, 565, 565, 565 },
+            { 305, 305, 295, 295, 295, 295, 460, 500, 580, 560, 560, 560, 560, 560, 560, 560 },
+            { 295, 295, 290, 290, 290, 290, 460, 500, 580, 555, 555, 555, 555, 555, 555, 555 },
+            { 285, 285, 285, 285, 285, 285, 460, 500, 580, 550, 550, 550, 550, 550, 550, 550 },
+            { 280, 280, 280, 280, 280, 280, 460, 500, 580, 540, 540, 540, 540, 540, 540, 540 },
+            { 275, 275, 275, 275, 275, 275, 460, 500, 580, 535, 535, 535, 535, 535, 535, 535 },
+            { 265, 265, 265, 265, 265, 265, 460, 500, 580, 530, 530, 530, 530, 530, 530, 530 },
+            { 250, 250, 250, 250, 250, 250, 460, 500, 580, 520, 520, 520, 520, 520, 520, 520 },
+            { 240, 240, 240, 240, 240, 240, 470, 500, 580, 515, 515, 515, 515, 515, 515, 515 },
+            { 220, 220, 220, 220, 220, 220, 470, 500, 580, 510, 510, 510, 510, 510, 510, 510 },
+            { 200, 200, 200, 200, 200, 200, 470, 500, 580, 500, 500, 500, 500, 500, 500, 500 },
+            { 180, 180, 180, 180, 180, 180, 480, 500, 580, 495, 495, 495, 495, 495, 495, 495 },
+            { 160, 160, 160, 160, 160, 160, 480, 500, 580, 485, 485, 485, 485, 485, 485, 485 },
+            { 140, 140, 140, 140, 140, 140, 480, 500, 580, 480, 480, 480, 480, 480, 480, 480 },
+            { 125, 125, 125, 125, 125, 125, 480, 500, 580, 470, 470, 470, 470, 470, 470, 470 }
+        },
+        /* motion_texture_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 180, 190, 190, 170, 170, 170, 160, 140, 128, 128, 128, 100, 100, 100, 100, 100 },
+        /* motion_edge_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 128, 100, 100, 100, 100, 100, 100, 100, 100, 100, 96, 96, 96, 96, 96, 96 },
+        /* motion_over_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 60, 62, 62, 64, 64, 64, 56, 52, 50, 50, 30, 10, 10, 10, 10, 10 },
+        /* motion_under_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 60, 62, 62, 64, 64, 64, 54, 50, 50, 30, 20, 20, 15, 15, 15, 15 },
+        /* shoot_sup_strength[OT_ISP_AUTO_ISO_NUM] */
+        { 8, 8, 7, 7, 7, 6, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0 },
+        /* shoot_sup_adj[OT_ISP_AUTO_ISO_NUM] */
+        { 9, 9, 8, 8, 7, 7, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0 },
+        /* detail_ctrl[OT_ISP_AUTO_ISO_NUM] */
+        { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 120, 120, 120, 120, 120, 120 },
+        /* detail_ctrl_threshold[OT_ISP_AUTO_ISO_NUM] */
+        { 180, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160 },
+        /* edge_filt_strength[OT_ISP_AUTO_ISO_NUM] */
+        { 60, 58, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62 },
+        /* edge_filt_max_cap */
+        { 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 },
+        /* r_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 12, 16, 20, 24, 24, 24, 26, 28, 31, 31, 31, 31, 31, 31, 31, 31 },
+        /* g_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32 },
+        /* b_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 18, 20, 24, 24, 24, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 },
+        /* skin_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+        /* max_sharp_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 30, 30, 30, 30, 30, 26, 20, 20, 18, 18, 18, 18, 18, 18, 18, 18 },
+        {
+            /* shoot_inner_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* shoot_outer_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* shoot_protect_threshold[OT_ISP_AUTO_ISO_NUM]  */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        },
+        {
+            /* edge_rly_fine_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* edge_rly_coarse_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* edge_overshoot[OT_ISP_AUTO_ISO_NUM] */
+            {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
+            /* edge_undershoot[OT_ISP_AUTO_ISO_NUM] */
+            {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120},
+            /* edge_gain_by_rly[OT_ISP_SHARPEN_RLYWGT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
+            },
+            /* edge_rly_by_mot[OT_ISP_SHARPEN_STDGAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
+            },
+            /* edge_rly_by_luma[OT_ISP_SHARPEN_STDGAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
+            },
+        },
+        {
+            /* mf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
+            },
+            /* hf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
+            },
+            /* lmf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
+            },
+        },
+    },
+};
+
+static const ot_isp_sharpen_attr g_cmos_yuv_sharpen_wdr = {
+    /* en */
+    1,
+    /* motion_en */
+    0,
+    /* motion_threshold0 */
+    2,
+    /* motion_threshold1 */
+    8,
+    /* motion_gain0 */
+    0,
+    /* motion_gain1 */
+    256,
+    /* skin_umin */
+    100,
+    /* skin_vmin */
+    135,
+    /* skin_umax */
+    128,
+    /* skin_vmax */
+    150,
+    /* op_type */
+    OT_OP_MODE_AUTO,
+    /* detail_map */
+    OT_ISP_SHARPEN_NORMAL,
+    /* manual para */
+    {
+        /* luma_wgt[OT_ISP_SHARPEN_LUMA_NUM] */
+        {
+            31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+            31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31
+        },
+        /* texture_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            250, 420, 390, 390, 390, 390, 390, 370, 350, 330, 310, 290, 270, 270, 270, 270,
+            270, 270, 266, 260, 244, 230, 230, 230, 230, 230, 230, 210, 190, 190, 170, 150
+        },
+        /* edge_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            120, 123, 125, 128, 130, 135, 140, 148, 160, 168, 180, 190, 200, 210, 210, 210,
+            210, 210, 200, 190, 185, 175, 165, 160, 146, 136, 130, 128, 125, 123, 120, 120
+        },
+        /* texture_freq */
+        200,
+        /* edge_freq */
+        128,
+        /* over_shoot */
+        65,
+        /* under_shoot */
+        75,
+        /* motion_texture_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            250, 420, 390, 390, 390, 390, 390, 370, 350, 330, 310, 290, 270, 270, 270, 270,
+            270, 270, 266, 260, 244, 230, 230, 230, 230, 230, 230, 210, 190, 190, 170, 150
+        },
+        /* motion_edge_strength[OT_ISP_SHARPEN_GAIN_NUM] */
+        {
+            120, 123, 125, 128, 130, 135, 140, 148, 160, 168, 180, 190, 200, 210, 210, 210,
+            210, 210, 200, 190, 185, 175, 165, 160, 146, 136, 130, 128, 125, 123, 120, 120
+        },
+        /* motion_texture_freq */
+        200,
+        /* motion_edge_freq */
+        128,
+        /* motion_over_shoot */
+        65,
+        /* motion_under_shoot */
+        75,
+        /* u8shoot_sup_str */
+        7,
+        /* u8shoot_sup_adj */
+        9,
+        /* detail_ctrl */
+        128,
+        /* detail_ctrl_threshold */
+        180,
+        /* edge_filt_strength */
+        50,
+        /* edge_filt_max_cap */
+        18,
+        /* r_gain */
+        20,
+        /* g_gain */
+        32,
+        /* b_gain */
+        20,
+        /* skin_gain */
+        25,
+        /* max_sharp_gain */
+        40,
+        {
+            /* shoot_inner_threshold */
+            0,
+            /* shoot_outer_threshold */
+            0,
+            /* shoot_protect_threshold */
+            0,
+        },
+
+        {
+            /* edge_rly_fine_threshold */
+            0,
+            /* edge_rly_coarse_threshold */
+            0,
+            /* edge_overshoot */
+            65,
+            /* edge_undershoot */
+            120,
+            /* edge_gain_by_rly[OT_ISP_SHARPEN_RLYWGT_NUM] */
+            {
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            },
+            /* edge_rly_by_mot[OT_ISP_SHARPEN_STDGAIN_NUM] */
+            {
+                16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+            },
+            /* edge_rly_by_luma[OT_ISP_SHARPEN_STDGAIN_NUM] */
+            {
+                16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+            },
+        },
+        {
+            /* mf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM] */
+            {
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            },
+            /* hf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM] */
+            {
+                32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
+            },
+            /* lmt_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM] */
+            {
+                16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16
+            },
+        },
+    },
+    /* auto para */
+    {
+        /* luma_wgt[OT_ISP_SHARPEN_GAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+        {
+            { 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 },
+            { 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 },
+            { 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 },
+            { 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 },
+            { 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26 },
+            { 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26 },
+            { 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26 },
+            { 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27 },
+            { 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27 },
+            { 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28 },
+            { 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28 },
+            { 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 },
+            { 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 },
+            { 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 },
+            { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
+            { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
+            { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
+            { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
+            { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 },
+            { 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }
+        },
+
+        /* texture_strength[OT_ISP_SHARPEN_GAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+        {
+            {159, 159, 159,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73,  73},
+            {167, 167, 167,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75},
+            {176, 176, 176,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,  78},
+            {186, 186, 186,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81},
+            {196, 196, 196,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85,  85},
+            {206, 206, 206,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89},
+            {217, 217, 217,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93,  93},
+            {227, 227, 227,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98,  98},
+            {237, 237, 237, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102},
+            {246, 246, 246, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106},
+            {254, 254, 254, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109},
+            {261, 261, 261, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112},
+            {268, 268, 268, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115},
+            {272, 272, 272, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116},
+            {276, 276, 276, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117},
+            {277, 277, 277, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116},
+            {276, 276, 276, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114},
+            {274, 274, 274, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111},
+            {270, 270, 270, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107},
+            {265, 265, 265, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102},
+            {258, 258, 258,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96,  96},
+            {250, 250, 250,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,  90},
+            {242, 242, 242,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,  83},
+            {233, 233, 233,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,  77},
+            {224, 224, 224,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70,  70},
+            {215, 215, 215,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63,  63},
+            {206, 206, 206,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56,  56},
+            {198, 198, 198,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50,  50},
+            {191, 191, 191,  44,  44,  44,  44,  44,  44,  44,  44,  44,  44,  44,  44,  44},
+            {184, 184, 184,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39,  39},
+            {179, 179, 179,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35,  35},
+            {175, 175, 175,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32,  32},
+        },
+        /* edge_strength     */
+        {
+            {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149},
+            {152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152},
+            {157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157},
+            {163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163},
+            {170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170},
+            {178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178},
+            {185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185},
+            {193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193},
+            {201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201},
+            {208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208},
+            {215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215},
+            {220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220},
+            {225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225},
+            {227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227},
+            {228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228},
+            {227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227},
+            {223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223},
+            {218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218},
+            {210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210},
+            {201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201},
+            {191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191},
+            {180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180},
+            {168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168},
+            {156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156},
+            {143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143},
+            {131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131},
+            {119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119},
+            {108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108},
+            { 97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97,  97},
+            { 88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88},
+            { 81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81,  81},
+            { 75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,  75}
+        },
+        /* texture_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 200, 180, 180, 220, 220, 200, 180, 140, 140, 128, 128, 100, 100, 100, 100, 100 },
+        /* edge_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 128, 128, 128, 128, 128, 128, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 },
+        /* over_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 60,  60,  60,  60,  65,  55,  55,  50,  50,  50,  50,  50,  50,  50,  50,  50},
+        /* under_shoot[OT_ISP_AUTO_ISO_NUM] */
+        {60,  60,  60,  70,  75,  60,  55,  50,  50,  50,  50,  50,  50,  50,  50,  50 },
+        /* motion_texture_strength[OT_ISP_SHARPEN_GAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+        {
+            {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149},
+            {154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154},
+            {161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161},
+            {170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170},
+            {180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180},
+            {190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190},
+            {202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202},
+            {213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213},
+            {224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224},
+            {235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235},
+            {246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246},
+            {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255},
+            {262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262},
+            {268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268},
+            {272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272},
+            {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273},
+            {272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272},
+            {269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269},
+            {264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264},
+            {257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257},
+            {249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249},
+            {240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240},
+            {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230},
+            {219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219},
+            {209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209},
+            {198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198},
+            {188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188},
+            {178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178},
+            {169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169},
+            {161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161},
+            {155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155},
+            {150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150},
+        },
+        /* motion_edge_strength     */
+        {
+            {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149},
+            {154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154},
+            {161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161},
+            {170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170},
+            {180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180},
+            {190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190},
+            {202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202},
+            {213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213},
+            {224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224},
+            {235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235},
+            {246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246},
+            {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255},
+            {262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, 262},
+            {268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268},
+            {272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272},
+            {273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273},
+            {272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272},
+            {269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269},
+            {264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, 264},
+            {257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257},
+            {249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249},
+            {240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240},
+            {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230},
+            {219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219},
+            {209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209},
+            {198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198},
+            {188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188},
+            {178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178},
+            {169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169},
+            {161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161},
+            {155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155},
+            {150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150}
+        },
+        /* motion_texture_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 200, 190, 190, 170, 170, 170, 160, 140, 128, 128, 128, 100, 100, 100, 100, 100 },
+        /* motion_edge_freq[OT_ISP_AUTO_ISO_NUM] */
+        { 128, 100, 100, 100, 100, 100, 100, 100, 100, 100, 96, 96, 96, 96, 96, 96 },
+        /* motion_over_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 65, 65, 62, 64, 64, 64, 56, 52, 50, 50, 30, 10, 10, 10, 10, 10 },
+        /* motion_under_shoot[OT_ISP_AUTO_ISO_NUM] */
+        { 65, 65, 62, 64, 64, 64, 54, 50, 50, 30, 20, 20, 15, 15, 15, 15 },
+        /* motion_shoot_sup_strength[OT_ISP_AUTO_ISO_NUM] */
+        { 4, 4, 4, 4, 4, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 },
+        /* shoot_sup_adj[OT_ISP_AUTO_ISO_NUM] */
+        {6, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
+        /* detail_ctrl[OT_ISP_AUTO_ISO_NUM] */
+        {128, 128, 128, 128, 128, 128, 128, 110, 110, 100, 100, 100, 100, 100, 100, 100},
+        /* detail_ctrl_threshold[OT_ISP_AUTO_ISO_NUM] */
+        { 180, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160 },
+        /* edge_filt_strength[OT_ISP_AUTO_ISO_NUM] */
+        { 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61},
+        /* edge_filt_max_cap */
+        { 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 },
+        /* r_gain[OT_ISP_AUTO_ISO_NUM] */
+        {31, 31, 28, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 },
+        /* g_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32 },
+        /* b_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 31, 31, 28, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 },
+        /* skin_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 },
+        /* max_sharp_gain[OT_ISP_AUTO_ISO_NUM] */
+        { 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 },
+        {
+            /* shoot_inner_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* shoot_outer_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* shoot_protect_threshold[OT_ISP_AUTO_ISO_NUM]  */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        },
+        {
+            /* edge_rly_fine_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* edge_rly_coarse_threshold[OT_ISP_AUTO_ISO_NUM] */
+            {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+            /* edge_overshoot[OT_ISP_AUTO_ISO_NUM] */
+            {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
+            /* edge_undershoot[OT_ISP_AUTO_ISO_NUM] */
+            {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120},
+            /* edge_gain_by_rly[OT_ISP_SHARPEN_RLYWGT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
+            },
+            /* edge_rly_by_mot[OT_ISP_SHARPEN_STDGAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
+            },
+            /* edge_rly_by_luma[OT_ISP_SHARPEN_STDGAIN_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
+            },
+        },
+        {
+            /* mf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
+            },
+            /* hf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
+                {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
+            },
+            /* lmf_gain_by_mot[OT_ISP_SHARPEN_MOT_NUM][OT_ISP_AUTO_ISO_NUM] */
+            {
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
+                {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
+            },
+        },
+    },
+};
+
+static ot_isp_awb_ccm g_awb_ccm = {
+    /* the number of CCM matrixes */
+    4,
+    {
+        {
+            /* color temperature */
+            6420,
+            /* CCM matrix */
+            { 0x0196, 0x8092, 0x8004, 0x805B, 0x01B4, 0x8059, 0x801A, 0x808C, 0x01A6 },
+        },
+        {
+            /* color temperature */
+            4949,
+            /* CCM matrix */
+            { 0x01A0, 0x809F, 0x8001, 0x8066, 0x01A7, 0x8041, 0x800C, 0x80F1, 0x01FD },
+        },
+        {
+            /* color temperature */
+            3630,
+            /* CCM matrix */
+            { 0x01A0, 0x8084, 0x801C, 0x8083, 0x01C3, 0x8040, 0x0008, 0x811E, 0x0216 },
+        },
+        {
+            /* color temperature */
+            2525,
+            /* CCM matrix */
+            { 0x02A7, 0x81CC, 0x0025, 0x806D, 0x01A6, 0x8039, 0x802A, 0x8133, 0x025D },
+        },
+        {
+            /* color temperature */
+            2100,
+            /* CCM matrix */
+            { 0x0100, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0100 },
+        },
+        {
+            /* color temperature */
+            1600,
+            /* CCM matrix */
+            { 0x0100, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0100 },
+        },
+        {
+            /* color temperature */
+            1400,
+            /* CCM matrix */
+            { 0x0100, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0100 },
+        },
+    },
+};
+
+static ot_isp_awb_agc_table g_awb_agc_table = {
+    /* bvalid */
+    1,
+
+    /* 1,  2,  4,  8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 */
+    /* saturation */
+    { 128, 128, 128, 128, 124, 120, 116, 112, 108, 104, 100, 94, 90, 90, 90, 90 }
+};
+
+static const ot_isp_wdr_fs_attr g_cmos_wdr = {
+    /* ot_isp_wdr_merge_mode */
+    OT_ISP_MERGE_FUSION_MODE,
+
+    /* ot_isp_wdr_combine_attr */
+    {
+        /* motion_comp */
+        1,
+
+        /* short_thr */
+        4032,
+
+        /* long_thr */
+        3008,
+
+        /* force_long */
+        1,
+
+        /* force_long_low_threshold */
+        500,
+
+        /* force_long_hig_threshold */
+        700,
+
+        /* ot_isp_fswdr_mdt_attr */
+        {
+            /* short_expo_chk */
+            0,
+
+            /* short_check_thd */
+            8,
+
+            /* md_ref_flicker */
+            1,
+
+            /* mdt_still_thd */
+            20,
+
+            /* mdt_full_threshold */
+            254,
+
+            /* mdt_long_blend */
+            0,
+
+            /* ot_op_mode motion_comp */
+            OT_OP_MODE_AUTO,
+
+            /* ot_isp_fswdr_manual_attr */
+            {
+                /* md_thr_low_gain, md_thr_hig_gain */
+                64, 64
+            },
+
+            /* ot_isp_fswdr_auto_attr */
+            {
+                /* md_thr_low_gain[10][16] */
+                {
+                    { 45, 45, 45, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 45, 45, 45, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 24, 24, 24, 45, 64,  96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 24, 24, 24, 45, 64,  96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 45, 45, 45, 45, 64, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 45, 45, 45, 45, 64, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 64, 64, 64, 64, 128, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 128, 128, 128, 128, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 128, 128, 128, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }
+                },
+
+                /* md_thr_hig_gain[10][16] */
+                {
+                    { 64, 64, 64, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 64, 64, 64, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 45, 45, 45, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 45, 45, 45, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 64, 64, 64, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 64, 64, 64, 64, 96, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 128, 128, 128, 128, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                    { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
+                },
+            },
+        },
+    },
+
+    /* ot_isp_fusion_attr */
+    {
+        /* fusion blend en */
+        1,
+        /* fusion_blend_wgt */
+        4,
+        /* fusion_threshold */
+        { 3855, 3000, 3000, 3000 },
+        /* fusion_force_gray_en */
+        1,
+        /* fusion_force_blend_threshold */
+        14,
+    },
+
+};
+
+static const ot_isp_dehaze_attr g_cmos_dehaze = {
+    /* enable */
+    0,
+    /* user_lut_enable */
+    0,
+    /* dehaze_lut */
+    {
+        0, 9, 13, 17, 21, 25, 29, 33, 37, 42, 46, 50, 54, 58, 62, 67, 71, 75, 79, 83, 87, 91,
+        95, 99, 102, 106, 110, 114, 117, 121, 124, 128, 131, 134, 137, 141, 144, 147, 150,
+        153, 156, 159, 162, 165, 168, 170, 173, 176, 178, 181, 184, 186, 189, 191, 193, 196,
+        198, 200, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 222, 224, 226, 228, 229,
+        231, 232, 234, 235, 237, 238, 240, 241, 242, 243, 244, 246, 247, 248, 249, 249, 250,
+        251, 252, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+        255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, 253, 252, 251, 251, 250, 249,
+        249, 248, 247, 247, 246, 245, 244, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235,
+        233, 232, 231, 230, 229, 227, 226, 225, 223, 222, 221, 219, 218, 216, 215, 213, 212,
+        210, 209, 208, 206, 205, 203, 201, 200, 198, 197, 195, 193, 192, 190, 188, 187, 185,
+        183, 181, 180, 178, 176, 174, 172, 170, 169, 167, 165, 163, 161, 159, 157, 155, 153,
+        151, 149, 147, 145, 143, 140, 138, 136, 134, 132, 130, 128, 125, 123, 121, 119, 116,
+        114, 112, 110, 107, 105, 103, 100, 98, 96, 93, 91, 89, 86, 84, 81, 79, 77, 74, 72, 69,
+        67, 64, 62, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 31, 29, 26, 24, 21, 18, 16, 13, 11,
+        8, 5, 3, 0
+    },
+    /* op_type */
+    0,
+    /* manual_strength */
+    {
+        128
+    },
+    /* auto_strength */
+    {
+        128
+    },
+    /* tmprflt_incr_coef */
+    8,
+    /* tmprflt_decr_coef */
+    64,
+};
+
+
+static const ot_isp_drc_attr g_cmos_drc = {
+    /* enable */
+    1,
+    /* curve_select */
+    OT_ISP_DRC_CURVE_ASYMMETRY,
+    /* purple_reduction_strength */
+    35,
+    /* bright_gain_limit */
+    10,
+    /* bright_gain_limit_step */
+    8,
+    /* dark_gain_limit_luma */
+    0,
+    /* dark_gain_limit_chroma */
+    0,
+    /* contrast_ctrl */
+    8,
+    /* rim_reduction_strength */
+    32,
+    /* rim_reduction_threshold */
+    30,
+    /* color_correction_lut[OT_ISP_DRC_CC_NODE_NUM] */
+    {
+        1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+        1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024
+    },
+    /* tone_mapping_value[OT_ISP_DRC_TM_NODE_NUM] */
+    {
+        8,     8,     16,    24,    31,    39,    48,    56,    65,    75,    85,    95,    106,   118,   130,   143,
+        156,   170,   185,   201,   218,   235,   254,   274,   294,   316,   339,   364,   390,   417,   446,   477,
+        509,   543,   579,   617,   658,   701,   746,   794,   844,   898,   955,   1015,  1078,  1145,  1216,  1291,
+        1370,  1454,  1543,  1637,  1736,  1841,  1952,  2069,  2194,  2325,  2465,  2612,  2767,  2932,  3106,  3290,
+        3485,  3691,  3909,  4140,  4384,  4641,  4914,  5202,  5507,  5830,  6171,  6531,  6913,  7316,  7742,  8193,
+        8669,  9173,  9705,  10268, 10863, 11492, 12145, 12808, 13483, 14171, 14872, 15587, 16319, 17069, 17840, 18635,
+        19458, 19881, 20313, 20754, 21204, 21661, 22122, 22586, 23053, 23525, 24000, 24480, 24965, 25455, 25950, 26451,
+        26959, 27473, 27995, 28524, 29062, 29609, 30165, 30732, 31309, 31899, 32501, 33116, 33746, 34391, 35043, 35706,
+        36381, 37066, 37763, 38472, 39192, 39925, 40671, 41429, 42201, 42591, 42986, 43383, 43784, 44189, 44597, 45008,
+        45424, 45842, 46265, 46691, 47121, 47555, 47993, 48434, 48880, 49329, 49783, 50241, 50703, 51169, 51639, 52113,
+        52592, 53075, 53564, 54056, 54552, 55054, 55560, 56071, 56586, 56846, 57107, 57369, 57632, 57896, 58162, 58429,
+        58697, 58967, 59238, 59510, 59783, 60057, 60333, 60611, 60889, 61169, 61451, 61733, 62017, 62303, 62589, 62877,
+        63167, 63458, 63750, 64044, 64340, 64636, 64934, 65234
+    },
+    /* spatial_filter_coef */
+    1,
+    /* range_filter_coef */
+    2,
+    /* detail_adjust_coef */
+    8,
+    {
+        {
+            /* local_mixing_bright_max */
+            96,
+            /* local_mixing_bright_min */
+            48,
+            /* local_mixing_bright_threshold */
+            100,
+            /* local_mixing_bright_slope */
+            -3,
+        },
+    },
+    {
+        {
+            /* local_mixing_dark_max */
+            96,
+            /* local_mixing_dark_min */
+            48,
+            /* local_mixing_dark_threshold */
+            100,
+            /* local_mixing_dark_slope */
+            -3,
+        },
+    },
+    /* high_saturation_color_ctrl */
+    15,
+    /* global_color_ctrl */
+    0,
+    /* shoot_reduction_en */
+    1,
+    /* op_type */
+    OT_OP_MODE_MANUAL,
+    /* manual_attr */
+    {
+        /* manual_strength */
+        256,
+    },
+    /* auto_attr */
+    {
+        /* auto_strength */
+        512,
+        /* auto_strength_max */
+        1023,
+        /* auto_strength_min */
+        512,
+    },
+    /* asymmetry_curve */
+    {
+        /* asymmetry */
+        6,
+        /* second_pole */
+        200,
+        /* stretch */
+        40,
+        /* compress */
+        170
+    },
+    /* auto_curve */
+    {
+        /* brightness */
+        8,
+        /* contrast */
+        8,
+        /* tolerance */
+        6,
+    },
+    /* bcnr_attr */
+    {
+        /* bcnr_en */
+        0,
+        /* bcnr_detail_restore */
+        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+        /* bcnr_strength */
+        3,
+    }
+};
+
+#ifdef CONFIG_OT_ISP_CA_SUPPORT
+static const ot_isp_ca_attr g_cmos_ca = {
+    /* CA */
+    1,
+    0,
+    {
+        {
+            36, 81, 111, 136, 158, 182, 207, 228, 259, 290, 317, 345, 369, 396, 420, 444, 468, 492, 515, 534,
+            556, 574, 597, 614, 632, 648, 666, 681, 697, 709, 723, 734, 748, 758, 771, 780, 788, 800, 808,
+            815, 822, 829, 837, 841, 848, 854, 858, 864, 868, 871, 878, 881, 885, 890, 893, 897, 900, 903,
+            906, 909, 912, 915, 918, 921, 924, 926, 929, 931, 934, 936, 938, 941, 943, 945, 947, 949, 951,
+            952, 954, 956, 958, 961, 962, 964, 966, 968, 969, 970, 971, 973, 974, 976, 977, 979, 980, 981,
+            983, 984, 985, 986, 988, 989, 990, 991, 992, 993, 995, 996, 997, 998, 999, 1000, 1001, 1004,
+            1005, 1006, 1007, 1009, 1010, 1011, 1012, 1014, 1016, 1017, 1019, 1020, 1022, 1024
+        },
+        /* ISO */
+        { 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1000, 950, 900, 900, 800, 800, 800, 800, 800 },
+        {
+            811, 812, 812, 812, 812, 812, 811, 810, 810, 809, 808, 807, 807, 806, 805, 805, 804, 804, 804, 804,
+            804, 805, 806, 807, 808, 810, 813, 815, 819, 822, 827, 831, 837, 843, 850, 857, 865, 874, 883,
+            893, 903, 914, 925, 936, 947, 959, 971, 983, 995, 1007, 1018, 1030, 1042, 1053, 1065, 1075,
+            1086, 1096, 1106, 1115, 1124, 1132, 1139, 1146, 1152, 1158, 1163, 1168, 1172, 1176, 1180,
+            1183, 1186, 1189, 1192, 1194, 1196, 1198, 1200, 1201, 1202, 1204, 1205, 1206, 1207, 1208,
+            1209, 1210, 1211, 1212, 1213, 1214, 1215, 1217, 1218, 1220, 1222, 1224, 1226, 1227, 1229,
+            1231, 1232, 1234, 1236, 1237, 1239, 1240, 1242, 1243, 1245, 1246, 1248, 1249, 1250, 1252,
+            1253, 1255, 1256, 1258, 1259, 1260, 1262, 1263, 1265, 1266, 1268, 1269
+        },
+    },
+    {
+        {
+            56, 60, 64, 68, 71, 74, 77, 79, 82, 85, 87, 89, 93, 96, 99, 102, 105, 108, 110, 112, 115, 117, 119,
+            120, 122, 124, 125, 127, 128, 130, 131, 133, 135, 136, 138, 141, 143, 145, 147, 150, 152, 155,
+            157, 159, 162, 164, 166, 168, 171, 173, 175, 177, 179, 181, 184, 186, 188, 190, 192, 193, 195,
+            197, 198, 198, 199, 198, 198, 196, 195, 193, 191, 189, 186, 184, 181, 179, 177, 174, 172, 169,
+            167, 164, 161, 159, 156, 153, 151, 148, 145, 142, 139, 136, 133, 130, 127, 124, 121, 118, 115,
+            113, 110, 109, 108, 108, 109, 111, 113, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142, 145,
+            148, 151, 154, 157, 160, 163, 166, 169, 172, 175
+        },
+        {
+            232, 225, 219, 214, 208, 202, 197, 192, 186, 181, 176, 171, 166, 161, 156, 151, 146, 141, 136, 132,
+            128, 123, 119, 115, 110, 106, 101, 97, 92, 88, 83, 79, 75, 71, 67, 64, 61, 59, 57, 55, 54, 54,
+            53, 52, 51, 50, 50, 49, 48, 48, 47, 46, 46, 45, 44, 44, 43, 42, 42, 41, 41, 40, 40, 40, 40, 40,
+            40, 41, 41, 42, 42, 43, 44, 45, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+            61, 62, 64, 65, 67, 68, 70, 72, 75, 78, 81, 84, 87, 91, 94, 97, 100, 103, 106, 109, 112, 115,
+            118, 121, 124, 127, 130, 133, 136, 139, 143, 146, 149, 152, 155, 159, 162, 166
+        },
+        {
+            92, 89, 87, 85, 83, 81, 79, 77, 75, 74, 72, 72, 73, 76, 78, 80, 82, 84, 85, 87, 88, 88, 89, 89, 89,
+            88, 88, 87, 87, 87, 86, 87, 87, 88, 90, 92, 94, 96, 99, 101, 103, 106, 108, 110, 113, 115, 117,
+            119, 121, 123, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 147, 149, 151, 153, 155, 157,
+            159, 161, 163, 165, 166, 168, 170, 172, 173, 175, 176, 178, 180, 181, 183, 185, 186, 188, 190,
+            191, 193, 194, 196, 198, 200, 201, 203, 205, 207, 208, 210, 212, 214, 215, 217, 218, 219, 219,
+            219, 219, 218, 216, 215, 213, 211, 209, 207, 205, 203, 201, 199, 197, 195, 194, 192, 190, 188,
+            186, 184, 182, 180, 178
+        },
+    },
+};
+#endif
+
+static const ot_isp_cmos_lsc g_cmos_lsc = {
+    /* cmos_lsc_attr */
+    {
+        /* en */
+        1,
+        /* mesh_strength */
+        4096,
+        /* blend_ratio */
+        256,
+    },
+    /* cmos_lsc_lut */
+    {
+        /* mesh_scale */
+        1,
+        /* x_grid_width */
+        {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40},
+        /* y_grid_width */
+        {40, 40, 40, 40, 40, 40, 40, 40, 40},
+        /* lsc_gain_lut */
+        {
+            {
+                /* r_gain: */
+                {
+                    745, 705, 635, 579, 534, 495, 461, 434, 413, 391, 374, 359, 348, 338, 334, 328, 327,
+                    328, 332, 338, 348, 357, 369, 385, 405, 431, 457, 490, 529, 575, 629, 689, 719, 711,
+                    680, 618, 564, 519, 481, 450, 423, 400, 380, 363, 349, 340, 331, 323, 320, 318, 319,
+                    322, 329, 336, 347, 359, 375, 393, 417, 444, 477, 514, 559, 611, 667, 697, 674, 646,
+                    590, 538, 496, 460, 430, 404, 383, 363, 347, 334, 324, 315, 308, 305, 303, 303, 306,
+                    312, 320, 331, 341, 358, 376, 399, 425, 456, 490, 533, 581, 635, 665, 647, 619, 564,
+                    515, 477, 442, 411, 387, 367, 349, 334, 321, 309, 301, 294, 290, 288, 289, 290, 296,
+                    303, 315, 327, 342, 360, 381, 407, 436, 469, 510, 557, 611, 640, 622, 593, 542, 498,
+                    460, 427, 398, 375, 354, 337, 321, 309, 299, 290, 283, 277, 276, 275, 278, 283, 291,
+                    301, 314, 330, 347, 368, 392, 421, 453, 491, 537, 591, 623, 601, 576, 528, 484, 447,
+                    415, 388, 365, 345, 328, 312, 300, 289, 281, 274, 268, 266, 265, 267, 273, 283, 291,
+                    304, 320, 337, 357, 380, 408, 440, 478, 520, 570, 600, 588, 562, 515, 473, 438, 407,
+                    380, 356, 337, 320, 306, 293, 283, 274, 266, 262, 260, 260, 261, 267, 275, 285, 297,
+                    312, 329, 349, 373, 400, 430, 467, 509, 558, 585, 580, 555, 508, 466, 432, 402, 375,
+                    352, 332, 316, 301, 288, 278, 268, 262, 259, 258, 258, 260, 263, 270, 282, 293, 307,
+                    323, 343, 365, 392, 423, 460, 501, 545, 569, 573, 551, 507, 465, 428, 397, 372, 350,
+                    329, 313, 298, 286, 276, 266, 260, 257, 256, 257, 259, 261, 269, 279, 292, 305, 321,
+                    340, 363, 389, 418, 453, 494, 538, 562, 571, 550, 505, 463, 428, 397, 372, 350, 329,
+                    312, 298, 286, 275, 266, 259, 256, 256, 256, 259, 261, 269, 280, 291, 305, 320, 339,
+                    362, 389, 418, 451, 491, 535, 559, 574, 551, 507, 466, 431, 401, 374, 350, 331, 314,
+                    300, 288, 278, 267, 261, 256, 256, 256, 259, 264, 272, 282, 293, 306, 322, 342, 364,
+                    390, 419, 452, 493, 537, 560, 585, 560, 513, 472, 437, 405, 378, 355, 335, 318, 304,
+                    292, 282, 272, 265, 261, 259, 260, 262, 268, 276, 286, 298, 311, 327, 346, 367, 393,
+                    422, 458, 499, 544, 569, 595, 571, 525, 481, 444, 412, 385, 363, 342, 325, 310, 298,
+                    288, 279, 273, 267, 266, 267, 270, 275, 282, 292, 304, 318, 334, 352, 375, 401, 431,
+                    467, 510, 555, 579, 612, 587, 537, 492, 453, 422, 395, 372, 351, 334, 320, 307, 297,
+                    287, 281, 277, 276, 276, 279, 283, 290, 301, 312, 326, 342, 361, 384, 411, 442, 479,
+                    521, 566, 590, 633, 607, 556, 509, 468, 435, 407, 383, 363, 345, 330, 318, 307, 299,
+                    292, 289, 286, 286, 289, 294, 301, 310, 322, 336, 353, 372, 396, 423, 455, 491, 535,
+                    582, 606, 660, 632, 579, 531, 488, 454, 424, 399, 378, 360, 344, 331, 320, 312, 305,
+                    301, 299, 299, 303, 306, 314, 323, 336, 349, 366, 386, 410, 438, 472, 510, 555, 604,
+                    628, 697, 665, 608, 556, 511, 475, 443, 415, 395, 376, 360, 346, 335, 326, 320, 316,
+                    314, 314, 316, 322, 328, 338, 351, 365, 383, 404, 429, 458, 492, 532, 578, 630, 659,
+                    739, 704, 641, 586, 540, 500, 467, 440, 415, 396, 379, 364, 353, 344, 337, 333, 331,
+                    331, 334, 340, 347, 356, 369, 383, 401, 424, 450, 480, 516, 558, 608, 665, 698, 762,
+                    728, 664, 606, 554, 514, 480, 452, 428, 406, 388, 374, 363, 353, 348, 343, 340, 341,
+                    345, 350, 357, 367, 380, 394, 414, 435, 462, 493, 530, 573, 626, 686, 716
+                },
+
+                /* gr_gain: */
+                {
+                    702, 669, 611, 559, 513, 478, 446, 420, 398, 379, 363, 349, 340, 331, 324, 321, 320,
+                    321, 326, 329, 338, 349, 359, 374, 394, 417, 442, 474, 511, 554, 605, 663, 695, 679,
+                    650, 594, 542, 500, 465, 434, 409, 389, 370, 354, 341, 331, 322, 316, 313, 311, 312,
+                    315, 321, 328, 339, 349, 364, 383, 406, 431, 461, 496, 539, 588, 642, 671, 649, 620,
+                    566, 517, 478, 445, 416, 392, 373, 354, 338, 327, 317, 308, 302, 298, 296, 297, 300,
+                    305, 313, 323, 334, 349, 366, 387, 412, 440, 473, 513, 561, 613, 640, 620, 593, 543,
+                    498, 460, 428, 401, 377, 358, 340, 326, 314, 304, 296, 290, 285, 283, 283, 286, 291,
+                    298, 308, 320, 334, 351, 371, 395, 424, 456, 494, 538, 589, 617, 598, 573, 526, 483,
+                    447, 415, 388, 365, 347, 331, 316, 304, 294, 286, 279, 274, 271, 271, 274, 279, 287,
+                    297, 309, 322, 340, 359, 382, 409, 440, 477, 520, 571, 601, 581, 557, 512, 470, 435,
+                    404, 379, 357, 338, 322, 308, 296, 286, 278, 271, 266, 263, 262, 265, 270, 278, 288,
+                    300, 314, 330, 350, 373, 398, 428, 464, 506, 556, 585, 569, 545, 501, 461, 427, 396,
+                    371, 350, 331, 315, 301, 290, 280, 271, 264, 260, 258, 257, 259, 264, 272, 282, 293,
+                    307, 324, 342, 364, 390, 419, 453, 495, 540, 564, 562, 538, 495, 456, 422, 393, 368,
+                    346, 326, 310, 297, 286, 276, 267, 261, 257, 256, 256, 258, 260, 268, 278, 290, 303,
+                    319, 337, 359, 385, 414, 447, 486, 529, 551, 557, 534, 491, 453, 419, 391, 366, 344,
+                    325, 309, 294, 283, 273, 265, 259, 256, 256, 256, 257, 260, 267, 277, 289, 301, 316,
+                    334, 356, 380, 409, 442, 481, 522, 543, 558, 534, 492, 453, 419, 390, 366, 343, 325,
+                    309, 295, 283, 273, 264, 258, 256, 256, 256, 257, 260, 268, 277, 289, 301, 316, 334,
+                    355, 380, 408, 440, 479, 520, 541, 559, 537, 495, 456, 422, 392, 367, 345, 327, 311,
+                    297, 286, 275, 267, 260, 256, 256, 256, 258, 262, 270, 280, 291, 303, 319, 337, 357,
+                    381, 408, 442, 482, 522, 543, 569, 544, 499, 460, 426, 397, 372, 350, 331, 314, 301,
+                    289, 279, 271, 264, 260, 258, 259, 262, 266, 274, 284, 295, 308, 323, 340, 362, 386,
+                    414, 446, 487, 530, 552, 579, 554, 509, 469, 434, 404, 378, 357, 337, 321, 307, 295,
+                    285, 278, 271, 267, 265, 266, 268, 273, 281, 290, 301, 313, 329, 347, 368, 392, 422,
+                    456, 496, 540, 562, 594, 569, 522, 480, 445, 415, 388, 366, 347, 330, 316, 304, 294,
+                    286, 280, 275, 274, 274, 278, 282, 289, 298, 309, 322, 338, 356, 377, 402, 431, 467,
+                    508, 551, 574, 617, 590, 542, 497, 459, 427, 401, 378, 358, 341, 327, 314, 304, 297,
+                    291, 287, 285, 286, 288, 292, 299, 308, 319, 332, 348, 367, 389, 415, 446, 481, 521,
+                    566, 590, 643, 616, 564, 517, 478, 444, 416, 392, 372, 355, 341, 328, 318, 310, 304,
+                    300, 298, 299, 300, 305, 312, 320, 332, 345, 361, 381, 403, 430, 460, 498, 541, 586,
+                    611, 677, 646, 592, 543, 500, 465, 436, 411, 390, 372, 357, 343, 333, 325, 318, 314,
+                    312, 313, 315, 320, 326, 335, 347, 360, 376, 398, 420, 447, 480, 519, 563, 613, 639,
+                    712, 679, 622, 570, 526, 489, 459, 433, 409, 389, 373, 361, 349, 341, 335, 331, 329,
+                    328, 331, 336, 342, 352, 364, 378, 397, 416, 440, 469, 504, 543, 590, 645, 675, 737,
+                    701, 641, 589, 542, 503, 470, 443, 421, 400, 384, 370, 361, 350, 344, 341, 338, 337,
+                    340, 345, 352, 362, 373, 389, 406, 426, 451, 482, 518, 557, 605, 661, 690
+                },
+
+                /* gb_gain: */
+                {
+                    705, 672, 611, 558, 514, 478, 447, 419, 398, 380, 363, 349, 339, 331, 325, 321, 320,
+                    322, 326, 330, 337, 348, 358, 374, 393, 415, 441, 473, 509, 551, 604, 661, 691, 681,
+                    651, 594, 542, 500, 465, 434, 409, 388, 370, 354, 341, 330, 322, 316, 311, 311, 311,
+                    315, 320, 328, 338, 348, 363, 382, 403, 430, 460, 494, 536, 586, 642, 673, 646, 619,
+                    567, 519, 479, 446, 416, 392, 373, 354, 338, 327, 316, 307, 301, 298, 296, 296, 299,
+                    305, 313, 322, 333, 347, 366, 386, 410, 439, 473, 512, 560, 610, 635, 619, 592, 544,
+                    499, 461, 428, 401, 378, 358, 340, 325, 314, 304, 296, 290, 286, 283, 283, 286, 290,
+                    298, 307, 320, 333, 352, 371, 395, 422, 455, 492, 536, 587, 616, 600, 574, 526, 484,
+                    446, 415, 389, 366, 348, 330, 316, 304, 294, 286, 279, 274, 272, 271, 274, 279, 287,
+                    295, 308, 322, 339, 358, 381, 408, 440, 477, 519, 569, 599, 581, 558, 513, 470, 436,
+                    405, 379, 357, 338, 322, 308, 296, 286, 277, 271, 266, 262, 262, 265, 270, 277, 287,
+                    299, 313, 330, 349, 371, 396, 427, 464, 505, 554, 583, 570, 546, 503, 462, 428, 398,
+                    372, 351, 332, 316, 302, 290, 279, 271, 264, 259, 257, 258, 259, 263, 271, 281, 293,
+                    306, 323, 342, 363, 389, 418, 452, 493, 538, 561, 562, 538, 495, 457, 423, 393, 369,
+                    347, 328, 311, 297, 285, 276, 267, 261, 257, 256, 257, 258, 261, 268, 278, 290, 303,
+                    319, 336, 358, 384, 413, 446, 485, 528, 551, 560, 536, 492, 453, 420, 391, 366, 344,
+                    325, 309, 295, 283, 274, 265, 258, 256, 256, 256, 257, 260, 266, 276, 289, 301, 316,
+                    335, 356, 381, 408, 441, 480, 522, 543, 559, 535, 492, 453, 419, 390, 365, 344, 326,
+                    309, 295, 283, 274, 265, 258, 256, 256, 256, 257, 261, 268, 278, 288, 301, 316, 334,
+                    355, 379, 408, 440, 478, 520, 542, 561, 539, 496, 457, 422, 393, 368, 346, 327, 311,
+                    297, 286, 275, 267, 260, 256, 256, 256, 257, 262, 270, 280, 290, 303, 318, 336, 357,
+                    381, 409, 442, 481, 523, 544, 569, 544, 501, 461, 427, 398, 373, 351, 332, 315, 301,
+                    290, 280, 272, 264, 260, 259, 259, 261, 267, 274, 284, 295, 308, 323, 341, 361, 386,
+                    414, 447, 487, 530, 552, 580, 556, 511, 470, 435, 405, 379, 358, 338, 322, 307, 296,
+                    286, 277, 272, 267, 266, 266, 269, 274, 281, 290, 301, 314, 329, 347, 368, 393, 422,
+                    456, 496, 538, 560, 597, 572, 526, 483, 446, 415, 390, 366, 347, 330, 316, 305, 295,
+                    286, 280, 276, 275, 275, 278, 282, 289, 298, 310, 322, 338, 356, 377, 402, 432, 467,
+                    507, 549, 572, 618, 593, 545, 500, 461, 429, 402, 379, 360, 343, 328, 316, 307, 298,
+                    291, 287, 285, 285, 288, 293, 299, 309, 319, 333, 348, 368, 389, 415, 445, 480, 521,
+                    565, 588, 645, 618, 566, 519, 479, 446, 417, 393, 374, 356, 342, 330, 319, 311, 304,
+                    301, 298, 299, 301, 305, 312, 321, 332, 346, 361, 381, 404, 430, 461, 498, 540, 586,
+                    613, 678, 647, 594, 545, 501, 467, 438, 411, 390, 373, 358, 345, 334, 325, 318, 315,
+                    313, 313, 316, 321, 327, 336, 347, 361, 378, 398, 421, 448, 481, 519, 563, 613, 640,
+                    714, 683, 626, 573, 529, 492, 460, 433, 410, 390, 374, 362, 350, 342, 336, 332, 330,
+                    329, 332, 336, 343, 353, 364, 379, 396, 416, 440, 469, 503, 543, 591, 644, 674, 739,
+                    705, 645, 592, 546, 505, 472, 445, 422, 402, 385, 371, 360, 351, 346, 341, 340, 338,
+                    341, 345, 353, 363, 374, 388, 405, 427, 451, 480, 517, 559, 609, 663, 693
+                },
+
+                /* b_gain: */
+                {
+                    669, 641, 588, 539, 498, 465, 435, 408, 389, 371, 355, 342, 334, 327, 321, 317, 316,
+                    317, 320, 326, 334, 342, 355, 370, 387, 410, 435, 465, 498, 541, 590, 648, 682, 653,
+                    625, 571, 524, 485, 451, 423, 399, 380, 362, 346, 335, 325, 318, 312, 308, 307, 308,
+                    312, 317, 325, 335, 345, 359, 376, 398, 423, 452, 486, 527, 575, 627, 654, 621, 595,
+                    546, 501, 464, 433, 405, 384, 364, 347, 333, 321, 312, 304, 298, 295, 293, 294, 297,
+                    303, 309, 319, 330, 344, 361, 381, 404, 433, 466, 502, 547, 596, 619, 600, 573, 524,
+                    482, 447, 417, 391, 370, 350, 334, 321, 310, 301, 292, 286, 283, 281, 280, 285, 288,
+                    295, 305, 316, 330, 346, 366, 389, 416, 447, 483, 525, 574, 604, 579, 553, 508, 469,
+                    435, 405, 380, 359, 341, 326, 312, 302, 292, 283, 277, 272, 270, 270, 272, 277, 285,
+                    295, 306, 319, 336, 355, 377, 402, 433, 468, 509, 558, 586, 562, 538, 495, 456, 424,
+                    395, 371, 351, 333, 318, 304, 293, 284, 275, 269, 264, 262, 261, 263, 269, 277, 286,
+                    297, 311, 327, 346, 367, 393, 421, 456, 495, 542, 572, 548, 527, 486, 449, 416, 389,
+                    364, 344, 327, 311, 299, 288, 278, 270, 263, 259, 257, 258, 260, 263, 271, 280, 292,
+                    306, 321, 339, 360, 385, 414, 446, 486, 529, 552, 544, 522, 482, 445, 412, 385, 361,
+                    341, 323, 307, 295, 284, 273, 265, 260, 256, 256, 257, 258, 261, 267, 277, 289, 301,
+                    317, 335, 356, 379, 407, 439, 478, 519, 540, 538, 519, 479, 443, 410, 382, 359, 338,
+                    320, 305, 292, 281, 271, 263, 258, 256, 256, 256, 258, 261, 266, 277, 287, 299, 314,
+                    332, 353, 376, 405, 437, 474, 512, 533, 539, 519, 480, 443, 410, 382, 359, 338, 320,
+                    305, 292, 280, 271, 263, 257, 256, 256, 256, 257, 261, 267, 277, 288, 300, 314, 332,
+                    352, 376, 403, 434, 471, 510, 531, 541, 521, 481, 445, 413, 385, 361, 341, 323, 307,
+                    294, 283, 274, 265, 259, 256, 256, 256, 259, 262, 269, 279, 290, 302, 317, 334, 354,
+                    378, 405, 435, 474, 514, 534, 548, 528, 486, 449, 418, 390, 366, 345, 327, 311, 298,
+                    288, 278, 270, 264, 260, 258, 260, 262, 267, 273, 284, 294, 306, 321, 338, 359, 382,
+                    409, 442, 481, 520, 538, 561, 538, 496, 457, 424, 396, 373, 352, 333, 318, 305, 294,
+                    284, 276, 270, 266, 264, 265, 268, 273, 280, 289, 299, 313, 328, 344, 365, 390, 417,
+                    450, 488, 528, 549, 574, 554, 511, 469, 435, 406, 381, 360, 342, 327, 313, 302, 292,
+                    284, 278, 274, 273, 274, 276, 282, 288, 296, 308, 321, 335, 353, 374, 398, 427, 459,
+                    498, 539, 562, 599, 573, 526, 484, 448, 419, 392, 372, 352, 336, 323, 313, 303, 296,
+                    289, 284, 284, 285, 286, 292, 298, 307, 318, 331, 346, 363, 384, 410, 438, 472, 512,
+                    554, 576, 624, 597, 548, 504, 466, 435, 409, 387, 368, 352, 338, 324, 316, 308, 301,
+                    298, 297, 298, 299, 303, 310, 319, 330, 344, 358, 376, 398, 425, 455, 490, 530, 575,
+                    600, 650, 625, 573, 528, 489, 455, 427, 403, 384, 367, 353, 340, 330, 321, 316, 313,
+                    312, 312, 314, 317, 325, 333, 345, 358, 374, 394, 416, 442, 473, 509, 552, 597, 621,
+                    685, 658, 605, 556, 514, 480, 448, 423, 402, 384, 369, 356, 346, 338, 334, 328, 327,
+                    327, 330, 334, 341, 350, 362, 375, 391, 412, 436, 462, 495, 533, 577, 629, 656, 705,
+                    678, 626, 573, 528, 492, 462, 437, 416, 393, 380, 366, 355, 350, 343, 338, 337, 337,
+                    340, 343, 351, 359, 370, 386, 401, 421, 444, 474, 507, 548, 593, 649, 682
+                },
+            },
+            {
+                /* r_gain: */
+                {
+                    745, 705, 635, 579, 534, 495, 461, 434, 413, 391, 374, 359, 348, 338, 334, 328, 327,
+                    328, 332, 338, 348, 357, 369, 385, 405, 431, 457, 490, 529, 575, 629, 689, 719, 711,
+                    680, 618, 564, 519, 481, 450, 423, 400, 380, 363, 349, 340, 331, 323, 320, 318, 319,
+                    322, 329, 336, 347, 359, 375, 393, 417, 444, 477, 514, 559, 611, 667, 697, 674, 646,
+                    590, 538, 496, 460, 430, 404, 383, 363, 347, 334, 324, 315, 308, 305, 303, 303, 306,
+                    312, 320, 331, 341, 358, 376, 399, 425, 456, 490, 533, 581, 635, 665, 647, 619, 564,
+                    515, 477, 442, 411, 387, 367, 349, 334, 321, 309, 301, 294, 290, 288, 289, 290, 296,
+                    303, 315, 327, 342, 360, 381, 407, 436, 469, 510, 557, 611, 640, 622, 593, 542, 498,
+                    460, 427, 398, 375, 354, 337, 321, 309, 299, 290, 283, 277, 276, 275, 278, 283, 291,
+                    301, 314, 330, 347, 368, 392, 421, 453, 491, 537, 591, 623, 601, 576, 528, 484, 447,
+                    415, 388, 365, 345, 328, 312, 300, 289, 281, 274, 268, 266, 265, 267, 273, 283, 291,
+                    304, 320, 337, 357, 380, 408, 440, 478, 520, 570, 600, 588, 562, 515, 473, 438, 407,
+                    380, 356, 337, 320, 306, 293, 283, 274, 266, 262, 260, 260, 261, 267, 275, 285, 297,
+                    312, 329, 349, 373, 400, 430, 467, 509, 558, 585, 580, 555, 508, 466, 432, 402, 375,
+                    352, 332, 316, 301, 288, 278, 268, 262, 259, 258, 258, 260, 263, 270, 282, 293, 307,
+                    323, 343, 365, 392, 423, 460, 501, 545, 569, 573, 551, 507, 465, 428, 397, 372, 350,
+                    329, 313, 298, 286, 276, 266, 260, 257, 256, 257, 259, 261, 269, 279, 292, 305, 321,
+                    340, 363, 389, 418, 453, 494, 538, 562, 571, 550, 505, 463, 428, 397, 372, 350, 329,
+                    312, 298, 286, 275, 266, 259, 256, 256, 256, 259, 261, 269, 280, 291, 305, 320, 339,
+                    362, 389, 418, 451, 491, 535, 559, 574, 551, 507, 466, 431, 401, 374, 350, 331, 314,
+                    300, 288, 278, 267, 261, 256, 256, 256, 259, 264, 272, 282, 293, 306, 322, 342, 364,
+                    390, 419, 452, 493, 537, 560, 585, 560, 513, 472, 437, 405, 378, 355, 335, 318, 304,
+                    292, 282, 272, 265, 261, 259, 260, 262, 268, 276, 286, 298, 311, 327, 346, 367, 393,
+                    422, 458, 499, 544, 569, 595, 571, 525, 481, 444, 412, 385, 363, 342, 325, 310, 298,
+                    288, 279, 273, 267, 266, 267, 270, 275, 282, 292, 304, 318, 334, 352, 375, 401, 431,
+                    467, 510, 555, 579, 612, 587, 537, 492, 453, 422, 395, 372, 351, 334, 320, 307, 297,
+                    287, 281, 277, 276, 276, 279, 283, 290, 301, 312, 326, 342, 361, 384, 411, 442, 479,
+                    521, 566, 590, 633, 607, 556, 509, 468, 435, 407, 383, 363, 345, 330, 318, 307, 299,
+                    292, 289, 286, 286, 289, 294, 301, 310, 322, 336, 353, 372, 396, 423, 455, 491, 535,
+                    582, 606, 660, 632, 579, 531, 488, 454, 424, 399, 378, 360, 344, 331, 320, 312, 305,
+                    301, 299, 299, 303, 306, 314, 323, 336, 349, 366, 386, 410, 438, 472, 510, 555, 604,
+                    628, 697, 665, 608, 556, 511, 475, 443, 415, 395, 376, 360, 346, 335, 326, 320, 316,
+                    314, 314, 316, 322, 328, 338, 351, 365, 383, 404, 429, 458, 492, 532, 578, 630, 659,
+                    739, 704, 641, 586, 540, 500, 467, 440, 415, 396, 379, 364, 353, 344, 337, 333, 331,
+                    331, 334, 340, 347, 356, 369, 383, 401, 424, 450, 480, 516, 558, 608, 665, 698, 762,
+                    728, 664, 606, 554, 514, 480, 452, 428, 406, 388, 374, 363, 353, 348, 343, 340, 341,
+                    345, 350, 357, 367, 380, 394, 414, 435, 462, 493, 530, 573, 626, 686, 716
+                },
+
+                /* gr_gain: */
+                {
+                    702, 669, 611, 559, 513, 478, 446, 420, 398, 379, 363, 349, 340, 331, 324, 321, 320,
+                    321, 326, 329, 338, 349, 359, 374, 394, 417, 442, 474, 511, 554, 605, 663, 695, 679,
+                    650, 594, 542, 500, 465, 434, 409, 389, 370, 354, 341, 331, 322, 316, 313, 311, 312,
+                    315, 321, 328, 339, 349, 364, 383, 406, 431, 461, 496, 539, 588, 642, 671, 649, 620,
+                    566, 517, 478, 445, 416, 392, 373, 354, 338, 327, 317, 308, 302, 298, 296, 297, 300,
+                    305, 313, 323, 334, 349, 366, 387, 412, 440, 473, 513, 561, 613, 640, 620, 593, 543,
+                    498, 460, 428, 401, 377, 358, 340, 326, 314, 304, 296, 290, 285, 283, 283, 286, 291,
+                    298, 308, 320, 334, 351, 371, 395, 424, 456, 494, 538, 589, 617, 598, 573, 526, 483,
+                    447, 415, 388, 365, 347, 331, 316, 304, 294, 286, 279, 274, 271, 271, 274, 279, 287,
+                    297, 309, 322, 340, 359, 382, 409, 440, 477, 520, 571, 601, 581, 557, 512, 470, 435,
+                    404, 379, 357, 338, 322, 308, 296, 286, 278, 271, 266, 263, 262, 265, 270, 278, 288,
+                    300, 314, 330, 350, 373, 398, 428, 464, 506, 556, 585, 569, 545, 501, 461, 427, 396,
+                    371, 350, 331, 315, 301, 290, 280, 271, 264, 260, 258, 257, 259, 264, 272, 282, 293,
+                    307, 324, 342, 364, 390, 419, 453, 495, 540, 564, 562, 538, 495, 456, 422, 393, 368,
+                    346, 326, 310, 297, 286, 276, 267, 261, 257, 256, 256, 258, 260, 268, 278, 290, 303,
+                    319, 337, 359, 385, 414, 447, 486, 529, 551, 557, 534, 491, 453, 419, 391, 366, 344,
+                    325, 309, 294, 283, 273, 265, 259, 256, 256, 256, 257, 260, 267, 277, 289, 301, 316,
+                    334, 356, 380, 409, 442, 481, 522, 543, 558, 534, 492, 453, 419, 390, 366, 343, 325,
+                    309, 295, 283, 273, 264, 258, 256, 256, 256, 257, 260, 268, 277, 289, 301, 316, 334,
+                    355, 380, 408, 440, 479, 520, 541, 559, 537, 495, 456, 422, 392, 367, 345, 327, 311,
+                    297, 286, 275, 267, 260, 256, 256, 256, 258, 262, 270, 280, 291, 303, 319, 337, 357,
+                    381, 408, 442, 482, 522, 543, 569, 544, 499, 460, 426, 397, 372, 350, 331, 314, 301,
+                    289, 279, 271, 264, 260, 258, 259, 262, 266, 274, 284, 295, 308, 323, 340, 362, 386,
+                    414, 446, 487, 530, 552, 579, 554, 509, 469, 434, 404, 378, 357, 337, 321, 307, 295,
+                    285, 278, 271, 267, 265, 266, 268, 273, 281, 290, 301, 313, 329, 347, 368, 392, 422,
+                    456, 496, 540, 562, 594, 569, 522, 480, 445, 415, 388, 366, 347, 330, 316, 304, 294,
+                    286, 280, 275, 274, 274, 278, 282, 289, 298, 309, 322, 338, 356, 377, 402, 431, 467,
+                    508, 551, 574, 617, 590, 542, 497, 459, 427, 401, 378, 358, 341, 327, 314, 304, 297,
+                    291, 287, 285, 286, 288, 292, 299, 308, 319, 332, 348, 367, 389, 415, 446, 481, 521,
+                    566, 590, 643, 616, 564, 517, 478, 444, 416, 392, 372, 355, 341, 328, 318, 310, 304,
+                    300, 298, 299, 300, 305, 312, 320, 332, 345, 361, 381, 403, 430, 460, 498, 541, 586,
+                    611, 677, 646, 592, 543, 500, 465, 436, 411, 390, 372, 357, 343, 333, 325, 318, 314,
+                    312, 313, 315, 320, 326, 335, 347, 360, 376, 398, 420, 447, 480, 519, 563, 613, 639,
+                    712, 679, 622, 570, 526, 489, 459, 433, 409, 389, 373, 361, 349, 341, 335, 331, 329,
+                    328, 331, 336, 342, 352, 364, 378, 397, 416, 440, 469, 504, 543, 590, 645, 675, 737,
+                    701, 641, 589, 542, 503, 470, 443, 421, 400, 384, 370, 361, 350, 344, 341, 338, 337,
+                    340, 345, 352, 362, 373, 389, 406, 426, 451, 482, 518, 557, 605, 661, 690
+                },
+
+                /* gb_gain: */
+                {
+                    705, 672, 611, 558, 514, 478, 447, 419, 398, 380, 363, 349, 339, 331, 325, 321, 320,
+                    322, 326, 330, 337, 348, 358, 374, 393, 415, 441, 473, 509, 551, 604, 661, 691, 681,
+                    651, 594, 542, 500, 465, 434, 409, 388, 370, 354, 341, 330, 322, 316, 311, 311, 311,
+                    315, 320, 328, 338, 348, 363, 382, 403, 430, 460, 494, 536, 586, 642, 673, 646, 619,
+                    567, 519, 479, 446, 416, 392, 373, 354, 338, 327, 316, 307, 301, 298, 296, 296, 299,
+                    305, 313, 322, 333, 347, 366, 386, 410, 439, 473, 512, 560, 610, 635, 619, 592, 544,
+                    499, 461, 428, 401, 378, 358, 340, 325, 314, 304, 296, 290, 286, 283, 283, 286, 290,
+                    298, 307, 320, 333, 352, 371, 395, 422, 455, 492, 536, 587, 616, 600, 574, 526, 484,
+                    446, 415, 389, 366, 348, 330, 316, 304, 294, 286, 279, 274, 272, 271, 274, 279, 287,
+                    295, 308, 322, 339, 358, 381, 408, 440, 477, 519, 569, 599, 581, 558, 513, 470, 436,
+                    405, 379, 357, 338, 322, 308, 296, 286, 277, 271, 266, 262, 262, 265, 270, 277, 287,
+                    299, 313, 330, 349, 371, 396, 427, 464, 505, 554, 583, 570, 546, 503, 462, 428, 398,
+                    372, 351, 332, 316, 302, 290, 279, 271, 264, 259, 257, 258, 259, 263, 271, 281, 293,
+                    306, 323, 342, 363, 389, 418, 452, 493, 538, 561, 562, 538, 495, 457, 423, 393, 369,
+                    347, 328, 311, 297, 285, 276, 267, 261, 257, 256, 257, 258, 261, 268, 278, 290, 303,
+                    319, 336, 358, 384, 413, 446, 485, 528, 551, 560, 536, 492, 453, 420, 391, 366, 344,
+                    325, 309, 295, 283, 274, 265, 258, 256, 256, 256, 257, 260, 266, 276, 289, 301, 316,
+                    335, 356, 381, 408, 441, 480, 522, 543, 559, 535, 492, 453, 419, 390, 365, 344, 326,
+                    309, 295, 283, 274, 265, 258, 256, 256, 256, 257, 261, 268, 278, 288, 301, 316, 334,
+                    355, 379, 408, 440, 478, 520, 542, 561, 539, 496, 457, 422, 393, 368, 346, 327, 311,
+                    297, 286, 275, 267, 260, 256, 256, 256, 257, 262, 270, 280, 290, 303, 318, 336, 357,
+                    381, 409, 442, 481, 523, 544, 569, 544, 501, 461, 427, 398, 373, 351, 332, 315, 301,
+                    290, 280, 272, 264, 260, 259, 259, 261, 267, 274, 284, 295, 308, 323, 341, 361, 386,
+                    414, 447, 487, 530, 552, 580, 556, 511, 470, 435, 405, 379, 358, 338, 322, 307, 296,
+                    286, 277, 272, 267, 266, 266, 269, 274, 281, 290, 301, 314, 329, 347, 368, 393, 422,
+                    456, 496, 538, 560, 597, 572, 526, 483, 446, 415, 390, 366, 347, 330, 316, 305, 295,
+                    286, 280, 276, 275, 275, 278, 282, 289, 298, 310, 322, 338, 356, 377, 402, 432, 467,
+                    507, 549, 572, 618, 593, 545, 500, 461, 429, 402, 379, 360, 343, 328, 316, 307, 298,
+                    291, 287, 285, 285, 288, 293, 299, 309, 319, 333, 348, 368, 389, 415, 445, 480, 521,
+                    565, 588, 645, 618, 566, 519, 479, 446, 417, 393, 374, 356, 342, 330, 319, 311, 304,
+                    301, 298, 299, 301, 305, 312, 321, 332, 346, 361, 381, 404, 430, 461, 498, 540, 586,
+                    613, 678, 647, 594, 545, 501, 467, 438, 411, 390, 373, 358, 345, 334, 325, 318, 315,
+                    313, 313, 316, 321, 327, 336, 347, 361, 378, 398, 421, 448, 481, 519, 563, 613, 640,
+                    714, 683, 626, 573, 529, 492, 460, 433, 410, 390, 374, 362, 350, 342, 336, 332, 330,
+                    329, 332, 336, 343, 353, 364, 379, 396, 416, 440, 469, 503, 543, 591, 644, 674, 739,
+                    705, 645, 592, 546, 505, 472, 445, 422, 402, 385, 371, 360, 351, 346, 341, 340, 338,
+                    341, 345, 353, 363, 374, 388, 405, 427, 451, 480, 517, 559, 609, 663, 693
+                },
+
+                /* b_gain: */
+                {
+                    669, 641, 588, 539, 498, 465, 435, 408, 389, 371, 355, 342, 334, 327, 321, 317, 316,
+                    317, 320, 326, 334, 342, 355, 370, 387, 410, 435, 465, 498, 541, 590, 648, 682, 653,
+                    625, 571, 524, 485, 451, 423, 399, 380, 362, 346, 335, 325, 318, 312, 308, 307, 308,
+                    312, 317, 325, 335, 345, 359, 376, 398, 423, 452, 486, 527, 575, 627, 654, 621, 595,
+                    546, 501, 464, 433, 405, 384, 364, 347, 333, 321, 312, 304, 298, 295, 293, 294, 297,
+                    303, 309, 319, 330, 344, 361, 381, 404, 433, 466, 502, 547, 596, 619, 600, 573, 524,
+                    482, 447, 417, 391, 370, 350, 334, 321, 310, 301, 292, 286, 283, 281, 280, 285, 288,
+                    295, 305, 316, 330, 346, 366, 389, 416, 447, 483, 525, 574, 604, 579, 553, 508, 469,
+                    435, 405, 380, 359, 341, 326, 312, 302, 292, 283, 277, 272, 270, 270, 272, 277, 285,
+                    295, 306, 319, 336, 355, 377, 402, 433, 468, 509, 558, 586, 562, 538, 495, 456, 424,
+                    395, 371, 351, 333, 318, 304, 293, 284, 275, 269, 264, 262, 261, 263, 269, 277, 286,
+                    297, 311, 327, 346, 367, 393, 421, 456, 495, 542, 572, 548, 527, 486, 449, 416, 389,
+                    364, 344, 327, 311, 299, 288, 278, 270, 263, 259, 257, 258, 260, 263, 271, 280, 292,
+                    306, 321, 339, 360, 385, 414, 446, 486, 529, 552, 544, 522, 482, 445, 412, 385, 361,
+                    341, 323, 307, 295, 284, 273, 265, 260, 256, 256, 257, 258, 261, 267, 277, 289, 301,
+                    317, 335, 356, 379, 407, 439, 478, 519, 540, 538, 519, 479, 443, 410, 382, 359, 338,
+                    320, 305, 292, 281, 271, 263, 258, 256, 256, 256, 258, 261, 266, 277, 287, 299, 314,
+                    332, 353, 376, 405, 437, 474, 512, 533, 539, 519, 480, 443, 410, 382, 359, 338, 320,
+                    305, 292, 280, 271, 263, 257, 256, 256, 256, 257, 261, 267, 277, 288, 300, 314, 332,
+                    352, 376, 403, 434, 471, 510, 531, 541, 521, 481, 445, 413, 385, 361, 341, 323, 307,
+                    294, 283, 274, 265, 259, 256, 256, 256, 259, 262, 269, 279, 290, 302, 317, 334, 354,
+                    378, 405, 435, 474, 514, 534, 548, 528, 486, 449, 418, 390, 366, 345, 327, 311, 298,
+                    288, 278, 270, 264, 260, 258, 260, 262, 267, 273, 284, 294, 306, 321, 338, 359, 382,
+                    409, 442, 481, 520, 538, 561, 538, 496, 457, 424, 396, 373, 352, 333, 318, 305, 294,
+                    284, 276, 270, 266, 264, 265, 268, 273, 280, 289, 299, 313, 328, 344, 365, 390, 417,
+                    450, 488, 528, 549, 574, 554, 511, 469, 435, 406, 381, 360, 342, 327, 313, 302, 292,
+                    284, 278, 274, 273, 274, 276, 282, 288, 296, 308, 321, 335, 353, 374, 398, 427, 459,
+                    498, 539, 562, 599, 573, 526, 484, 448, 419, 392, 372, 352, 336, 323, 313, 303, 296,
+                    289, 284, 284, 285, 286, 292, 298, 307, 318, 331, 346, 363, 384, 410, 438, 472, 512,
+                    554, 576, 624, 597, 548, 504, 466, 435, 409, 387, 368, 352, 338, 324, 316, 308, 301,
+                    298, 297, 298, 299, 303, 310, 319, 330, 344, 358, 376, 398, 425, 455, 490, 530, 575,
+                    600, 650, 625, 573, 528, 489, 455, 427, 403, 384, 367, 353, 340, 330, 321, 316, 313,
+                    312, 312, 314, 317, 325, 333, 345, 358, 374, 394, 416, 442, 473, 509, 552, 597, 621,
+                    685, 658, 605, 556, 514, 480, 448, 423, 402, 384, 369, 356, 346, 338, 334, 328, 327,
+                    327, 330, 334, 341, 350, 362, 375, 391, 412, 436, 462, 495, 533, 577, 629, 656, 705,
+                    678, 626, 573, 528, 492, 462, 437, 416, 393, 380, 366, 355, 350, 343, 338, 337, 337,
+                    340, 343, 351, 359, 370, 386, 401, 421, 444, 474, 507, 548, 593, 649, 682
+                },
+            },
+        },
+    }
+};
+
+static const ot_isp_cmos_acs g_cmos_acs = {
+    /* acs_attr */
+    {
+        /* en */
+        1,
+        /* y_strength */
+        256,
+        /* run_interval */
+        2,
+        /* lock_en */
+        0,
+    },
+    /* acs_calib_param */
+    {
+        /* light_index */
+        {
+            -1, 23, 10, 5, 4, 1, 5, -1, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+            -1, -1, -1, 22,
+            -1, 0, 10, 14, 3, 14, 5, -1, 2, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+            -1, -1, -1, 23,
+        },
+        /* model_ar_min */
+        -0.08f,
+        /* model_ar_step */
+        0.098f,
+        /* model_ab_min */
+        0,
+        /* model_ab_step */
+        0.28f,
+        /* light_type_g_high */
+        1,
+        /* light_type_g_low */
+        2
+    },
+
+    /* acs_y_shading_lut */
+    {
+        /* g_param_high_ct */
+        {
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024
+        },
+        /* g_param_low_ct */
+        {
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
+            1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024
+        },
+    },
+
+    /* acs_color_shading_lut */
+    {
+        /* avg_rg_map */
+        {
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000
+        },
+
+        /* avg_bg_map */
+        {
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000
+        },
+
+        /* prof_rg_map */
+        {
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000
+        },
+
+        /* prof_bg_map */
+        {
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000,
+            1.000000000, 1.000000000, 1.000000000
+        }
+    }
+};
+
+static const ot_isp_cmos_clut g_cmos_clut = {
+    {
+        1,
+        128,
+        128,
+        128,
+    },
+    {
+        {
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 0, 67174464, 0, 67174464, 67174464, 67174464, 67174464, 0, 67174464,
+            0, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 0, 67174464, 0, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 0, 67174464, 0, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 0, 67174464, 0, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 0, 67174464, 0, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 0, 67174464, 0,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 0, 67174464, 0, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 0,
+            67174464, 0, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 0, 67174464, 0, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 0, 67174464, 0, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464,
+            67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 67174464, 0, 67174464, 0,
+            67174464, 67174464, 0, 67174464, 0, 67174464, 67174464, 67174464, 0, 67174464, 67174464,
+            67174464, 0, 67174464, 67174464, 67174464, 0, 67174464, 67174464, 67174464, 0, 67174464,
+            67174464, 67174464, 0, 67174464, 67174464, 67174464, 0, 67174464, 67174464, 67174464, 0, 0, 0,
+            0, 0, 67174464, 67174464, 0, 0, 67174464, 67174464, 0, 0, 67174464, 67174464, 0, 0, 67174464,
+            67174464, 0, 0, 67174464, 67174464, 0, 0, 67174464, 67174464, 0, 0, 67174464, 67174464, 0, 0,
+            67174464, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0,
+            0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0,
+            0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0,
+            0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0,
+            0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0,
+            0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464,
+            0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0,
+            0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0,
+            0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0,
+            0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0,
+            0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0,
+            67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0,
+            0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0,
+            0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 0, 0,
+            0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0,
+            0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0, 67174464, 0, 0, 0,
+            67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67174464,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 67174464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0
+        }
+    },
+};
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif /* End of #ifdef __cplusplus */
+
+#endif /* SC035HGS_CMOS_PARAM_H */
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_sensor_ctrl.c b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_sensor_ctrl.c
new file mode 100644
index 0000000..467abf4
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_sensor_ctrl.c
@@ -0,0 +1,93 @@
+/*
+  Copyright (c), 2001-2025, Shenshu Tech. Co., Ltd.
+ */
+
+#include "sensor_common.h"
+#include "sc035hgs_cfg.h"
+#include "sc035hgs_cmos.h"
+
+static void sc035hgs_default_reg_init(cis_info *cis)
+{
+    td_u32 i;
+    td_s32 ret = TD_SUCCESS;
+    ot_isp_sns_state *past_sensor = TD_NULL;
+
+    past_sensor = cis->sns_state;
+    for (i = 0; i < past_sensor->regs_info[0].reg_num; i++) {
+        ret += cis_write_reg(&cis->i2c,
+            past_sensor->regs_info[0].i2c_data[i].reg_addr,
+            past_sensor->regs_info[0].i2c_data[i].data);
+    }
+
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("write register failed!\n");
+    }
+    return;
+}
+
+static td_s32 sc035hgs_reg_init(cis_info *cis, cis_reg_cfg *cfg, td_u32 len)
+{
+    td_u32 i;
+
+    sns_check_return(cis_write_reg(&cis->i2c, 0x0103, 0x01));
+    cis_delay_ms(1); /* 1ms */
+
+    for (i = 0; i < len; i++) {
+        sns_check_return(cis_write_reg(&cis->i2c, cfg->addr, cfg->data));
+        cfg++;
+    }
+
+    sc035hgs_default_reg_init(cis);
+
+    sns_check_return(cis_write_reg(&cis->i2c, 0x0100, 0x01));
+
+    return TD_SUCCESS;
+}
+
+td_s32 sc035hgs_linear_640x480_180fps_10bit_init(cis_info *cis)
+{
+    td_s32 ret;
+    td_u32 len;
+    cis_reg_cfg *cfg = TD_NULL;
+    ot_isp_sns_state *sns_state = TD_NULL;
+
+    sns_check_pointer_return(cis);
+    sns_state = cis->sns_state;
+    sns_check_pointer_return(sns_state);
+
+    if (sns_state->img_mode == SC035HGS_640X480_180FPS_10BIT_LINEAR_MODE) {
+        cfg = sc035hgs_linear_640x480_180fps_10bit;
+        len = (td_u32)(sizeof(sc035hgs_linear_640x480_180fps_10bit) /
+            sizeof(sc035hgs_linear_640x480_180fps_10bit[0]));
+    } else {
+        return TD_FAILURE;
+    }
+    ret = sc035hgs_reg_init(cis, cfg, len);
+    if (ret != TD_SUCCESS) {
+        isp_err_trace("sc035hgs_reg_init failed!\n");
+        return ret;
+    }
+
+    printf("===================================================================================\n");
+    printf("vi_pipe:%d,== SC035HGS_MIPI_24Minput_2lane_10bit_405Mbps_640x480_180fps Init OK! ==\n",
+        cis->pipe);
+    printf("===================================================================================\n");
+
+    return TD_SUCCESS;
+}
+
+td_s32 sc035hgs_get_standby_cfg(ot_isp_sns_regs_info *standby_cfg)
+{
+    td_u32 i;
+    standby_cfg->reg_num = (td_u32)(sizeof(sc035hgs_standby_cfg) / sizeof(sc035hgs_standby_cfg[0]));
+
+    for (i = 0; i < standby_cfg->reg_num; i++) {
+        standby_cfg->i2c_data[i].dev_addr = SC035HGS_I2C_ADDR;
+        standby_cfg->i2c_data[i].addr_byte_num = SC035HGS_ADDR_BYTE;
+        standby_cfg->i2c_data[i].data_byte_num = SC035HGS_DATA_BYTE;
+        standby_cfg->i2c_data[i].reg_addr = sc035hgs_standby_cfg[i].addr;
+        standby_cfg->i2c_data[i].data = sc035hgs_standby_cfg[i].data;
+    }
+
+    return TD_SUCCESS;
+}
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_sensor_ctrl.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_sensor_ctrl.h
new file mode 100644
index 0000000..5b845b1
--- /dev/null
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/cbb/isp/user/sensor/hi3516cv610/smart_sc035hgs/sc035hgs_sensor_ctrl.h
@@ -0,0 +1,24 @@
+/*
+  Copyright (c), 2001-2025, Shenshu Tech. Co., Ltd.
+ */
+
+#ifndef SC035HGS_SENSOR_CTRL_H
+#define SC035HGS_SENSOR_CTRL_H
+
+#include "sensor_common.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+td_s32 sc035hgs_linear_640x480_180fps_10bit_init(cis_info *cis);
+td_s32 sc035hgs_get_standby_cfg(ot_isp_sns_regs_info *standby_cfg);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/Makefile.param b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/Makefile.param
index f197af3..27c87d7 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/Makefile.param
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/Makefile.param
@@ -13,9 +13,10 @@ endif
 ####    OS04D10_MIPI_4M_30FPS_10BIT            #################
 ####    SC4336P_MIPI_3M_30FPS_10BIT            #################
 ####    SC4336P_MIPI_2M_30FPS_10BIT            #################
+####    SC035HGS_MIPI_640X480_180FPS_10BIT     #################
 
-SENSOR0_TYPE ?= SC4336P_MIPI_4M_30FPS_10BIT
-SENSOR1_TYPE ?= SC4336P_MIPI_4M_30FPS_10BIT
+SENSOR0_TYPE ?= SC035HGS_MIPI_640X480_180FPS_10BIT
+SENSOR1_TYPE ?= SC035HGS_MIPI_640X480_180FPS_10BIT
 
 ################# select board type for your sample ###############################
 ####    DMEB_BGA            	#################
@@ -44,6 +45,7 @@ MPI_LIBS += $(REL_LIB)/libcalcflicker.a
 MPI_LIBS += $(REL_LIB)/libir_auto.a
 MPI_LIBS += $(REL_LIB)/libacs.a
 MPI_LIBS += $(REL_LIB)/libsns_sc4336p.a
+MPI_LIBS += $(REL_LIB)/libsns_sc035hgs.a
 MPI_LIBS += $(REL_LIB)/libsns_gc4023.a
 MPI_LIBS += $(REL_LIB)/libsns_sc431hai.a
 MPI_LIBS += $(REL_LIB)/libsns_sc450ai.a
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm.h
index 8c92986..10d7dd0 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm.h
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm.h
@@ -235,6 +235,7 @@ typedef enum {
     SC500AI_MIPI_5M_30FPS_10BIT_WDR2TO1,
     SC4336P_MIPI_3M_30FPS_10BIT,
     SC4336P_MIPI_2M_30FPS_10BIT,
+    SC035HGS_MIPI_640X480_180FPS_10BIT,
     SNS_TYPE_BUTT,
 } sample_sns_type;
 
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_isp.c b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_isp.c
index d8d43e4..a0980d7 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_isp.c
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_isp.c
@@ -81,6 +81,21 @@ static ot_isp_pub_attr g_isp_pub_attr_sc4336p_mipi_2m_30fps = {
     },
 };
 
+static ot_isp_pub_attr g_isp_pub_attr_sc035hgs_mipi_640x480_180fps = {
+    { 0, 0, 640, 480 },
+    { 640, 480 },
+    180,
+    OT_ISP_BAYER_BGGR,
+    OT_WDR_MODE_NONE,
+    0,
+    0,
+    0,
+    {
+        0,
+        { 0, 0, 640, 480 },
+    },
+};
+
 static ot_isp_pub_attr g_isp_pub_attr_os04d10_mipi_4m_30fps = {
     { 0, 0, 2560, 1440 },
     { 2560, 1440 },
@@ -237,6 +252,10 @@ td_s32 sample_comm_isp_get_pub_attr_by_sns(sample_sns_type sns_type, ot_isp_pub_
             (td_void)memcpy_s(pub_attr, sizeof(ot_isp_pub_attr),
                 &g_isp_pub_attr_sc4336p_mipi_2m_30fps, sizeof(ot_isp_pub_attr));
             break;
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            (td_void)memcpy_s(pub_attr, sizeof(ot_isp_pub_attr),
+                &g_isp_pub_attr_sc035hgs_mipi_640x480_180fps, sizeof(ot_isp_pub_attr));
+            break;
         case GC4023_MIPI_4M_30FPS_10BIT:
             (td_void)memcpy_s(pub_attr, sizeof(ot_isp_pub_attr),
                 &g_isp_pub_attr_gc4023_mipi_4m_30fps, sizeof(ot_isp_pub_attr));
@@ -282,6 +301,10 @@ ot_isp_sns_obj *sample_comm_isp_get_sns_obj(sample_sns_type sns_type)
         case SC4336P_MIPI_2M_30FPS_10BIT:
             return &g_sns_sc4336p_obj;
 #endif
+#ifdef SC035HGS_MIPI_640X480_180FPS_10BIT_SELECT
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            return &g_sns_sc035hgs_obj;
+#endif
 #ifdef GC4023_MIPI_4M_30FPS_10BIT_SELECT
         case GC4023_MIPI_4M_30FPS_10BIT:
             return &g_sns_gc4023_obj;
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_vi.c b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_vi.c
index dccfc8a..6ba5dee 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_vi.c
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/mpp/sample/common/sample_comm_vi.c
@@ -29,6 +29,8 @@
 #define FPN_FILE_NAME_LENGTH 150
 #define WIDTH_1920 1920
 #define HEIGHT_1080 1080
+#define WIDTH_640 640
+#define HEIGHT_480 480
 #define WIDTH_2560 2560
 #define HEIGHT_1440 1440
 #define WIDTH_2688 2688
@@ -44,6 +46,7 @@
 #define OB_HEIGHT_END 24
 #define OB_HEIGHT_START 0
 #define SC4336P_FULL_LINES_STD 1500
+#define SC035HGS_FULL_LINES_STD 528
 #define OS04D10_FULL_LINES_STD 1473
 #define SC450AI_FULL_LINES_STD 1560
 #define SC500AI_FULL_LINES_STD 1650
@@ -172,6 +175,42 @@ static combo_dev_attr_t g_mipi_2lane_chn0_sensor_sc4336p_10bit_2m_nowdr_dev1_att
     }
 };
 
+static combo_dev_attr_t g_mipi_2lane_chn0_sensor_sc035hgs_10bit_640x480_nowdr_attr = {
+    .devno = 0,
+    .input_mode = INPUT_MODE_MIPI,
+    .data_rate = MIPI_DATA_RATE_X1,
+    .img_rect = {0, 0, WIDTH_640, HEIGHT_480},
+    .mipi_attr = {
+        DATA_TYPE_RAW_10BIT,
+        OT_MIPI_WDR_MODE_NONE,
+        {0, 1, -1, -1}
+    }
+};
+
+static combo_dev_attr_t g_mipi_2lane_chn0_sensor_sc035hgs_10bit_640x480_nowdr_dev0_attr = {
+    .devno = 0,
+    .input_mode = INPUT_MODE_MIPI,
+    .data_rate = MIPI_DATA_RATE_X1,
+    .img_rect = {0, 0, WIDTH_640, HEIGHT_480},
+    .mipi_attr = {
+        DATA_TYPE_RAW_10BIT,
+        OT_MIPI_WDR_MODE_NONE,
+        {0, 1, -1, -1}
+    }
+};
+
+static combo_dev_attr_t g_mipi_2lane_chn0_sensor_sc035hgs_10bit_640x480_nowdr_dev1_attr = {
+    .devno = 1,
+    .input_mode = INPUT_MODE_MIPI,
+    .data_rate = MIPI_DATA_RATE_X1,
+    .img_rect = {0, 0, WIDTH_640, HEIGHT_480},
+    .mipi_attr = {
+        DATA_TYPE_RAW_10BIT,
+        OT_MIPI_WDR_MODE_NONE,
+        {2, 3, -1, -1}
+    }
+};
+
 static combo_dev_attr_t g_mipi_2lane_chn0_sensor_os04d10_10bit_4m_nowdr_attr = {
     .devno = 0,
     .input_mode = INPUT_MODE_MIPI,
@@ -369,6 +408,9 @@ static td_u32 sample_comm_vi_get_sensor_pixel_rate_by_type(sample_sns_type sns_t
         case SC4336P_MIPI_3M_30FPS_10BIT:
             pixel_rate = sample_comm_vi_calc_pipe_pixel_rate(630, 2, 10, 1); /* 630Mbps * 2lane / 10bit */
             break;
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            pixel_rate = sample_comm_vi_calc_pipe_pixel_rate(405, 2, 10, 1); /* 405Mbps * 2lane / 10bit */
+            break;
         case OS04D10_MIPI_4M_30FPS_10BIT:
             pixel_rate = sample_comm_vi_calc_pipe_pixel_rate(720, 2, 10, 1); /* 720Mbps * 2lane / 10bit */
             break;
@@ -416,6 +458,10 @@ static td_void sample_comm_vi_get_mipi_attr(sample_sns_type sns_type, combo_dev_
             (td_void)memcpy_s(combo_attr, sizeof(combo_dev_attr_t),
                 &g_mipi_2lane_chn0_sensor_sc4336p_10bit_2m_nowdr_attr, sizeof(combo_dev_attr_t));
             break;
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            (td_void)memcpy_s(combo_attr, sizeof(combo_dev_attr_t),
+                &g_mipi_2lane_chn0_sensor_sc035hgs_10bit_640x480_nowdr_attr, sizeof(combo_dev_attr_t));
+            break;
         case OS04D10_MIPI_4M_30FPS_10BIT:
             (td_void)memcpy_s(combo_attr, sizeof(combo_dev_attr_t),
                 &g_mipi_2lane_chn0_sensor_os04d10_10bit_4m_nowdr_attr, sizeof(combo_dev_attr_t));
@@ -462,6 +508,7 @@ static td_void sample_comm_vi_get_mipi_ext_data_attr(sample_sns_type sns_type, e
         case SC4336P_MIPI_4M_30FPS_10BIT:
         case SC4336P_MIPI_3M_30FPS_10BIT:
         case SC4336P_MIPI_2M_30FPS_10BIT:
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
         case GC4023_MIPI_4M_30FPS_10BIT:
         case OS04D10_MIPI_4M_30FPS_10BIT:
         case SC431HAI_MIPI_4M_30FPS_10BIT:
@@ -537,6 +584,15 @@ static td_void sample_comm_vi_get_mipi_attr_by_dev_id(sample_sns_type sns_type,
                     &g_mipi_2lane_chn0_sensor_sc4336p_10bit_2m_nowdr_dev1_attr, sizeof(combo_dev_attr_t));
             }
             break;
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            if (vi_dev == 0) {
+                (td_void)memcpy_s(combo_attr, sizeof(combo_dev_attr_t),
+                    &g_mipi_2lane_chn0_sensor_sc035hgs_10bit_640x480_nowdr_dev0_attr, sizeof(combo_dev_attr_t));
+            } else if (vi_dev == 1) { /* dev1 */
+                (td_void)memcpy_s(combo_attr, sizeof(combo_dev_attr_t),
+                    &g_mipi_2lane_chn0_sensor_sc035hgs_10bit_640x480_nowdr_dev1_attr, sizeof(combo_dev_attr_t));
+            }
+            break;
         case GC4023_MIPI_4M_30FPS_10BIT:
             if (vi_dev == 0) {
                 (td_void)memcpy_s(combo_attr, sizeof(combo_dev_attr_t),
@@ -657,6 +713,10 @@ td_void sample_comm_vi_get_size_by_sns_type(sample_sns_type sns_type, ot_size *s
             size->width  = WIDTH_1920;
             size->height = HEIGHT_1080;
             break;
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            size->width  = WIDTH_640;
+            size->height = HEIGHT_480;
+            break;
 
         default:
             size->width  = WIDTH_1920;
@@ -673,6 +733,9 @@ td_void sample_comm_vi_get_full_lines_std_by_sns_type(sample_sns_type sns_type,
         case SC431HAI_MIPI_4M_30FPS_10BIT:
             *full_lines_std = SC4336P_FULL_LINES_STD;
             break;
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
+            *full_lines_std = SC035HGS_FULL_LINES_STD;
+            break;
         case OS04D10_MIPI_4M_30FPS_10BIT:
             *full_lines_std = OS04D10_FULL_LINES_STD;
             break;
@@ -695,6 +758,7 @@ td_u32 sample_comm_vi_get_obheight_by_sns_type(sample_sns_type sns_type)
         case SC4336P_MIPI_4M_30FPS_10BIT:
         case SC4336P_MIPI_3M_30FPS_10BIT:
         case SC4336P_MIPI_2M_30FPS_10BIT:
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
         case GC4023_MIPI_4M_30FPS_10BIT:
         case OS04D10_MIPI_4M_30FPS_10BIT:
         case SC431HAI_MIPI_4M_30FPS_10BIT:
@@ -718,6 +782,7 @@ static td_u32 sample_comm_vi_get_pipe_num_by_sns_type(sample_sns_type sns_type)
         case SC4336P_MIPI_4M_30FPS_10BIT:
         case SC4336P_MIPI_3M_30FPS_10BIT:
         case SC4336P_MIPI_2M_30FPS_10BIT:
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
         case SC431HAI_MIPI_4M_30FPS_10BIT:
         case SC450AI_MIPI_4M_30FPS_10BIT:
         case SC500AI_MIPI_5M_30FPS_10BIT:
@@ -740,6 +805,7 @@ static ot_wdr_mode sample_comm_vi_get_wdr_mode_by_sns_type(sample_sns_type sns_t
         case SC4336P_MIPI_4M_30FPS_10BIT:
         case SC4336P_MIPI_3M_30FPS_10BIT:
         case SC4336P_MIPI_2M_30FPS_10BIT:
+        case SC035HGS_MIPI_640X480_180FPS_10BIT:
         case GC4023_MIPI_4M_30FPS_10BIT:
         case OS04D10_MIPI_4M_30FPS_10BIT:
         case SC431HAI_MIPI_4M_30FPS_10BIT:
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/include/ot_sns_ctrl.h b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/include/ot_sns_ctrl.h
index d75c887..6ec8215 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/include/ot_sns_ctrl.h
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/include/ot_sns_ctrl.h
@@ -79,6 +79,7 @@ extern ot_isp_sns_obj g_sns_sc500ai_obj;
 extern ot_isp_sns_obj g_sns_sc850sl_obj;
 extern ot_isp_sns_obj g_sns_gst412c_obj;
 extern ot_isp_sns_obj g_sns_sc4336p_obj;
+extern ot_isp_sns_obj g_sns_sc035hgs_obj;
 extern ot_isp_sns_obj g_sns_gc4023_obj;
 extern ot_isp_sns_obj g_sns_sc431hai_obj;
 
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s
index b19072b..22c7b20 100644
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s
@@ -10,6 +10,7 @@
 
 ####### select sensor type for your test ########################
 ####      sc4336p              ####
+####      sc035hgs             ####
 ####      gc4023               ####
 ####      sc450ai              ####
 ####      sc500ai              ####
@@ -166,8 +167,8 @@ load_usage()
     echo "    -ir_auto                 config ir_auto enable [default: 0]"
     echo "    -profile                 config sys_profile [default: 0]"
     echo "    -h                       help information"
-    echo -e "Available sensors:sc4336p gc4023 sc450ai sc500ai bt1120/bt656/bt601"
-    echo -e "for example: $0 -i -sensor0 sc4336p -sensor1 sc4336p -mmz_start 0x42000000 -mmz_size 96M -ir_auto 1\n"
+    echo -e "Available sensors:sc4336p sc035hgs gc4023 sc450ai sc500ai bt1120/bt656/bt601"
+    echo -e "for example: $0 -i -sensor0 sc035hgs -sensor1 sc035hgs -mmz_start 0x42000000 -mmz_size 96M -ir_auto 1\n"
 }
 
 b_arg_insmod=0
diff --git a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s_debug b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s_debug
index 299134c..7a79452 100755
--- a/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s_debug
+++ b/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source/out/ko/load3516cv610/load3516cv610_20s_debug
@@ -10,6 +10,7 @@
 
 ####### select sensor type for your test ########################
 ####      sc4336p              ####
+####      sc035hgs             ####
 ####      gc4023               ####
 ####      sc450ai              ####
 ####      sc500ai              ####
@@ -166,8 +167,8 @@ load_usage()
     echo "    -ir_auto                 config ir_auto enable [default: 0]"
     echo "    -profile                 config sys_profile [default: 0]"
     echo "    -h                       help information"
-    echo -e "Available sensors:sc4336p gc4023 sc450ai sc500ai bt1120/bt656/bt601"
-    echo -e "for example: $0 -i -sensor0 sc4336p -sensor1 sc4336p -mmz_start 0x42000000 -mmz_size 96M -ir_auto 1\n"
+    echo -e "Available sensors:sc4336p sc035hgs gc4023 sc450ai sc500ai bt1120/bt656/bt601"
+    echo -e "for example: $0 -i -sensor0 sc035hgs -sensor1 sc035hgs -mmz_start 0x42000000 -mmz_size 96M -ir_auto 1\n"
 }
 
 b_arg_insmod=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值