11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef __HI_COMM_SNS_H__
171bd4fe43Sopenharmony_ci#define __HI_COMM_SNS_H__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include "hi_type.h"
201bd4fe43Sopenharmony_ci#include "hi_common.h"
211bd4fe43Sopenharmony_ci#include "hi_comm_isp.h"
221bd4fe43Sopenharmony_ci
231bd4fe43Sopenharmony_ci#ifdef __cplusplus
241bd4fe43Sopenharmony_ci#if __cplusplus
251bd4fe43Sopenharmony_ciextern "C" {
261bd4fe43Sopenharmony_ci#endif
271bd4fe43Sopenharmony_ci#endif /* End of #ifdef __cplusplus */
281bd4fe43Sopenharmony_ci
291bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_BLACK_LEVEL_S {
301bd4fe43Sopenharmony_ci    HI_BOOL bUpdate;
311bd4fe43Sopenharmony_ci    HI_U16  au16BlackLevel[ISP_BAYER_CHN_NUM];
321bd4fe43Sopenharmony_ci} ISP_CMOS_BLACK_LEVEL_S;
331bd4fe43Sopenharmony_ci
341bd4fe43Sopenharmony_citypedef struct hiISP_SNS_ATTR_INFO_S {
351bd4fe43Sopenharmony_ci    SENSOR_ID            eSensorId;
361bd4fe43Sopenharmony_ci} ISP_SNS_ATTR_INFO_S;
371bd4fe43Sopenharmony_ci
381bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_DEMOSAIC_S {
391bd4fe43Sopenharmony_ci    HI_BOOL bEnable;
401bd4fe43Sopenharmony_ci    HI_U8   au8NonDirStr[ISP_AUTO_ISO_STRENGTH_NUM];
411bd4fe43Sopenharmony_ci    HI_U8   au8NonDirMFDetailEhcStr[ISP_AUTO_ISO_STRENGTH_NUM];
421bd4fe43Sopenharmony_ci    HI_U8   au8NonDirHFDetailEhcStr[ISP_AUTO_ISO_STRENGTH_NUM];
431bd4fe43Sopenharmony_ci    HI_U8   au8DetailSmoothRange[ISP_AUTO_ISO_STRENGTH_NUM];
441bd4fe43Sopenharmony_ci} ISP_CMOS_DEMOSAIC_S;
451bd4fe43Sopenharmony_ci
461bd4fe43Sopenharmony_ci#define WDR_MAX_FRAME          2
471bd4fe43Sopenharmony_ci#define BAYER_CALIBRATION_PARA_NUM 3
481bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_BAYERNR_S {
491bd4fe43Sopenharmony_ci    HI_BOOL  bEnable;
501bd4fe43Sopenharmony_ci    HI_BOOL  bBnrMonoSensorEn;
511bd4fe43Sopenharmony_ci    HI_BOOL  bNrLscEnable;
521bd4fe43Sopenharmony_ci    HI_U8    u8BnrLscMaxGain;
531bd4fe43Sopenharmony_ci    HI_U16   u16BnrLscCmpStrength;
541bd4fe43Sopenharmony_ci
551bd4fe43Sopenharmony_ci    HI_U8    au8LutFineStr[ISP_AUTO_ISO_STRENGTH_NUM];
561bd4fe43Sopenharmony_ci    HI_U8    au8ChromaStr[ISP_BAYER_CHN_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
571bd4fe43Sopenharmony_ci    HI_U8    au8WDRFrameStr[WDR_MAX_FRAME_NUM];
581bd4fe43Sopenharmony_ci    HI_U8    au8FusionFrameStr[WDR_MAX_FRAME_NUM];
591bd4fe43Sopenharmony_ci    HI_U16   au16CoarseStr[ISP_BAYER_CHN_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
601bd4fe43Sopenharmony_ci    HI_U16   au16LutCoringWgt[ISP_AUTO_ISO_STRENGTH_NUM];
611bd4fe43Sopenharmony_ci    HI_U16   au16LutCoringRatio[HI_ISP_BAYERNR_LUT_LENGTH];
621bd4fe43Sopenharmony_ci} ISP_CMOS_BAYERNR_S;
631bd4fe43Sopenharmony_ci
641bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_NOISE_CALIBRATION_S {
651bd4fe43Sopenharmony_ci    HI_U16   u16CalibrationLutNum;
661bd4fe43Sopenharmony_ci    HI_FLOAT afCalibrationCoef[BAYER_CALIBTAION_MAX_NUM][BAYER_CALIBRATION_PARA_NUM];
671bd4fe43Sopenharmony_ci} ISP_CMOS_NOISE_CALIBRATION_S;
681bd4fe43Sopenharmony_ci
691bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_DETAIL_S {
701bd4fe43Sopenharmony_ci    ISP_DE_ATTR_S stAttr;
711bd4fe43Sopenharmony_ci} ISP_CMOS_DETAIL_S;
721bd4fe43Sopenharmony_ci
731bd4fe43Sopenharmony_citypedef struct HiISP_CMOS_SHARPEN_MANUAL_S {
741bd4fe43Sopenharmony_ci    HI_U8  au8LumaWgt[ISP_SHARPEN_LUMA_NUM];     /* Range:[0, 127]; Adjust the sharpen strength according to luma.
751bd4fe43Sopenharmony_ci                                                    Sharpen strength will be weaker when it decrease. */
761bd4fe43Sopenharmony_ci    HI_U16 au16TextureStr[ISP_SHARPEN_GAIN_NUM]; /* Range:[0, 4095]; Format:7.5;Undirectional sharpen strength
771bd4fe43Sopenharmony_ci                                                    for texture and detail enhancement */
781bd4fe43Sopenharmony_ci    HI_U16 au16EdgeStr[ISP_SHARPEN_GAIN_NUM];    /* Range:[0, 4095]; Format:7.5;Directional sharpen strength for
791bd4fe43Sopenharmony_ci                                                    edge enhancement */
801bd4fe43Sopenharmony_ci    HI_U16 u16TextureFreq;   /* Range:[0, 4095];Format:6.6; Texture frequency adjustment. Texture and detail will be
811bd4fe43Sopenharmony_ci                                finer when it increase */
821bd4fe43Sopenharmony_ci    HI_U16 u16EdgeFreq;      /* Range:[0, 4095];Format:6.6; Edge frequency adjustment.
831bd4fe43Sopenharmony_ci                                Edge will be narrower and thiner when it increase */
841bd4fe43Sopenharmony_ci    HI_U8  u8OverShoot;      /* Range:[0, 127]; u8OvershootAmt */
851bd4fe43Sopenharmony_ci    HI_U8  u8UnderShoot;     /* Range:[0, 127]; u8UndershootAmt */
861bd4fe43Sopenharmony_ci    HI_U8  u8ShootSupStr;    /* Range:[0, 255]; overshoot and undershoot suppression strength, the amplitude and width
871bd4fe43Sopenharmony_ci                                of shoot will be decrease when shootSupSt increase */
881bd4fe43Sopenharmony_ci    HI_U8  u8ShootSupAdj;    /* Range:[0, 15]; overshoot and undershoot suppression adjusting, adjust the edge shoot
891bd4fe43Sopenharmony_ci                                suppression strength */
901bd4fe43Sopenharmony_ci    HI_U8  u8DetailCtrl;     /* Range:[0, 255]; Different sharpen strength for detail and edge. When it is bigger than
911bd4fe43Sopenharmony_ci                                128, detail sharpen strength will be stronger than edge. */
921bd4fe43Sopenharmony_ci    HI_U8  u8DetailCtrlThr;  /* Range:[0, 255];The threshold of DetailCtrl,it is used to distinguish detail and edge */
931bd4fe43Sopenharmony_ci    HI_U8  u8EdgeFiltStr;    /* Range:[0, 63]; The strength of edge filtering. */
941bd4fe43Sopenharmony_ci    HI_U8  u8EdgeFiltMaxCap; /* Range:[0, 47]; The max capacity of edge filtering. */
951bd4fe43Sopenharmony_ci    HI_U8  u8RGain;          /* Range:[0, 31];Sharpen Gain for Red Area */
961bd4fe43Sopenharmony_ci    HI_U8  u8GGain;          /* Range:[0, 255]; Sharpen Gain for Green Area */
971bd4fe43Sopenharmony_ci    HI_U8  u8BGain;          /* Range:[0, 31]; Sharpen Gain for Blue Area */
981bd4fe43Sopenharmony_ci    HI_U8  u8SkinGain;       /* Range:[0, 31]; Sharpen Gain for Skin Area */
991bd4fe43Sopenharmony_ci    HI_U16 u16MaxSharpGain;  /* Range:[0, 0x7FF]; Format:8.3; Maximum sharpen gain */
1001bd4fe43Sopenharmony_ci} ISP_CMOS_SHARPEN_MANUAL_S;
1011bd4fe43Sopenharmony_ci
1021bd4fe43Sopenharmony_citypedef struct HiISP_CMOS_SHARPEN_AUTO_S {
1031bd4fe43Sopenharmony_ci    HI_U8  au8LumaWgt[ISP_SHARPEN_LUMA_NUM][ISP_AUTO_ISO_STRENGTH_NUM];  /* Range:[0, 127]; Adjust the sharpen
1041bd4fe43Sopenharmony_ci                                                                           strength according to luma. Sharpen
1051bd4fe43Sopenharmony_ci                                                                           strength will be weaker when it decrease */
1061bd4fe43Sopenharmony_ci    HI_U16 au16TextureStr[ISP_SHARPEN_GAIN_NUM][ISP_AUTO_ISO_STRENGTH_NUM]; /* Range:[0, 4095]; Format:7.5;Undirectional
1071bd4fe43Sopenharmony_ci                                                                               sharpen strength for texture and detail
1081bd4fe43Sopenharmony_ci                                                                               enhancement */
1091bd4fe43Sopenharmony_ci    HI_U16 au16EdgeStr[ISP_SHARPEN_GAIN_NUM][ISP_AUTO_ISO_STRENGTH_NUM];    /* Range:[0, 4095]; Format:7.5;Directional
1101bd4fe43Sopenharmony_ci                                                                               sharpen strength for edge enhancement */
1111bd4fe43Sopenharmony_ci    HI_U16 au16TextureFreq[ISP_AUTO_ISO_STRENGTH_NUM];   /* Range:[0, 4095]; Format:6.6;Texture frequency adjustment.
1121bd4fe43Sopenharmony_ci                                                            Texture and detail will be finer when it increase */
1131bd4fe43Sopenharmony_ci    HI_U16 au16EdgeFreq[ISP_AUTO_ISO_STRENGTH_NUM];      /* Range:[0, 4095]; Format:6.6;Edge frequency adjustment.
1141bd4fe43Sopenharmony_ci                                                            Edge will be narrower and thiner when it increase */
1151bd4fe43Sopenharmony_ci    HI_U8  au8OverShoot[ISP_AUTO_ISO_STRENGTH_NUM];      /* Range:[0, 127] */
1161bd4fe43Sopenharmony_ci    HI_U8  au8UnderShoot[ISP_AUTO_ISO_STRENGTH_NUM];     /* Range:[0, 127] */
1171bd4fe43Sopenharmony_ci    HI_U8  au8ShootSupStr[ISP_AUTO_ISO_STRENGTH_NUM];    /* Range:[0, 255]; overshoot and undershoot suppression
1181bd4fe43Sopenharmony_ci                                                            strength, the amplitude and width of shoot will be decrease
1191bd4fe43Sopenharmony_ci                                                            when shootSupSt increase */
1201bd4fe43Sopenharmony_ci    HI_U8  au8ShootSupAdj[ISP_AUTO_ISO_STRENGTH_NUM];    /* Range:[0, 15]; overshoot and undershoot suppression
1211bd4fe43Sopenharmony_ci                                                            adjusting, adjust the edge shoot suppression strength */
1221bd4fe43Sopenharmony_ci    HI_U8  au8DetailCtrl[ISP_AUTO_ISO_STRENGTH_NUM];     /* Range:[0, 255];Different sharpen strength for detail and
1231bd4fe43Sopenharmony_ci                                                            edge. When it is bigger than 128, detail sharpen strength
1241bd4fe43Sopenharmony_ci                                                            will be stronger than edge. */
1251bd4fe43Sopenharmony_ci    HI_U8  au8DetailCtrlThr[ISP_AUTO_ISO_STRENGTH_NUM];  /* Range:[0, 255]; The threshold of DetailCtrl, it is used to
1261bd4fe43Sopenharmony_ci                                                            distinguish detail and edge. */
1271bd4fe43Sopenharmony_ci    HI_U8  au8EdgeFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];    /* Range:[0, 63]; The strength of edge filtering. */
1281bd4fe43Sopenharmony_ci    HI_U8  au8EdgeFiltMaxCap[ISP_AUTO_ISO_STRENGTH_NUM]; /* Range:[0, 47]; The max capacity of edge filtering. */
1291bd4fe43Sopenharmony_ci    HI_U8  au8RGain[ISP_AUTO_ISO_STRENGTH_NUM];          /* Range:[0, 31]; Sharpen Gain for Red Area */
1301bd4fe43Sopenharmony_ci    HI_U8  au8GGain[ISP_AUTO_ISO_STRENGTH_NUM];          /* Range:[0, 255]; Sharpen Gain for Green Area */
1311bd4fe43Sopenharmony_ci    HI_U8  au8BGain[ISP_AUTO_ISO_STRENGTH_NUM];          /* Range:[0, 31]; Sharpen Gain for Blue Area */
1321bd4fe43Sopenharmony_ci    HI_U8  au8SkinGain[ISP_AUTO_ISO_STRENGTH_NUM];       /* Range:[0, 31]; */
1331bd4fe43Sopenharmony_ci    HI_U16 au16MaxSharpGain[ISP_AUTO_ISO_STRENGTH_NUM];  /* Range:[0, 0x7FF]; Format:8.3; */
1341bd4fe43Sopenharmony_ci} ISP_CMOS_SHARPEN_AUTO_S;
1351bd4fe43Sopenharmony_ci
1361bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_SHARPEN_S {
1371bd4fe43Sopenharmony_ci    HI_U8 u8SkinUmin;
1381bd4fe43Sopenharmony_ci    HI_U8 u8SkinVmin;
1391bd4fe43Sopenharmony_ci    HI_U8 u8SkinUmax;
1401bd4fe43Sopenharmony_ci    HI_U8 u8SkinVmax;
1411bd4fe43Sopenharmony_ci    ISP_CMOS_SHARPEN_MANUAL_S stManual;
1421bd4fe43Sopenharmony_ci    ISP_CMOS_SHARPEN_AUTO_S   stAuto;
1431bd4fe43Sopenharmony_ci} ISP_CMOS_SHARPEN_S;
1441bd4fe43Sopenharmony_ci
1451bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_EDGEMARK_S {
1461bd4fe43Sopenharmony_ci    HI_BOOL bEnable;               /* RW; Range:[0, 1]; Format:1.0;Enable/Disable Edge Mark */
1471bd4fe43Sopenharmony_ci    HI_U8   u8Threshold;           /* RW; range: [0, 255];  Format:8.0; */
1481bd4fe43Sopenharmony_ci    HI_U32  u32Color;              /* RW; range: [0, 0xFFFFFF];  Format:32.0; */
1491bd4fe43Sopenharmony_ci} ISP_CMOS_EDGEMARK_S;
1501bd4fe43Sopenharmony_ci
1511bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_HLC_S {
1521bd4fe43Sopenharmony_ci    HI_BOOL bEnable;         /* RW; Range:[0, 1]; Format:1.0;Enable/Disable HLC module */
1531bd4fe43Sopenharmony_ci    HI_U8   u8LumaThr;       /* RW; range: [0, 255];  Format:8.0; */
1541bd4fe43Sopenharmony_ci    HI_U8   u8LumaTarget;    /* RW; range: [0, 255];  Format:8.0; */
1551bd4fe43Sopenharmony_ci} ISP_CMOS_HLC_S;
1561bd4fe43Sopenharmony_ci
1571bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_DRC_S {
1581bd4fe43Sopenharmony_ci    HI_BOOL bEnable;
1591bd4fe43Sopenharmony_ci    ISP_OP_TYPE_E enOpType;
1601bd4fe43Sopenharmony_ci
1611bd4fe43Sopenharmony_ci    HI_U16  u16ManualStrength;
1621bd4fe43Sopenharmony_ci    HI_U16  u16AutoStrength;
1631bd4fe43Sopenharmony_ci
1641bd4fe43Sopenharmony_ci    HI_U8   u8SpatialFltCoef;
1651bd4fe43Sopenharmony_ci    HI_U8   u8RangeFltCoef;
1661bd4fe43Sopenharmony_ci    HI_U8   u8ContrastControl;
1671bd4fe43Sopenharmony_ci    HI_S8   s8DetailAdjustFactor;
1681bd4fe43Sopenharmony_ci    HI_U8   u8RangeAdaMax;
1691bd4fe43Sopenharmony_ci
1701bd4fe43Sopenharmony_ci    HI_U8   u8FltScaleFine;
1711bd4fe43Sopenharmony_ci    HI_U8   u8FltScaleCoarse;
1721bd4fe43Sopenharmony_ci    HI_U8   u8GradRevMax;
1731bd4fe43Sopenharmony_ci    HI_U8   u8GradRevThr;
1741bd4fe43Sopenharmony_ci
1751bd4fe43Sopenharmony_ci    HI_U8   u8BrightGainLmt;
1761bd4fe43Sopenharmony_ci    HI_U8   u8BrightGainLmtStep;
1771bd4fe43Sopenharmony_ci    HI_U8   u8DarkGainLmtY;
1781bd4fe43Sopenharmony_ci    HI_U8   u8DarkGainLmtC;
1791bd4fe43Sopenharmony_ci    HI_U8   u8PDStrength;
1801bd4fe43Sopenharmony_ci    HI_U8   u8LocalMixingBrightMax;
1811bd4fe43Sopenharmony_ci    HI_U8   u8LocalMixingBrightMin;
1821bd4fe43Sopenharmony_ci    HI_U8   u8LocalMixingBrightThr;
1831bd4fe43Sopenharmony_ci    HI_S8   s8LocalMixingBrightSlo;
1841bd4fe43Sopenharmony_ci    HI_U8   u8LocalMixingDarkMax;
1851bd4fe43Sopenharmony_ci    HI_U8   u8LocalMixingDarkMin;
1861bd4fe43Sopenharmony_ci    HI_U8   u8LocalMixingDarkThr;
1871bd4fe43Sopenharmony_ci    HI_S8   s8LocalMixingDarkSlo;
1881bd4fe43Sopenharmony_ci    HI_U16  u16ColorCorrectionLut[HI_ISP_DRC_CC_NODE_NUM];
1891bd4fe43Sopenharmony_ci    HI_U16  u16ToneMappingValue[HI_ISP_DRC_TM_NODE_NUM];
1901bd4fe43Sopenharmony_ci
1911bd4fe43Sopenharmony_ci    HI_U8   u8Asymmetry;
1921bd4fe43Sopenharmony_ci    HI_U8   u8SecondPole;
1931bd4fe43Sopenharmony_ci    HI_U8   u8Stretch;
1941bd4fe43Sopenharmony_ci    HI_U8   u8Compress;
1951bd4fe43Sopenharmony_ci
1961bd4fe43Sopenharmony_ci    HI_U8   u8CurveSel;
1971bd4fe43Sopenharmony_ci
1981bd4fe43Sopenharmony_ci    HI_U16 au16Xpoint[HI_ISP_DRC_CUBIC_POINT_NUM];
1991bd4fe43Sopenharmony_ci    HI_U16 au16Ypoint[HI_ISP_DRC_CUBIC_POINT_NUM];
2001bd4fe43Sopenharmony_ci    HI_U16 au16Slope[HI_ISP_DRC_CUBIC_POINT_NUM];
2011bd4fe43Sopenharmony_ci} ISP_CMOS_DRC_S;
2021bd4fe43Sopenharmony_ci
2031bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_WDR_S {
2041bd4fe43Sopenharmony_ci    HI_BOOL  bFusionMode;
2051bd4fe43Sopenharmony_ci    HI_BOOL  bMotionComp;
2061bd4fe43Sopenharmony_ci
2071bd4fe43Sopenharmony_ci    HI_U16   u16ShortThr;
2081bd4fe43Sopenharmony_ci    HI_U16   u16LongThr;
2091bd4fe43Sopenharmony_ci
2101bd4fe43Sopenharmony_ci    HI_BOOL  bForceLong;
2111bd4fe43Sopenharmony_ci    HI_U16   u16ForceLongLowThr;
2121bd4fe43Sopenharmony_ci    HI_U16   u16ForceLongHigThr;
2131bd4fe43Sopenharmony_ci
2141bd4fe43Sopenharmony_ci    HI_BOOL  bShortExpoChk;
2151bd4fe43Sopenharmony_ci    HI_U16   u16ShortCheckThd;
2161bd4fe43Sopenharmony_ci    HI_BOOL  bMDRefFlicker;
2171bd4fe43Sopenharmony_ci
2181bd4fe43Sopenharmony_ci    HI_U8    au8MdThrLowGain[ISP_AUTO_ISO_STRENGTH_NUM];
2191bd4fe43Sopenharmony_ci    HI_U8    au8MdThrHigGain[ISP_AUTO_ISO_STRENGTH_NUM];
2201bd4fe43Sopenharmony_ci
2211bd4fe43Sopenharmony_ci    ISP_BNR_MODE_E  enBnrMode;
2221bd4fe43Sopenharmony_ci    HI_U16   au16FusionThr[WDR_MAX_FRAME];
2231bd4fe43Sopenharmony_ci    HI_U8    u8MdtStillThd;
2241bd4fe43Sopenharmony_ci    HI_U8    u8MdtLongBlend;
2251bd4fe43Sopenharmony_ci} ISP_CMOS_WDR_S;
2261bd4fe43Sopenharmony_ci
2271bd4fe43Sopenharmony_citypedef struct HiISP_CMOS_DEHAZE_S {
2281bd4fe43Sopenharmony_ci    HI_BOOL       bEnable;           /* RW;Range:[0,1];Format:1.0; */
2291bd4fe43Sopenharmony_ci    HI_BOOL       bUserLutEnable;    /* RW;Range:[0,1];0:Auto Lut 1:User Lut */
2301bd4fe43Sopenharmony_ci    ISP_OP_TYPE_E enOpType;
2311bd4fe43Sopenharmony_ci    HI_U8         u8AutoStrength;
2321bd4fe43Sopenharmony_ci    HI_U8         u8ManualStrength;
2331bd4fe43Sopenharmony_ci} ISP_CMOS_DEHAZE_S;
2341bd4fe43Sopenharmony_ci
2351bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_PREGAMMA_S {
2361bd4fe43Sopenharmony_ci    HI_BOOL bEnable;
2371bd4fe43Sopenharmony_ci    HI_U32  au32PreGamma[PREGAMMA_NODE_NUM];
2381bd4fe43Sopenharmony_ci} ISP_CMOS_PREGAMMA_S;
2391bd4fe43Sopenharmony_ci
2401bd4fe43Sopenharmony_ci#define GAMMA_NODE_NUMBER      257   /* Update NODE NUMBER */
2411bd4fe43Sopenharmony_ci#define GAMMA_EXT_NODE_NUMBER  1025  /* Update NODE NUMBER */
2421bd4fe43Sopenharmony_ci#define GAMMA_OUTSEG_NUMBER    8     /* Update NODE NUMBER */
2431bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_GAMMA_S {
2441bd4fe43Sopenharmony_ci    HI_U16  au16Gamma[GAMMA_EXT_NODE_NUMBER];
2451bd4fe43Sopenharmony_ci} ISP_CMOS_GAMMA_S;
2461bd4fe43Sopenharmony_ci
2471bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_SENSOR_MAX_RESOLUTION_S {
2481bd4fe43Sopenharmony_ci    HI_U32  u32MaxWidth;
2491bd4fe43Sopenharmony_ci    HI_U32  u32MaxHeight;
2501bd4fe43Sopenharmony_ci} ISP_CMOS_SENSOR_MAX_RESOLUTION_S;
2511bd4fe43Sopenharmony_ci
2521bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_DPC_S {
2531bd4fe43Sopenharmony_ci    HI_U16  au16Strength[ISP_AUTO_ISO_STRENGTH_NUM];
2541bd4fe43Sopenharmony_ci    HI_U16  au16BlendRatio[ISP_AUTO_ISO_STRENGTH_NUM];
2551bd4fe43Sopenharmony_ci} ISP_CMOS_DPC_S;
2561bd4fe43Sopenharmony_ci
2571bd4fe43Sopenharmony_citypedef struct hiISP_LSC_CABLI_TABLE_S {
2581bd4fe43Sopenharmony_ci    HI_U16 au16R_Gain[HI_ISP_LSC_GRID_POINTS];
2591bd4fe43Sopenharmony_ci    HI_U16 au16Gr_Gain[HI_ISP_LSC_GRID_POINTS];
2601bd4fe43Sopenharmony_ci    HI_U16 au16Gb_Gain[HI_ISP_LSC_GRID_POINTS];
2611bd4fe43Sopenharmony_ci    HI_U16 au16B_Gain[HI_ISP_LSC_GRID_POINTS];
2621bd4fe43Sopenharmony_ci} ISP_LSC_CABLI_TABLE_S;
2631bd4fe43Sopenharmony_ci
2641bd4fe43Sopenharmony_citypedef struct hiISP_BNR_LSC_CALIB_TABLE_S {
2651bd4fe43Sopenharmony_ci    HI_U16 au16R_Gain[HI_ISP_RLSC_POINTS];
2661bd4fe43Sopenharmony_ci    HI_U16 au16Gr_Gain[HI_ISP_RLSC_POINTS];
2671bd4fe43Sopenharmony_ci    HI_U16 au16Gb_Gain[HI_ISP_RLSC_POINTS];
2681bd4fe43Sopenharmony_ci    HI_U16 au16B_Gain[HI_ISP_RLSC_POINTS];
2691bd4fe43Sopenharmony_ci} ISP_BNR_LSC_CALIB_TABLE_S;
2701bd4fe43Sopenharmony_ci
2711bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_LSC_S {
2721bd4fe43Sopenharmony_ci    HI_U16  u16MeshStrength;
2731bd4fe43Sopenharmony_ci    HI_U8   u8MeshScale;
2741bd4fe43Sopenharmony_ci    ISP_LSC_CABLI_TABLE_S astLscCalibTable[HI_ISP_MLSC_GAIN_LUT_NUM];
2751bd4fe43Sopenharmony_ci    ISP_BNR_LSC_CALIB_TABLE_S stBNRLscCalibTable;
2761bd4fe43Sopenharmony_ci} ISP_CMOS_LSC_S;
2771bd4fe43Sopenharmony_ci
2781bd4fe43Sopenharmony_citypedef struct hiISP_ACS_Y_SHADING_LUT_S {
2791bd4fe43Sopenharmony_ci    HI_U16 u16GParamHighCT[HI_ISP_LSC_GRID_POINTS];
2801bd4fe43Sopenharmony_ci    HI_U16 u16GParamLowCT[HI_ISP_LSC_GRID_POINTS];
2811bd4fe43Sopenharmony_ci} ISP_ACS_Y_SHADING_LUT_S;
2821bd4fe43Sopenharmony_ci
2831bd4fe43Sopenharmony_citypedef struct hiISP_ACS_COLOR_SHADING_LUT_S {
2841bd4fe43Sopenharmony_ci    HI_FLOAT f32AvgRgMap[HI_ISP_LSC_GRID_POINTS];
2851bd4fe43Sopenharmony_ci    HI_FLOAT f32AvgBgMap[HI_ISP_LSC_GRID_POINTS];
2861bd4fe43Sopenharmony_ci    HI_FLOAT f32ProfRgMap[HI_ISP_LSC_GRID_POINTS];
2871bd4fe43Sopenharmony_ci    HI_FLOAT f32ProfBgMap[HI_ISP_LSC_GRID_POINTS];
2881bd4fe43Sopenharmony_ci} ISP_ACS_COLOR_SHADING_LUT_S;
2891bd4fe43Sopenharmony_ci
2901bd4fe43Sopenharmony_citypedef struct hiISP_ACS_CALIB_PARAM_S {
2911bd4fe43Sopenharmony_ci    HI_S16   u16LightIndex[HI_ISP_ACS_LIGHT_NUM * HI_ISP_ACS_CHN_NUM];
2921bd4fe43Sopenharmony_ci    HI_FLOAT f32ModelARMin;
2931bd4fe43Sopenharmony_ci    HI_FLOAT f32ModelARStep;
2941bd4fe43Sopenharmony_ci    HI_FLOAT f32ModelABMin;
2951bd4fe43Sopenharmony_ci    HI_FLOAT f32ModelABStep;
2961bd4fe43Sopenharmony_ci    HI_S16   u16LightTypeGHigh;
2971bd4fe43Sopenharmony_ci    HI_S16   u16LightTypeGLow;
2981bd4fe43Sopenharmony_ci} ISP_ACS_CALIB_PARAM_S;
2991bd4fe43Sopenharmony_ci
3001bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_ACS_S {
3011bd4fe43Sopenharmony_ci    HI_BOOL                      bAcsEn;
3021bd4fe43Sopenharmony_ci    HI_U16                       u16AcsShadingStr;
3031bd4fe43Sopenharmony_ci    ISP_ACS_CALIB_PARAM_S        stAcsCalibParam;
3041bd4fe43Sopenharmony_ci    ISP_ACS_Y_SHADING_LUT_S      stAcsYShadingLut;
3051bd4fe43Sopenharmony_ci    ISP_ACS_COLOR_SHADING_LUT_S  stAcsColorShadingLut;
3061bd4fe43Sopenharmony_ci} ISP_CMOS_ACS_S;
3071bd4fe43Sopenharmony_ci
3081bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_CA_S {
3091bd4fe43Sopenharmony_ci    HI_BOOL   bEnable;
3101bd4fe43Sopenharmony_ci    HI_U16    au16YRatioLut[HI_ISP_CA_YRATIO_LUT_LENGTH];  /* 1.10bit  Y Ratio For UV; Max = 2047 FW Limit */
3111bd4fe43Sopenharmony_ci    HI_S16    as16ISORatio[ISP_AUTO_ISO_STRENGTH_NUM];     /* 1.10bit  ISO Ratio  For UV,Max = 2047 FW Limi */
3121bd4fe43Sopenharmony_ci} ISP_CMOS_CA_S;
3131bd4fe43Sopenharmony_ci
3141bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_CLUT_S {
3151bd4fe43Sopenharmony_ci    HI_BOOL bEnable;
3161bd4fe43Sopenharmony_ci    HI_U32  u32GainR;
3171bd4fe43Sopenharmony_ci    HI_U32  u32GainG;
3181bd4fe43Sopenharmony_ci    HI_U32  u32GainB;
3191bd4fe43Sopenharmony_ci    ISP_CLUT_LUT_S stClutLut;
3201bd4fe43Sopenharmony_ci} ISP_CMOS_CLUT_S;
3211bd4fe43Sopenharmony_ci
3221bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_EXPANDER_POINT_S {
3231bd4fe43Sopenharmony_ci    HI_U16 u16X;                    /* RW;Range:[0x0,0x100];Format:8.0;The X point of the knee */
3241bd4fe43Sopenharmony_ci    HI_U32 u32Y;                    /* RW;Range:[0x0,0x100000];Format:21.0;The Y point of the  knee */
3251bd4fe43Sopenharmony_ci} ISP_CMOS_EXPANDER_POINT_S;
3261bd4fe43Sopenharmony_ci
3271bd4fe43Sopenharmony_ci#define ISP_EXPANDER_POINT_NUM_MAX (EXPANDER_NODE_NUM - 1)
3281bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_EXPANDER_S {
3291bd4fe43Sopenharmony_ci    HI_BOOL bEnable;
3301bd4fe43Sopenharmony_ci    HI_U8   u8BitDepthIn;            /* RW;Range:[0xC,0x14];Format:5.0;The Bit depth of input */
3311bd4fe43Sopenharmony_ci    HI_U8   u8BitDepthOut;           /* RW;Range:[0xC,0x14];Format:5.0;The Bit depth of output */
3321bd4fe43Sopenharmony_ci    HI_U16  u16ExpanderPointNum;     /* Range:[1, 256] */
3331bd4fe43Sopenharmony_ci    ISP_CMOS_EXPANDER_POINT_S astExpanderPoint[ISP_EXPANDER_POINT_NUM_MAX];
3341bd4fe43Sopenharmony_ci} ISP_CMOS_EXPANDER_S;
3351bd4fe43Sopenharmony_ci
3361bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_GE_S {
3371bd4fe43Sopenharmony_ci    HI_BOOL bEnable;                                 /* RW,Range: [   0, 1]      */
3381bd4fe43Sopenharmony_ci    HI_U8  u8Slope;                                  /* RW,Range: [   0, 0xE]    */
3391bd4fe43Sopenharmony_ci    HI_U8  u8SensiSlope;                             /* RW,Range: [   0, 0xE]    */
3401bd4fe43Sopenharmony_ci    HI_U16 u16SensiThr;                              /* RW,Range: [   0, 0x3FFF] */
3411bd4fe43Sopenharmony_ci    HI_U16 au16Threshold[ISP_AUTO_ISO_STRENGTH_NUM]; /* RW,Range: [   0, 0x3FFF] */
3421bd4fe43Sopenharmony_ci    HI_U16 au16Strength[ISP_AUTO_ISO_STRENGTH_NUM];  /* RW,Range: [   0, 0x100]  */
3431bd4fe43Sopenharmony_ci    HI_U16 au16NpOffset[ISP_AUTO_ISO_STRENGTH_NUM];  /* RW,Range: [0x200, 0x3FFF] */
3441bd4fe43Sopenharmony_ci} ISP_CMOS_GE_S;
3451bd4fe43Sopenharmony_ci
3461bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_ANTIFALSECOLOR_S {
3471bd4fe43Sopenharmony_ci    HI_BOOL bEnable;                                               /* RW;Range:[0x0,0x1];Format:1.0; */
3481bd4fe43Sopenharmony_ci    HI_U8   au8AntiFalseColorThreshold[ISP_AUTO_ISO_STRENGTH_NUM]; /* RW;Range:[0x0,0x20];Format:6.0; */
3491bd4fe43Sopenharmony_ci    HI_U8   au8AntiFalseColorStrength[ISP_AUTO_ISO_STRENGTH_NUM];  /* RW;Range:[0x0,0x1F];Format:5.0; */
3501bd4fe43Sopenharmony_ci} ISP_CMOS_ANTIFALSECOLOR_S;
3511bd4fe43Sopenharmony_ci
3521bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_LDCI_S {
3531bd4fe43Sopenharmony_ci    HI_BOOL  bEnable;
3541bd4fe43Sopenharmony_ci    HI_U8    u8GaussLPFSigma;
3551bd4fe43Sopenharmony_ci    HI_U8    au8HePosWgt[ISP_AUTO_ISO_STRENGTH_NUM];
3561bd4fe43Sopenharmony_ci    HI_U8    au8HePosSigma[ISP_AUTO_ISO_STRENGTH_NUM];
3571bd4fe43Sopenharmony_ci    HI_U8    au8HePosMean[ISP_AUTO_ISO_STRENGTH_NUM];
3581bd4fe43Sopenharmony_ci    HI_U8    au8HeNegWgt[ISP_AUTO_ISO_STRENGTH_NUM];
3591bd4fe43Sopenharmony_ci    HI_U8    au8HeNegSigma[ISP_AUTO_ISO_STRENGTH_NUM];
3601bd4fe43Sopenharmony_ci    HI_U8    au8HeNegMean[ISP_AUTO_ISO_STRENGTH_NUM];
3611bd4fe43Sopenharmony_ci    HI_U16   au16BlcCtrl[ISP_AUTO_ISO_STRENGTH_NUM];
3621bd4fe43Sopenharmony_ci} ISP_CMOS_LDCI_S;
3631bd4fe43Sopenharmony_ci
3641bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_LCAC_MANUAL_S {
3651bd4fe43Sopenharmony_ci    HI_U8  u8DePurpleCrStr;
3661bd4fe43Sopenharmony_ci    HI_U8  u8DePurpleCbStr;
3671bd4fe43Sopenharmony_ci} ISP_CMOS_LCAC_MANUAL_S;
3681bd4fe43Sopenharmony_ci
3691bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_LCAC_AUTO_S {
3701bd4fe43Sopenharmony_ci    HI_U8  au8DePurpleCrStr[ISP_EXP_RATIO_STRENGTH_NUM];
3711bd4fe43Sopenharmony_ci    HI_U8  au8DePurpleCbStr[ISP_EXP_RATIO_STRENGTH_NUM];
3721bd4fe43Sopenharmony_ci} ISP_CMOS_LCAC_AUTO_S;
3731bd4fe43Sopenharmony_ci
3741bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_LCAC_S {
3751bd4fe43Sopenharmony_ci    HI_BOOL                 bEnable;
3761bd4fe43Sopenharmony_ci    ISP_OP_TYPE_E           OpMode;
3771bd4fe43Sopenharmony_ci    HI_U16                  u16VarThr;
3781bd4fe43Sopenharmony_ci    HI_U16                  au16RLumaThd[ISP_LCAC_DET_NUM];
3791bd4fe43Sopenharmony_ci    HI_U16                  au16GLumaThd[ISP_LCAC_DET_NUM];
3801bd4fe43Sopenharmony_ci    HI_U16                  au16BLumaThd[ISP_LCAC_DET_NUM];
3811bd4fe43Sopenharmony_ci    HI_U16                  au16YLumaThd[ISP_LCAC_DET_NUM];
3821bd4fe43Sopenharmony_ci    HI_S16                  as16CbCrRatio[ISP_LCAC_DET_NUM];
3831bd4fe43Sopenharmony_ci    HI_U16                  u16PurpleDetRange;
3841bd4fe43Sopenharmony_ci    ISP_CMOS_LCAC_MANUAL_S  stManual;
3851bd4fe43Sopenharmony_ci    ISP_CMOS_LCAC_AUTO_S    stAuto;
3861bd4fe43Sopenharmony_ci} ISP_CMOS_LCAC_S;
3871bd4fe43Sopenharmony_ci
3881bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_SENSOR_MODE_S {
3891bd4fe43Sopenharmony_ci    HI_U32  u32SensorID;
3901bd4fe43Sopenharmony_ci    HI_U8   u8SensorMode;
3911bd4fe43Sopenharmony_ci    HI_BOOL bValidDngRawFormat;
3921bd4fe43Sopenharmony_ci    DNG_RAW_FORMAT_S stDngRawFormat;
3931bd4fe43Sopenharmony_ci} ISP_CMOS_SENSOR_MODE_S;
3941bd4fe43Sopenharmony_ci
3951bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_DNG_COLORPARAM_S {
3961bd4fe43Sopenharmony_ci    ISP_DNG_WBGAIN_S stWbGain1; /* the calibration White balance gain of colorcheker in A Light */
3971bd4fe43Sopenharmony_ci    ISP_DNG_WBGAIN_S stWbGain2; /* the calibration White balance gain of colorcheker in D50 Light */
3981bd4fe43Sopenharmony_ci} ISP_CMOS_DNG_COLORPARAM_S;
3991bd4fe43Sopenharmony_ci
4001bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_WDR_SWITCH_ATTR_S {
4011bd4fe43Sopenharmony_ci    HI_U32   au32ExpRatio[EXP_RATIO_NUM];
4021bd4fe43Sopenharmony_ci} ISP_CMOS_WDR_SWITCH_ATTR_S;
4031bd4fe43Sopenharmony_ci
4041bd4fe43Sopenharmony_citypedef union hiISP_CMOS_ALG_KEY_U {
4051bd4fe43Sopenharmony_ci    HI_U64  u64Key;
4061bd4fe43Sopenharmony_ci    struct {
4071bd4fe43Sopenharmony_ci        HI_U64  bit1Drc             : 1;   /* [0] */
4081bd4fe43Sopenharmony_ci        HI_U64  bit1Demosaic        : 1;   /* [1] */
4091bd4fe43Sopenharmony_ci        HI_U64  bit1PreGamma        : 1;   /* [2] */
4101bd4fe43Sopenharmony_ci        HI_U64  bit1Gamma           : 1;   /* [3] */
4111bd4fe43Sopenharmony_ci        HI_U64  bit1Sharpen         : 1;   /* [4] */
4121bd4fe43Sopenharmony_ci        HI_U64  bit1EdgeMark        : 1;   /* [5] */
4131bd4fe43Sopenharmony_ci        HI_U64  bit1Hlc             : 1;   /* [6] */
4141bd4fe43Sopenharmony_ci        HI_U64  bit1Ldci            : 1;   /* [7] */
4151bd4fe43Sopenharmony_ci        HI_U64  bit1Dpc             : 1;   /* [8] */
4161bd4fe43Sopenharmony_ci        HI_U64  bit1Lsc             : 1;   /* [9] */
4171bd4fe43Sopenharmony_ci        HI_U64  bit1Ge              : 1;   /* [10] */
4181bd4fe43Sopenharmony_ci        HI_U64  bit1AntiFalseColor  : 1;   /* [11] */
4191bd4fe43Sopenharmony_ci        HI_U64  bit1BayerNr         : 1;   /* [12] */
4201bd4fe43Sopenharmony_ci        HI_U64  bit1Detail          : 1;   /* [13] */
4211bd4fe43Sopenharmony_ci        HI_U64  bit1Ca              : 1;   /* [14] */
4221bd4fe43Sopenharmony_ci        HI_U64  bit1Expander        : 1;   /* [15] */
4231bd4fe43Sopenharmony_ci        HI_U64  bit1Clut            : 1;   /* [16] */
4241bd4fe43Sopenharmony_ci        HI_U64  bit1Wdr             : 1;   /* [17] */
4251bd4fe43Sopenharmony_ci        HI_U64  bit1Dehaze          : 1;   /* [18] */
4261bd4fe43Sopenharmony_ci        HI_U64  bit1Lcac            : 1;   /* [19] */
4271bd4fe43Sopenharmony_ci        HI_U64  bit1Acs             : 1;   /* [20] */
4281bd4fe43Sopenharmony_ci        HI_U64  bit43Rsv            : 43;   /* [21:63] */
4291bd4fe43Sopenharmony_ci    };
4301bd4fe43Sopenharmony_ci} ISP_CMOS_ALG_KEY_U;
4311bd4fe43Sopenharmony_ci
4321bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_DEFAULT_S {
4331bd4fe43Sopenharmony_ci    ISP_CMOS_ALG_KEY_U               unKey;
4341bd4fe43Sopenharmony_ci    const ISP_CMOS_DRC_S             *pstDrc;
4351bd4fe43Sopenharmony_ci    const ISP_CMOS_DEMOSAIC_S        *pstDemosaic;
4361bd4fe43Sopenharmony_ci    const ISP_CMOS_PREGAMMA_S        *pstPreGamma;
4371bd4fe43Sopenharmony_ci    const ISP_CMOS_GAMMA_S           *pstGamma;
4381bd4fe43Sopenharmony_ci    const ISP_CMOS_SHARPEN_S         *pstSharpen;
4391bd4fe43Sopenharmony_ci    const ISP_CMOS_EDGEMARK_S        *pstEdgeMark;
4401bd4fe43Sopenharmony_ci    const ISP_CMOS_HLC_S             *pstHlc;
4411bd4fe43Sopenharmony_ci    const ISP_CMOS_LDCI_S            *pstLdci;
4421bd4fe43Sopenharmony_ci    const ISP_CMOS_DPC_S             *pstDpc;
4431bd4fe43Sopenharmony_ci    const ISP_CMOS_LSC_S             *pstLsc;
4441bd4fe43Sopenharmony_ci    const ISP_CMOS_GE_S              *pstGe;
4451bd4fe43Sopenharmony_ci    const ISP_CMOS_ANTIFALSECOLOR_S  *pstAntiFalseColor;
4461bd4fe43Sopenharmony_ci    const ISP_CMOS_BAYERNR_S         *pstBayerNr;
4471bd4fe43Sopenharmony_ci    const ISP_CMOS_DETAIL_S          *pstDetail;
4481bd4fe43Sopenharmony_ci    const ISP_CMOS_CA_S              *pstCa;
4491bd4fe43Sopenharmony_ci    const ISP_CMOS_EXPANDER_S        *pstExpander;
4501bd4fe43Sopenharmony_ci    const ISP_CMOS_CLUT_S            *pstClut;
4511bd4fe43Sopenharmony_ci    const ISP_CMOS_WDR_S             *pstWdr;
4521bd4fe43Sopenharmony_ci    const ISP_CMOS_DEHAZE_S          *pstDehaze;
4531bd4fe43Sopenharmony_ci    const ISP_CMOS_LCAC_S            *pstLcac;
4541bd4fe43Sopenharmony_ci    const ISP_CMOS_ACS_S             *pstAcs;
4551bd4fe43Sopenharmony_ci    ISP_CMOS_NOISE_CALIBRATION_S     stNoiseCalibration;
4561bd4fe43Sopenharmony_ci    ISP_CMOS_SENSOR_MAX_RESOLUTION_S stSensorMaxResolution;
4571bd4fe43Sopenharmony_ci    ISP_CMOS_SENSOR_MODE_S           stSensorMode;
4581bd4fe43Sopenharmony_ci    ISP_CMOS_DNG_COLORPARAM_S        stDngColorParam;
4591bd4fe43Sopenharmony_ci    ISP_CMOS_WDR_SWITCH_ATTR_S       stWdrSwitchAttr;
4601bd4fe43Sopenharmony_ci} ISP_CMOS_DEFAULT_S;
4611bd4fe43Sopenharmony_ci
4621bd4fe43Sopenharmony_citypedef struct hiISP_CMOS_SENSOR_IMAGE_MODE_S {
4631bd4fe43Sopenharmony_ci    HI_U16   u16Width;
4641bd4fe43Sopenharmony_ci    HI_U16   u16Height;
4651bd4fe43Sopenharmony_ci    HI_FLOAT f32Fps;
4661bd4fe43Sopenharmony_ci    HI_U8    u8SnsMode;
4671bd4fe43Sopenharmony_ci} ISP_CMOS_SENSOR_IMAGE_MODE_S;
4681bd4fe43Sopenharmony_ci
4691bd4fe43Sopenharmony_citypedef struct hiISP_SENSOR_EXP_FUNC_S {
4701bd4fe43Sopenharmony_ci    HI_VOID (*pfn_cmos_sensor_init)(VI_PIPE ViPipe);
4711bd4fe43Sopenharmony_ci    HI_VOID (*pfn_cmos_sensor_exit)(VI_PIPE ViPipe);
4721bd4fe43Sopenharmony_ci    HI_VOID (*pfn_cmos_sensor_global_init)(VI_PIPE ViPipe);
4731bd4fe43Sopenharmony_ci    HI_S32 (*pfn_cmos_set_image_mode)(VI_PIPE ViPipe, ISP_CMOS_SENSOR_IMAGE_MODE_S *pstSensorImageMode);
4741bd4fe43Sopenharmony_ci    HI_S32 (*pfn_cmos_set_wdr_mode)(VI_PIPE ViPipe, HI_U8 u8Mode);
4751bd4fe43Sopenharmony_ci
4761bd4fe43Sopenharmony_ci    /* the algs get data which is associated with sensor, except 3a */
4771bd4fe43Sopenharmony_ci    HI_S32 (*pfn_cmos_get_isp_default)(VI_PIPE ViPipe, ISP_CMOS_DEFAULT_S *pstDef);
4781bd4fe43Sopenharmony_ci    HI_S32 (*pfn_cmos_get_isp_black_level)(VI_PIPE ViPipe, ISP_CMOS_BLACK_LEVEL_S *pstBlackLevel);
4791bd4fe43Sopenharmony_ci    HI_S32 (*pfn_cmos_get_sns_reg_info)(VI_PIPE ViPipe, ISP_SNS_REGS_INFO_S *pstSnsRegsInfo);
4801bd4fe43Sopenharmony_ci
4811bd4fe43Sopenharmony_ci    /* the function of sensor set pixel detect */
4821bd4fe43Sopenharmony_ci    HI_VOID (*pfn_cmos_set_pixel_detect)(VI_PIPE ViPipe, HI_BOOL bEnable);
4831bd4fe43Sopenharmony_ci    HI_S32 (*pfn_cmos_get_awb_gains)(VI_PIPE ViPipe, HI_U32 *pu32SensorAwbGain);
4841bd4fe43Sopenharmony_ci} ISP_SENSOR_EXP_FUNC_S;
4851bd4fe43Sopenharmony_ci
4861bd4fe43Sopenharmony_citypedef struct hiISP_SENSOR_REGISTER_S {
4871bd4fe43Sopenharmony_ci    ISP_SENSOR_EXP_FUNC_S stSnsExp;
4881bd4fe43Sopenharmony_ci} ISP_SENSOR_REGISTER_S;
4891bd4fe43Sopenharmony_ci
4901bd4fe43Sopenharmony_ci#ifdef __cplusplus
4911bd4fe43Sopenharmony_ci#if __cplusplus
4921bd4fe43Sopenharmony_ci}
4931bd4fe43Sopenharmony_ci#endif
4941bd4fe43Sopenharmony_ci#endif /* End of #ifdef __cplusplus */
4951bd4fe43Sopenharmony_ci
4961bd4fe43Sopenharmony_ci#endif /* __HI_COMM_SNS_H__ */
497