Add exposure mode initialisation.
authorMarko Ollonen <marko.ollonen@ixonos.com>
Thu, 17 Jan 2013 13:57:50 +0000 (15:57 +0200)
committerMarko Ollonen <marko.ollonen@ixonos.com>
Thu, 17 Jan 2013 14:46:59 +0000 (16:46 +0200)
Change-Id: Id52fa8d5ebdbdf85905148b0516b3705acc8332b

gst-libs/atomisphal/gstv4l2mfldadvci.c
gst-libs/atomisphal/gstv4l2mfldadvci.h
gst-libs/atomisphal/mfld_cam.c
gst-libs/atomisphal/mfld_cam.h

index d9ac6b4..e8cc2c3 100644 (file)
 #include <sys/ioctl.h>
 #include <gst/gst.h>
 
-
-void cam_lib_3a_dbg(const char *format, ...);
-
-int __android_log_print(int prio, const char *tag, const char *fmt, ...)
-{
- return 0;
-}
-
-/* for debug message and error message output
- *
- */
-static gboolean use_3A_debug = FALSE;
-
-void
-cam_lib_3a_dbg (const char *format, ...)
-{
-  va_list ap;
-  if (use_3A_debug) {
-    va_start (ap, format);
-    vfprintf (stdout, format, ap);
-    va_end (ap);
-  }
-}
-
 static void wrapper_default_void (void)
 {
   return;
@@ -105,6 +81,13 @@ static void wrapper_default_AfSetMode(advci_af_mode mode)
 {
 }
 
+static void wrapper_default_AeSetMode(advci_ae_mode mode)
+{
+}
+static void wrapper_default_AeGetMode(advci_ae_mode *mode)
+{
+
+}
 static advci_af_mode wrapper_default_AfGetMode()
 {
 return advci_af_mode_auto;
@@ -114,7 +97,7 @@ static void wrapper_default_AfSetRange(advci_af_range range)
 {
 }
 
-static advci_af_range wrapper_default_AfGetRange(advci_af_range *range)
+static advci_af_range wrapper_default_AfGetRange()
 {
   return advci_af_range_norm;
 }
@@ -151,7 +134,7 @@ wrapper_default_intp (int *p)
 }
 
 static int
-wrapper_default_isp_set_fd (int fd, const char *sensor_id)
+wrapper_default_isp_set_fd (const char *sensor_id,int fd, const char *file)
 {
   return SENSOR_TYPE_SOC;
 }
@@ -199,17 +182,18 @@ static int wrapper_default_AeGetManualAperture()
 return 1;
 }
 
-static void wrapper_default_AeGetFlashMode(advci_ae_flash_mode *mode)
+static advci_ae_flash_mode
+wrapper_default_AeGetFlashMode(void)
 {
+  return advci_ae_flash_mode_off;
 }
 
 static void wrapper_default_AeSetFlashMode(advci_ae_flash_mode mode)
 {
 }
 
-static int wrapper_default_AwbGetManualColorTemperature()
+static void wrapper_default_AwbGetManualColorTemperature()
 {
-return 0;
 }
 
 static void
@@ -217,9 +201,10 @@ wrapper_default_AeSetMeteringMode(advci_ae_metering_mode mode)
 {
 }
 
-static void
-wrapper_default_AeGetMeteringMode(advci_ae_metering_mode *mode)
+static advci_ae_metering_mode
+wrapper_default_AeGetMeteringMode(void)
 {
+return advci_ae_metering_mode_auto;
 }
 
 static void
@@ -233,15 +218,20 @@ wrapper_default_AfGetMeteringMode(advci_af_metering_mode *mode)
 }
 
 static void
-wrapper_default_Ae_Af_GetWindow(advci_window *window)
+wrapper_default_Ae_GetWindow(advci_window *window)
 {
 
 }
+static void
+wrapper_default_Ae_SetWindow(advci_window *window)
+{
+}
 
 static void
-wrapper_default_Ae_Af_SetWindows(int count, advci_window *window)
+wrapper_default_Af_SetWindows(int count, advci_window *window)
 {
 }
+
 static void wrapper_default_af_start( )
 {
 }
@@ -253,16 +243,17 @@ static void wrapper_default_process_flash(advci_flash_stage stage )
 {
 }
 
