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