3A algorithm consists of auto exposure ,auto white balance and auto focous.The describtion sequence is based on different files.
1.config.c (vendor/qcom/proprietary/mm-camera/targers/gtcommon/config/config.c)
(1)int8_t config_init_ctrl(void)
Is a damon thread,the beginning is int8_t config_init_ctrl(void) ,in this function there is a invoked function isp3a_init(&cfgctrl) == FALSE),the cfgctrl is global variable.cfgctrl is initialized in this function,and among the following procedurce ,lots parameters are from this parameter.
(2)int8_t isp3a_init(void *cctrl)
1
2
3
4
5
6int8_t isp3a_init(void *cctrl) { ... isp3a_ctrl_t *ctrl3a = &(ctrl->isp3aCtrl); // is pointer conversion, so,realization, is cfgctrl be initiated. sensor_ctrl_t *sensor = &(ctrl->sensorCtrl);
1
2/*sensor_from_chromatix_3a_t,this structrue is related with the chromatix_XXX.h file,which we use to tune camera*/ sensor_from_chromatix_3a_t *chroma = &(sensor->chromatixAnd3a);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23/*Parameters got above be used*/ isp3a_load_chroma(chroma, &(ctrl3a->isp3a_input.isp3a_chromatix)); //Filed of ctrl3a be assigned isp3a_load_sensor(sensor, &(ctrl3a->isp3a_input.isp3a_sensor)); //Filed of ctrl3a be assigned if (!aec_init(ctrl3a)) CDBG("aec init failedn"); if (!awb_init(ctrl3a)) CDBG("awb init failedn"); if (!af_init(ctrl3a)) CDBG("af init failedn"); if (!sd_init(ctrl3a )) CDBG("sd init failedn"); ctrl3a->isp3a_input.vfeStatStruct = malloc(sizeof(isp3a_stats_out_t)); if (ctrl3a->isp3a_input.vfeStatStruct == NULL) { CDBG("ctrl3a->isp3a_input.vfeStatStruct malloc failedn"); return FALSE; } .... } /* isp3a_init */
(1)int8_t awb_init(isp3a_ctrl_t *ctrl3a)
In this function awbCtrl be created and assigned first, and thenawb_settings_init(ctrl3a) be called.
(2)static void awb_settings_init(isp3a_ctrl_t *ctrl3a)
最后
以上就是感性大米最近收集整理的关于qualcomm platform 3a algorithm -- awb的全部内容,更多相关qualcomm内容请搜索靠谱客的其他文章。
发表评论 取消回复