hc
2024-08-16 a24a44ff9ca902811b99aa9663d697cf452e08ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
#ifndef _RK_AIQ_CALIB_TYPES_ISP20_H_
#define _RK_AIQ_CALIB_TYPES_ISP20_H_
 
#include "adpcc/rk_aiq_types_adpcc_ext.h"
 
#pragma pack(4)
 
#define CALIBDB_MAX_ISO_LEVEL 13
#define CALIBDB_NR_SHARP_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL
#define CALIBDB_DPCC_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL
#define CALIBDB_BLC_MAX_ISO_LEVEL CALIBDB_MAX_ISO_LEVEL
#define CALIBDB_NR_SHARP_SETTING_LEVEL 6
#define CALIBDB_MAX_MODE_NUM 5
#define CALIBDB_MAX_MODE_NAME_LENGTH (20)
//TODO: define max size as 256 temporarily
//#define CALIBDB_ZOOM_FOCUS_TBL_SIZE 10240
#define CALIBDB_ZOOM_FOCUS_TBL_SIZE 256
#define CALIBDB_DEGAMMA_CRUVE_KNOTS 17
 
#define CALIBDB_MAX_SCENE_NAME_LENGTH (10)
/*****************************************************************************/
/**
 * @brief   ISP2.0 AEC Algo Params
 */
/*****************************************************************************/
 
#define AEC_ECM_SCHEME_NAME         ( 20U )
typedef char                        AecEcmSchemeName_t[AEC_ECM_SCHEME_NAME];
 
#define AEC_ECM_PROFILE_NAME        ( 20U )
typedef char                        AecEcmProfileName_t[AEC_ECM_PROFILE_NAME];
 
#define AEC_DYNAMIC_SETPOINT_NAME   ( 20U )
typedef char                        AecDynamicSetpointName_t[AEC_DYNAMIC_SETPOINT_NAME];
 
#define AEC_EXP_SEPARATE_NAME       ( 20U )
typedef char                        AecExpSeparateName_t[AEC_EXP_SEPARATE_NAME];
 
#define AEC_RAWAEBIG_WIN_NUM (15*15)
#define AEC_RAWAELITE_WIN_NUM (5*5)
 
typedef enum _CalibDb_HdrAeRatioType_e {
    RKAIQ_HDRAE_RATIOTYPE_MODE_INVALID    = 0,
    RKAIQ_HDRAE_RATIOTYPE_MODE_AUTO   = 1,
    RKAIQ_HDRAE_RATIOTYPE_MODE_FIX    = 2,
    RKAIQ_HDRAE_RATIOTYPE_MODE_MAX
} CalibDb_HdrAeRatioType_t;
 
typedef enum _CalibDb_AeStrategyMode_e {
    RKAIQ_AEC_STRATEGY_MODE_AUTO    = 0,
    RKAIQ_AEC_STRATEGY_MODE_LOWLIGHT_PRIOR     = 1,
    RKAIQ_AEC_STRATEGY_MODE_HIGHLIGHT_PRIOR    = 2,
    RKAIQ_AEC_STRATEGY_MODE_MAX
} CalibDb_AeStrategyMode_t;
 
typedef enum _CalibDb_AeHdrLongFrmMode_e {
    RKAIQ_AEC_HDR_LONGFRMMODE_NORMAL             = 0,
    RKAIQ_AEC_HDR_LONGFRMMODE_AUTO_LONG_FRAME    = 1,
    RKAIQ_AEC_HDR_LONGFRMMODE_LONG_FRAME         = 2,
} CalibDb_AeHdrLongFrmMode_t;
 
typedef enum _CalibDb_AecDayNightMode_e {
    AEC_DNMODE_MIN = -1,
    AEC_DNMODE_DAY = 0,
    AEC_DNMODE_NIGHT = 1, /*night mode or IR night-vision mode*/
    AEC_DNMODE_MAX = 2,
} CalibDb_AecDayNightMode_t;
 
/*****************************************************************************/
/**
 *          AecSemMode_t
 *
 * @brief   mode type of AEC Scene Evaluation
 *
 */
/*****************************************************************************/
typedef enum _CalibDb_AecSemMode_e {
    AEC_SCENE_EVALUATION_INVALID    = 0,        /* invalid (only used for initialization) */
    AEC_SCENE_EVALUATION_DISABLED   = 1,        /* Scene Evaluation disabled (fix setpoint) */
    AEC_SCENE_EVALUATION_FIX        = 2,        /* Scene Evaluation fix (static ROI) */
    AEC_SCENE_EVALUATION_ADAPTIVE   = 3,        /* Scene Evaluation adaptive (ROI caluclated by Scene Evaluation */
    AEC_SCENE_EVALUATION_MAX
} CalibDb_AecSemMode_t;
/*****************************************************************************/
/**
 *          AecBackLitMode_t
 *
 * @brief   mode type of AEC-BackLit
 *
 */
/*****************************************************************************/
typedef enum _CalibDb_AecMeasAreaMode_e {
    AEC_MEASURE_AREA_AUTO    = 0,
    AEC_MEASURE_AREA_UP,
    AEC_MEASURE_AREA_BOTTOM,
    AEC_MEASURE_AREA_LEFT,
    AEC_MEASURE_AREA_RIGHT,
    AEC_MEASURE_AREA_CENTER,
} CalibDb_AecMeasAreaMode_t;
 
/*****************************************************************************/
typedef enum _CalibDb_AecECMMode_e {
    AEC_ECM_MODE_INVALID     = 0,    /**< invalid exposure conversion module */
    AEC_ECM_MODE_1   = 1,  /* the original exposure conversion module ,   minimize the value of gain   */
    AEC_ECM_MODE_2    = 2,    /* the newl exposure conversion module ,imcrease the frame rate */
    AEC_ECM_MODE_MAX,
} CalibDb_AecECMMode_t;
 
typedef enum _CalibDb_FlickerFreq_e {
    AEC_FLICKER_FREQUENCY_OFF   = 0,
    AEC_FLICKER_FREQUENCY_50HZ = 1,
    AEC_FLICKER_FREQUENCY_60HZ = 2,
} CalibDb_FlickerFreq_t;
 
typedef enum _CalibDb_AntiFlickerMode_e {
    AEC_ANTIFLICKER_NORMAL_MODE = 0,
    AEC_ANTIFLICKER_AUTO_MODE = 1,
} CalibDb_AntiFlickerMode_t;
 
typedef enum _CalibDb_IrisType_e {
    IRIS_DC_TYPE = 0,
    IRIS_P_TYPE = 1,
    IRIS_INVALID_TYPE,
} CalibDb_IrisType_t;
 
/*****************************************************************************/
/**
 * @brief   Enumeration type to configure CamerIC ISP exposure measuring mode.
 *
 *****************************************************************************/
typedef enum _CalibDb_CamYRangeMode_e {
    CAM_YRANGE_MODE_INVALID    = 0,    /**< invalid y range mode   */
    CAM_YRANGE_MODE_FULL          = 1,    /**< Y = 0.299 * R + 0.587 * G + 0.114 * B,full range BT601*/
    CAM_YRANGE_MODE_LIMITED          = 2,    /**< Y = 16 + 0.25R + 0.5G + 0.1094B,limited range*/
    CAM_YRANGE_MODE_MAX,
} CalibDb_CamYRangeMode_t;
 
typedef enum _CalibDb_CamRawStatsMode_e {
    CAM_RAWSTATS_MODE_INVALID       = 0,    /**< lower border (only for an internal evaluation) */
    CAM_RAWSTATS_MODE_R             = 1,    /**< R channel */
    CAM_RAWSTATS_MODE_G             = 2,    /**< G channel */
    CAM_RAWSTATS_MODE_B             = 3,    /**< B channel */
    CAM_RAWSTATS_MODE_Y             = 4,    /**< luminance channel */
    CAM_RAWSTATS_MODE_MAX,                                  /**< upper border (only for an internal evaluation) */
} CalibDb_CamRawStatsMode_t;
 
typedef enum _CalibDb_CamHistStatsMode_e {
    CAM_HIST_MODE_INVALID       = 0,    /**< lower border (only for an internal evaluation) */
    CAM_HIST_MODE_RGB_COMBINED  = 1,    /**< RGB combined histogram, only available for SiHist */
    CAM_HIST_MODE_R             = 2,    /**< R histogram */
    CAM_HIST_MODE_G             = 3,    /**< G histogram */
    CAM_HIST_MODE_B             = 4,    /**< B histogram */
    CAM_HIST_MODE_Y             = 5,    /**< Y luminance histogram */
    CAM_HIST_MODE_MAX,                  /**< upper border (only for an internal evaluation) */
} CalibDb_CamHistStatsMode_t;
 
typedef struct CalibDb_Aec_Win_s {
    unsigned short h_offs;
    unsigned short v_offs;
    unsigned short h_size;
    unsigned short v_size;
} CalibDb_Aec_Win_t;
 
/*****************************************************************************/
/**
 * @brief   ISP2.0 AEC API Exp-Route Params
 */
/*****************************************************************************/
#define AEC_ROUTE_MAX_NODES (10)
typedef struct CalibDb_LinAeRoute_Attr_s {
    AecExpSeparateName_t     name;                       /**name */
    float                    TimeDot[AEC_ROUTE_MAX_NODES];
    float                    GainDot[AEC_ROUTE_MAX_NODES];
    float                    IspgainDot[AEC_ROUTE_MAX_NODES];
    int                      PIrisGainDot[AEC_ROUTE_MAX_NODES];
    int                      array_size;
} CalibDb_LinAeRoute_Attr_t;
 
typedef struct CalibDb_HdrAeRoute_Attr_s {
    AecExpSeparateName_t     name;                       /**name */
    float                    HdrTimeDot[3][AEC_ROUTE_MAX_NODES];
    float                    HdrGainDot[3][AEC_ROUTE_MAX_NODES];
    float                    HdrIspDGainDot[3][AEC_ROUTE_MAX_NODES];
    int                      PIrisGainDot[AEC_ROUTE_MAX_NODES];
    int                      array_size;
} CalibDb_HdrAeRoute_Attr_t;
 
typedef struct CalibDb_AeRoute_Attr_s {
    CalibDb_LinAeRoute_Attr_t LinAeSeperate[AEC_DNMODE_MAX];
    CalibDb_HdrAeRoute_Attr_t HdrAeSeperate[AEC_DNMODE_MAX];
} CalibDb_AeRoute_Attr_t;
 
