1 #include "third_party_ae_algo.h"
2 #include "uAPI2/rk_aiq_user_api2_camgroup.h"
3 #include "uAPI2/rk_aiq_user_api2_sysctl.h"
4 
custom_ae_init(void * ctx)5 int32_t custom_ae_init(void* ctx)
6 {
7     //TO DO
8     printf("custom ae test: %s \n", __func__);
9     rk_aiq_sys_ctx_t* sys_ctx = NULL;
10     rk_aiq_camgroup_ctx_t* group_ctx = NULL;
11 
12     rk_aiq_cam_type_t cam_type = (rk_aiq_cam_type_t)(*(int*)(ctx));
13 
14     if (cam_type == RK_AIQ_CAM_TYPE_GROUP)
15         group_ctx = (rk_aiq_camgroup_ctx_t*)ctx;
16     else
17         sys_ctx = (rk_aiq_sys_ctx_t*)ctx;
18 
19     if (group_ctx)
20         printf("%s:%d group custom ae !\n", __func__, __LINE__);
21     else
22         printf("%s:%d single custom ae !\n", __func__, __LINE__);
23 
24     return 0;
25 }
26 
custom_ae_run(void * ctx,const rk_aiq_customAe_stats_t * pstAeInfo,rk_aiq_customeAe_results_t * pstAeResult)27 int32_t custom_ae_run(void* ctx, const rk_aiq_customAe_stats_t* pstAeInfo,
28                       rk_aiq_customeAe_results_t* pstAeResult)
29 {
30     rk_aiq_sys_ctx_t* sys_ctx = NULL;
31     rk_aiq_camgroup_ctx_t* group_ctx = NULL;
32 
33     rk_aiq_cam_type_t cam_type = (rk_aiq_cam_type_t)(*(int*)(ctx));
34 
35     if (cam_type == RK_AIQ_CAM_TYPE_GROUP)
36         group_ctx = (rk_aiq_camgroup_ctx_t*)ctx;
37     else
38         sys_ctx = (rk_aiq_sys_ctx_t*)ctx;
39 
40     if (group_ctx)
41         printf("%s:%d group custom ae !\n", __func__, __LINE__);
42     else
43         printf("%s:%d single custom ae !\n", __func__, __LINE__);
44 
45 #if 0
46 
47     if(pstAeInfo != NULL) {
48         float MeanLuma[3] = {0.0f};
49 
50         for(int i = 0; i < 225; i++) {
51             MeanLuma[0] += (float)(pstAeInfo->rawae_stat[0].rawae_big.channelg_xy[i] >> 4); //channelg is 12bit, channelr/channelb is 10bit
52             MeanLuma[1] += (float)(pstAeInfo->rawae_stat[1].rawae_big.channelg_xy[i] >> 4); //channelg is 12bit, channelr/channelb is 10bit
53         }
54 
55         MeanLuma[0] /= 225.0f; //range:0~255 (equal to 8bit)
56         MeanLuma[1] /= 225.0f; //range:0~255 (equal to 8bit)
57 
58 
59         printf("custom ae test: %s lin gain=%f,time=%f,meanluma = %f\n", __func__, pstAeInfo->linear_exp.exp_real_params.analog_gain,
60                pstAeInfo->linear_exp.exp_real_params.integration_time, MeanLuma[0]);
61         printf("custom ae test: %s hdr sgain=%f,stime=%f,mgain=%f,mtime=%f,smeanluma = %f,mmeanluma=%f\n", __func__,
62                pstAeInfo->hdr_exp[0].exp_real_params.analog_gain, pstAeInfo->hdr_exp[0].exp_real_params.integration_time,
63                pstAeInfo->hdr_exp[1].exp_real_params.analog_gain, pstAeInfo->hdr_exp[1].exp_real_params.integration_time,
64                MeanLuma[0], MeanLuma[1]);
65     }
66 
67 
68     static uint32_t frmid = 0;
69 
70     if(frmid % 20 < 10) {
71         pstAeResult->linear_exp.exp_real_params.analog_gain = 2.0f;
72         pstAeResult->linear_exp.exp_real_params.integration_time = 0.02f;
73         pstAeResult->linear_exp.exp_real_params.digital_gain = 1.0f;
74         pstAeResult->linear_exp.exp_real_params.isp_dgain = 1.0f;
75         pstAeResult->linear_exp.exp_real_params.dcg_mode = 0;
76 
77         pstAeResult->linear_exp.exp_sensor_params.coarse_integration_time = 0x7bc;
78         pstAeResult->linear_exp.exp_sensor_params.analog_gain_code_global = 0x14;
79 
80         pstAeResult->hdr_exp[0].exp_real_params.analog_gain = 1.0f;
81         pstAeResult->hdr_exp[0].exp_real_params.integration_time = 0.003f;
82         pstAeResult->hdr_exp[0].exp_real_params.digital_gain = 1.0f;
83         pstAeResult->hdr_exp[0].exp_real_params.isp_dgain = 1.0f;
84         pstAeResult->hdr_exp[0].exp_real_params.dcg_mode = 0;
85 
86         pstAeResult->hdr_exp[0].exp_sensor_params.analog_gain_code_global = 0x0;
87         pstAeResult->hdr_exp[0].exp_sensor_params.coarse_integration_time = 0x128;
88 
89         pstAeResult->hdr_exp[1].exp_real_params.analog_gain = 2.0f;
90         pstAeResult->hdr_exp[1].exp_real_params.integration_time = 0.01f;
91         pstAeResult->hdr_exp[1].exp_real_params.digital_gain = 1.0f;
92         pstAeResult->hdr_exp[1].exp_real_params.isp_dgain = 1.0f;
93         pstAeResult->hdr_exp[1].exp_real_params.dcg_mode = 0;
94 
95         pstAeResult->hdr_exp[1].exp_sensor_params.analog_gain_code_global = 0x14;
96         pstAeResult->hdr_exp[1].exp_sensor_params.coarse_integration_time = 0x3de;
97 
98     } else {
99         pstAeResult->linear_exp.exp_real_params.analog_gain = 40.0f;
100         pstAeResult->linear_exp.exp_real_params.integration_time = 0.03f;
101         pstAeResult->linear_exp.exp_real_params.digital_gain = 1.0f;
102         pstAeResult->linear_exp.exp_real_params.isp_dgain = 1.0f;
103         pstAeResult->linear_exp.exp_real_params.dcg_mode = 1;
104 
105         pstAeResult->linear_exp.exp_sensor_params.analog_gain_code_global = 0x4f;
106         pstAeResult->linear_exp.exp_sensor_params.coarse_integration_time = 0xb9a;
107 
108 
109         pstAeResult->hdr_exp[0].exp_real_params.analog_gain = 6.0f;
110         pstAeResult->hdr_exp[0].exp_real_params.integration_time = 0.003f;
111         pstAeResult->hdr_exp[0].exp_real_params.digital_gain = 1.0f;
112         pstAeResult->hdr_exp[0].exp_real_params.isp_dgain = 1.0f;
113         pstAeResult->hdr_exp[0].exp_real_params.dcg_mode = 1;
114 
115         pstAeResult->hdr_exp[0].exp_sensor_params.analog_gain_code_global = 0x18;
116         pstAeResult->hdr_exp[0].exp_sensor_params.coarse_integration_time = 0x128;
117 
118 
119         pstAeResult->hdr_exp[1].exp_real_params.analog_gain = 40.0f;
120         pstAeResult->hdr_exp[1].exp_real_params.integration_time = 0.01f;
121         pstAeResult->hdr_exp[1].exp_real_params.digital_gain = 1.0f;
122         pstAeResult->hdr_exp[1].exp_real_params.isp_dgain = 1.0f;
123         pstAeResult->hdr_exp[1].exp_real_params.dcg_mode = 1;
124 
125         pstAeResult->hdr_exp[1].exp_sensor_params.analog_gain_code_global = 0x4f;
126         pstAeResult->hdr_exp[1].exp_sensor_params.coarse_integration_time = 0x3de;
127     }
128 
129     frmid++;
130 
131 #endif
132 
133     return 0;
134 }
135 
custom_ae_ctrl(void * ctx,uint32_t u32Cmd,void * pValue)136 int32_t custom_ae_ctrl(void* ctx, uint32_t u32Cmd, void *pValue)
137 {
138     //TO DO
139     printf("custom ae test: %s \n", __func__);
140     return 0;
141 }
142 
custom_ae_exit(void * ctx)143 int32_t custom_ae_exit(void* ctx)
144 {
145     //TO DO
146     printf("custom ae test: %s \n", __func__);
147     return 0;
148 }
149