/* * xcam_3a_result.h - 3A result interface * * Copyright (c) 2014-2015 Intel Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Author: Wind Yuan * Zong Wei */ #ifndef C_XCAM_3A_RESULT_H #define C_XCAM_3A_RESULT_H #include #include #include #include XCAM_BEGIN_DECLARE #define XCAM_3A_MAX_RESULT_COUNT 256 #define xcam_3a_result_type(result) (((XCam3aResultHead*)result)->type) typedef enum _ImageProcessType { XCAM_IMAGE_PROCESS_ONCE, XCAM_IMAGE_PROCESS_ALWAYS, XCAM_IMAGE_PROCESS_POST, } XCamImageProcessType; typedef enum _XCam3aResultType { XCAM_3A_RESULT_NULL = 0, /* White Balance */ XCAM_3A_RESULT_WHITE_BALANCE, XCAM_3A_RESULT_BLACK_LEVEL, XCAM_3A_RESULT_YUV2RGB_MATRIX, XCAM_3A_RESULT_RGB2YUV_MATRIX, /* Exposure */ XCAM_3A_RESULT_EXPOSURE, /* Focus */ XCAM_3A_RESULT_FOCUS, XCAM_3A_RESULT_DEMOSAIC, //XCAM_3A_RESULT_EIGEN_COLOR_DEMOSAICING, XCAM_3A_RESULT_DEFECT_PIXEL_CORRECTION, /* noise reduction */ XCAM_3A_RESULT_NOISE_REDUCTION, XCAM_3A_RESULT_3D_NOISE_REDUCTION, XCAM_3A_RESULT_TEMPORAL_NOISE_REDUCTION_YUV, XCAM_3A_RESULT_LUMA_NOISE_REDUCTION, XCAM_3A_RESULT_ADVANCED_NOISE_REDUCTION, XCAM_3A_RESULT_CHROMA_NOISER_EDUCTION, XCAM_3A_RESULT_BAYER_NOISE_REDUCTION, XCAM_3A_RESULT_WAVELET_NOISE_REDUCTION, XCAM_3A_RESULT_EDGE_ENHANCEMENT, //XCAM_3A_RESULT_FRIGLE_CONTROL, XCAM_3A_RESULT_MACC, //XCAM_3A_RESULT_MACCTABLE, XCAM_3A_RESULT_CHROMA_TONE_CONTROL, //XCAM_3A_RESULT_CHROMATONECONTROLTABLE, XCAM_3A_RESULT_CHROMA_ENHANCEMENT, XCAM_3A_RESULT_Y_GAMMA, XCAM_3A_RESULT_R_GAMMA, XCAM_3A_RESULT_G_GAMMA, XCAM_3A_RESULT_B_GAMMA, XCAM_3A_RESULT_BRIGHTNESS, //XCAM_3A_RESULT_SHADING_TABLE, //Smart Analysis Type XCAM_3A_RESULT_FACE_DETECTION = 0x4000, XCAM_3A_RESULT_DVS, XCAM_3A_RESULT_USER_DEFINED_TYPE = 0x8000, } XCam3aResultType; /* matrix size 3x3 */ #define XCAM_COLOR_MATRIX_SIZE 9 #define XCAM_GAMMA_TABLE_SIZE 256 #define XCAM_CHROMA_AXIS_SIZE 16 #define XCAM_CHROMA_MATRIX_SIZE 4 #define XCAM_BNR_TABLE_SIZE 64 typedef struct _XCam3aResultHead XCam3aResultHead; struct _XCam3aResultHead { XCam3aResultType type; XCamImageProcessType process_type; uint32_t version; void (*destroy) (XCam3aResultHead *); }; typedef struct _XCam3aResultWhiteBalance { XCam3aResultHead head; /* data */ double r_gain; double gr_gain; double gb_gain; double b_gain; } XCam3aResultWhiteBalance; typedef struct _XCam3aResultBlackLevel { XCam3aResultHead head; /* data */ double r_level; double gr_level; double gb_level; double b_level; } XCam3aResultBlackLevel; typedef struct _XCam3aResultColorMatrix { XCam3aResultHead head; /* data */ double matrix [XCAM_COLOR_MATRIX_SIZE]; } XCam3aResultColorMatrix; typedef struct _XCam3aResultExposure { XCam3aResultHead head; /* data */ int32_t exposure_time; //in micro seconds double analog_gain; // multipler double digital_gain; // multipler double aperture; //fn } XCam3aResultExposure; typedef struct _XCam3aResultFocus { XCam3aResultHead head; /* data */ int32_t position; } XCam3aResultFocus; typedef struct _XCam3aResultDemosaic { XCam3aResultHead head; /* data */ double noise; double threshold_cr; double threshold_cb; } XCam3aResultDemosaic; /* DefectPixel Correction */ typedef struct _XCam3aResultDefectPixel { XCam3aResultHead head; /* data */ double gain; double gr_threshold; double r_threshold; double b_threshold; double gb_threshold; } XCam3aResultDefectPixel; typedef struct _XCam3aResultNoiseReduction { XCam3aResultHead head; /* data */ double gain; double threshold1; double threshold2; } XCam3aResultNoiseReduction; typedef struct _XCam3aResultBayerNoiseReduction { XCam3aResultHead head; /* data */ double bnr_gain; double direction; double table[XCAM_BNR_TABLE_SIZE]; } XCam3aResultBayerNoiseReduction; typedef struct _XCam3aResultEdgeEnhancement { XCam3aResultHead head; /* data */ double gain; double threshold; } XCam3aResultEdgeEnhancement; typedef struct _XCam3aResultGammaTable { XCam3aResultHead head; /* data */ double table[XCAM_GAMMA_TABLE_SIZE]; } XCam3aResultGammaTable; typedef struct _XCam3aResultMaccMatrix { XCam3aResultHead head; /* data */ double table[XCAM_CHROMA_AXIS_SIZE * XCAM_CHROMA_MATRIX_SIZE]; } XCam3aResultMaccMatrix; typedef struct _XCam3aResultChromaToneControl { XCam3aResultHead head; /* data */ double uv_gain [XCAM_GAMMA_TABLE_SIZE]; // according to Y } XCam3aResultChromaToneControl; typedef struct _XCam3aResultBrightness { XCam3aResultHead head; /* data */ double brightness_level; // range [-1,1], -1 is full dark , 0 is normal val, 1 is full bright } XCam3aResultBrightness; typedef struct _XCam3aResultTemporalNoiseReduction { XCam3aResultHead head; /* data */ double gain; double threshold[3]; } XCam3aResultTemporalNoiseReduction; typedef struct _XCam3aResultWaveletNoiseReduction { XCam3aResultHead head; /* data */ uint8_t decomposition_levels; double threshold[2]; /* [0]:soft threshold / [1]:hard threshold */ double analog_gain; } XCam3aResultWaveletNoiseReduction; XCAM_END_DECLARE #endif