-static void wrapper_default_AeAfAwb_process( struct timeval *frame_timestamp)
+static void wrapper_default_AeAfAwb_process( gboolean process, struct timeval *frame_timestamp)
 {
 }
 static void wrapper_default_AwbSetImageEffect(advci_image_effect effect)
 {
 }
 
-static void
-wrapper_default_AwbGetImageEffect(advci_image_effect *effect)
+static advci_image_effect
+wrapper_default_AwbGetImageEffect(void)
 {
+return advci_image_effect_none;
 }
 
 static void
@@ -289,9 +280,6 @@ static ci_adv_Err wrapper_default_AeGetManualIso(float *sensitivity)
 void
 lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci,  GModule *mod)
 {
-  gboolean ret = TRUE;
-  const char *env;
-  use_3A_debug= ((env = getenv ("LIBMFLDCAM_DEBUG")) && strstr (env, "verbose"));
 
   g_module_symbol (mod, "ci_adv_af_set_mode", (gpointer) &mfldadvci->AfSetMode);
   g_module_symbol (mod, "ia_3a_af_get_focus_mode", (gpointer) &mfldadvci->AfGetMode);
@@ -332,7 +320,6 @@ lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci,  GModule *mod)
   g_module_symbol (mod, "ia_3a_ae_get_metering_mode", (gpointer) &mfldadvci->AeGetMeteringMode);
   g_module_symbol (mod, "ci_adv_af_set_metering_mode", (gpointer) &mfldadvci->AfSetMeteringMode);
   g_module_symbol (mod, "ci_adv_af_get_metering_mode", (gpointer) &mfldadvci->AfGetMeteringMode);
-  g_module_symbol (mod, "ia_3a_ae_get_window", (gpointer) &mfldadvci->AfGetWindow);
   g_module_symbol (mod, "ci_adv_isp_set_image_effect", (gpointer) &mfldadvci->AwbSetImageEffect);
   g_module_symbol (mod, "ci_adv_isp_get_image_effect", (gpointer) &mfldadvci->AwbGetImageEffect);
   g_module_symbol (mod, "ci_adv_af_get_status", (gpointer) &mfldadvci->AfGetStillAfStatus);
@@ -341,11 +328,13 @@ lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci,  GModule *mod)
   g_module_symbol (mod, "ci_adv_af_enable", (gpointer) &mfldadvci->AeEnable);
   g_module_symbol (mod, "ci_adv_awb_enable", (gpointer) &mfldadvci->AfEnable);
 
-
   g_module_symbol (mod, "ci_adv_awb_lock", (gpointer) &mfldadvci->AwbLock);
   g_module_symbol (mod, "ci_adv_ae_lock", (gpointer) &mfldadvci->AeLock);
   g_module_symbol (mod, "ci_adv_af_lock", (gpointer) &mfldadvci->AfLock);
 
+  g_module_symbol (mod, "ci_adv_ae_set_mode", (gpointer) &mfldadvci->AeSetMode);
+  g_module_symbol (mod, "ci_adv_ae_get_mode", (gpointer) &mfldadvci->AeGetMode);
+
   mfldadvci->initialized = 0;
   // TODO
   mfldadvci->init = wrapper_default_init;
@@ -396,8 +385,8 @@ wrapper_default_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci)
   mfldadvci->AeGetExposureProgram = wrapper_default_AeGetExposureProgram;
   mfldadvci->AeSetMeteringMode = wrapper_default_AeSetMeteringMode;
   mfldadvci->AeGetMeteringMode = wrapper_default_AeGetMeteringMode;
-  mfldadvci->AeGetWindow = wrapper_default_Ae_Af_GetWindow;
-  mfldadvci->AeSetWindow = wrapper_default_Ae_Af_SetWindows;
+  mfldadvci->AeGetWindow = wrapper_default_Ae_GetWindow;
+  mfldadvci->AeSetWindow = wrapper_default_Ae_SetWindow;
   mfldadvci->AeSetIso = wrapper_default_AeSetManualIso;
   mfldadvci->AeGetIso = wrapper_default_AeGetManualIso;
 
@@ -408,8 +397,7 @@ wrapper_default_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci)
   mfldadvci->AfGetRange = wrapper_default_AfGetRange;
   mfldadvci->AfSetMeteringMode = wrapper_default_AfSetMeteringMode;
   mfldadvci->AfGetMeteringMode = wrapper_default_AfGetMeteringMode;
