prevent soc sensor call 3a lib methods.
authorMarko Ollonen <marko.ollonen@ixonos.com>
Tue, 4 Dec 2012 09:55:16 +0000 (11:55 +0200)
committerMarko Ollonen <marko.ollonen@ixonos.com>
Tue, 4 Dec 2012 10:13:36 +0000 (12:13 +0200)
Change-Id: I1234becab6d71eab3fbafb4560a5f7c5cfc89949

gst-libs/atomisphal/mfld_cam.c
packaging/mfldv4l2camsrc.changes

index e75723b..c233155 100644 (file)
@@ -161,37 +161,38 @@ static cam_err_t
 set_wb_mode (int wb_mode)
 {
 
-  switch (wb_mode) {
-    case CAM_AWB_MODE_AUTO:
-      mfldadvci->AwbSetMode (advci_awb_mode_auto);
-      break;
-    case CAM_AWB_MODE_DAYLIGHT:
-      mfldadvci->AwbSetMode (advci_awb_mode_manual);
-      mfldadvci->AwbSetLightSource (advci_awb_light_source_clear_sky);
-      break;
-    case CAM_AWB_MODE_CLOUDY:
-      mfldadvci->AwbSetMode (advci_awb_mode_manual);
-      mfldadvci->AwbSetLightSource (advci_awb_light_source_cloudiness);
-      break;
-    case CAM_AWB_MODE_SUNSET:
-      mfldadvci->AwbSetMode (advci_awb_mode_manual);
-      mfldadvci->AwbSetLightSource (advci_awb_light_source_shadow_area);
-      break;
-    case CAM_AWB_MODE_TUNGSTEN:
-      mfldadvci->AwbSetMode (advci_awb_mode_manual);
-      mfldadvci->AwbSetLightSource (advci_awb_light_source_filament_lamp);
-      break;
-    case CAM_AWB_MODE_FLUORESCENT:
-       mfldadvci->AwbSetMode (advci_awb_mode_manual);
-       mfldadvci->AwbSetLightSource (advci_awb_light_source_fluorlamp_w);
-      break;
-    default:
-      cam_driver_dbg ("Not support awb mode\n");
-      return CAM_ERR_UNSUPP;
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    switch (wb_mode) {
+      case CAM_AWB_MODE_AUTO:
+        mfldadvci->AwbSetMode (advci_awb_mode_auto);
+        break;
+      case CAM_AWB_MODE_DAYLIGHT:
+        mfldadvci->AwbSetMode (advci_awb_mode_manual);
+        mfldadvci->AwbSetLightSource (advci_awb_light_source_clear_sky);
+        break;
+      case CAM_AWB_MODE_CLOUDY:
+        mfldadvci->AwbSetMode (advci_awb_mode_manual);
+        mfldadvci->AwbSetLightSource (advci_awb_light_source_cloudiness);
+        break;
+      case CAM_AWB_MODE_SUNSET:
+        mfldadvci->AwbSetMode (advci_awb_mode_manual);
+        mfldadvci->AwbSetLightSource (advci_awb_light_source_shadow_area);
+        break;
+      case CAM_AWB_MODE_TUNGSTEN:
+        mfldadvci->AwbSetMode (advci_awb_mode_manual);
+        mfldadvci->AwbSetLightSource (advci_awb_light_source_filament_lamp);
+        break;
+      case CAM_AWB_MODE_FLUORESCENT:
+         mfldadvci->AwbSetMode (advci_awb_mode_manual);
+         mfldadvci->AwbSetLightSource (advci_awb_light_source_fluorlamp_w);
+        break;
+      default:
+        cam_driver_dbg ("Not support awb mode\n");
+        return CAM_ERR_UNSUPP;
+    }
   }
   mfld_cam_settings.wb_mode = wb_mode;
-
-  return 0;
+  return CAM_ERR_NONE;
 }
 
 cam_err_t
@@ -200,8 +201,12 @@ get_wb_mode (int *wb_mode)
   advci_awb_light_source ls;
   advci_awb_mode mode;
 
-  mfldadvci->AwbGetMode (&mode);
+  if (mfld_driver.sensor_type != SENSOR_TYPE_RAW) {
+    *wb_mode = CAM_AWB_MODE_AUTO;
+    return CAM_ERR_NONE;
+  }
 
