merge with master
[adaptation/intel_mfld/gst-plugins-atomisp.git] / gst-libs / atomisphal / mfld_cam.c
index 7f6277a..56ba274 100644 (file)
@@ -90,7 +90,7 @@ struct mfld_driver_t
   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;
@@ -1187,16 +1187,14 @@ libmfld_cam_init (GstV4l2MFLDAdvCI * advci)
   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;
@@ -1257,9 +1255,10 @@ cam_driver_init (int fd, const char *sensor_id)
     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
@@ -1452,7 +1451,7 @@ dump_raw_image (int fd, struct cam_capture_settings *st)
     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);
@@ -1479,8 +1478,7 @@ mfldcam_3a_process (gpointer data)
   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 */
@@ -1580,9 +1578,7 @@ cam_capture_init (int fd, struct v4l2_buffer *buffer,
 {
   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) {
@@ -1591,7 +1587,7 @@ cam_capture_init (int fd, struct v4l2_buffer *buffer,
   }
   /* 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;
@@ -1602,7 +1598,7 @@ cam_capture_init (int fd, struct v4l2_buffer *buffer,
        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 );
@@ -1745,7 +1741,7 @@ run_normal_sequence(int fd, struct v4l2_buffer *buffer)
   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 ||