typedef struct CalibDb_AeEnvLvCalib_s {
    float CalibFN;
    float RealFN;
    Cam2x1FloatMatrix_t Curve;
} CalibDb_AeEnvLvCalib_t;
 
 
//2). Auto exposure
typedef struct CalibDb_AeSpeed_s {
    bool                    SmoothEn;
    bool                    DyDampEn;
    float                   DampOver;
    float                   DampUnder;
    float                   DampDark2Bright;
    float                   DampBright2Dark;
} CalibDb_AeSpeed_t;
 
typedef struct CalibDb_AeRange_s {
    float                   Min;
    float                   Max;
} CalibDb_AeRange_t;
 
typedef struct CalibDb_LinAeRange_s {
    CalibDb_AeRange_t      stExpTimeRange;
    CalibDb_AeRange_t      stGainRange;
    CalibDb_AeRange_t      stIspDGainRange;
    CalibDb_AeRange_t      stPIrisRange;
} CalibDb_LinAeRange_t;
 
typedef struct CalibDb_HdrAeRange_s {
    CalibDb_AeRange_t      stExpTimeRange[3];
    CalibDb_AeRange_t      stGainRange[3];
    CalibDb_AeRange_t      stIspDGainRange[3];
    CalibDb_AeRange_t      stPIrisRange;
} CalibDb_HdrAeRange_t;
 
typedef struct CalibDb_AeFrmRateAttr_s {
    bool             isFpsFix;
    float            FpsValue;
} CalibDb_AeFrmRateAttr_t;
 
typedef struct CalibDb_AntiFlickerAttr_s {
    bool                           enable;
    CalibDb_FlickerFreq_t          Frequency;
    CalibDb_AntiFlickerMode_t      Mode;
} CalibDb_AntiFlickerAttr_t;
 
//3.) Init expsore
typedef struct CalibDb_LinExpInitExp_s {
    float                   InitTimeValue;
    float                   InitGainValue;
    float                   InitIspDGainValue;
    int                     InitPIrisGainValue;
    int                     InitDCIrisDutyValue;
    int                     array_size;
} CalibDb_LinExpInitExp_t;
 
typedef struct CalibDb_HdrExpInitExp_s {
    Cam3x1FloatMatrix_t     InitTimeValue;
    Cam3x1FloatMatrix_t     InitGainValue;
    Cam3x1FloatMatrix_t     InitIspDGainValue;
    int                     InitPIrisGainValue;
    int                     InitDCIrisDutyValue;
    int                     array_size;
} CalibDb_HdrExpInitExp_t;
 
typedef struct CalibDb_ExpInitExp_s {
    CalibDb_LinExpInitExp_t         stLinExpInitExp;
    CalibDb_HdrExpInitExp_t         stHdrExpInitExp;
} CalibDb_ExpInitExp_t;
 
typedef struct CalibDb_AeAttr_s {
 
    CalibDb_AeSpeed_t        stAeSpeed;
    //DelayFrmNum
    uint8_t                  BlackDelayFrame;
    uint8_t                  WhiteDelayFrame;
    //AeRange
    bool                     SetAeRangeEn;
    CalibDb_LinAeRange_t     stLinAeRange;
    CalibDb_HdrAeRange_t     stHdrAeRange;
    //Auto/Fixed fps
    CalibDb_AeFrmRateAttr_t  stFrmRate;
 
} CalibDb_AeAttr_t;
//manual exposure
typedef struct CalibDb_LinMeAttr_s {
    bool                 ManualTimeEn;
    bool                 ManualGainEn;
    bool                 ManualIspDgainEn;
    bool                 ManualIrisEn;
    float                TimeValue;
    float                GainValue;
    float                IspDGainValue;
    int                  PIrisGainValue;
    int                  DCIrisValue;
} CalibDb_LinMeAttr_t;
 
typedef struct CalibDb_HdrMeAttr_s {
    bool                    ManualTimeEn;
    bool                    ManualGainEn;
    bool                    ManualIspDgainEn;
    bool                    ManualIrisEn;
    Cam3x1FloatMatrix_t     TimeValue;
    Cam3x1FloatMatrix_t     GainValue;
    Cam3x1FloatMatrix_t     IspDGainValue;
    int                     PIrisGainValue;
    int                     DCIrisValue;
} CalibDb_HdrMeAttr_t;
 
typedef struct CalibDb_MeAttr_s {
    CalibDb_LinMeAttr_t     stLinMe;
    CalibDb_HdrMeAttr_t     stHdrMe;
} CalibDb_MeAttr_t;
 
// DayorNight Switch
typedef struct CalibDb_IRNightMode_s {
    uint8_t                 enable;
    float                   IRRgain;
    float                   IRBgain;
    float                   MaxWbDis;
    uint8_t                 Night2DayFrmCnt;
    float                   Night2DayFacTh;
    float                   VbPercent;
} CalibDb_IRNightMode_t;
 
typedef struct CalibDb_VBNightMode_s {
    uint8_t                 enable;
    float                   Night2DayFacTh;
    uint8_t                 Night2DayFrmCnt;
} CalibDb_VBNightMode_t;
 
typedef struct CalibDb_DNSwitch_Attr_s {
    uint8_t                     DNTrigger;
    CalibDb_AecDayNightMode_t   DNMode;
    uint8_t                     FillLightMode;
    float                       Day2NightFacTh;
    uint8_t                     Day2NightFrmCnt;
    CalibDb_VBNightMode_t       stVBNightMode;
    CalibDb_IRNightMode_t       stIRNightMode;
} CalibDb_DNSwitch_Attr_t;
 
//Aec-Sync-Test used for debug
#define AEC_ALTER_EXP_MAX_NUM (10)
 
typedef struct CalibDb_LinAlterExp_s {
    float                    TimeValue[AEC_ALTER_EXP_MAX_NUM];
    float                    GainValue[AEC_ALTER_EXP_MAX_NUM];
    float                    IspgainValue[AEC_ALTER_EXP_MAX_NUM];
    int                      PIrisGainValue[AEC_ALTER_EXP_MAX_NUM];
    int                      DcgMode[AEC_ALTER_EXP_MAX_NUM];
    int                      array_size;
} CalibDb_LinAlterExp_t;
 
typedef struct CalibDb_HdrAlterExp_s {
    float                    TimeValue[AEC_ALTER_EXP_MAX_NUM][3];
    float                    GainValue[AEC_ALTER_EXP_MAX_NUM][3];
    float                    IspDGainValue[AEC_ALTER_EXP_MAX_NUM][3];
    int                      PIrisGainValue[AEC_ALTER_EXP_MAX_NUM];
    int                      DcgMode[AEC_ALTER_EXP_MAX_NUM][3];
    int                      array_size;
} CalibDb_HdrAlterExp_t;
 
typedef struct CalibDb_AeSyncTest_s {
    uint8_t                     enable;
    int                         IntervalFrm;
    CalibDb_LinAlterExp_t       LinAlterExp;
    CalibDb_HdrAlterExp_t       HdrAlterExp;
} CalibDb_AeSyncTest_t;
 
//AecIrisCtrl
#define AEC_PIRIS_STAP_TABLE_MAX (1024)
typedef struct CalibDb_PIris_Attr_s {
    uint16_t              TotalStep;
    uint16_t              EffcStep;
    bool                  ZeroIsMax;
    uint16_t              StepTable[AEC_PIRIS_STAP_TABLE_MAX];
} CalibDb_PIris_Attr_t;
 
typedef struct CalibDb_DCIris_Attr_s {
    float       Kp;
    float       Ki;
    float       Kd;
    int         MinPwmDuty;
    int         MaxPwmDuty;
    int         OpenPwmDuty;
    int         ClosePwmDuty;
} CalibDb_DCIris_Attr_t;
 
typedef struct CalibDb_AecIrisCtrl_s {
    uint8_t                     enable;
    CalibDb_IrisType_t          IrisType;
    CalibDb_PIris_Attr_t        PIrisAttr;
    CalibDb_DCIris_Attr_t       DCIrisAttr;
} CalibDb_AecIrisCtrl_t;
 
typedef struct CalibDb_AecCommon_Attr_s {
    uint8_t                          enable;
    uint8_t                          AecRunInterval;
    RKAiqOPMode_t                    AecOpType;
    CalibDb_CamRawStatsMode_t        RawStatsMode;
    CalibDb_CamHistStatsMode_t       HistStatsMode;
    CalibDb_CamYRangeMode_t          YRangeMode;
    //GridWeight
    Cam15x15UCharMatrix_t            DayGridWeights;
    int                              DayWeightNum;
    Cam15x15UCharMatrix_t            NightGridWeights;
    int                              NightWeightNum;
 
    CalibDb_AecIrisCtrl_t            stIris;
 
    CalibDb_AeSyncTest_t             stSyncTest;
    //envlv calibration
    CalibDb_AeEnvLvCalib_t           stEnvLvCalib;
    //antiflicker
    CalibDb_AntiFlickerAttr_t        stAntiFlicker;
    //initial exp
    CalibDb_ExpInitExp_t             stInitExp;
    //DayOrNight switch
    CalibDb_DNSwitch_Attr_t          stDNSwitch;
    //ExpSeperate
    CalibDb_AeRoute_Attr_t           stAeRoute;
    //manual expvalue
    CalibDb_MeAttr_t                 stManual;
    CalibDb_AeAttr_t                 stAuto;
} CalibDb_AecCommon_Attr_t;
 
/*****************************************************************************/
/**
 * @brief   ISP2.0 AEC API algo Config Params(private)
 */
/*****************************************************************************/
 
#ifndef AEC_SETPOINT_MAX_NODES
#define AEC_SETPOINT_MAX_NODES 10
#endif
typedef struct CalibDb_AecDynamicSetpoint_s {
    AecDynamicSetpointName_t      name;                       /**name */
    float ExpValue[AEC_SETPOINT_MAX_NODES];
    float DySetpoint[AEC_SETPOINT_MAX_NODES];
    int   array_size;
} CalibDb_AecDynamicSetpoint_t;
 
 
typedef struct CalibDb_AecBacklight_s {
    uint8_t                     enable;
    float                       StrBias;
    CalibDb_AecMeasAreaMode_t   MeasArea;
    float                       OEROILowTh;
    float                       LumaDistTh;
    float                       LvLowTh;
    float                       LvHightTh;
    Cam1x6FloatMatrix_t         ExpLevel;
    Cam1x6FloatMatrix_t         NonOEPdfTh;
    Cam1x6FloatMatrix_t         LowLightPdfTh;
    Cam1x6FloatMatrix_t         TargetLLLuma;
} CalibDb_AecBacklight_t;
 