+  mfldadvci->AwbGetMode (&mode);
   if (mode == advci_awb_mode_auto) {
     *wb_mode = CAM_AWB_MODE_AUTO;
     return CAM_ERR_NONE;
@@ -231,6 +236,7 @@ get_wb_mode (int *wb_mode)
       *wb_mode = CAM_AWB_MODE_DAYLIGHT;
       break;
   }
+
   return CAM_ERR_NONE;
 }
 
@@ -261,31 +267,32 @@ set_scene_mode (int mode)
 {
   advci_ae_exposure_program scene;
 
-  switch (mode) {
-    case CAM_GENERAL_SCENE_MODE_PORTRAIT:
-      scene = advci_ae_exposure_program_portrait;
-      break;
-    case CAM_GENERAL_SCENE_MODE_LANDSCAPE:
-      scene = advci_ae_exposure_program_landscape;
-      break;
-    case CAM_GENERAL_SCENE_MODE_SPORT:
-      scene = advci_ae_exposure_program_sports;
-      break;
-    case CAM_GENERAL_SCENE_MODE_NIGHT:
-      scene = advci_ae_exposure_program_night;
-      break;
-    case CAM_GENERAL_SCENE_MODE_AUTO:
-      scene = advci_ae_exposure_program_auto;
-      break;
-    case CAM_GENERAL_SCENE_MODE_FIREWORKS:
-      scene = advci_ae_exposure_program_fireworks;
-      break;
-    default:
-      cam_driver_dbg ("%s Not supported Scene Mode %d\n", __func__, mode);
-      break;
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    switch (mode) {
+      case CAM_GENERAL_SCENE_MODE_PORTRAIT:
+        scene = advci_ae_exposure_program_portrait;
+        break;
+      case CAM_GENERAL_SCENE_MODE_LANDSCAPE:
+        scene = advci_ae_exposure_program_landscape;
+        break;
+      case CAM_GENERAL_SCENE_MODE_SPORT:
+        scene = advci_ae_exposure_program_sports;
+        break;
+      case CAM_GENERAL_SCENE_MODE_NIGHT:
+        scene = advci_ae_exposure_program_night;
+        break;
+      case CAM_GENERAL_SCENE_MODE_AUTO:
+        scene = advci_ae_exposure_program_auto;
+        break;
+      case CAM_GENERAL_SCENE_MODE_FIREWORKS:
+        scene = advci_ae_exposure_program_fireworks;
+        break;
+      default:
+        cam_driver_dbg ("%s Not supported Scene Mode %d\n", __func__, mode);
+        break;
+    }
+    mfldadvci->AeSetExposureProgram (scene);
   }
-  mfldadvci->AeSetExposureProgram (scene);
-
   mfld_cam_settings.scene_mode = mode;
   return CAM_ERR_NONE;
 }
@@ -300,10 +307,12 @@ get_scene_mode (int *scene_mode)
 static cam_err_t
 set_iso_speed (int iso)
 {
-       cam_err_t ret;
-       mfld_cam_settings.iso_speed = iso;
-       ret = mfldadvci->AeSetIso(mfld_cam_settings.iso_speed);
-       return ret;
+  cam_err_t ret = CAM_ERR_NONE;
+  mfld_cam_settings.iso_speed = iso;
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    ret = mfldadvci->AeSetIso(mfld_cam_settings.iso_speed);
+  }
+  return ret;
 }
 
 static cam_err_t
@@ -345,24 +354,25 @@ get_flash_mode (int *flash_mode)
 static cam_err_t
 set_flicker_mode (int mode)
 {
-
-  /* Convert camera genreral flicker mode to AE flicker mode */
-  switch (mode) {
-    case CAM_GENERAL_FLICKER_REDUCTION_MODE_OFF:
-      mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_off);
-      break;
-    case CAM_GENERAL_FLICKER_REDUCTION_MODE_50HZ:
-      mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_50hz);
-      break;
-    case CAM_GENERAL_FLICKER_REDUCTION_MODE_60HZ:
-      mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_60hz);
-      break;
-    case CAM_GENERAL_FLICKER_REDUCTION_MODE_AUTO:
-      mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_auto);
-      break;
-    default:
-      cam_driver_dbg ("Not supported flicker mode\n");
-      return CAM_ERR_UNSUPP;
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    /* Convert camera genreral flicker mode to AE flicker mode */
+    switch (mode) {
+      case CAM_GENERAL_FLICKER_REDUCTION_MODE_OFF:
+        mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_off);
+        break;
+      case CAM_GENERAL_FLICKER_REDUCTION_MODE_50HZ:
+        mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_50hz);
+        break;
+      case CAM_GENERAL_FLICKER_REDUCTION_MODE_60HZ:
+        mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_60hz);
+        break;
+      case CAM_GENERAL_FLICKER_REDUCTION_MODE_AUTO:
+        mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_auto);
+        break;
+      default:
+        cam_driver_dbg ("Not supported flicker mode\n");
+        return CAM_ERR_UNSUPP;
+    }
   }
   return CAM_ERR_NONE;
 }
