cam_capture_mode_t capture_mode;
int rer_enabled;
int dis_enabled, dvs_enabled;
- int af_enabled, ae_enabled, awb_enabled;
+ int ae_awb_af_enabled;
int af_result; // 0 means fail, it will be filled when captured finished.
int still_af_count, start_still_af;
advci_window window;
mfld_cam_settings.flicker_mode = CAM_GENERAL_FLICKER_REDUCTION_MODE_50HZ;
mfld_cam_settings.focus_mode = CAM_FOCUS_MODE_AUTO;
- mfld_driver.ae_enabled = 0;
- mfld_driver.af_enabled = 0;
- mfld_driver.awb_enabled = 0;
+ mfld_driver.ae_awb_af_enabled = 0;
mfld_driver.dis_enabled = 0;
mfld_driver.dvs_enabled = 0;
mfld_driver.rer_enabled = 0;
mfld_driver.start_still_af = 0;
mfld_driver.still_af_count = 0;
- mfld_driver.first_frame = 1;
+ mfld_driver.first_frame = 0;
mfld_driver.mmap = 1;
mfld_driver.g_3a_started = 0;
mfldadvci->AfSetMode(advci_af_mode_auto);
mfldadvci->AfSetMeteringMode (advci_af_metering_mode_auto);
}
- else
+ else{
mfld_driver.sensor_type = SENSOR_TYPE_SOC;
-
+ mfld_driver.first_frame = 1;
+ }
cam_driver_init_gamma (fd);
/* FixMe Need to get the ISO speed , apture when use need to read these
cam_driver_dbg ("mmap raw image failed");
return;
}
- cam_driver_dbg ("MMAP raw address from kernel 0x%x\n", raw_buffer.start);
+ cam_driver_dbg ("MMAP raw address from kernel %p\n", raw_buffer.start);
buf = (char *) raw_buffer.start;
memset (fn_buf, 0, sizeof (char) * 100);
for (;;) {
sem_wait(&g_sem_3a);
/* Read 3A statistics */
- if ((mfld_driver.ae_enabled || mfld_driver.af_enabled
- || mfld_driver.awb_enabled || mfld_driver.dis_enabled
+ if ((mfld_driver.ae_awb_af_enabled || mfld_driver.dis_enabled
|| mfld_driver.dvs_enabled) && (mfld_driver.sensor_type == SENSOR_TYPE_RAW) )
{
/* AE, AWB and AF Process */
{
gboolean need_assist = FALSE;
mfld_driver.mmap = capture_settings->mmap;
- mfld_driver.ae_enabled = capture_settings->ae;
- mfld_driver.af_enabled = capture_settings->af;
- mfld_driver.awb_enabled = capture_settings->awb;
+ mfld_driver.ae_awb_af_enabled = capture_settings->ae_awb_af;
/* Discard the first two frames */
if (mfld_driver.first_frame) {
}
/* Still AF start */
if ((mfld_driver.start_still_af) && (mfld_driver.sensor_type == SENSOR_TYPE_RAW)) {
- if (mfld_driver.af_enabled && mfld_driver.still_af_count > 0)
+ if (mfld_driver.ae_awb_af_enabled && mfld_driver.still_af_count > 0)
mfldadvci->af_stop ();
mfld_driver.focus_done = 0;
mfld_driver.start_still_af = 0;
mfld_driver.enable_torch = TRUE;
cam_driver_set_torch(fd, TRUE);
}
- if (mfld_driver.af_enabled) {
+ if (mfld_driver.ae_awb_af_enabled) {
mfldadvci->af_start ();
if(mfld_cam_settings.focus_mode == CAM_FOCUS_MODE_TOUCH_AUTO) {
mfldadvci->AfSetWindows (1, &mfld_driver.window );
if (mfld_driver.still_af_count) {
gboolean complete = TRUE; /* AF status */
- if (mfld_driver.af_enabled)
+ if (mfld_driver.ae_awb_af_enabled)
complete = cam_af_is_complete();
if (complete ||