typedef struct CalibDb_AecOverExpCtrl_s {
    uint8_t                     enable;
    float                       StrBias;
    float                       MaxWeight;
    float                       HighLightTh;
    float                       LowLightTh;
    Cam1x6FloatMatrix_t         OEpdf;
    Cam1x6FloatMatrix_t         LowLightWeight;
    Cam1x6FloatMatrix_t         HighLightWeight;
 
} CalibDb_AecOverExpCtrl_t;
 
 
typedef struct CalibDb_LinearAE_Attr_s {
    uint8_t                 RawStatsEn;
    float                   SetPoint;                   /**< set point to hit by the ae control system */
    float                   NightSetPoint;
    float                   ToleranceIn;
    float                   ToleranceOut;
    float                   Evbias;
    CalibDb_AeStrategyMode_t        StrategyMode;
    bool                    DySetPointEn;
    CalibDb_AecDynamicSetpoint_t DySetpoint[AEC_DNMODE_MAX];
 
    CalibDb_AecBacklight_t  BackLightConf;
    CalibDb_AecOverExpCtrl_t OverExpCtrl;
} CalibDb_LinearAE_Attr_t;
 
typedef struct CalibDb_LFrameCtrl_s
{
    //LframeCtrl
    float                   OEROILowTh;
    float                   LvLowTh;
    float                   LvHighTh;
    Cam1x6FloatMatrix_t     LExpLevel;
    Cam1x6FloatMatrix_t     LSetPoint;
    Cam1x6FloatMatrix_t     TargetLLLuma;
    Cam1x6FloatMatrix_t     NonOEPdfTh;
    Cam1x6FloatMatrix_t     LowLightPdfTh;
} CalibDb_LFrameCtrl_t;
 
typedef struct CalibDb_MFrameCtrl_s
{
    //MframeCtrl
    Cam1x6FloatMatrix_t     MExpLevel;
    Cam1x6FloatMatrix_t     MSetPoint;
} CalibDb_MFrameCtrl_t;
 
typedef struct CalibDb_SFrameCtrl_s
{
    //SframeCtrl
    float                   HLLumaTolerance;
    Cam1x6FloatMatrix_t     SExpLevel;
    Cam1x6FloatMatrix_t     TargetHLLuma;
    Cam1x6FloatMatrix_t     SSetPoint;
    bool                    HLROIExpandEn;
} CalibDb_SFrameCtrl_t;
 
typedef struct CalibDb_HdrAE_Attr_s {
    float                           ToleranceIn;
    float                           ToleranceOut;
    CalibDb_AeHdrLongFrmMode_t      LongfrmMode;
    uint16_t                        SfrmMinLine;
    float                           LfrmModeExpTh;
    CalibDb_AeStrategyMode_t        StrategyMode;
    float                           Evbias;
    //ExpRatioCtrl
    CalibDb_HdrAeRatioType_t        ExpRatioType;
    Cam1x6FloatMatrix_t             RatioExpDot;
    Cam1x6FloatMatrix_t             M2SRatioFix;
    Cam1x6FloatMatrix_t             L2MRatioFix;
    Cam1x6FloatMatrix_t             M2SRatioMax;
    Cam1x6FloatMatrix_t             L2MRatioMax;
 
    float                           LumaDistTh; //used for area-growing
    CalibDb_LFrameCtrl_t            LframeCtrl;
    CalibDb_MFrameCtrl_t            MframeCtrl;
    CalibDb_SFrameCtrl_t            SframeCtrl;
 
} CalibDb_HdrAE_Attr_t;
 
/*****************************************************************************/
/**
 * @brief   Global AEC calibration structure of isp2.0
 */
/*****************************************************************************/
typedef struct CalibDb_Aec_Para_s {
    CalibDb_AecCommon_Attr_t      CommCtrl;
    CalibDb_LinearAE_Attr_t       LinearAeCtrl;
    CalibDb_HdrAE_Attr_t          HdrAeCtrl;
} CalibDb_Aec_Para_t;
 
#define CALD_AEC_GAIN_RANGE_MAX_LEN  350
typedef enum _CalibDb_ExpGainMode_e {
    RKAIQ_EXPGAIN_MODE_NONLINEAR_DB   = 0,
    RKAIQ_EXPGAIN_MODE_LINEAR         = 1,
    RKAIQ_EXPGAIN_MODE_MAX            = 2
} CalibDb_ExpGainMode_t;
 
typedef struct CalibDb_AecGainRange_s {
    bool    IsLinear;
    int     array_size;
    float   pGainRange[CALD_AEC_GAIN_RANGE_MAX_LEN];
    CalibDb_ExpGainMode_t     GainMode;
} CalibDb_AecGainRange_t;
 
typedef struct CalibDb_Sensor_Para_s {
    //Exp RealValue 2 RegValue
    CalibDb_AecGainRange_t  GainRange;
    float                   TimeFactor[4];
    //ExpSeperateCtrl
    Cam2x1FloatMatrix_t     CISHdrTimeRegSumFac;
    Cam2x1FloatMatrix_t     CISLinTimeRegMaxFac;
    Cam2x1FloatMatrix_t     CISTimeRegOdevity;
    Cam2x1FloatMatrix_t     CISHdrTimeRegOdevity;
    uint16_t                CISTimeRegMin;
    uint16_t                CISHdrTimeRegMin;
    Cam1x3ShortMatrix_t     CISHdrTimeRegMax;
    uint8_t                 CISTimeRegUnEqualEn;
    float                   CISMinFps;
    CalibDb_AeRange_t       CISAgainRange; //sensor Again or LCG range
    CalibDb_AeRange_t       CISExtraAgainRange; //add for HDR-DCG MODE, HCG range
    CalibDb_AeRange_t       CISDgainRange; //sensor Dgain
    CalibDb_AeRange_t       CISIspDgainRange; //Isp Dgain
 
    //bit 0: for hdr gain should use the same value;
    //bit 1: support use different gain value
    uint8_t                 CISHdrGainIndSetEn; //only used for hdr-stagger mode
    // bit 0 : mirror
    // bit 1 : flip
    uint8_t                 flip; // this will change the sensor output image orientation
} CalibDb_Sensor_Para_t;
 
typedef struct CalibDb_Module_Info_s {
    float FNumber;
    float EFL;
    float LensT;
    float IRCutT;
} CalibDb_Module_Info_t;
 
#define CALD_AWB_LS_NUM_MAX 14
#define CALD_AWB_WINDOW_NUM_MAX 8
#define CALD_AWB_EXCRANGE_NUM_MAX 7
#define CALD_AWB_RRES_NUM_MAX 5
#define CALD_AWB_LV_NUM_MAX 16
#define CALD_AWB_SGC_NUM_MAX 16
#define CALD_AWB_ILLUMINATION_NAME       ( 20U )
#define CALD_AWB_RES_NAME       ( 20U )
#define CALD_AWB_TEMPORAL_GAIN_SIZE_MAX 4
#define CALD_AWB_XY_TYPE_MAX_V201 2
#define CALD_AWB_GRID_NUM_TOTAL 225
#define CALD_AWB_CT_GRID_NUM_MAX 10
#define CALD_AWB_CRI_GRID_NUM_MAX 10
#define CALD_AWB_CT_LV_NUM_MAX 5
#define CALD_AWB_CT_CLIP_GRID_NUM_MAX 14
#define CALD_AWB_LV_NUM_FOR_TOLERANCE 4
#define CALD_AWB_LV_NUM_FOR_RUNINTERVAL 8
 
typedef struct _CalibDb_ExcRange_s {
    unsigned char domain;/*0uv domain,1 xy domain*/
    unsigned char mode;
    int xu[2];//left right
    int yv[2];//top bottom
} CalibDb_ExcRange_t;
 
typedef struct _CalibDb_Rgb2TcsParam_s {
    float pseudoLuminanceWeight[3];
    float rotationMat[9];
} CalibDb_Rgb2TcsParam_t;
 
typedef struct CalibDb_Yuv3D_Range_Ill_s {
    int b_uv;           //17+0 s
    int slope_inv_neg_uv; //9+10s //-1/k
    int slope_factor_uv; //9+10s // 1/(-1/k+k)
    int slope_ydis;     //9+10s //k
    int b_ydis;         //17+0s
    unsigned char ref_u;          //8u
    unsigned char ref_v;            //8u
    unsigned short  dis[6];//8+4 u
    unsigned char th[6]; //8u
} CalibDb_Yuv3D_Range_Ill_t;
 
typedef struct CalibDb_Yuv3D_2_Range_Ill_s {
    float thcurve_u[6];
    float thcure_th[6];
    float line[6];
    //float lineP1[3];
    //float lineP2[3];
} CalibDb_Yuv3D_2_Range_Ill_t;
 
typedef struct CalibDb_UV_Range_Ill_s {
    float  pu_region[5];
    float  pv_region[5];
} CalibDb_UV_Range_Ill_t;
 
typedef struct CalibDb_Tcs_Range_Ill_s {
    float xleft;
    float xright;
    float ytop;
    float ybottom;
} CalibDb_Tcs_Range_Ill_t;
 
typedef struct CalibDb_Awb_Light_Info_s {
    char light_name[16];
    CalibDb_UV_Range_Ill_t uvRange_param;
    CalibDb_UV_Range_Ill_t uvRange_param_small;
    CalibDb_Tcs_Range_Ill_t normalRange;
    CalibDb_Tcs_Range_Ill_t bigRange;
    CalibDb_Tcs_Range_Ill_t smallRange;
    CalibDb_Yuv3D_Range_Ill_t   yuv3DRange_param;
    CalibDb_Yuv3D_2_Range_Ill_t yuv3D2Range_param;
} CalibDb_Awb_Light_Info_t;
 
typedef struct CalibDb_Awb_Light_Info2_s {
    char light_name[CALD_AWB_ILLUMINATION_NAME];
    unsigned char staWeight[CALD_AWB_LV_NUM_MAX];
    unsigned int spatialGain_LV_THH;//threshold for  spatial gain calculation in different illuminant
    unsigned int spatialGain_LV_THL;//
    unsigned char xyType2Enable;
    float weightCurve_ratio[4];
    float weightCurve_weight[4];
} CalibDb_Awb_Light_Info2_t;
 
typedef struct CalibDb_StatWindow_s {
    int mode;
    int  resNum;
    char resName[CALD_AWB_RRES_NUM_MAX][CALD_AWB_RES_NAME];
    uint16_t window[CALD_AWB_RRES_NUM_MAX][4];
} CalibDb_StatWindow_t;
typedef struct CalibDb_tcs_range_ill_s {
    float NorrangeX[2];//left right
    float NorrangeY[2];//top bottom
    float SperangeX[2];
    float SperangeY[2];
    float SmalrangeX[2];
    float SmalrangeY[2];
} CalibDb_tcs_range_ill_t;
 