@@ -370,9 +380,13 @@ set_flicker_mode (int mode)
 static cam_err_t
 get_flicker_mode (int *mode)
 {
-  int ret = 0;
+  int ret = CAM_ERR_NONE;
   advci_ae_flicker_mode flicker_mode;
 
+  if (mfld_driver.sensor_type != SENSOR_TYPE_RAW) {
+    *mode  = CAM_GENERAL_FLICKER_REDUCTION_MODE_AUTO;
+    return ret;
+  }
   mfldadvci->AeGetFlickerMode (&flicker_mode);
 
   /* Convert AE flicker mode to camera general flicker mode */
@@ -811,6 +825,10 @@ cam_checkfocus_status (cam_focus_status_t * status, int force_update)
   advci_af_status af_status;
   gboolean do_read = FALSE;
 
+  if (mfld_driver.sensor_type != SENSOR_TYPE_RAW) {
+    return 0;
+  }
+
   if (mfld_driver.focus_done >= FOCUS_REALLY_DONE) {
     mfld_driver.focus_done = 0;
     do_read = TRUE;
@@ -1184,7 +1202,8 @@ libmfld_cam_dispose (void)
     mfld_driver.thread = 0;
   }
   mfld_driver.g_3a_started = 0;
-  mfldadvci->uninit ();
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW)
+    mfldadvci->uninit ();
   return;
 }
 
@@ -1442,12 +1461,15 @@ mfldcam_3a_process (gpointer data)
 void
 mfldcam_3a_start (void)
 {
-  if (!mfld_driver.g_3a_started) {
-    mfld_driver.g_3a_started = 1;
-    if (pthread_create (&mfld_driver.thread, NULL, mfldcam_3a_process,
-            NULL) != 0) {
-      mfld_driver.g_3a_started = 0;
-      cam_driver_dbg ("Create thread failed %s\n", __func__);;
+
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW){
+    if (!mfld_driver.g_3a_started) {
+      mfld_driver.g_3a_started = 1;
+      if (pthread_create (&mfld_driver.thread, NULL, mfldcam_3a_process,
+              NULL) != 0) {
+        mfld_driver.g_3a_started = 0;
+        cam_driver_dbg ("Create thread failed %s\n", __func__);;
+      }
     }
   }
 }
@@ -1455,9 +1477,12 @@ mfldcam_3a_start (void)
 void
 mfldcam_3a_stop (void)
 {
-  if (mfld_driver.g_3a_started)
-    pthread_cancel (mfld_driver.thread);
-  mfld_driver.g_3a_started = 0;
+
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW){
+    if (mfld_driver.g_3a_started)
+      pthread_cancel (mfld_driver.thread);
+    mfld_driver.g_3a_started = 0;
+  }
 }
 
 static cam_err_t
@@ -1542,7 +1567,7 @@ cam_capture_init (int fd, struct v4l2_buffer *buffer,
     mfld_driver.first_frame = 0;
   }
   /* Still AF start */
