1 #ifndef __RK_AIQ_TYPES_ALDCH_ALGO_INT_H__
2 #define __RK_AIQ_TYPES_ALDCH_ALGO_INT_H__
3 
4 #include <stddef.h>
5 #include <stdint.h>
6 #include "rk_aiq_comm.h"
7 #include "rk_aiq_types_aldch_algo.h"
8 
9 typedef struct rk_aiq_uapi_sync_s rk_aiq_uapi_sync_t;
10 
11 typedef struct rk_aiq_ldch_cfg_s {
12     rk_aiq_uapi_sync_t sync;
13 
14     bool        en;
15     uint8_t     correct_level;
16 } rk_aiq_ldch_cfg_t;
17 
18 typedef enum {
19     RK_AIQ_LDCH_UPDATE_LUT_ON_LINE              = 0,    // generate lut inside rkaiq
20     RK_AIQ_LDCH_UPDATE_LUT_FROM_EXTERNAL_FILE,          // external file import lut
21     RK_AIQ_LDCH_UPDATE_LUT_FROM_EXTERNAL_BUFFER,        // external buffer import lut
22 } rk_aiq_ldch_update_lut_mode_t;
23 
24 typedef struct rk_aiq_ldch_lut_external_file_s {
25     char        config_file_dir[64];
26     char        mesh_file_name[32];
27 } rk_aiq_ldch_lut_external_file_t;
28 
29 typedef struct rk_aiq_ldch_lut_external_buffer_s {
30     void*        addr;
31     size_t       size;
32 } rk_aiq_ldch_lut_external_buffer_t;
33 
34 typedef struct rk_aiq_ldch_custom_lut_s {
35     bool        update_flag;
36     union {
37         rk_aiq_ldch_lut_external_file_t     file;
38         rk_aiq_ldch_lut_external_buffer_t   buffer;
39     } u;
40 } rk_aiq_ldch_custom_lut_t;
41 
42 typedef struct rk_aiq_ldch_v21_cfg_s {
43     rk_aiq_uapi_sync_t sync;
44 
45     bool        en;
46     uint8_t     correct_level;
47 
48     uint8_t     bic_mode_en;
49     uint8_t     zero_interp_en;
50     uint8_t     sample_avr_en;
51 
52     uint8_t     bic_weight[ISP32_LDCH_BIC_NUM];
53 
54     rk_aiq_ldch_update_lut_mode_t   update_lut_mode;
55     rk_aiq_ldch_custom_lut_t        lut;
56 } rk_aiq_ldch_v21_cfg_t;
57 
58 #endif
59