| /* |
| * x3a_ciq_tuning_handler.h - x3a Common IQ tuning handler |
| * |
| * 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: Zong Wei <[email protected]> |
| */ |
| |
| #ifndef XCAM_3A_CIQ_TUNING_HANDLER_H |
| #define XCAM_3A_CIQ_TUNING_HANDLER_H |
| |
| #include "handler_interface.h" |
| |
| namespace XCam { |
| |
| #define X3A_CIQ_PIXEL_DEPTH 10 |
| |
| #define X3A_CIQ_EXPOSURE_TIME_STEPS 4 //Number of Exposure Time steps |
| #define X3A_CIQ_EXPOSURE_TIME_MAX 40000 //Max ET in microseconds (40ms) |
| #define X3A_CIQ_EXPOSURE_TIME_TICK (X3A_CIQ_EXPOSURE_TIME_MAX / X3A_CIQ_EXPOSURE_TIME_STEPS) |
| |
| #define X3A_CIQ_EE_GAIN_STEPS 6 //Number of EE Gain steps |
| #define X3A_CIQ_GAIN_STEPS 5 //Number of Gain steps |
| #define X3A_CIQ_GAIN_MAX 249 //Max Gain |
| |
| #define X3A_CIQ_LSC_LUT_WIDTH 16 |
| #define X3A_CIQ_LSC_LUT_HEIGHT 9 |
| #define X3A_CIQ_LSC_LUT_SIZE (16 * 9) |
| |
| typedef enum _X3aCiqBayerOrder { |
| X3A_CIQ_RGrGbB = 0, |
| X3A_CIQ_GrRBGb = 1, |
| X3A_CIQ_GbBRGr = 2, |
| X3A_CIQ_BGbGrR = 3, |
| } X3aCiqBayerOrder; |
| |
| typedef enum _X3aCiqCIEIlluminants { |
| X3A_CIQ_ILLUMINANT_HALO = 0, // Incandescent / Tungsten |
| X3A_CIQ_ILLUMINANT_F2 = 1, // Cool White Fluorescent |
| X3A_CIQ_ILLUMINANT_F11 = 2, // Philips TL84 |
| X3A_CIQ_ILLUMINANT_D50 = 3, // Horizon Light |
| X3A_CIQ_ILLUMINANT_D65 = 4, // Noon Daylight |
| X3A_CIQ_ILLUMINANT_D75 = 5, // North sky Daylight |
| X3A_CIQ_ILLUMINANT_COUNT |
| } X3aCiqCIEIlluminants; |
| |
| typedef struct _X3aCiqCIEIlluminantsTable |
| { |
| X3aCiqCIEIlluminants CIEIlluminantIndex; |
| uint16_t CCT; |
| } X3aCiqCIEIlluminantsTable; |
| |
| static const X3aCiqCIEIlluminantsTable X3a_Ciq_illuminants_table[X3A_CIQ_ILLUMINANT_COUNT] = |
| { |
| {X3A_CIQ_ILLUMINANT_HALO, 2100}, |
| {X3A_CIQ_ILLUMINANT_F2, 3000}, |
| {X3A_CIQ_ILLUMINANT_F11, 4051}, |
| {X3A_CIQ_ILLUMINANT_D50, 5000}, |
| {X3A_CIQ_ILLUMINANT_D65, 6500}, |
| {X3A_CIQ_ILLUMINANT_D75, 7500}, |
| }; |
| |
| class X3aCiqTuningHandler |
| : public AnalyzerHandler |
| { |
| public: |
| explicit X3aCiqTuningHandler (const char *name = NULL); |
| virtual ~X3aCiqTuningHandler (); |
| |
| void set_tuning_data (void* data); |
| void set_ae_handler (SmartPtr<AeHandler> &handler); |
| void set_awb_handler (SmartPtr<AwbHandler> &handler); |
| |
| double get_max_analog_gain (); |
| double get_current_analog_gain (); |
| int64_t get_current_exposure_time (); |
| uint32_t get_current_estimate_cct (); |
| |
| private: |
| XCAM_DEAD_COPY (X3aCiqTuningHandler); |
| |
| protected: |
| const void *_tuning_data; |
| |
| private: |
| char *_name; |
| SmartPtr<AeHandler> _ae_handler; |
| SmartPtr<AwbHandler> _awb_handler; |
| }; |
| |
| }; |
| |
| #endif // XCAM_3A_CIQ_TUNING_HANDLER_H |