-  mfldadvci->AfGetWindow = wrapper_default_Ae_Af_GetWindow;
-  mfldadvci->AfSetWindows = wrapper_default_Ae_Af_SetWindows;
+  mfldadvci->AfSetWindows = wrapper_default_Af_SetWindows;
 
   mfldadvci->AwbSetMode = wrapper_default_AwbSetMode;
   mfldadvci->AwbGetMode = wrapper_default_AwbGetMode;
@@ -438,4 +426,8 @@ wrapper_default_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci)
   mfldadvci->AeLock = wrapper_default_enable;
   mfldadvci->AfLock = wrapper_default_enable;
 
+  mfldadvci->AeSetMode = wrapper_default_AeSetMode;
+  mfldadvci->AeGetMode = wrapper_default_AeGetMode;
+
+
 }
index 575624c..b5848f8 100644 (file)
@@ -161,6 +161,14 @@ typedef enum {
 } advci_af_mode;
 
 typedef enum {
+        advci_ae_mode_auto,             /* Automatic */
+        advci_ae_mode_manual,           /* Manual */
+        advci_ae_mode_shutter_priority, /* Shutter priority */
+        advci_ae_mode_aperture_priority /* Aperture priority */
+} advci_ae_mode;
+
+
+typedef enum {
   advci_af_status_error,     /* Cannot focus */
   advci_af_status_success,   /* Successfully focussed */
   advci_af_status_cancelled, /* Canceled by user */
@@ -228,11 +236,14 @@ struct _GstV4l2MFLDAdvCI
   void (*AfSetMeteringMode)(advci_af_metering_mode mode);
   void (*AfGetMeteringMode)(advci_af_metering_mode *mode);
   void (*AfSetWindows)(int count, advci_window *window);
-  void (*AfGetWindow)(advci_window *window);
 
   void (*AfSetRange)(advci_af_range range);
   advci_af_range (*AfGetRange)(void);
 
+
+  void (*AeSetMode)(advci_ae_mode mode);
+  void (*AeGetMode)(advci_ae_mode * mode);
+
   /* AWB mode */
   void (*AwbSetMode)(advci_awb_mode mode);
   advci_awb_mode (*AwbGetMode)(void);
index 50f6f98..cc988da 100644 (file)
@@ -1249,8 +1249,8 @@ cam_driver_init (int fd, const char *sensor_id)
     window.weight = 0;
     mfldadvci->AeSetWindow(&window);
 
-    mfldadvci->AeSetExposureProgram(advci_ae_exposure_program_auto);
-//    ci_adv_ae_set_mode(ia_3a_ae_mode_auto);
+   mfldadvci->AeSetExposureProgram(advci_ae_exposure_program_auto);
+   mfldadvci->AeSetMode(advci_ae_mode_auto);
    mfldadvci->AeSetMeteringMode(advci_ae_metering_mode_center);
    mfldadvci->AfSetRange (advci_af_range_full);
    mfldadvci->AwbSetMode(advci_awb_mode_auto);
@@ -1927,7 +1927,7 @@ void get_rer_version(int fd, int * major, int * minor)
   mfldadvci->RerVersion(major, minor);
 }
 
-cam_err_t get_ae_manual_shutter(int fd, int * time)
+cam_err_t get_ae_manual_shutter(int fd, float * time)
 {
   if(ci_adv_Success != mfldadvci->AeGetManualShutter(time))
     return CAM_ERR_3A;
index bda6288..d8d56cd 100644 (file)
@@ -292,7 +292,7 @@ void get_af_result(int fd, unsigned * result);
 cam_err_t get_af_status(int fd, unsigned * status);
 cam_err_t get_exp_mode(int fd, cam_scene_mode_t *expmode);
 void get_ae_bias(int fd, int * bias);
-cam_err_t get_ae_manual_shutter(int fd, int * time);
+cam_err_t get_ae_manual_shutter(int fd, float *time);
 cam_err_t get_ae_manual_aperture(int fd, int *aperture);
 cam_err_t get_ae_flash_mode(int fd, cam_flash_mode_t *mode);
 cam_err_t set_ae_flash_mode(int fd, cam_flash_mode_t mode);