高通aec记录--未完成

Aec_biz.c

1:输入参数的记录:使用如下两个结构体,每个参数对应一个结构体(aec_input_entry_type entry[AEC_INPUT_PARAM_MAX]);用两个变量(first_flagged_entry,next_flagged_entry )形成链表标记有设置的参数

typedef struct

{

uint8                first_flagged_entry;

aec_input_entry_type entry[AEC_INPUT_PARAM_MAX];

} aec_core_input_info_type;

typedef struct

{

uint8                   next_flagged_entry;

aec_input_payload_type  data;

} aec_input_entry_type;

2:Stream的裁剪信息:

原始出图=》crop成map分辨率(目的是为了x:y比率一样)=》缩放成vfe_out分辨率=》crop成pp分辨率=》缩放成preview分辨率(具体参考函数aec_biz_translate_coord_camif2fov)

typedef struct

{

uint32   vfe_map_x; /**< Left coordinate of the map */

uint32   vfe_map_y; /**< Top coordinate of the map */

uint32   vfe_map_width; /**< The width of the map */

uint32   vfe_map_height; /**< The height of the map */

uint32   pp_x; /**< Left coordinate of the crop */

uint32   pp_y; /**< Top coordinate of the crop */

uint32   pp_crop_out_x; /**< Width of the crop window */

uint32   pp_crop_out_y; /**< Height of the crop window */

uint32   vfe_out_width; /**< The width on which the remapping is calculated */

uint32   vfe_out_height; /**< The height on which the remapping is calculated */

} q3a_stream_crop_t;

可以参考aec_biz_translate_coord_camif2fov的代码

3:Auto Flicker Detection (AFD)

4:MANUAL_TO_AUTO_SKIP_CNT:它确保跳过足够多的帧以获取包含自动设置的统计信息

5:manual eztune exposure time:这是什么功能?

6:aec_bestshot_mode_type_t:各种scen mode

typedef enum {

AEC_BESTSHOT_OFF,

AEC_BESTSHOT_AUTO,

AEC_BESTSHOT_LANDSCAPE,

AEC_BESTSHOT_SNOW,

AEC_BESTSHOT_BEACH,

AEC_BESTSHOT_SUNSET,

AEC_BESTSHOT_NIGHT,

AEC_BESTSHOT_PORTRAIT,

AEC_BESTSHOT_BACKLIGHT,

AEC_BESTSHOT_SPORTS,

AEC_BESTSHOT_ANTISHAKE, /* 10 */

AEC_BESTSHOT_FLOWERS,

AEC_BESTSHOT_CANDLELIGHT,

AEC_BESTSHOT_FIREWORKS,

AEC_BESTSHOT_PARTY,

AEC_BESTSHOT_NIGHT_PORTRAIT,

AEC_BESTSHOT_THEATRE,

AEC_BESTSHOT_ACTION,

AEC_BESTSHOT_AR,

AEC_BESTSHOT_FACE_PRIORITY,

AEC_BESTSHOT_BARCODE, /* 20 */

AEC_BESTSHOT_HDR,

AEC_BESTSHOT_MAX

} aec_bestshot_mode_type_t;

7:STATS事件的处理:

Isp_parse_thread.c的isp_parser_thread_process函数发送MCT_EVENT_MODULE_STATS_DATA事件到stats_port.c中

Stats_port.c再stats_port_event函数处理MCT_EVENT_MODULE_STATS_DATA事件;stats_port_handle_stats_data(port, event),发送MCT_EVENT_MODULE_STATS_EXT_DATA事件到aec_port.c等3a port

Aec_port.c在aec_port_proc_downstream_event()中处理MCT_EVENT_MODULE_STATS_EXT_DATA事件,将q3a_aecawb_thread_en_q_msg事件传给3a线程

Q3a_thread.c中将事件丢给算法库处理:aec_ops->process();然后将处理结果回调camera_aecawb->aec_cb();

回调函数在aec_port.c的aec_port_callback,调用aec_port_send_aec_update处理(将事件type:AEC_PORT_STATE_ALGO_UPDATE  flag:STATS_UPDATE_AEC

event:MCT_EVENT_MODULE_STATS_AEC_UPDATE 发送到port_sensor.c);

Port_sensor.c调用port_sensor_handle_aec_update()处理

8预闪流程:

Log:flash_process: Turning on torch/pre flash打开预闪,

《===port_sensor_handle_aec_update

《===aec_port_send_aec_update

《===aec_port_proc_downstream_ctrl(MCT_EVENT_CONTROL_SOF)

《====mct_stream.c(mct_stream_send_ctrl_sof)

(0)

相关推荐