123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /**********************************************************************************
- *
- * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved.
- *
- * This source file is the property of Beijing AXera Technology Co., Ltd. and
- * may not be copied or distributed in any isomorphic form without the prior
- * written consent of Beijing AXera Technology Co., Ltd.
- *
- **********************************************************************************/
- #ifndef _AX_ISP_3A_PLUS_H_
- #define _AX_ISP_3A_PLUS_H_
- #include "ax_isp_api.h"
- #include "ax_isp_iq_api.h"
- /////////////////////////////////////////////////////////
- /* discard this API*/
- ////////////////////////////////////////////////////////
- /* LSC Grid & Hist */
- #define AX_LSC_GRID_ROW (64)
- #define AX_LSC_GRID_COL (48)
- #define AX_LSC_GRID_CHN (4)
- #define AX_LSC_HIST_LINEAR_BIN (256)
- #define AX_LSC_HIST_LOG_BIN (16)
- typedef struct {
- AX_U32 uGridSum[AX_LSC_GRID_CHN];
- AX_U16 uGridNum[AX_LSC_GRID_CHN];
- } AX_LSC_GRID_STATS;
- typedef struct {
- AX_U8 uValid;
- AX_U32 uZoneRowSize;
- AX_U32 uZoneColumnSize;
- AX_U8 uChnNum;
- AX_LSC_GRID_STATS sGridStats[AX_LSC_GRID_ROW * AX_LSC_GRID_COL];
- } AX_LSC_GRID_STAT_T;
- /**********************************************************************************
- * CLC
- * input (AX_ISP_CLC_INPUT_INFO_T) --> clc_alg --> output (AX_ISP_CLC_RESULT_T)
- **********************************************************************************/
- typedef struct {
- AX_U32 SnsId;
- AX_SNS_HDR_MODE_E eSnsMode;
- AX_BAYER_PATTERN_E eBayerPattern;
- AX_U32 uFrameRate;
- } AX_ISP_CLC_INITATTR_T;
- typedef struct {
- AX_U32 uTotalGain[AX_HDR_CHN_NUM]; /* Total Gain value. Accuracy: U22.10 Range: [0x400, 0xFFFFFFFF]*/
- AX_U32 uLux; /* Accuracy: U22.10 Range: [0, 0xFFFFFFFF]
- * fLux = (MeanLuma*LuxK) / (AGain*Dgain*IspGain)
- * where LuxK is a calibrated factor */
- AX_U32 uColorTemp; /* = CCT * 1000.0f, CCT:[1000, 20000] Color Temperature */
- AX_U32 uSatDiscnt; /* Saturation Used for CLC or LSC Interpolation
- * Percetage * 1000.0f, e.g. 100000 for 100%
- * If Not Used, Just return 100000 */
- } AX_ISP_CLC_INPUT_INFO_T;
- typedef struct {
- /* transformation matrices corresponding to 16 different hue */
- AX_ISP_IQ_CLC_XCM_T sClcMatrixList;
- } AX_ISP_CLC_RESULT_T;
- typedef struct {
- AX_S32(*pfnClc_Init)(AX_U8 pipe, AX_ISP_CLC_INITATTR_T *pClcInitParam);
- AX_S32(*pfnClc_Run)(AX_U8 pipe, AX_ISP_CLC_INPUT_INFO_T *pClcInputInfo, AX_ISP_CLC_RESULT_T *pClcResult);
- AX_S32(*pfnClc_Exit)(AX_U8 pipe);
- } AX_ISP_CLC_REGFUNCS_T;
- /**********************************************************************************
- * LSC
- * input (AX_ISP_LSC_INPUT_INFO_T) --> lsc_alg --> output (AX_ISP_LSC_RESULT_T)
- **********************************************************************************/
- typedef struct {
- AX_U32 SnsId;
- AX_SNS_HDR_MODE_E eSnsMode;
- AX_BAYER_PATTERN_E eBayerPattern;
- AX_U32 uFrameRate;
- } AX_ISP_LSC_INITATTR_T;
- typedef struct {
- AX_U32 uSeqNum; /* frame seq num */
- AX_U64 uTimestamp; /* frame timestamp */
- AX_LSC_GRID_STAT_T sLscGridStat;
- } AX_ISP_LSC_STAT_INFO_T;
- typedef struct {
- AX_U32 uTotalGain[AX_HDR_CHN_NUM]; /* Total Gain value. Accuracy: U22.10 Range: [0x400, 0xFFFFFFFF]*/
- AX_U32 uLux; /* Accuracy: U22.10 Range: [0, 0xFFFFFFFF]
- * fLux = (MeanLuma*LuxK) / (AGain*Dgain*IspGain)
- * where LuxK is a calibrated factor */
- AX_U32 uColorTemp; /* = CCT * 1000.0f, CCT:[1000, 20000] Color Temperature */
- AX_U32 uSaturation; /* Saturation Used for CLC or LSC Interpolation
- * Percetage * 1000.0f, e.g. 100000 for 100%
- * If Not Used, Just return 100000 */
- AX_ISP_LSC_STAT_INFO_T sLscStat;
- } AX_ISP_LSC_INPUT_INFO_T;
- #define LSC_MESH_SIZE AX_ISP_LSC_MESH_SIZE_V * AX_ISP_LSC_MESH_SIZE_H
- typedef struct {
- AX_U32 rr_gain_lut[LSC_MESH_SIZE];
- AX_U32 gr_gain_lut[LSC_MESH_SIZE];
- AX_U32 gb_gain_lut[LSC_MESH_SIZE];
- AX_U32 bb_gain_lut[LSC_MESH_SIZE];
- } AX_ISP_LSC_TABLE_T;
- typedef struct {
- AX_S32(*pfnLsc_Init)(AX_U8 pipe, AX_ISP_LSC_TABLE_T *tLscResult);
- AX_S32(*pfnLsc_Run)(AX_U8 pipe, AX_ISP_LSC_INPUT_INFO_T tLscInputInfo, AX_BOOL *bUpdateMeshRegs, AX_ISP_LSC_TABLE_T *pLscResult);
- AX_S32(*pfnLsc_Exit)(AX_U8 pipe);
- } AX_ISP_LSC_REGFUNCS_T;
- AX_S32 AX_ISP_IQ_GetLscStatus(AX_U8 pipe, AX_ISP_LSC_TABLE_T *pIspLscStatus);
- #endif //_AX_ISP_3A_PLUS_H_
|