1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (c) 2019 Rockchip Corporation 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Licensed under the Apache License, Version 2.0 (the "License"); 5*4882a593Smuzhiyun * you may not use this file except in compliance with the License. 6*4882a593Smuzhiyun * You may obtain a copy of the License at 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * http://www.apache.org/licenses/LICENSE-2.0 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Unless required by applicable law or agreed to in writing, software 11*4882a593Smuzhiyun * distributed under the License is distributed on an "AS IS" BASIS, 12*4882a593Smuzhiyun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4882a593Smuzhiyun * See the License for the specific language governing permissions and 14*4882a593Smuzhiyun * limitations under the License. 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #ifndef _RK_AIQ_CALIB_PARSER_H_ 19*4882a593Smuzhiyun #define _RK_AIQ_CALIB_PARSER_H_ 20*4882a593Smuzhiyun #include <string.h> 21*4882a593Smuzhiyun #include "tinyxml2.h" 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #include "RkAiqCalibDbTypes.h" 24*4882a593Smuzhiyun #include "RkAiqCalibTag.h" 25*4882a593Smuzhiyun #include "xmltags.h" 26*4882a593Smuzhiyun #include "RkAiqCalibApi.h" 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun using namespace tinyxml2; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #if defined(_MSC_VER) 31*4882a593Smuzhiyun #define strcasecmp _stricmp 32*4882a593Smuzhiyun #define snprintf(buf,len, format,...) _snprintf_s(buf, len, len-1, format, __VA_ARGS__) 33*4882a593Smuzhiyun #endif 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #if defined(__linux__) 38*4882a593Smuzhiyun #include "smartptr.h" 39*4882a593Smuzhiyun #include <xcam_common.h> 40*4882a593Smuzhiyun #include "xcam_log.h" 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #ifdef DCT_ASSERT 43*4882a593Smuzhiyun #undef DCT_ASSERT 44*4882a593Smuzhiyun #endif 45*4882a593Smuzhiyun #define DCT_ASSERT assert 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #elif defined(_WIN32) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #ifdef DCT_ASSERT 50*4882a593Smuzhiyun #undef DCT_ASSERT 51*4882a593Smuzhiyun #endif 52*4882a593Smuzhiyun #define DCT_ASSERT(x) if(!(x))return false 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define LOGI printf 55*4882a593Smuzhiyun #define LOGD printf 56*4882a593Smuzhiyun #define LOGW printf 57*4882a593Smuzhiyun #define LOGE printf 58*4882a593Smuzhiyun #define LOG1 printf 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #endif 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define XML_PARSER_READ 0 63*4882a593Smuzhiyun #define XML_PARSER_WRITE 1 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun namespace RkCam { 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun class RkAiqCalibParser 69*4882a593Smuzhiyun { 70*4882a593Smuzhiyun private: 71*4882a593Smuzhiyun typedef bool (RkAiqCalibParser::*parseCellContent)(const XMLElement*, void* param); 72*4882a593Smuzhiyun typedef bool (RkAiqCalibParser::*parseCellContent2)(const XMLElement*, void* param, int index); 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun // parse helper 75*4882a593Smuzhiyun bool parseCellNoElement(const XMLElement* pelement, int noElements, int &RealNo); 76*4882a593Smuzhiyun bool parseEntryCell(const XMLElement*, int, parseCellContent, void* param = NULL, 77*4882a593Smuzhiyun uint32_t cur_id = 0, uint32_t parent_id = 0); 78*4882a593Smuzhiyun bool parseEntryCell2(const XMLElement*, int, parseCellContent2, void* param = NULL, 79*4882a593Smuzhiyun uint32_t cur_id = 0, uint32_t parent_id = 0); 80*4882a593Smuzhiyun bool parseEntryCell3(XMLElement*, int, int, parseCellContent, void* param = NULL, 81*4882a593Smuzhiyun uint32_t cur_id = 0, uint32_t parent_id = 0); 82*4882a593Smuzhiyun bool parseEntryCell4(XMLElement*, int, int, parseCellContent2, void* param = NULL, 83*4882a593Smuzhiyun uint32_t cur_id = 0, uint32_t parent_id = 0); 84*4882a593Smuzhiyun // parse read/write control 85*4882a593Smuzhiyun bool xmlParseReadWrite; 86*4882a593Smuzhiyun char autoTabStr[128]; 87*4882a593Smuzhiyun int autoTabIdx; 88*4882a593Smuzhiyun void parseReadWriteCtrl(bool ctrl); 89*4882a593Smuzhiyun void autoTabForward(); 90*4882a593Smuzhiyun void autoTabBackward(); 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun // parse Kit 93*4882a593Smuzhiyun int ParseCharToHex(XmlTag* tag, uint32_t* reg_value); 94*4882a593Smuzhiyun int ParseByteArray(const XMLNode *pNode, uint8_t* values, const int num); 95*4882a593Smuzhiyun int ParseFloatArray(const XMLNode *pNode, float* values, const int num, int printAccuracy = 4); 96*4882a593Smuzhiyun int ParseDoubleArray(const XMLNode *pNode, double* values, const int num); 97*4882a593Smuzhiyun int ParseUintArray(const XMLNode *pNode, uint32_t* values, const int num); 98*4882a593Smuzhiyun int ParseIntArray(const XMLNode *pNode, int32_t* values, const int num); 99*4882a593Smuzhiyun int ParseUcharArray(const XMLNode *pNode, uint8_t* values, const int num); 100*4882a593Smuzhiyun int ParseCharArray(const XMLNode *pNode, int8_t* values, const int num); 101*4882a593Smuzhiyun int ParseUshortArray(const XMLNode *pNode, uint16_t* values, const int num); 102*4882a593Smuzhiyun int ParseShortArray(const XMLNode *pNode, int16_t* values, const int num); 103*4882a593Smuzhiyun int ParseString(const XMLNode *pNode, char* values, const int size); 104*4882a593Smuzhiyun int ParseLscProfileArray(const XMLNode *pNode, CalibDb_Lsc_ProfileName_t values[], const int num); 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun // parse Header 108*4882a593Smuzhiyun bool parseEntryHeader(const XMLElement*, void* param = NULL); 109*4882a593Smuzhiyun bool parseEntrySensor(const XMLElement*, void* param = NULL); 110*4882a593Smuzhiyun bool parseEntrySensorAwb(const XMLElement*, void* param = NULL); 111*4882a593Smuzhiyun bool parseEntrySensorAwbCalibParaV200(const XMLElement*, void* param, int index); 112*4882a593Smuzhiyun bool parseEntrySensorAwbCalibParaV201(const XMLElement*, void* param, int index); 113*4882a593Smuzhiyun bool parseEntrySensorAwbAdjustPara(const XMLElement*, void* param, int index); 114*4882a593Smuzhiyun bool parseEntrySensorAwbMeasureGlobalsV200(const XMLElement*, void* param = NULL); 115*4882a593Smuzhiyun bool parseEntrySensorAwbMeasureLightSourcesV200(const XMLElement*, void* param, int index); 116*4882a593Smuzhiyun bool parseEntrySensorAwbMeasureGlobalsV201(const XMLElement*, void* param = NULL); 117*4882a593Smuzhiyun bool parseEntrySensorAwbLightXYRegionV201(const XMLElement*, void* param = NULL); 118*4882a593Smuzhiyun bool parseEntrySensorAwbLightRTYUVRegionV201(const XMLElement*, void* param = NULL); 119*4882a593Smuzhiyun bool parseEntrySensorAwbMeasureLightSourcesV201(const XMLElement*, void* param, int index); 120*4882a593Smuzhiyun bool parseEntrySensorAwbStrategyLightSources(const XMLElement*, void* param, int index); 121*4882a593Smuzhiyun bool parseEntrySensorAwbStrategyGlobals(const XMLElement*, void* param = NULL); 122*4882a593Smuzhiyun bool parseEntrySensorAwbLsForYuvDet(const XMLElement*, void* param, int index); 123*4882a593Smuzhiyun bool parseEntrySensorAwbLsForYuvDetV201(const XMLElement*, void* param, int index); 124*4882a593Smuzhiyun bool parseEntrySensorAwbWindowV201(const XMLElement*, void* param, int index); 125*4882a593Smuzhiyun bool parseEntrySensorAwbMeasureWindowV201(const XMLElement*, void* param = NULL); 126*4882a593Smuzhiyun bool parseEntrySensorAwbLimitRangeV201(const XMLElement*, void* param = NULL); 127*4882a593Smuzhiyun bool parseEntrySensorAwbWpDiffWeiEnableTh(const XMLElement*, void* param = NULL); 128*4882a593Smuzhiyun bool parseEntrySensorAwbWpDiffwei_w_HighLV(const XMLElement*, void* param = NULL); 129*4882a593Smuzhiyun bool parseEntrySensorAwbWpDiffwei_w_LowLV(const XMLElement*, void* param = NULL); 130*4882a593Smuzhiyun bool parseEntrySensorAwbWpDiffLumaWeight(const XMLElement*, void* param = NULL); 131*4882a593Smuzhiyun bool parseEntrySensorAwbFrameChoose(const XMLElement*, void* param = NULL); 132*4882a593Smuzhiyun bool parseEntrySensorAwbFrameChooseV201(const XMLElement*, void* param = NULL); 133*4882a593Smuzhiyun bool parseEntrySensorAwbMeasureWindow(const XMLElement*, void* param = NULL); 134*4882a593Smuzhiyun bool parseEntrySensorAwbLimitRange(const XMLElement*, void* param = NULL); 135*4882a593Smuzhiyun bool parseEntrySensorAwbWindow(const XMLElement*, void* param, int index); 136*4882a593Smuzhiyun bool parseEntrySensorAwbSingleColorV200(const XMLElement*, void* param); 137*4882a593Smuzhiyun bool parseEntrySensorAwbColBlkV200(const XMLElement*, void* param, int index); 138*4882a593Smuzhiyun bool parseEntrySensorAwbLsForEstimationV200(const XMLElement*, void* param, int index); 139*4882a593Smuzhiyun bool parseEntrySensorAwbSingleColorV201(const XMLElement*, void* param); 140*4882a593Smuzhiyun bool parseEntrySensorAwbColBlkV201(const XMLElement*, void* param, int index); 141*4882a593Smuzhiyun bool parseEntrySensorAwbLsForEstimationV201(const XMLElement*, void* param, int index); 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun bool parseEntrySensorAwbwbGainAdjust(const XMLElement*, void* param = NULL); 146*4882a593Smuzhiyun bool parseEntrySensorAwbwbGainOffset(const XMLElement*, void* param = NULL); 147*4882a593Smuzhiyun bool parseEntrySensorAwbDampFactor(const XMLElement*, void* param = NULL); 148*4882a593Smuzhiyun bool parseEntrySensorAwbXyRegionStableSelection(const XMLElement*, void* param = NULL); 149*4882a593Smuzhiyun bool parseEntrySensorAwbwbGainDaylightClipV200(const XMLElement*, void* param = NULL); 150*4882a593Smuzhiyun bool parseEntrySensorAwbwbGainClipV200(const XMLElement*, void* param = NULL); 151*4882a593Smuzhiyun bool parseEntrySensorAwbwbGainDaylightClipV201(const XMLElement*, void* param = NULL); 152*4882a593Smuzhiyun bool parseEntrySensorAwbwbGainClipV201(const XMLElement*, void* param = NULL); 153*4882a593Smuzhiyun bool parseEntrySensorAwbCctLutAll(const XMLElement*, void* param, int index); 154*4882a593Smuzhiyun bool parseEntrySensorAwbGlobalsExclude(const XMLElement*, void* param, int index); 155*4882a593Smuzhiyun bool parseEntrySensorAwbLightXYRegion(const XMLElement*, void* param = NULL); 156*4882a593Smuzhiyun bool parseEntrySensorAwbLightYUVRegion(const XMLElement*, void* param = NULL); 157*4882a593Smuzhiyun bool parseEntrySensorAwbGlobalsExcludeV201(const XMLElement*, void* param, int index); 158*4882a593Smuzhiyun bool parseEntrySensorAwbLightSources(const XMLElement*, void* param = NULL); 159*4882a593Smuzhiyun bool parseEntrySensorAwbRemosaicPara(const XMLElement*, void* param = NULL); 160*4882a593Smuzhiyun bool parseEntrySensorAwbXyRegionWpnumthCell(const XMLElement*, void* param, int index); 161*4882a593Smuzhiyun bool parseEntrySensorAwbwbWpTh(const XMLElement*, void* param, int index); 162*4882a593Smuzhiyun bool parseEntrySensorAwbLimitRangeCell(const XMLElement*, void* param, int index); 163*4882a593Smuzhiyun bool parseEntrySensorAwbLimitRangeV201Cell(const XMLElement*, void* param, int index); 164*4882a593Smuzhiyun bool parseEntrySensorAecLinAlterExp(const XMLElement*, void* param = NULL); 165*4882a593Smuzhiyun bool parseEntrySensorAecHdrAlterExp(const XMLElement*, void* param = NULL); 166*4882a593Smuzhiyun bool parseEntrySensorAecAlterExp(const XMLElement*, void* param = NULL); 167*4882a593Smuzhiyun bool parseEntrySensorAecSyncTest(const XMLElement*, void* param = NULL); 168*4882a593Smuzhiyun bool parseEntrySensorAecSpeed(const XMLElement*, void* param = NULL); 169*4882a593Smuzhiyun bool parseEntrySensorAecDelayFrmNum(const XMLElement*, void* param = NULL); 170*4882a593Smuzhiyun bool parseEntrySensorAecVBNightMode(const XMLElement*, void* param = NULL); 171*4882a593Smuzhiyun bool parseEntrySensorAecIRNightMode(const XMLElement*, void* param = NULL); 172*4882a593Smuzhiyun bool parseEntrySensorAecDNSwitch(const XMLElement*, void* param = NULL); 173*4882a593Smuzhiyun bool parseEntrySensorAecAntiFlicker(const XMLElement*, void* param = NULL); 174*4882a593Smuzhiyun bool parseEntrySensorAecFrameRateMode(const XMLElement*, void* param = NULL); 175*4882a593Smuzhiyun bool parseEntrySensorAecRangeLinearAE(const XMLElement*, void* param = NULL); 176*4882a593Smuzhiyun bool parseEntrySensorAecRangeHdrAE(const XMLElement*, void* param = NULL); 177*4882a593Smuzhiyun bool parseEntrySensorAecRange(const XMLElement*, void* param = NULL); 178*4882a593Smuzhiyun bool parseEntrySensorAecInitValueLinearAE(const XMLElement*, void* param = NULL); 179*4882a593Smuzhiyun bool parseEntrySensorAecInitValueHdrAE(const XMLElement*, void* param = NULL); 180*4882a593Smuzhiyun bool parseEntrySensorAecInitValue(const XMLElement*, void* param = NULL); 181*4882a593Smuzhiyun bool parseEntrySensorAecGridWeight(const XMLElement*, void* param = NULL); 182*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlPAttr(const XMLElement*, void* param = NULL); 183*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlDCAttr(const XMLElement*, void* param = NULL); 184*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlHDCAttr(const XMLElement*, void* param = NULL); 185*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrl(const XMLElement*, void* param = NULL); 186*4882a593Smuzhiyun bool parseEntrySensorAecManualCtrlLinearAE(const XMLElement*, void* param = NULL); 187*4882a593Smuzhiyun bool parseEntrySensorAecManualCtrlHdrAE(const XMLElement*, void* param = NULL); 188*4882a593Smuzhiyun bool parseEntrySensorAecManualCtrl(const XMLElement*, void* param = NULL); 189*4882a593Smuzhiyun bool parseEntrySensorAecEnvLvCalib(const XMLElement*, void* param = NULL); 190*4882a593Smuzhiyun bool parseEntrySensorAecRoute(const XMLElement*, void* param = NULL); 191*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlAoe(const XMLElement*, void* param = NULL); 192*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrl(const XMLElement*, void* param = NULL); 193*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlWeightMethod(const XMLElement*, void* param = NULL); 194*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlDarkROIMethod(const XMLElement*, void* param = NULL); 195*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlBackLight(const XMLElement*, void* param = NULL); 196*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlOverExp(const XMLElement*, void* param = NULL); 197*4882a593Smuzhiyun bool parseEntrySensorIntervalAdjustStrategy(const XMLElement*, void* param = NULL); 198*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlHist2hal(const XMLElement*, void* param = NULL); 199*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlExpRatioCtrl(const XMLElement*, void* param = NULL); 200*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlLframeCtrl(const XMLElement*, void* param = NULL); 201*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlLframeMode(const XMLElement*, void* param = NULL); 202*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlMframeCtrl(const XMLElement*, void* param = NULL); 203*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlSframeCtrl(const XMLElement*, void* param = NULL); 204*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrl(const XMLElement*, void* param = NULL); 205*4882a593Smuzhiyun bool parseEntrySensorAec(const XMLElement*, void* param = NULL); 206*4882a593Smuzhiyun bool parseEntrySensorAecLinearAeRoute(const XMLElement*, void* param = NULL); 207*4882a593Smuzhiyun bool parseEntrySensorAecHdrAeRoute(const XMLElement*, void* param = NULL); 208*4882a593Smuzhiyun bool parseEntrySensorAecLinearAeDynamicPoint(const XMLElement*, void* param = NULL); 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun bool parseEntrySensorAecLinAlterExpV21(const XMLElement*, void* param, int index); 211*4882a593Smuzhiyun bool parseEntrySensorAecHdrAlterExpV21(const XMLElement*, void* param, int index); 212*4882a593Smuzhiyun bool parseEntrySensorAecAlterExpV21(const XMLElement*, void* param = NULL); 213*4882a593Smuzhiyun bool parseEntrySensorAecSyncTestV21(const XMLElement*, void* param = NULL); 214*4882a593Smuzhiyun bool parseEntrySensorAecSpeedV21(const XMLElement*, void* param = NULL); 215*4882a593Smuzhiyun bool parseEntrySensorAecDelayFrmNumV21(const XMLElement*, void* param = NULL); 216*4882a593Smuzhiyun bool parseEntrySensorAecVBNightModeV21(const XMLElement*, void* param = NULL); 217*4882a593Smuzhiyun bool parseEntrySensorAecIRNightModeV21(const XMLElement*, void* param = NULL); 218*4882a593Smuzhiyun bool parseEntrySensorAecDNSwitchV21(const XMLElement*, void* param = NULL); 219*4882a593Smuzhiyun bool parseEntrySensorAecAntiFlickerV21(const XMLElement*, void* param = NULL); 220*4882a593Smuzhiyun bool parseEntrySensorAecFrameRateModeV21(const XMLElement*, void* param = NULL); 221*4882a593Smuzhiyun bool parseEntrySensorAecRangeLinearAEV21(const XMLElement*, void* param = NULL); 222*4882a593Smuzhiyun bool parseEntrySensorAecRangeHdrAEV21(const XMLElement*, void* param = NULL); 223*4882a593Smuzhiyun bool parseEntrySensorAecRangeV21(const XMLElement*, void* param = NULL); 224*4882a593Smuzhiyun bool parseEntrySensorAecInitValueLinearAEV21(const XMLElement*, void* param = NULL); 225*4882a593Smuzhiyun bool parseEntrySensorAecInitValueHdrAEV21(const XMLElement*, void* param = NULL); 226*4882a593Smuzhiyun bool parseEntrySensorAecInitValueV21(const XMLElement*, void* param = NULL); 227*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlPAttrV21(const XMLElement*, void* param = NULL); 228*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlDCAttrV21(const XMLElement*, void* param = NULL); 229*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlHDCAttrV21(const XMLElement*, void* param = NULL); 230*4882a593Smuzhiyun bool parseEntrySensorAecIrisCtrlV21(const XMLElement*, void* param = NULL); 231*4882a593Smuzhiyun bool parseEntrySensorAecManualCtrlLinearAEV21(const XMLElement*, void* param = NULL); 232*4882a593Smuzhiyun bool parseEntrySensorAecManualCtrlHdrAEV21(const XMLElement*, void* param = NULL); 233*4882a593Smuzhiyun bool parseEntrySensorAecManualCtrlV21(const XMLElement*, void* param = NULL); 234*4882a593Smuzhiyun bool parseEntrySensorAecEnvLvCalibV21(const XMLElement*, void* param = NULL); 235*4882a593Smuzhiyun bool parseEntrySensorAecLinearRouteV21(const XMLElement*, void* param = NULL); 236*4882a593Smuzhiyun bool parseEntrySensorAecHdrRouteV21(const XMLElement*, void* param = NULL); 237*4882a593Smuzhiyun bool parseEntrySensorAecRouteV21(const XMLElement*, void* param = NULL); 238*4882a593Smuzhiyun bool parseEntrySensorAecLinearAeDynamicPointV21(const XMLElement*, void* param = NULL); 239*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlBackLightV21(const XMLElement*, void* param = NULL); 240*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlOverExpV21(const XMLElement*, void* param = NULL); 241*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlV21(const XMLElement*, void* param = NULL); 242*4882a593Smuzhiyun bool parseEntrySensorIntervalAdjustStrategyV21(const XMLElement*, void* param = NULL); 243*4882a593Smuzhiyun bool parseEntrySensorLinearAECtrlHist2halV21(const XMLElement*, void* param = NULL); 244*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlExpRatioCtrlV21(const XMLElement*, void* param = NULL); 245*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlLframeCtrlV21(const XMLElement*, void* param = NULL); 246*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlLframeModeV21(const XMLElement*, void* param = NULL); 247*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlMframeCtrlV21(const XMLElement*, void* param = NULL); 248*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlSframeCtrlV21(const XMLElement*, void* param = NULL); 249*4882a593Smuzhiyun bool parseEntrySensorHdrAECtrlV21(const XMLElement*, void* param = NULL); 250*4882a593Smuzhiyun bool parseEntrySensorAecWinScaleV21(const XMLElement*, void* param = NULL); 251*4882a593Smuzhiyun bool parseEntrySensorAecCalibPara(const XMLElement*, void* param, int index); 252*4882a593Smuzhiyun bool parseEntrySensorAecTunePara(const XMLElement*, void* param, int index); 253*4882a593Smuzhiyun bool parseEntrySensorAecV21(const XMLElement*, void* param = NULL); 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun bool parseEntrySensorAhdrMerge(const XMLElement* pelement, void* param = NULL); 256*4882a593Smuzhiyun bool parseEntrySensorAhdrTmo(const XMLElement* pelement, void* param = NULL); 257*4882a593Smuzhiyun bool parseEntrySensorAhdrTmoEn(const XMLElement* pelement, void* param = NULL); 258*4882a593Smuzhiyun bool parseEntrySensorAhdrTmoGlobalLuma(const XMLElement* pelement, void* param = NULL); 259*4882a593Smuzhiyun bool parseEntrySensorAhdrTmoDetailsHighLight(const XMLElement* pelement, void* param = NULL); 260*4882a593Smuzhiyun bool parseEntrySensorAhdrTmoDetailsLowLight(const XMLElement* pelement, void* param = NULL); 261*4882a593Smuzhiyun bool parseEntrySensorAhdrLocalTMO(const XMLElement* pelement, void* param = NULL); 262*4882a593Smuzhiyun bool parseEntrySensorAhdrGlobalTMO(const XMLElement* pelement, void* param = NULL); 263*4882a593Smuzhiyun bool parseEntrySensorDrc(const XMLElement* pelement, void* param = NULL); 264*4882a593Smuzhiyun bool parseEntrySensorDrcCalibPara(const XMLElement* pelement, void* param = NULL); 265*4882a593Smuzhiyun bool parseEntrySensorDrcTuningPara(const XMLElement* pelement, void* param = NULL); 266*4882a593Smuzhiyun bool parseEntrySensorBlcModeCell(const XMLElement* pelement, void* param = NULL); 267*4882a593Smuzhiyun bool parseEntrySensorBlc(const XMLElement* pelement, void* param = NULL); 268*4882a593Smuzhiyun bool parseEntrySensorLut3d(const XMLElement* pelement, void* param = NULL); 269*4882a593Smuzhiyun bool parseEntrySensorDpcc(const XMLElement* pelement, void* param = NULL); 270*4882a593Smuzhiyun bool parseEntrySensorDpccFastMode(const XMLElement* pelement, void* param = NULL); 271*4882a593Smuzhiyun bool parseEntrySensorDpccExpertMode(const XMLElement* pelement, void* param = NULL); 272*4882a593Smuzhiyun bool parseEntrySensorDpccSetCell(const XMLElement* pelement, void* param = NULL); 273*4882a593Smuzhiyun bool parseEntrySensorDpccSetCellRK(const XMLElement* pelement, int index ); 274*4882a593Smuzhiyun bool parseEntrySensorDpccSetCellLC(const XMLElement* pelement, int index ); 275*4882a593Smuzhiyun bool parseEntrySensorDpccSetCellPG(const XMLElement* pelement, int index ); 276*4882a593Smuzhiyun bool parseEntrySensorDpccSetCellRND(const XMLElement* pelement, int index ); 277*4882a593Smuzhiyun bool parseEntrySensorDpccSetCellRG(const XMLElement* pelement, int index); 278*4882a593Smuzhiyun bool parseEntrySensorDpccSetCellRO(const XMLElement* pelement, int index ); 279*4882a593Smuzhiyun bool parseEntrySensorDpccPdaf(const XMLElement* pelement, void* param = NULL); 280*4882a593Smuzhiyun bool parseEntrySensorDpccSensor(const XMLElement* pelement, void* param = NULL); 281*4882a593Smuzhiyun bool parseEntrySensorBayerNr(const XMLElement* pelement, void* param = NULL); 282*4882a593Smuzhiyun bool parseEntrySensorBayerNrModeCell(const XMLElement* pelement, void* param = NULL); 283*4882a593Smuzhiyun bool parseEntrySensorBayerNrSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 284*4882a593Smuzhiyun bool parseEntrySensorLsc(const XMLElement* pelement, void* param = NULL); 285*4882a593Smuzhiyun bool parseEntrySensorLscAlscCof(const XMLElement* pelement, void* param = NULL); 286*4882a593Smuzhiyun bool parseEntrySensorLscAlscCofResAll(const XMLElement* pelement, void* param = NULL); 287*4882a593Smuzhiyun bool parseEntrySensorLscAlscCofIllAll(const XMLElement* pelement, void* param = NULL); 288*4882a593Smuzhiyun bool parseEntrySensorLscTableAll(const XMLElement* pelement, void* param = NULL); 289*4882a593Smuzhiyun bool parseEntrySensorRKDM(const XMLElement* pelement, void* param = NULL); 290*4882a593Smuzhiyun bool parseEntrySensorlumaCCMGAC(const XMLElement* pelement, void* param = NULL, int index = 0); 291*4882a593Smuzhiyun bool parseEntrySensorlumaCCM(const XMLElement* pelement, void* param = NULL, int index = 0); 292*4882a593Smuzhiyun bool parseEntrySensorCCM(const XMLElement* pelement, void* param = NULL); 293*4882a593Smuzhiyun bool parseEntrySensorCCMModeCell(const XMLElement* pelement, void* param = NULL); 294*4882a593Smuzhiyun bool parseEntrySensorCcmAccmCof(const XMLElement* pelement, void* param = NULL, int index = 0); 295*4882a593Smuzhiyun bool parseEntrySensorCcmAccmCofIllAll(const XMLElement* pelement, void* param = NULL, int index = 0); 296*4882a593Smuzhiyun bool parseEntrySensorCcmMatrixAll(const XMLElement* pelement, void* param = NULL, int index = 0); 297*4882a593Smuzhiyun bool parseEntrySensorUVNR(const XMLElement* pelement, void* param = NULL); 298*4882a593Smuzhiyun bool parseEntrySensorUVNRModeCell(const XMLElement* pelement, void* param = NULL); 299*4882a593Smuzhiyun bool parseEntrySensorUVNRSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 300*4882a593Smuzhiyun bool parseEntrySensorGamma(const XMLElement* pelement, void* param = NULL); 301*4882a593Smuzhiyun bool parseEntrySensorDegamma(const XMLElement* pelement, void* param = NULL); 302*4882a593Smuzhiyun bool parseEntrySensorDegammaModeCell(const XMLElement* pelement, void* param = NULL); 303*4882a593Smuzhiyun bool parseEntrySensorYnr(const XMLElement* pelement, void* param = NULL); 304*4882a593Smuzhiyun bool parseEntrySensorYnrModeCell(const XMLElement* pelement, void* param = NULL); 305*4882a593Smuzhiyun bool parseEntrySensorYnrSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 306*4882a593Smuzhiyun bool parseEntrySensorYnrISO(const XMLElement* pelement, void* param = NULL, int index = 0); 307*4882a593Smuzhiyun bool parseEntrySensorGic(const XMLElement* pelement, void* param = NULL); 308*4882a593Smuzhiyun bool parseEntrySensorGicCalibParaV20(const XMLElement* pelement, void* param); 309*4882a593Smuzhiyun bool parseEntrySensorGicTuningParaV20(const XMLElement* pelement, void* param); 310*4882a593Smuzhiyun bool parseEntrySensorGicCalibSettingV20( const XMLElement* pelement, void* param, int index) ; 311*4882a593Smuzhiyun bool parseEntrySensorGicTuningSettingV20( const XMLElement* pelement, void* param, int index) ; 312*4882a593Smuzhiyun bool parseEntrySensorGicCalibParaV21(const XMLElement* pelement, void* param); 313*4882a593Smuzhiyun bool parseEntrySensorGicTuningParaV21(const XMLElement* pelement, void* param); 314*4882a593Smuzhiyun bool parseEntrySensorGicCalibSettingV21( const XMLElement* pelement, void* param, int index) ; 315*4882a593Smuzhiyun bool parseEntrySensorGicTuningSettingV21( const XMLElement* pelement, void* param, int index) ; 316*4882a593Smuzhiyun bool parseEntrySensorMFNR(const XMLElement* pelement, void* param = NULL); 317*4882a593Smuzhiyun bool parseEntrySensorMFNRDynamic(const XMLElement* pelement, void* param = NULL, int index = 0); 318*4882a593Smuzhiyun bool parseEntrySensorMFNRMotionDetection(const XMLElement* pelement, void* param = NULL, int index = 0); 319*4882a593Smuzhiyun bool parseEntrySensorMFNRModeCell(const XMLElement* pelement, void* param = NULL); 320*4882a593Smuzhiyun bool parseEntrySensorMFNRAwbUvRatio(const XMLElement* pelement, void* param = NULL); 321*4882a593Smuzhiyun bool parseEntrySensorMFNRISO(const XMLElement* pelement, void* param = NULL, int index = 0); 322*4882a593Smuzhiyun bool parseEntrySensorMFNRSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 323*4882a593Smuzhiyun bool parseEntrySensorSharp(const XMLElement* pelement, void* param = NULL); 324*4882a593Smuzhiyun bool parseEntrySensorSharpModeCell(const XMLElement* pelement, void* param = NULL); 325*4882a593Smuzhiyun bool parseEntrySensorSharpSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 326*4882a593Smuzhiyun bool parseEntrySensorSharpISO(const XMLElement* pelement, void* param = NULL, int index = 0); 327*4882a593Smuzhiyun bool parseEntrySensorEdgeFilter(const XMLElement* pelement, void* param = NULL); 328*4882a593Smuzhiyun bool parseEntrySensorEdgeFilterModeCell(const XMLElement* pelement, void* param = NULL ); 329*4882a593Smuzhiyun bool parseEntrySensorEdgeFilterSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 330*4882a593Smuzhiyun bool parseEntrySensorEdgeFilterISO(const XMLElement* pelement, void* param = NULL, int index = 0); 331*4882a593Smuzhiyun bool parseEntrySensorDehaze(const XMLElement* pelement, void* param = NULL); 332*4882a593Smuzhiyun bool parseEntrySensorDehazeCalibParaV20(const XMLElement* pelement, void* param = NULL); 333*4882a593Smuzhiyun bool parseEntrySensorDehazeCalibParaV21(const XMLElement* pelement, void* param = NULL); 334*4882a593Smuzhiyun bool parseEntrySensorDehazeTuningParaV20(const XMLElement* pelement, void* param = NULL); 335*4882a593Smuzhiyun bool parseEntrySensorDehazeTuningParaV21(const XMLElement* pelement, void* param = NULL); 336*4882a593Smuzhiyun bool parseEntrySensorDehazeSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0); 337*4882a593Smuzhiyun bool parseEntrySensorEnhanceSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0); 338*4882a593Smuzhiyun bool parseEntrySensorHistSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0); 339*4882a593Smuzhiyun bool parseEntrySensorDehazeTuningSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0); 340*4882a593Smuzhiyun bool parseEntrySensorEnhanceTuningSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0); 341*4882a593Smuzhiyun bool parseEntrySensorHistTuningSettingV20(const XMLElement* pelement, void* param = NULL, int index = 0); 342*4882a593Smuzhiyun bool parseEntrySensorDehazeSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0); 343*4882a593Smuzhiyun bool parseEntrySensorEnhanceSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0); 344*4882a593Smuzhiyun bool parseEntrySensorHistSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0); 345*4882a593Smuzhiyun bool parseEntrySensorDehazeTuningSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0); 346*4882a593Smuzhiyun bool parseEntrySensorEnhanceTuningSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0); 347*4882a593Smuzhiyun bool parseEntrySensorHistTuningSettingV21(const XMLElement* pelement, void* param = NULL, int index = 0); 348*4882a593Smuzhiyun bool parseEntrySensorIIRSetting(const XMLElement* pelement, void* param = NULL, int index = 0); 349*4882a593Smuzhiyun bool parseEntrySensorAfWindow(const XMLElement* pelement, void* param = NULL); 350*4882a593Smuzhiyun bool parseEntrySensorAfFixedMode(const XMLElement* pelement, void* param = NULL); 351*4882a593Smuzhiyun bool parseEntrySensorAfMacroMode(const XMLElement* pelement, void* param = NULL); 352*4882a593Smuzhiyun bool parseEntrySensorAfInfinityMode(const XMLElement* pelement, void* param = NULL); 353*4882a593Smuzhiyun bool parseEntrySensorAfContrastAf(const XMLElement* pelement, void* param = NULL); 354*4882a593Smuzhiyun bool parseEntrySensorAfLaserAf(const XMLElement* pelement, void* param = NULL); 355*4882a593Smuzhiyun bool parseEntrySensorAfPdaf(const XMLElement* pelement, void* param = NULL); 356*4882a593Smuzhiyun bool parseEntrySensorAfVcmCfg(const XMLElement* pelement, void* param = NULL); 357*4882a593Smuzhiyun bool parseEntrySensorAfMeasISO(const XMLElement* pelement, void* param = NULL); 358*4882a593Smuzhiyun bool parseEntrySensorAfZoomFocusTbl(const XMLElement* pelement, void* param = NULL); 359*4882a593Smuzhiyun bool parseEntrySensorAf(const XMLElement* pelement, void* param = NULL); 360*4882a593Smuzhiyun bool parseEntrySensorLdch(const XMLElement* pelement, void* param = NULL); 361*4882a593Smuzhiyun bool parseEntrySensorFec(const XMLElement* pelement, void* param = NULL); 362*4882a593Smuzhiyun bool parseEntrySensorEis(const XMLElement* pelement, void* param = NULL); 363*4882a593Smuzhiyun bool parseEntrySensorLumaDetect(const XMLElement* pelement, void* param = NULL); 364*4882a593Smuzhiyun bool parseEntrySensorOrb(const XMLElement* pelement, void* param = NULL); 365*4882a593Smuzhiyun bool parseEntrySensorInfoGainRange(const XMLElement* pelement, void* param = NULL); 366*4882a593Smuzhiyun bool parseEntrySensorInfo(const XMLElement* pelement, void* param = NULL); 367*4882a593Smuzhiyun bool parseEntrySensorModuleInfo(const XMLElement* pelement, void* param = NULL); 368*4882a593Smuzhiyun bool parseEntrySensorCpsl(const XMLElement* pelement, void* param = NULL); 369*4882a593Smuzhiyun bool parseEntrySensorColorAsGrey(const XMLElement* pelement, void* param = NULL); 370*4882a593Smuzhiyun bool parseEntrySensorCproc(const XMLElement* pelement, void* param = NULL); 371*4882a593Smuzhiyun bool parseEntrySensorIE(const XMLElement* pelement, void* param = NULL); 372*4882a593Smuzhiyun bool parseEntrySystemHDR(const XMLElement* pelement, void* param = NULL); 373*4882a593Smuzhiyun bool parseEntrySystemDcgNormalGainCtrl(const XMLElement* pelement, void* param = NULL); 374*4882a593Smuzhiyun bool parseEntrySystemDcgHdrGainCtrl(const XMLElement* pelement, void* param = NULL); 375*4882a593Smuzhiyun bool parseEntrySystemDcgNormalEnvCtrl(const XMLElement* pelement, void* param = NULL); 376*4882a593Smuzhiyun bool parseEntrySystemDcgHdrEnvCtrl(const XMLElement* pelement, void* param = NULL); 377*4882a593Smuzhiyun bool parseEntrySystemDcgNormalSetting(const XMLElement* pelement, void* param = NULL); 378*4882a593Smuzhiyun bool parseEntrySystemDcgHdrSetting(const XMLElement* pelement, void* param = NULL); 379*4882a593Smuzhiyun bool parseEntrySystemDcgSetting(const XMLElement* pelement, void* param = NULL); 380*4882a593Smuzhiyun bool parseEntrySystemExpDelayHdr(const XMLElement* pelement, void* param = NULL); 381*4882a593Smuzhiyun bool parseEntrySystemExpDelayNormal(const XMLElement* pelement, void* param = NULL); 382*4882a593Smuzhiyun bool parseEntrySystemExpDelay(const XMLElement* pelement, void* param = NULL); 383*4882a593Smuzhiyun bool parseEntrySystem(const XMLElement*, void* param = NULL); 384*4882a593Smuzhiyun bool parseEntryExpSet(const XMLElement* pelement, void* param = NULL); 385*4882a593Smuzhiyun bool parseEntryExpSetGain2Reg(const XMLElement* pelement, void* param = NULL); 386*4882a593Smuzhiyun bool parseEntryExpSetGainSet(const XMLElement* pelement, void* param = NULL); 387*4882a593Smuzhiyun bool parseEntryExpSetTimeSet(const XMLElement* pelement, void* param = NULL); 388*4882a593Smuzhiyun bool parseEntryExpSetHdrTimeSet(const XMLElement* pelement, void* param = NULL); 389*4882a593Smuzhiyun bool parseEntryExpSetNormalTimeSet(const XMLElement* pelement, void* param = NULL); 390*4882a593Smuzhiyun bool parseEntryExpSetHdrSet(const XMLElement* pelement, void* param = NULL); 391*4882a593Smuzhiyun bool parseEntryExpSetDcgSet(const XMLElement* pelement, void* param = NULL); 392*4882a593Smuzhiyun bool parseEntryExpSetDcgNormalSet(const XMLElement* pelement, void* param = NULL); 393*4882a593Smuzhiyun bool parseEntryExpSetDcgHdrSet(const XMLElement* pelement, void* param = NULL); 394*4882a593Smuzhiyun bool parseEntryExpSetDcgNormalGainCtrl(const XMLElement* pelement, void* param = NULL); 395*4882a593Smuzhiyun bool parseEntryExpSetDcgHdrGainCtrl(const XMLElement* pelement, void* param = NULL); 396*4882a593Smuzhiyun bool parseEntryExpSetDcgNormalEnvCtrl(const XMLElement* pelement, void* param = NULL); 397*4882a593Smuzhiyun bool parseEntryExpSetDcgHdrEnvCtrl(const XMLElement* pelement, void* param = NULL); 398*4882a593Smuzhiyun bool parseEntryExpSetExpUpdateHdr(const XMLElement* pelement, void* param = NULL); 399*4882a593Smuzhiyun bool parseEntryExpSetExpUpdateNormal(const XMLElement* pelement, void* param = NULL); 400*4882a593Smuzhiyun bool parseEntryExpSetExpUpdate(const XMLElement* pelement, void* param = NULL); 401*4882a593Smuzhiyun bool parseEntryModuleInfo(const XMLElement* pelement, void* param = NULL); 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun 404*4882a593Smuzhiyun bool parseEntrySensorBayernrV2 405*4882a593Smuzhiyun ( 406*4882a593Smuzhiyun const XMLElement* pelement, 407*4882a593Smuzhiyun void* param = NULL 408*4882a593Smuzhiyun ) ; 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun bool parseEntryBayernrV2Setting_2D 411*4882a593Smuzhiyun ( 412*4882a593Smuzhiyun const XMLElement* pelement, 413*4882a593Smuzhiyun void* param, 414*4882a593Smuzhiyun int index 415*4882a593Smuzhiyun ); 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun bool parseEntryBayernrV2Setting_3D 418*4882a593Smuzhiyun ( 419*4882a593Smuzhiyun const XMLElement* pelement, 420*4882a593Smuzhiyun void* param, 421*4882a593Smuzhiyun int index 422*4882a593Smuzhiyun ); 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun bool parseEntrySensorBayernrV2Setting2D 425*4882a593Smuzhiyun ( 426*4882a593Smuzhiyun const XMLElement* pelement, 427*4882a593Smuzhiyun void* param 428*4882a593Smuzhiyun ); 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun bool parseEntrySensorBayernrV2Setting3D 431*4882a593Smuzhiyun ( 432*4882a593Smuzhiyun const XMLElement* pelement, 433*4882a593Smuzhiyun void* param 434*4882a593Smuzhiyun ); 435*4882a593Smuzhiyun bool parseEntrySensorYnrV2 436*4882a593Smuzhiyun ( 437*4882a593Smuzhiyun const XMLElement* pelement, 438*4882a593Smuzhiyun void* param 439*4882a593Smuzhiyun ); 440*4882a593Smuzhiyun bool parseEntryYnrV2Setting 441*4882a593Smuzhiyun ( 442*4882a593Smuzhiyun const XMLElement* pelement, 443*4882a593Smuzhiyun void* param, 444*4882a593Smuzhiyun int index 445*4882a593Smuzhiyun ); 446*4882a593Smuzhiyun bool parseEntrySensorCnrV1 447*4882a593Smuzhiyun ( 448*4882a593Smuzhiyun const XMLElement* pelement, 449*4882a593Smuzhiyun void* param 450*4882a593Smuzhiyun ); 451*4882a593Smuzhiyun bool parseEntryCnrV1Setting 452*4882a593Smuzhiyun ( 453*4882a593Smuzhiyun const XMLElement* pelement, 454*4882a593Smuzhiyun void* param, 455*4882a593Smuzhiyun int index 456*4882a593Smuzhiyun ); 457*4882a593Smuzhiyun bool parseEntrySharpV3Setting 458*4882a593Smuzhiyun ( 459*4882a593Smuzhiyun const XMLElement* pelement, 460*4882a593Smuzhiyun void* param, 461*4882a593Smuzhiyun int index 462*4882a593Smuzhiyun ); 463*4882a593Smuzhiyun bool parseEntrySensorSharpV3 464*4882a593Smuzhiyun ( 465*4882a593Smuzhiyun const XMLElement* pelement, 466*4882a593Smuzhiyun void* param 467*4882a593Smuzhiyun ); 468*4882a593Smuzhiyun public: 469*4882a593Smuzhiyun explicit RkAiqCalibParser(CamCalibDbContext_t *pCalibDb); 470*4882a593Smuzhiyun virtual ~RkAiqCalibParser(); 471*4882a593Smuzhiyun bool doParse(const char* device); 472*4882a593Smuzhiyun bool doGenerate(const char* deviceRef, const char* deviceOutput); 473*4882a593Smuzhiyun void updateXmlParseReadWriteFlag(int flag); 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun private: 477*4882a593Smuzhiyun CamCalibDbContext_t *mCalibDb; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun #if defined(__linux__) 480*4882a593Smuzhiyun XCAM_DEAD_COPY (RkAiqCalibParser); 481*4882a593Smuzhiyun #endif 482*4882a593Smuzhiyun }; 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun } //namespace RkCam 485*4882a593Smuzhiyun 486*4882a593Smuzhiyun #endif 487