typedef struct CalibDb_Awb_Cct_Clip_Cfg_s {
    float outdoor_cct_min;
    int grid_num;
    float cct[CALD_AWB_CT_CLIP_GRID_NUM_MAX];
    float cri_bound_up[CALD_AWB_CT_CLIP_GRID_NUM_MAX];
    float cri_bound_low[CALD_AWB_CT_CLIP_GRID_NUM_MAX];
}  CalibDb_Awb_Cct_Clip_Cfg_t;
typedef struct CalibDb_limit_range_s {
    int lumaNum;
    float lumaValue[CALD_AWB_LV_NUM_MAX];
    unsigned short      maxR[CALD_AWB_LV_NUM_MAX];
    unsigned short      minR[CALD_AWB_LV_NUM_MAX];
    unsigned short      maxG[CALD_AWB_LV_NUM_MAX];
    unsigned short      minG[CALD_AWB_LV_NUM_MAX];
    unsigned short      maxB[CALD_AWB_LV_NUM_MAX];
    unsigned short      minB[CALD_AWB_LV_NUM_MAX];
    unsigned short      maxY[CALD_AWB_LV_NUM_MAX];
    unsigned short      minY[CALD_AWB_LV_NUM_MAX];
} CalibDb_limit_range_t;
 
typedef struct CalibDb_Awb_Calib_Para_V200_s {
    struct list_head           listHead;
    char                scene[CALIBDB_MAX_SCENE_NAME_LENGTH];
    unsigned char       hdrFrameChooseMode;
    unsigned char       hdrFrameChoose;
    bool                lscBypEnable;
    bool                uvDetectionEnable;
    bool                xyDetectionEnable;
    bool                yuvDetectionEnable;
    bool                wpDiffWeiEnable;
    bool                wbGainClipEn;
    bool                wbGainDaylightClipEn;
    bool                blkWeightEnable;//the different weight in WP sum
    bool                blkStatisticsEnable;
    int                 lsUsedForYuvDetNum;
    char                lsUsedForYuvDet[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME];
    unsigned char       dsMode;
    unsigned char       blkMeasureMode;
    CalibDb_StatWindow_t measeureWindow;
    bool                multiwindow_en;
    unsigned char       lightNum;
    char                lightName[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME];
    unsigned char       doorType[CALD_AWB_LS_NUM_MAX];
    float               standardGainValue[CALD_AWB_LS_NUM_MAX][4];//rggb
    CalibDb_limit_range_t limitRange;
    //uv_range_ill_t        uvRange_param[7];//big range
    //uv_range_ill_t        uvRange_param_small[7];//small range
    CalibDb_Rgb2TcsParam_t     rgb2tcs_param;
    //tcs_range_ill_t     xyRangeLight[7];//HZ A TL84 CWF D50 D65 D75
    //yuv3d_range_ill_t yuv3DRange_param[7];
    //yuv3d_2_range_ill_t yuv3D2Range_param[7];
    //several window in pixel domain
    //CalibDb_Awb_Light_Info_t    awb_light_info[CALD_AWB_LS_NUM_MAX];
    CalibDb_UV_Range_Ill_t uvRange_param[CALD_AWB_LS_NUM_MAX];
    CalibDb_UV_Range_Ill_t uvRange_param_small[CALD_AWB_LS_NUM_MAX];
    CalibDb_tcs_range_ill_t xyRangeLight[CALD_AWB_LS_NUM_MAX];
    CalibDb_Yuv3D_Range_Ill_t   yuv3DRange_param[CALD_AWB_LS_NUM_MAX];
 
 
    unsigned short multiwindow[CALD_AWB_WINDOW_NUM_MAX][4];//8  windows in pixel domain ,hOffset,vOffser,hSize,vSize;
    //several winow in uv or xy domain
    CalibDb_ExcRange_t excludeWpRange[CALD_AWB_EXCRANGE_NUM_MAX];
    float spatialGain_H[4];//spatial gain
    float spatialGain_L[4];
    float temporalDefaultGain[4];
    float ca_targetGain[4];
    //single color
    unsigned short      sSelColorNUM;
    unsigned short      sIndSelColor[CALD_AWB_SGC_NUM_MAX];
    float               sMeanCh[2][CALD_AWB_SGC_NUM_MAX];
    float               srGain[CALD_AWB_LS_NUM_MAX];
    float               sbGain[CALD_AWB_LS_NUM_MAX];
    unsigned short      sIllEstNum;
    char                sNameIllEst[CALD_AWB_LS_NUM_MAX][CALD_AWB_ILLUMINATION_NAME];
    float               sAlpha;
    float lineRgBg[3];
    float lineRgProjCCT[3];
    //wbgain clip
    CalibDb_Awb_Cct_Clip_Cfg_t cct_clip_cfg;
} CalibDb_Awb_Calib_Para_V200_t;
 
 
typedef struct CalibDb_Awb_line_s {
    float a;
    float b;
    float c;
} CalibDb_Awb_line_t;
 
typedef struct CalibDb_Awb_Cct_Lut_Cfg_Lv_s {
    float lv;
    int ct_grid_num;
    int cri_grid_num;
    float ct_range[2];//min,max, equal distance sapmle
    float cri_range[2];//min,max
    float ct_lut_out[CALD_AWB_CT_GRID_NUM_MAX * CALD_AWB_CRI_GRID_NUM_MAX];
    float cri_lut_out[CALD_AWB_CT_GRID_NUM_MAX * CALD_AWB_CRI_GRID_NUM_MAX];
}  CalibDb_Awb_Cct_Lut_Cfg_Lv_t;
 
 
typedef struct CalibDb_Awb_gain_offset_cfg_s {
    bool enable;
    float offset[4];
} CalibDb_Awb_gain_offset_cfg_t;
 