-  if (mfld_driver.start_still_af) {
+  if ((mfld_driver.start_still_af)  && (mfld_driver.sensor_type == SENSOR_TYPE_RAW)) {
     if (mfld_driver.af_enabled && mfld_driver.still_af_count > 0)
       mfldadvci->af_stop ();
     mfld_driver.focus_done = 0;
@@ -1590,24 +1615,26 @@ cam_dis_dvs_processing (struct atomisp_dis_vector *vectors, advci_frame_t *bufs,
   struct atomisp_dis_vector *dvs_vector;
 
   cam_driver_dbg ("Begin cam_dis_get_statices\n");
-  mfldadvci->dis_read_statistics ();        //read_dis_stats_from_xmem();
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    mfldadvci->dis_read_statistics ();        //read_dis_stats_from_xmem();
 
-  cam_driver_dbg ("Begin cam_dis_still_process\n");
+    cam_driver_dbg ("Begin cam_dis_still_process\n");
 
-  if (mfld_driver.mode == advci_isp_mode_video)
-    dvs_vector = &mfld_driver.dvs_vector;
-  else
-    dvs_vector = NULL;
-  // TODO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
-  // mfldadvci->dis_process (dvs_vector);       /* dis_vector only valid in video mode */
+    if (mfld_driver.mode == advci_isp_mode_video)
+      dvs_vector = &mfld_driver.dvs_vector;
+    else
+      dvs_vector = NULL;
+    // TODO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
+    // mfldadvci->dis_process (dvs_vector);       /* dis_vector only valid in video mode */
 
-  if (dis_enabled) {
-    mfldadvci->dis_calc_still (&vectors[frame_cnt], frame_cnt);
-    cam_copy_v4l2buf_to_user (&bufs[frame_cnt], buffer);
-  }
+    if (dis_enabled) {
+      mfldadvci->dis_calc_still (&vectors[frame_cnt], frame_cnt);
+      cam_copy_v4l2buf_to_user (&bufs[frame_cnt], buffer);
+    }
 
-  cam_driver_dbg ("Update DIS results\n");
-  mfldadvci->update_dis_results();
+    cam_driver_dbg ("Update DIS results\n");
+    mfldadvci->update_dis_results();
+  }
 }
 
 static cam_err_t
@@ -1798,32 +1825,38 @@ cam_err_t get_exp_mode(int fd, cam_scene_mode_t *expmode)
 {
   advci_ae_exposure_program mode;
 
-  mfldadvci->AeGetExposureProgram(&mode);
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
 
-  /* Convert AE flicker mode to camera general flicker mode */
-  switch (mode) {
-    case advci_ae_exposure_program_auto:
-      *expmode = CAM_GENERAL_SCENE_MODE_AUTO;
-      break;
-    case advci_ae_exposure_program_portrait:
-      *expmode = CAM_GENERAL_SCENE_MODE_PORTRAIT;
-      break;
-    case advci_ae_exposure_program_sports:
-      *expmode = CAM_GENERAL_SCENE_MODE_SPORT;
-      break;
-    case advci_ae_exposure_program_landscape:
-      *expmode = CAM_GENERAL_SCENE_MODE_LANDSCAPE;
-      break;
-    case advci_ae_exposure_program_night:
-      *expmode = CAM_GENERAL_SCENE_MODE_NIGHT;
-      break;
-    case advci_ae_exposure_program_fireworks:
-      *expmode = CAM_GENERAL_SCENE_MODE_FIREWORKS;
-      break;
-    default:
-      cam_driver_dbg ("Not supported exposure mode\n");
-      return CAM_ERR_UNSUPP;
+    mfldadvci->AeGetExposureProgram(&mode);
+
+    /* Convert AE flicker mode to camera general flicker mode */
+    switch (mode) {
+      case advci_ae_exposure_program_auto:
+        *expmode = CAM_GENERAL_SCENE_MODE_AUTO;
+        break;
+      case advci_ae_exposure_program_portrait:
+        *expmode = CAM_GENERAL_SCENE_MODE_PORTRAIT;
+        break;
+      case advci_ae_exposure_program_sports:
+        *expmode = CAM_GENERAL_SCENE_MODE_SPORT;
+        break;
+      case advci_ae_exposure_program_landscape:
+        *expmode = CAM_GENERAL_SCENE_MODE_LANDSCAPE;
+        break;
+      case advci_ae_exposure_program_night:
+        *expmode = CAM_GENERAL_SCENE_MODE_NIGHT;
+        break;
+      case advci_ae_exposure_program_fireworks:
+        *expmode = CAM_GENERAL_SCENE_MODE_FIREWORKS;
+        break;
+      default:
+        cam_driver_dbg ("Not supported exposure mode\n");
+        return CAM_ERR_UNSUPP;
+    }
   }
+  else {
+    *expmode = CAM_GENERAL_SCENE_MODE_AUTO;
+   }
 
   return CAM_ERR_NONE;
 }
@@ -1870,52 +1903,58 @@ cam_err_t get_ae_flash_mode(int fd, cam_flash_mode_t *mode)
 {
   cam_flash_mode_t ci_mode;
 
-  mfldadvci->AeGetFlashMode(&ci_mode);
-
-  switch(ci_mode)
-  {
-    case advci_ae_flash_mode_auto:
-      *mode = CAM_LIGHT_FLASH_MODE_AUTO;
-      break;
-    case advci_ae_flash_mode_off:
-      *mode = CAM_LIGHT_FLASH_MODE_OFF;
-      break;
-    case advci_ae_flash_mode_on:
-      *mode = CAM_LIGHT_FLASH_MODE_ON;
-      break;
-    case advci_ae_flash_mode_day_sync:
-      *mode = CAM_LIGHT_FLASH_MODE_AUTO;
-      break;
-    case advci_ae_flash_mode_slow_sync:
-      *mode = CAM_LIGHT_FLASH_MODE_AUTO;
-      break;
-    default:
-      *mode = CAM_LIGHT_FLASH_MODE_AUTO;
-      return CAM_ERR_3A;
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    mfldadvci->AeGetFlashMode(&ci_mode);
+    switch(ci_mode)
+    {
+      case advci_ae_flash_mode_auto:
+        *mode = CAM_LIGHT_FLASH_MODE_AUTO;
+        break;
+      case advci_ae_flash_mode_off:
+        *mode = CAM_LIGHT_FLASH_MODE_OFF;
+        break;
+      case advci_ae_flash_mode_on:
+        *mode = CAM_LIGHT_FLASH_MODE_ON;
+        break;
+      case advci_ae_flash_mode_day_sync:
+        *mode = CAM_LIGHT_FLASH_MODE_AUTO;
+        break;
+      case advci_ae_flash_mode_slow_sync:
+        *mode = CAM_LIGHT_FLASH_MODE_AUTO;
+        break;
+      default:
+        *mode = CAM_LIGHT_FLASH_MODE_AUTO;
+        return CAM_ERR_3A;
+    }
   }
+  else
+    *mode = CAM_LIGHT_FLASH_MODE_OFF;
+
   return CAM_ERR_NONE;
 }
 cam_err_t set_ae_flash_mode(int fd, cam_flash_mode_t mode)
 {
   advci_ae_flash_mode flash_mode;
 
-  switch(mode)
-  {
-    case CAM_LIGHT_FLASH_MODE_AUTO:
-      flash_mode = advci_ae_flash_mode_auto;
-      break;
-    case CAM_LIGHT_FLASH_MODE_OFF:
-      flash_mode = advci_ae_flash_mode_off;
-      break;
-    case CAM_LIGHT_FLASH_MODE_ON:
-      flash_mode = advci_ae_flash_mode_on;
-      break;
-    default:
-      flash_mode = advci_ae_flash_mode_auto;
-      break;
-  }
+  if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+    switch(mode)
+    {
+      case CAM_LIGHT_FLASH_MODE_AUTO:
+        flash_mode = advci_ae_flash_mode_auto;
+        break;
+      case CAM_LIGHT_FLASH_MODE_OFF:
+        flash_mode = advci_ae_flash_mode_off;
+        break;
+      case CAM_LIGHT_FLASH_MODE_ON:
+        flash_mode = advci_ae_flash_mode_on;
+        break;
+      default:
+        flash_mode = advci_ae_flash_mode_auto;
+        break;
+    }
 
-  mfldadvci->AeSetFlashMode(flash_mode);
+    mfldadvci->AeSetFlashMode(flash_mode);
+  }
 
   return CAM_ERR_NONE;
 }
index ce05ccc..7daa25d 100644 (file)
@@ -1,3 +1,6 @@
+* Tue Dec 04 2012 Marko Ollonen <marko.ollonen@ixonos.com> accepted/trunk/20121130.212420@ebba9cc
+- prevent soc sensor call 3a lib methods. TZSP-4281
+
 * Fri Nov 30 2012 Marko Ollonen <marko.ollonen@ixonos.com> submit/trunk/20121129.125759@70ce86b
 - atom isp strobe light control added.