typedef struct rk_aiq_wb_awb_runinterval_s {
    int num;
    float LV[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
    float value[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
}  CalibDb_Awb_runinterval_t;
 
typedef struct rk_aiq_wb_awb_tolerance_s {
    int num;
    float LV[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
    float value[CALD_AWB_LV_NUM_FOR_RUNINTERVAL];
}  CalibDb_Awb_tolerance_t;
 
typedef struct CalibDb_Awb_Remosaic_Para_s
{
    bool enable;
    float sensor_awb_gain[4];
} CalibDb_Awb_Remosaic_Para_t;
 
typedef struct CalibDb_Awb_Wp_Th_s {
    int num;
    float lumaValue[CALD_AWB_LV_NUM_MAX];
    float WP_THH[CALD_AWB_LV_NUM_MAX];
    float WP_THL[CALD_AWB_LV_NUM_MAX];
}  CalibDb_Awb_Wp_Th_t;
 
typedef struct CalibDb_Awb_XyReionSelect_WpNumTh_s {
    int num;
    float lumaValue[CALD_AWB_LV_NUM_MAX];
    float wpNumThForBigType[CALD_AWB_LV_NUM_MAX];
    float wpNumThForExtraType[CALD_AWB_LV_NUM_MAX];
 
}  CalibDb_Awb_XyReionSelect_WpNumTh_t;
 
 
typedef struct CalibDb_Awb_Adjust_Para_s {
    struct list_head           listHead;
    char                scene[CALIBDB_MAX_SCENE_NAME_LENGTH];
    bool                wbBypass;
    bool                awbEnable;
    unsigned char lightNum;
    bool ca_enable;
    bool wbGainAdjustEn;
    char lsForFirstFrame[CALD_AWB_ILLUMINATION_NAME];
    //multiwindow
    unsigned char multiwindowMode;
    bool uvRange_small_enable;
    CalibDb_Awb_tolerance_t tolerance;//wb gain diff th for awb gain update, set 0 to disable this function
    CalibDb_Awb_runinterval_t runInterval;
    //wbgain damp
    float dFStep;
    float dFMin;
    float dFMax;
    int LvIIRsize;
    float LvVarTh;
 
    int LV_NUM;
    unsigned int LVMatrix[CALD_AWB_LV_NUM_MAX];
    unsigned int LV_THL;
    unsigned int LV_THL2;
    unsigned int LV_THH;
    unsigned int LV_THH2;
    CalibDb_Awb_Wp_Th_t WP_TH;
    float proDis_THL; //threshold for distance probality calculation
    float proDis_THH;
    unsigned int proLV_Indoor_THL;// threshold for luminance probality calculation
    unsigned int proLV_Indoor_THH;
    unsigned int proLV_Outdoor_THL;
    unsigned int proLV_Outdoor_THH;
    unsigned char temporalCalGainSetSize;
    unsigned char temporalGainSetWeight[CALD_AWB_TEMPORAL_GAIN_SIZE_MAX];//ËÄÖ¡µÄ±ÈÀý0-100×ܺÍΪ100//gainPer[0]Ϊ-1Ö¡£¬gainPer[1]is -2,gainPer[2] is -3 gainPer[3] is -4
    float  wpNumPercTh;//ÎÞЧ°×µããÐÖµ£¬°×µãÊýÁ¿ÉÙʱÈÏΪ¸Ã°×µãÎÞЧ
    unsigned char tempWeight[CALD_AWB_LV_NUM_MAX];
 
 
    //color adaptation
    float ca_LACalcFactor;
 
 
    //wb gain shift 2 //to do  from xml
    int cct_lut_cfg_num;
    CalibDb_Awb_Cct_Lut_Cfg_Lv_t cct_lut_cfg[CALD_AWB_CT_LV_NUM_MAX];
    CalibDb_Awb_gain_offset_cfg_t wbGainOffset;
 
 
    float convergedVarTh;
 
 
 
    //make  xyTypeSelect stable
    int xyTypeListSize;// xyTypeListSize ==0 will disable this function
    float varianceLumaTh;
    CalibDb_Awb_XyReionSelect_WpNumTh_t wpNumTh;
    CalibDb_Awb_Light_Info2_t    awb_light_info[CALD_AWB_LS_NUM_MAX];
 
    bool xyType2ForColBalEnable;// to do for awb2.1
 
    CalibDb_Awb_Remosaic_Para_t remosaic_cfg;
} CalibDb_Awb_Adjust_Para_t;
 
 
typedef struct CalibDb_Awb_Para_s
{
    CalibDb_Awb_Calib_Para_V200_t calib_para_v200;
    CalibDb_Awb_Adjust_Para_t adjust_para;
} CalibDb_Awb_Para_t;
 
typedef struct GlobalLuma_s
{
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float GlobalLumaMode;
    float envLevel[13];
    float ISO[13];
    float Tolerance;
    float globalLuma[13];
} GlobalLuma_t;
 
typedef struct DetailsHighLight_s
{
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float DetailsHighLightMode;
    float OEPdf[13];
    float EnvLv[13];
    float Tolerance;
    float detailsHighLight[13];
} DetailsHighLight_t;
 
typedef struct DetailsLowLight_s
{
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float DetailsLowLightMode;
    float FocusLuma[13];
    float DarkPdf[13];
    float ISO[13];
    float Tolerance;
    float detailsLowLight[13];
} DetailsLowLight_t;
 
typedef struct LocalTMO_s
{
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float LocalTMOMode;
    float DynamicRange[13];
    float EnvLv[13];
    float Tolerance;
    float Strength[13];
} LocalTMO_t;
 
typedef struct GlobaTMO_s
{
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float en;
    float iir;
    float mode;
    float DynamicRange[13];
    float EnvLv[13];
    float Tolerance;
    float Strength[13];
} GlobaTMO_t;
 
typedef struct TMO_en_s
{
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float en;
} TMO_en_t;
 
typedef struct CalibDb_Amerge_Para_s {
    float envLevel[13];
    float oeCurve_smooth[13];
    float oeCurve_offset[13];
    float moveCoef[13];
    float mdCurveLm_smooth[13];
    float mdCurveLm_offset[13];
    float mdCurveMs_smooth[13];
    float mdCurveMs_offset[13];
    float oeCurve_damp;
    float mdCurveLm_damp;
    float mdCurveMs_damp;
} CalibDb_Amerge_Para_t;
 
typedef struct CalibDb_Atmo_Para_s {
    TMO_en_t en[CALIBDB_MAX_MODE_NUM];
    GlobalLuma_t luma[CALIBDB_MAX_MODE_NUM];
    DetailsHighLight_t HighLight[CALIBDB_MAX_MODE_NUM];
    DetailsLowLight_t LowLight[CALIBDB_MAX_MODE_NUM];
    LocalTMO_t LocalTMO[CALIBDB_MAX_MODE_NUM];
    GlobaTMO_t GlobaTMO[CALIBDB_MAX_MODE_NUM];
    float damp;
} CalibDb_Atmo_Para_t;
 
 
 
typedef struct CalibDb_Blc_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float iso[CALIBDB_BLC_MAX_ISO_LEVEL];
    float level[4][CALIBDB_BLC_MAX_ISO_LEVEL];
} CalibDb_Blc_ModeCell_t;
 
typedef struct CalibDb_Blc_s {
    int enable;
    CalibDb_Blc_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_Blc_t;
 
typedef struct CalibDb_Dpcc_set_RK_s {
    unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char sw_dis_scale_min[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char sw_dis_scale_max[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RK_t;
 
typedef struct CalibDb_Dpcc_set_LC_s {
    unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_LC_t;
 
typedef struct CalibDb_Dpcc_set_PG_s {
    unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_PG_t;
 
typedef struct CalibDb_Dpcc_set_RND_s {
    unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RND_t;
 
typedef struct CalibDb_Dpcc_set_RG_s {
    unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RG_t;
 
typedef struct CalibDb_Dpcc_set_RO_s {
    unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char rb_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char g_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
} CalibDb_Dpcc_set_RO_t;
 
typedef struct CalibDb_Dpcc_set_s {
    CalibDb_Dpcc_set_RK_t rk;
    CalibDb_Dpcc_set_LC_t lc;
    CalibDb_Dpcc_set_PG_t pg;
    CalibDb_Dpcc_set_RND_t rnd;
    CalibDb_Dpcc_set_RG_t rg;
    CalibDb_Dpcc_set_RO_t ro;
} CalibDb_Dpcc_set_t;
 
typedef struct CalibDb_Dpcc_Pdaf_s {
    unsigned char en;
    unsigned char point_en[16];
    unsigned short int offsetx;
    unsigned short int offsety;
    unsigned char wrapx;
    unsigned char wrapy;
    unsigned short int wrapx_num;
    unsigned short int wrapy_num;
    unsigned char point_x[16];
    unsigned char point_y[16];
    unsigned char forward_med;
} CalibDb_Dpcc_Pdaf_t;
 
typedef struct CalibDb_Dpcc_Expert_Mode_s {
    float iso[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_Enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char grayscale_mode;
    unsigned char rk_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char dpcc_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_rb_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_g_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_inc_rb_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_inc_g_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_use_fix_set[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_use_set3[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_use_set2[CALIBDB_DPCC_MAX_ISO_LEVEL];
    unsigned char stage1_use_set1[CALIBDB_DPCC_MAX_ISO_LEVEL];
    CalibDb_Dpcc_set_t set[3];
} CalibDb_Dpcc_Expert_Mode_t;
 
typedef struct CalibDb_Dpcc_s {
    int enable;
    char version[64];
    CalibDb_Dpcc_Fast_Mode_t fast;
    CalibDb_Dpcc_Expert_Mode_t expert;
    CalibDb_Dpcc_Pdaf_t pdaf;
    CalibDb_Dpcc_Sensor_t sensor_dpcc;
} CalibDb_Dpcc_t;
 
#define CALIBDB_NR_SHARP_NAME_LENGTH 64
#define CALIBDB_NR_SHARP_MODE_LENGTH 64
 
typedef struct CalibDb_BayerNR_Params_s {
    char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
    char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
    float iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float filtPara[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float luLevel[8];
    float luLevelVal[8];
    float luRatio[8][CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float fixW[4][CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float lamda;
    unsigned char gauss_en;
    float RGainOff;
    float RGainFilp;
    float BGainOff;
    float BGainFilp;
    float edgeSoftness;
    float gaussWeight0;
    float gaussWeight1;
    float bilEdgeFilter;
    float bilFilterStreng[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float bilEdgeSoft;
    float bilEdgeSoftRatio;
    float bilRegWgt;
} CalibDb_BayerNR_Params_t;
 
typedef struct CalibDb_BayerNr_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    CalibDb_BayerNR_Params_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
} CalibDb_BayerNr_ModeCell_t;
 
typedef struct CalibDb_BayerNr_s {
    int enable;
    char version[64];
    CalibDb_BayerNr_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_BayerNr_t;
 
typedef struct CalibDb_BayerNr_2_s {
    int enable;
    char version[64];
    CalibDb_BayerNr_ModeCell_t *mode_cell;
    int mode_num;
} CalibDb_BayerNr_2_t;
 
 
#define CIFISP_LSC_DATA_TBL_SIZE_ISP20  289
#define CIFISP_LSC_GRAD_TBL_SIZE_ISP20  8
#define CIFISP_LSC_SIZE_TBL_SIZE_ISP20  8
#define LSC_GRAD_TBL_SIZE_ISP20         8
#define LSC_ILLUMINATION_MAX            10
typedef enum  CalibDb_Used_For_Case_e {
    USED_FOR_CASE_NORMAL = 0,
    USED_FOR_CASE_FLASH,
    USED_FOR_CASE_GRAY,
    USED_FOR_CASE_3,
    USED_FOR_CASE_MAX
} CalibDb_Used_For_Case_t;
 
#define LSC_RESOLUTION_NAME         ( 15U )
typedef char                        CalibDb_ResolutionName_t[LSC_RESOLUTION_NAME];
#define LSC_PROFILE_NAME            ( 25U )
typedef char                        CalibDb_Lsc_ProfileName_t[LSC_PROFILE_NAME];
#define LSC_ILLUMINATION_NAME       ( 20U )
typedef char                        CalibDb_IlluminationName_t[LSC_ILLUMINATION_NAME];
#ifndef LSC_PROFILES_NUM_MAX
#define LSC_PROFILES_NUM_MAX         ( 5 )
#endif
#ifndef LSC_RESOLUTIONS_NUM_MAX
#define LSC_RESOLUTIONS_NUM_MAX      ( 4 )
#endif
typedef enum Cam4ChColorComponent_e
{
    CAM_4CH_COLOR_COMPONENT_RED     = 0,
    CAM_4CH_COLOR_COMPONENT_GREENR  = 1,
    CAM_4CH_COLOR_COMPONENT_GREENB  = 2,
    CAM_4CH_COLOR_COMPONENT_BLUE    = 3,
    CAM_4CH_COLOR_COMPONENT_MAX
} Cam4ChColorComponent_t;
 
typedef struct CamLscMatrix_s
{
    Cam17x17UShortMatrix_t  LscMatrix[CAM_4CH_COLOR_COMPONENT_MAX];
} CamLscMatrix_t;
 
typedef struct CamVignettingCurve_s {
    uint16_t    arraySize;
    float      pSensorGain[4];//change to pointer
    float      pVignetting[4];
} CamVignettingCurve_t;
 
typedef struct CalibDb_AlscCof_ill_s {
    char illuName[25];
    float awbGain[2];
    int tableUsedNO;
    CalibDb_Lsc_ProfileName_t tableUsed[LSC_PROFILES_NUM_MAX];
    CamVignettingCurve_t vignettingCurve;
} CalibDb_AlscCof_ill_t;
 
typedef struct CalibDb_AlscCof_s {
    int   lscResNum;
    CalibDb_ResolutionName_t  lscResName[LSC_RESOLUTIONS_NUM_MAX];// type CalibDb_ResolutionName_t
    int   illuNum[USED_FOR_CASE_MAX];
    CalibDb_AlscCof_ill_t illAll[USED_FOR_CASE_MAX][LSC_ILLUMINATION_MAX];
    int usedForCaseAll[USED_FOR_CASE_MAX * LSC_ILLUMINATION_MAX]; //for write xml
} CalibDb_AlscCof_t;
 
 
typedef struct CalibDb_LscTableProfile_s {
    CalibDb_Lsc_ProfileName_t     name;                                   /**< profile name */
    CalibDb_ResolutionName_t     resolution;                             /**< resolution link */
    CalibDb_IlluminationName_t   illumination;                           /**< illumination link */
    float                   vignetting;                             /**< vignetting value */
 
    uint16_t                LscSectors;
    uint16_t                LscNo;
    uint16_t                LscXo;
    uint16_t                LscYo;
 
    uint16_t                LscXGradTbl[LSC_GRAD_TBL_SIZE_ISP20];
    uint16_t                LscYGradTbl[LSC_GRAD_TBL_SIZE_ISP20];
    uint16_t                LscXSizeTbl[CIFISP_LSC_SIZE_TBL_SIZE_ISP20];
    uint16_t                LscYSizeTbl[CIFISP_LSC_SIZE_TBL_SIZE_ISP20];
 
    Cam17x17UShortMatrix_t  LscMatrix[CAM_4CH_COLOR_COMPONENT_MAX];     /**< matrix for different color channels */
} CalibDb_LscTableProfile_t;
 
typedef struct CalibDb_Lsc_s {
    bool enable;
    bool damp_enable;
    CalibDb_AlscCof_t aLscCof;
    int tableAllNum;
    CalibDb_LscTableProfile_t *tableAll; //type  CalibDb_LscTableProfile_t;
} CalibDb_Lsc_t;
 
 
typedef struct CalibDb_RKDM_s {
    unsigned char debayer_en;
    signed char debayer_filter1[5];
    signed char debayer_filter2[5];
    unsigned char debayer_gain_offset;
    int ISO[9];
    unsigned char sharp_strength[9];
    unsigned short debayer_hf_offset[9];
    unsigned char debayer_offset;
    unsigned char debayer_clip_en;
    unsigned char debayer_filter_g_en;
    unsigned char debayer_filter_c_en;
    unsigned char debayer_thed0;
    unsigned char debayer_thed1;
    unsigned char debayer_dist_scale;
    unsigned char debayer_cnr_strength;
    unsigned char debayer_shift_num;
} CalibDb_RKDM_t;
 
#define CCM_ILLUMINATION_MAX               7
#define CCM_PROFILE_NAME            ( 25U )
typedef char                        CalibDb_Ccm_ProfileName_t[CCM_PROFILE_NAME];
#define CCM_ILLUMINATION_NAME       ( 20U )
// typedef char                        CalibDb_IlluminationName_t[CCM_ILLUMINATION_NAME];
#define CCM_PROFILES_NUM_MAX         ( 5 )
#define CCM_RESOLUTIONS_NUM_MAX      ( 4 )
#define CALIBDB_ISO_NUM              ( 9 )
typedef enum Cam3ChColorComponent_e
{
    CAM_3CH_COLOR_COMPONENT_RED     = 0,
    CAM_3CH_COLOR_COMPONENT_GREEN   = 1,
    CAM_3CH_COLOR_COMPONENT_BLUE    = 2,
    CAM_3CH_COLOR_COMPONENT_MAX
} Cam3ChColorComponent_t;
 
typedef struct CamSaturationCurve_s {
    uint16_t    arraySize;
    float      pSensorGain[4];//change to pointer
    float      pSaturation[4];
} CamSaturationCurve_t;
 
typedef struct CalibDb_AccmCof_ill_s {
    char illuName[25];
    float awbGain[2];
    int matrixUsedNO;
    CalibDb_Ccm_ProfileName_t matrixUsed[CCM_PROFILES_NUM_MAX];
    CamSaturationCurve_t saturationCurve;
} CalibDb_AccmCof_ill_t;
 
typedef struct CalibDb_AccmCof_s {
    int   illuNum;
    CalibDb_AccmCof_ill_t illAll[CCM_ILLUMINATION_MAX];
} CalibDb_AccmCof_t;
 
typedef struct CalibDb_CcmMatrixProfile_s
{
    CalibDb_Ccm_ProfileName_t  name;                   /**< profile name */
    CalibDb_IlluminationName_t illumination;
    float                   saturation;             /**< saturation value */
    Cam3x3FloatMatrix_t     CrossTalkCoeff;         /**< CrossTalk matrix coefficients */
    Cam1x3FloatMatrix_t     CrossTalkOffset;        /**< CrossTalk offsets */
} CalibDb_CcmMatrixProfile_t;
 
typedef struct CalibDb_LUMA_CCM_s {
    float rgb2y_para[3];
    float low_bound_pos_bit;
    float y_alpha_curve[17];
    int gain_scale_cure_size;
    float alpha_gain[9];//change to pointer
    float alpha_scale[9];
} CalibDb_LUMA_CCM_t;
 
typedef struct CalibDb_Ccm_ModeCell_s {
    bool valid;
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    bool  damp_enable;
    CalibDb_AccmCof_t aCcmCof;
    CalibDb_LUMA_CCM_t   luma_ccm;
    int matrixAllNum;
    CalibDb_CcmMatrixProfile_t matrixAll[CCM_RESOLUTIONS_NUM_MAX * CCM_ILLUMINATION_MAX * CCM_PROFILES_NUM_MAX]; //type  CalibDb_CcmMatrixProfile_t;
} CalibDb_Ccm_ModeCell_t;
 
typedef enum  CalibDb_CcmHdrNormalMode_e {
    CCM_FOR_MODE_NORMAL = 0,
    CCM_FOR_MODE_HDR,
    CCM_FOR_MODE_MAX,
} CalibDb_CcmHdrNormalMode_t;
 
 
typedef struct CalibDb_Ccm_s {
    int modecellNum;
    bool enable;
    CalibDb_Ccm_ModeCell_t mode_cell[CCM_FOR_MODE_MAX];
} CalibDb_Ccm_t;
 
typedef struct CalibDb_UVNR_Params_s {
    char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
    char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
    float ISO[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step0_uvgrad_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step0_uvgrad_offset[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_nonMed1[4];
    float step1_nonBf1[4];
    float step1_downSample_w[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_downSample_h[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_downSample_meansize[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_median_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_median_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_median_IIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step1_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_nonExt_block[4];
    float step2_nonMed[4];
    float step2_nonBf[4];
    float step2_downSample_w[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_downSample_h[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_downSample_meansize[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_median_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_median_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_median_IIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step2_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_nonBf3[4];
    float step3_bf_sigmaR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_bf_uvgain[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_bf_ratio[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_bf_size[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_bf_sigmaD[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_bf_isRowIIR[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float step3_bf_isYcopy[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float kernel_3x3[3];
    float kernel_5x5[5];
    float kernel_9x9[8];
    float kernel_9x9_num;
    float sigma_adj_luma[9];
    float sigma_adj_ratio[9];
    float threshold_adj_luma[9];
    float threshold_adj_thre[9];
} CalibDb_UVNR_Params_t;
 
typedef struct CalibDb_UVNR_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    CalibDb_UVNR_Params_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
} CalibDb_UVNR_ModeCell_t;
 
typedef struct CalibDb_UVNR_s {
    int enable;
    char version[64];
    CalibDb_UVNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_UVNR_t;
 
typedef struct CalibDb_UVNR_2_s {
    int enable;
    char version[64];
    CalibDb_UVNR_ModeCell_t *mode_cell;
    int mode_num;
} CalibDb_UVNR_2_t;
 
 
typedef struct CalibDb_Gamma_s {
    unsigned char gamma_en;
    unsigned char gamma_out_segnum;
    unsigned char gamma_out_offset;
    float curve_normal[45];
    float curve_hdr[45];
    float curve_night[45];
} CalibDb_Gamma_t;
 
typedef struct CalibDb_Degamma_para_s {
    unsigned char degamma_scene_en;
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float X_axis[CALIBDB_DEGAMMA_CRUVE_KNOTS];
    float curve_R[CALIBDB_DEGAMMA_CRUVE_KNOTS];
    float curve_G[CALIBDB_DEGAMMA_CRUVE_KNOTS];
    float curve_B[CALIBDB_DEGAMMA_CRUVE_KNOTS];
} CalibDb_Degamma_para_t;
 
typedef struct CalibDb_Degamma_s {
    unsigned char degamma_en;
    CalibDb_Degamma_para_t mode[3];
} CalibDb_Degamma_t;
 
typedef struct CalibDb_YNR_ISO_s {
    float iso;
    double sigma_curve[5];
    float ynr_lci[4];
    float ynr_lhci[4];
    float ynr_hlci[4];
    float ynr_hhci[4];
    float lo_lumaPoint[6];
    float lo_lumaRatio[6];
    float lo_directionStrength;
    float lo_bfScale[4];
    float imerge_ratio;
    float imerge_bound;
    float denoise_weight[4];
    float hi_lumaPoint[6];
    float hi_lumaRatio[6];
    float hi_bfScale[4];
    float hwith_d[4];
    float hi_denoiseStrength;
    float hi_detailMinAdjDnW;
    float hi_denoiseWeight[4];
    float y_luma_point[6];
    float hgrad_y_level1[6];
    float hgrad_y_level2[6];
    float hgrad_y_level3[6];
    float hgrad_y_level4[6];
    float hi_soft_thresh_scale[4];
} CalibDb_YNR_ISO_t;
 
typedef struct CalibDb_YNR_Setting_s {
    char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
    char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
    CalibDb_YNR_ISO_t ynr_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
} CalibDb_YNR_Setting_t;
 
typedef struct CalibDb_YNR_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    CalibDb_YNR_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
} CalibDb_YNR_ModeCell_t;
 
typedef struct CalibDb_YNR_s {
    int enable;
    char version[64];
    CalibDb_YNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_YNR_t;
 
typedef struct CalibDb_YNR_2_s {
    int enable;
    char version[64];
    CalibDb_YNR_ModeCell_t *mode_cell;
    int mode_num;
} CalibDb_YNR_2_t;
 
 
typedef struct CalibDb_Gic_setting_v20_s {
    float iso[CALIBDB_ISO_NUM];
    float min_busy_thre[CALIBDB_ISO_NUM];
    float min_grad_thr1[CALIBDB_ISO_NUM];
    float min_grad_thr2[CALIBDB_ISO_NUM] ;
    float k_grad1[CALIBDB_ISO_NUM];
    float k_grad2[CALIBDB_ISO_NUM] ;
    float gb_thre[CALIBDB_ISO_NUM] ;
    float maxCorV[CALIBDB_ISO_NUM] ;
    float maxCorVboth[CALIBDB_ISO_NUM];
    float dark_thre[CALIBDB_ISO_NUM];
    float dark_threHi[CALIBDB_ISO_NUM];
    float k_grad1_dark[CALIBDB_ISO_NUM];
    float k_grad2_dark[CALIBDB_ISO_NUM] ;
    float min_grad_thr_dark1[CALIBDB_ISO_NUM];
    float min_grad_thr_dark2[CALIBDB_ISO_NUM] ;
    float noiseCurve_0[CALIBDB_ISO_NUM];
    float noiseCurve_1[CALIBDB_ISO_NUM];
    float GValueLimitLo[CALIBDB_ISO_NUM] ;
    float GValueLimitHi[CALIBDB_ISO_NUM];
    float textureStrength[CALIBDB_ISO_NUM] ;
    float ScaleLo[CALIBDB_ISO_NUM] ;
    float ScaleHi[CALIBDB_ISO_NUM] ;
    float globalStrength[CALIBDB_ISO_NUM];
    float noise_coea[CALIBDB_ISO_NUM] ;
    float noise_coeb[CALIBDB_ISO_NUM];
    float diff_clip[CALIBDB_ISO_NUM];
} CalibDb_Gic_setting_v20_t;
 
typedef struct CalibDb_Gic_ModeCell_v20_s {
    char scene[CALIBDB_MAX_MODE_NAME_LENGTH];
    unsigned char gic_en;
    unsigned char edge_en;
    unsigned char gr_ration;
    unsigned char noise_cut_en;
    CalibDb_Gic_setting_v20_t setting;
} CalibDb_Gic_ModeCell_v20_t;
 
typedef struct CalibDb_Gic_s {
    CalibDb_Gic_ModeCell_v20_t calib_v20[CALIBDB_MAX_MODE_NUM];
    CalibDb_Gic_ModeCell_v20_t tuning_v20[CALIBDB_MAX_MODE_NUM];
} CalibDb_Gic_t;
 
struct CalibDb_awb_uv_ratio_s {
    char illum[9];
    float ratio[2];
};
 
struct CalibDb_MFNR_ISO_s {
    float iso;
    float weight_limit_y[4];
    float weight_limit_uv[3];
    float ratio_frq[4];
    float luma_w_in_chroma[3];
    double noise_curve[5];
    double noise_curve_x00;
    float y_lo_noiseprofile[4];
    float y_hi_noiseprofile[4];
    float y_lo_denoiseweight[4];
    float y_hi_denoiseweight[4];
    float y_lo_bfscale[4];
    float y_hi_bfscale[4];
    float y_lumanrpoint[6];
    float y_lumanrcurve[6];
    float y_denoisestrength;
    float y_lo_lvl0_gfdelta[6];
    float y_hi_lvl0_gfdelta[6];
    float y_lo_lvl1_gfdelta[3];
    float y_hi_lvl1_gfdelta[3];
    float y_lo_lvl2_gfdelta[3];
    float y_hi_lvl2_gfdelta[3];
    float y_lo_lvl3_gfdelta[3];
    float y_hi_lvl3_gfdelta[3];
    float uv_lo_noiseprofile[3];
    float uv_hi_noiseprofile[3];
    float uv_lo_denoiseweight[3];
    float uv_hi_denoiseweight[3];
    float uv_lo_bfscale[3];
    float uv_hi_bfscale[3];
    float uv_lumanrpoint[6];
    float uv_lumanrcurve[6];
    float uv_denoisestrength;
    float uv_lo_lvl0_gfdelta[6];
    float uv_hi_lvl0_gfdelta[6];
    float uv_lo_lvl1_gfdelta[3];
    float uv_hi_lvl1_gfdelta[3];
    float uv_lo_lvl2_gfdelta[3];
    float uv_hi_lvl2_gfdelta[3];
    float lvl0_gfsigma[6];
    float lvl1_gfsigma[3];
    float lvl2_gfsigma[3];
    float lvl3_gfsigma[3];
};
 
typedef struct CalibDb_MFNR_Setting_s {
    char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
    char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
    struct CalibDb_MFNR_ISO_s mfnr_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
} CalibDb_MFNR_Setting_t;
 
typedef struct CalibDb_MFNR_Dynamic_s {
    int enable;
    float lowth_iso;
    float lowth_time;
    float highth_iso;
    float highth_time;
} CalibDb_MFNR_Dynamic_t;
 
typedef struct CalibDb_MFNR_Motion_s {
    int enable;
    float iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float sigmaHScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float sigmaLScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float lightClp[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float uvWeight[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float mfnrSigmaScale[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float yuvnrGainScale0[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float yuvnrGainScale1[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float yuvnrGainScale2[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved0[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved1[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved2[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved3[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved4[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved5[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved6[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float reserved7[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float frame_limit_uv[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
    float frame_limit_y[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
} CalibDb_MFNR_Motion_t;
 
typedef struct CalibDb_MFNR_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    CalibDb_MFNR_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
    CalibDb_MFNR_Dynamic_t dynamic;
    CalibDb_MFNR_Motion_t  motion;
} CalibDb_MFNR_ModeCell_t;
 
typedef struct CalibDb_MFNR_s {
    int enable;
    char version[64];
    unsigned char local_gain_en;
    unsigned char motion_detect_en;
    unsigned char mode_3to1;
    unsigned char max_level;
    unsigned char max_level_uv;
    unsigned char back_ref_num;
    struct CalibDb_awb_uv_ratio_s uv_ratio[4];
    CalibDb_MFNR_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_MFNR_t;
 
typedef struct CalibDb_MFNR_2_s {
    int enable;
    char version[64];
    unsigned char local_gain_en;
    unsigned char motion_detect_en;
    unsigned char mode_3to1;
    unsigned char max_level;
    unsigned char max_level_uv;
    unsigned char back_ref_num;
    struct CalibDb_awb_uv_ratio_s uv_ratio[4];
    CalibDb_MFNR_ModeCell_t *mode_cell;
    int mode_num;
} CalibDb_MFNR_2_t;
 
 
struct CalibDb_Sharp_ISO_s {
    float iso;
    float hratio;
    float lratio;
    float mf_sharp_ratio;
    float hf_sharp_ratio;
    float luma_sigma[8];
    float pbf_gain;
    float pbf_ratio;
    float pbf_add;
    float mf_clip_pos[8];
    float mf_clip_neg[8];
    float hf_clip[8];
    float mbf_gain;
    float hbf_gain;
    float hbf_ratio;
    float mbf_add;
    float hbf_add;
    float local_sharp_strength;
    float pbf_coeff_percent;
    float rf_m_coeff_percent;
    float rf_h_coeff_percent;
    float hbf_coeff_percent;
};
 
typedef struct CalibDb_Sharp_Setting_s {
    char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
    char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
    struct CalibDb_Sharp_ISO_s sharp_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
} CalibDb_Sharp_Setting_t;
 
typedef struct CalibDb_Sharp_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float gauss_luma_coeff[9];
    float mbf_coeff[221];
#if 0
    float pbf_coeff[9];
    float rf_m_coeff[25];
    float rf_h_coeff[25];
    float hbf_coeff[9];
#else
    //v2
    float pbf_coeff_l[9];
    float pbf_coeff_h[9];
    float rf_m_coeff_l[25];
    float rf_m_coeff_h[25];
    float rf_h_coeff_l[25];
    float rf_h_coeff_h[25];
    float hbf_coeff_l[9];
    float hbf_coeff_h[9];
#endif
    CalibDb_Sharp_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
} CalibDb_Sharp_ModeCell_t;
 
typedef struct CalibDb_Sharp_s {
    int enable;
    char version[64];
    float luma_point[8];
    CalibDb_Sharp_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_Sharp_t;
 
typedef struct CalibDb_Sharp_2_s {
    int enable;
    char version[64];
    float luma_point[8];
    CalibDb_Sharp_ModeCell_t* mode_cell;
    int mode_num;
} CalibDb_Sharp_2_t;
 
 
struct CalibDb_EdgeFilter_ISO_s {
    float iso;
    float edge_thed;
    float src_wgt;
    unsigned char alpha_adp_en;
    float local_alpha;
    float global_alpha;
    float noise_clip[8];
    float dog_clip_pos[8];
    float dog_clip_neg[8];
    float dog_alpha[8];
    float direct_filter_coeff[5];
    float dog_kernel_row0[5];
    float dog_kernel_row1[5];
    float dog_kernel_row2[5];
    float dog_kernel_row3[5];
    float dog_kernel_row4[5];
    float dog_kernel_percent;
};
 
typedef struct CalibDb_EdgeFilter_Setting_s {
    char snr_mode[CALIBDB_NR_SHARP_NAME_LENGTH];
    char sensor_mode[CALIBDB_NR_SHARP_MODE_LENGTH];
    struct CalibDb_EdgeFilter_ISO_s edgeFilter_iso[CALIBDB_NR_SHARP_MAX_ISO_LEVEL];
} CalibDb_EdgeFilter_Setting_t;
 
typedef struct CalibDb_EdgeFilter_ModeCell_s {
    char name[CALIBDB_MAX_MODE_NAME_LENGTH];
    float dog_kernel_l[25];
    float dog_kernel_h[25];
    CalibDb_EdgeFilter_Setting_t setting[CALIBDB_NR_SHARP_SETTING_LEVEL];
} CalibDb_EdgeFilter_ModeCell_t;
 
typedef struct CalibDb_EdgeFilter_s {
    int enable;
    char version[64];
    float luma_point[8];
    CalibDb_EdgeFilter_ModeCell_t mode_cell[CALIBDB_MAX_MODE_NUM];
} CalibDb_EdgeFilter_t;
 
typedef struct CalibDb_EdgeFilter_2_s {
    int enable;
    char version[64];
    float luma_point[8];
    CalibDb_EdgeFilter_ModeCell_t *mode_cell;
    int mode_num;
} CalibDb_EdgeFilter_2_t;
 
typedef struct CalibDb_IIR_setting_v20_s {
    float stab_fnum;
    float sigma;
    float wt_sigma;
    float air_sigma;
    float tmax_sigma;
} CalibDb_IIR_setting_v20_t;
 
typedef struct CalibDb_Dehaze_Setting_v20_s {
    float en;
    float iso[9];
    float dc_min_th[9];
    float dc_max_th[9];
    float yhist_th[9];
    float yblk_th[9];
    float dark_th[9];
    float bright_min[9];
    float bright_max[9];
    float wt_max[9];
    float air_min[9];
    float air_max[9];
    float tmax_base[9];
    float tmax_off[9];
    float tmax_max[9];
    float cfg_wt[9];
    float cfg_air[9];
    float cfg_tmax[9];
    float dc_thed[9];
    float dc_weitcur[9];
    float air_thed[9];
    float air_weitcur[9];
    CalibDb_IIR_setting_v20_t IIR_setting;
} CalibDb_Dehaze_Setting_v20_t;
 
typedef struct CalibDb_Enhance_Setting_v20_s {
    float en;
    float iso[9];
    float enhance_value[9];
} CalibDb_Enhance_Setting_v20_t;
 
typedef struct CalibDb_Hist_setting_v20_s {
    float en;
    float iso[9];
    unsigned char  hist_channel[9];
    unsigned char  hist_para_en[9];
    float hist_gratio[9];
    float hist_th_off[9];
    float hist_k[9];
    float hist_min[9];
    float hist_scale[9];
    float cfg_gratio[9];
} CalibDb_Hist_setting_v20_t;
 
typedef struct CalibDb_Dehaze_ModeCell_v20_s {
    char scene[CALIBDB_MAX_MODE_NAME_LENGTH];
    float en;
    float cfg_alpha;
    CalibDb_Dehaze_Setting_v20_t dehaze_setting;
    CalibDb_Enhance_Setting_v20_t enhance_setting;
    CalibDb_Hist_setting_v20_t hist_setting;
} CalibDb_Dehaze_ModeCell_v20_t;
 
typedef struct CalibDb_Dehaze_s {
    CalibDb_Dehaze_ModeCell_v20_t calib_v20[CALIBDB_MAX_MODE_NUM];
    CalibDb_Dehaze_ModeCell_v20_t tuning_v20[CALIBDB_MAX_MODE_NUM];
 
} CalibDb_Dehaze_t;
 
typedef enum CalibDb_Af_SearchDir_s {
    CAM_AFM_POSITIVE_SEARCH     = 0,
    CAM_AFM_NEGATIVE_SEARCH     = 1,
    CAM_AFM_ADAPTIVE_SEARCH     = 2
} CalibDb_Af_SearchDir_t;
 
typedef enum CalibDb_Af_SS_s {
    CAM_AFM_FSS_INVALID         = 0,
    CAM_AFM_FSS_FULLRANGE       = 1,    /**< scan the full focus range to find the point of best focus */
    CAM_AFM_FSS_HILLCLIMBING    = 2,    /**< use hillclimbing search */
    CAM_AFM_FSS_ADAPTIVE_RANGE  = 3,    /**< similar to full range search, but with multiple subsequent scans
                                         with decreasing range and step size will be performed. */
    CAM_AFM_FSS_MUTIWINDOW    = 4,    /**< search by muti-window statistics */
    CAM_AFM_FSS_MAX
} CalibDb_Af_SS_t;
 
typedef struct CalibDb_Af_Contrast_s {
    unsigned char           enable;
    CalibDb_Af_SS_t         Afss;                         /**< enumeration type for search strategy */
    CalibDb_Af_SearchDir_t  FullDir;
    unsigned char           FullSteps;
    unsigned short          FullRangeTbl[65];                 /**< full range search table*/
    CalibDb_Af_SearchDir_t  AdaptiveDir;
    unsigned char           AdaptiveSteps;
    unsigned short          AdaptRangeTbl[65];                /**< adaptive range search table*/
    float                   TrigThers;                    /**< AF trigger threshold */
    float                   LumaTrigThers;
 
    float                   StableThers;                  /**< AF stable threshold */
    unsigned short          StableFrames;                 /**< AF stable  status must hold frames */
    unsigned short          StableTime;                   /**< AF stable status must hold time */
 
    unsigned char           SceneDiffEnable;
    float                   SceneDiffThers;
    unsigned short          SceneDiffBlkThers;
    float                   CenterSceneDiffThers;
 
    float                   ValidMaxMinRatio;
    float                   ValidValueThers;
 
    float                   OutFocusValue;                /**< out of focus vlaue*/
    unsigned short          OutFocusPos;                  /**< out of focus position*/
 
    unsigned char           WeightEnable;
    unsigned short          Weight[225];                  /**< weight */
 
    unsigned char           SearchPauseLumaEnable;
    float                   SearchPauseLumaThers;
    unsigned short          SearchLumaStableFrames;
    float                   SearchLumaStableThers;
 
    float                   FlatValue;
} CalibDb_Af_Contrast_t;
 
typedef struct CalibDb_Af_Laser_s {
    unsigned char enable;
    float vcmDot[7];
    float distanceDot[7];
} CalibDb_Af_Laser_t;
 
typedef struct CalibDb_Af_Pdaf_s {
    unsigned char enable;
} CalibDb_Af_Pdaf_t;
 
typedef struct CalibDb_Af_VcmCfg_s {
    int start_current;
    int rated_current;
    int step_mode;
    int extra_delay;
} CalibDb_Af_VcmCfg_t;
 
typedef struct CalibDb_Af_MeasIsoCfg_s {
    int iso;
    unsigned short afmThres;
    unsigned short gammaY[17];
    unsigned char gaussWeight[3];
} CalibDb_Af_MeasIsoCfg_t;
 
typedef struct CalibDb_Af_DefCode_s {
    unsigned char code;
} CalibDb_Af_DefCode_t;
 
typedef struct CalibDb_Af_ZoomFocusTbl_s {
    int tbl_len;
    float focal_length[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
    int zoom_pos[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
    int focus_infpos[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
    int focus_macropos[CALIBDB_ZOOM_FOCUS_TBL_SIZE];
} CalibDb_Af_ZoomFocusTbl_t;
 
typedef struct CalibDb_AF_s {
    signed char af_mode;
    unsigned short win_h_offs;
    unsigned short win_v_offs;
    unsigned short win_h_size;
    unsigned short win_v_size;
    CalibDb_Af_DefCode_t fixed_mode;
    CalibDb_Af_DefCode_t macro_mode;
    CalibDb_Af_DefCode_t infinity_mode;
    CalibDb_Af_Contrast_t contrast_af;
    CalibDb_Af_Laser_t laser_af;
    CalibDb_Af_Pdaf_t pdaf;
    CalibDb_Af_VcmCfg_t vcmcfg;
    CalibDb_Af_MeasIsoCfg_t measiso_cfg[CALIBDB_MAX_ISO_LEVEL];
    CalibDb_Af_ZoomFocusTbl_t zoomfocus_tbl;
} CalibDb_AF_t;
 
typedef struct CalibDb_ORB_s {
    unsigned char orb_en;
} CalibDb_ORB_t;
 
typedef struct CalibDb_LUMA_DETECT_s {
    unsigned char luma_detect_en;
    int fixed_times;
    float mutation_threshold;
    float mutation_threshold_level2;
} CalibDb_LUMA_DETECT_t;
 
typedef struct CalibDb_FEC_s {
    unsigned char fec_en;
    char meshfile[256];
    int correct_level;
    double light_center[2]; // light center
    double coefficient[4]; // the distortion coefficient of the fisheye lens
} CalibDb_FEC_t;
 
typedef struct CalibDb_EIS_s {
    unsigned char eis_en;
    // TODO(Cody): Add EIS specific calib data
} CalibDb_EIS_t;
 
typedef struct CalibDb_LDCH_s {
    unsigned char ldch_en;
    char meshfile[256];
    int correct_level;
    int correct_level_max;
    double light_center[2]; // light center
    double coefficient[4]; // the distortion coefficient of the fisheye lens
} CalibDb_LDCH_t;
typedef struct {
    bool enable;
    unsigned short look_up_table_r[729];
    unsigned short look_up_table_g[729];
    unsigned short look_up_table_b[729];
} CalibDb_Lut3d_t;
 
typedef struct {
    bool          support_en;
    RKAiqOPMode_t dcg_optype;
    Cam1x3IntMatrix_t dcg_mode;
    float         dcg_ratio;
    bool          gainCtrl_en;
    bool          envCtrl_en;
    bool          sync_switch;
    float         lcg2hcg_gain_th;
    float         lcg2hcg_env_th;
    float         hcg2lcg_gain_th;
    float         hcg2lcg_env_th;
} CalibDb_Dcg_Params_t;
 
typedef struct {
    CalibDb_Dcg_Params_t Hdr;
    CalibDb_Dcg_Params_t Normal;
} CalibDb_Dcg_t;
 
typedef struct {
    uint8_t       support_en;
    /* default mode
     * 0: auto
     * 1: manual
     */
    int32_t      mode;
    /* force gray if cpsl on */
    uint8_t        gray;
    /* default cpsl source
     * 0: led
     * 1: ir
     * 2: mix
     */
    int32_t      lght_src;
    /* auto mode default params */
    float         ajust_sens;
    uint32_t      sw_interval;
    uint32_t      on2off_th;
    uint32_t      off2on_th;
    /* manual mode default params */
    uint8_t       cpsl_on;
    float         strength;
} CalibDb_Cpsl_t;
 
typedef struct {
    int time_delay;
    int gain_delay;
    int dcg_delay;
} CalibDb_ExpDelay_t;
 
typedef struct {
    CalibDb_ExpDelay_t Hdr;
    CalibDb_ExpDelay_t Normal;
} CalibDb_ExpDelay_comb_t;
 
typedef struct {
#define HDR_MODE_2_FRAME_STR        "MODE_2_FRAME"
#define HDR_MODE_2_LINE_STR         "MODE_2_LINE"
#define HDR_MODE_3_FRAME_STR        "MODE_3_FRAME"
#define HDR_MODE_3_LINE_STR         "MODE_3_LINE"
#define HDR_LINE_MODE_DCG_STR       "DCG"
#define HDR_LINE_MODE_STAGGER_STR   "STAGGER"
 
    unsigned char hdr_en;
    rk_aiq_isp_hdr_mode_t hdr_mode;
    rk_aiq_sensor_hdr_line_mode_t line_mode;
    CalibDb_Dcg_t dcg;
    CalibDb_ExpDelay_comb_t exp_delay;
} CalibDb_System_t;
 
typedef struct {
    char parse_version[16];
    char date[16];
    char author[32];
    char sensor_name[32];
    char sample_name[64];
    char gen_verion[16];
    uint32_t magic_code;
} CalibDb_Header_t;
 
typedef struct CalibDb_ColorAsGrey_s {
    int enable;
} CalibDb_ColorAsGrey_t;
 
 
typedef struct CalibDb_cProc_s {
    uint8_t enable;
    uint8_t brightness;
    uint8_t contrast;
    uint8_t saturation;
    uint8_t hue;
} CalibDb_cProc_t;
 
typedef struct CalibDb_IE_s {
    int enable;
    int mode;
} CalibDb_IE_t;
 
typedef struct CamCalibDbContextIsp20_s {
    CalibDb_Header_t header;
    struct list_head awb_calib_para_v200;
    struct list_head awb_adjust_para;
    CalibDb_Lut3d_t lut3d;
    CalibDb_Aec_Para_t aec;
    CalibDb_AF_t af;
    CalibDb_Amerge_Para_t amerge;
    CalibDb_Atmo_Para_t atmo;
    CalibDb_Blc_t blc;
    CalibDb_Dpcc_t dpcc;
    CalibDb_BayerNr_2_t bayerNr;
    CalibDb_Lsc_t lsc;
    CalibDb_RKDM_t dm;
    CalibDb_Ccm_t ccm;
    CalibDb_UVNR_2_t uvnr;
    CalibDb_Gamma_t gamma;
    CalibDb_Degamma_t degamma;
    CalibDb_YNR_2_t ynr;
    CalibDb_Gic_t gic;
    CalibDb_MFNR_2_t mfnr;
    CalibDb_Sharp_2_t sharp;
    CalibDb_EdgeFilter_2_t edgeFilter;
    CalibDb_Dehaze_t dehaze;
    CalibDb_FEC_t afec;
    CalibDb_EIS_t aeis;
    CalibDb_LDCH_t aldch;
    CalibDb_LUMA_DETECT_t lumaDetect;
    CalibDb_ORB_t orb;
    CalibDb_Sensor_Para_t sensor;
    CalibDb_Module_Info_t module;
    CalibDb_Cpsl_t cpsl;
    CalibDb_ColorAsGrey_t colorAsGrey;
    CalibDb_cProc_t cProc;
    CalibDb_IE_t    ie;
    CalibDb_System_t  sysContrl;
} CamCalibDbContextIsp20_t;
 
#pragma pack()
 
#endif