wrapper for 3a added.
authorMarko Ollonen <marko.ollonen@ixonos.com>
Thu, 22 Nov 2012 10:09:53 +0000 (12:09 +0200)
committerMarko Ollonen <marko.ollonen@ixonos.com>
Thu, 22 Nov 2012 10:11:54 +0000 (12:11 +0200)
Change-Id: I9546c575f6934e8bd228d8a57a2d3e877ce87d3c

gst-libs/atomisphal/gstv4l2mfldadvci.c
gst-libs/atomisphal/gstv4l2mfldadvci.h
gst/mfldv4l2cam/gstv4l2camsrc.c
packaging/mfldv4l2camsrc.changes
packaging/mfldv4l2camsrc.spec

index a6349c3..f7e6a16 100644 (file)
@@ -47,8 +47,313 @@ cam_lib_3a_dbg (const char *format, ...)
   }
 }
 
+static void wrapper_default_void (void)
+{
+  return;
+}
+
+static void wrapper_default_int (int a)
+{
+  return;
+}
+
+static int wrapper_default_int_void (void)
+{
+  return 0;
+}
+
+static void wrapper_default_ae (void)
+{
+  return;
+}
+
+static void wrapper_default_init(void)
+{
+}
+
+static void wrapper_default_uninit(void)
+{
+}
+
+static void
+wrapper_default_dis_process (struct atomisp_dis_statistics *stats,
+                     struct atomisp_dis_vector *motion_vector)
+{
+}
+
+static void
+wrapper_default_dis_calc_still (struct atomisp_dis_vector * vector, int frame_number)
+{
+}
+
+static void
+wrapper_default_do_redeye_removal (ia_frame *ia_frame)
+{
+}
+
+static void
+wrapper_default_still_compose (ia_frame *com_buf,
+                     ia_frame bufs[],
+                     int frame_dis,
+                     struct atomisp_dis_vector vectors[])
+{
+}
+
+static void
+wrapper_default_AeSetFlickerMode(ia_3a_ae_flicker_mode mode)
+{
+}
+
+static void
+wrapper_default_AeGetFlickerMode(ia_3a_ae_flicker_mode *mode)
+{
+}
+
+static void
+wrapper_default_AeSetExposureProgram(ia_3a_ae_exposure_program program)
+{
+}
+
+static void
+wrapper_default_AeGetExposureProgram(ia_3a_ae_exposure_program *program)
+{
+}
+
+static void wrapper_default_AfSetMode(ia_3a_af_mode mode)
+{
+}
+
+static void wrapper_default_AfGetMode(ia_3a_af_mode *mode)
+{
+}
+
+static void wrapper_default_AfSetRange(ia_3a_af_range range)
+{
+}
+
+static void wrapper_default_AfGetRange(ia_3a_af_range *range)
+{
+}
+
+static void wrapper_default_AwbSetMode(ia_3a_awb_mode mode)
+{
+}
+
+static void wrapper_default_AwbGetMode(ia_3a_awb_mode *mode)
+{
+}
+
+static void wrapper_default_AwbSetLightSource(ia_3a_awb_light_source ls)
+{
+}
+
+static void
+wrapper_default_AwbGetLightSource(ia_3a_awb_light_source *ls)
+{
+}
+
+static ci_adv_Err
+wrapper_default_int_int (int i)
+{
+}
+
+static ci_adv_Err
+wrapper_default_intp (int *p)
+{
+}
+
+static int
+wrapper_default_isp_set_fd (int fd, const char *sensor_id)
+{
+  return SENSOR_TYPE_SOC;
+}
+
+static void
+wrapper_default_switch_mode (ia_3a_isp_mode mode, float frame_rate)
+{
+}
+
+static ci_adv_Err
+wrapper_default_AeGetWindowsNum(int *num)
+{
+  return ci_adv_Success;
+}
+
+static void wrapper_default_AwbVersion(int * major, int * minor)
+{
+}
+
+static void wrapper_default_AeVersion(int * major, int * minor)
+{
+}
+
+static void wrapper_default_AfVersion(int * major, int * minor)
+{
+}
+
+static void wrapper_default_AfGetStillAfStatus(ia_3a_af_status *status)
+{
+}
+
+static bool wrapper_default_af_is_complete(void)
+{
+  return TRUE;
+}
+
+static void wrapper_default_RerVersion(int * major, int * minor)
+{
+  return;
+}
+
+static ci_adv_Err wrapper_default_AeGetManualShutter(int *time)
+{
+  return ci_adv_Success;
+}
+
+static void
+wrapper_default_Awbdata(unsigned * num_p, unsigned * avg_r,
+                       unsigned * avg_gr,
+                        unsigned * avg_b, unsigned * avg_gb)
+{
+  return;
+}
+
+static void wrapper_default_AeGetManualAperture(int *aperture)
+{
+}
+
+static void wrapper_default_AeGetFlashMode(ia_3a_ae_flash_mode *mode)
+{
+}
+
+static void wrapper_default_AeSetFlashMode(ia_3a_ae_flash_mode mode)
+{
+}
+
+static void wrapper_default_AwbGetManualColorTemperature(int *ctemp)
+{
+}
+
+static void
+wrapper_default_Awbmatrix(int msqWbGain[3], int msqCcMtrx[9], unsigned short * shift)
+{
+}
+
+static void wrapper_default_GetGridInfo(void * grid_info)
+{
+}
+
+static void
+wrapper_default_AeSetMeteringMode(ia_3a_ae_metering_mode mode)
+{
+}
+
+static void
+wrapper_default_AeGetMeteringMode(ia_3a_ae_metering_mode *mode)
+{
+}
+
+static void
+wrapper_default_AfSetMeteringMode(ia_3a_af_metering_mode mode)
+{
+}
+
+static void
+wrapper_default_AfGetMeteringMode(ia_3a_af_metering_mode *mode)
+{
+}
+
+static void
+wrapper_default_Ae_Af_GetWindow(ia_3a_window *window)
+{
+
+}
 
 static void
+wrapper_default_Ae_Af_SetWindow( ia_3a_window *window)
+{
+}
+static void wrapper_default_af_start( )
+{
+}
+
+static void wrapper_default_af_stop( )
+{
+}
+static void wrapper_default_ae_calc_for_flash( )
+{
+}
+static void wrapper_default_calc_without_flash( )
+{
+}
+
+static void wrapper_default_calc_with_flash( )
+{
+}
+
+static void wrapper_default_AeAfAwb_process( struct timeval *frame_timestamp)
+{
+}
+static void wrapper_default_get_statistics( )
+{
+}
+
+static void wrapper_default_awb_apply_results( )
+{
+}
+static void wrapper_default_AwbSetImageEffect(ia_3a_image_effect effect)
+{
+}
+
+static void
+wrapper_default_AwbGetImageEffect(ia_3a_image_effect *effect)
+{
+}
+
+static void
+wrapper_default_is_flash_needed(bool *useflash)
+{
+
+}
+
+static ci_adv_Err wrapper_default_AeSetManualIso(int sensitivity)
+{
+  return ci_adv_success;
+}
+
+static ci_adv_Err wrapper_default_AeGetManualIso(int *sensitivity)
+{
+  return ci_adv_success;
+}
+
+static void
+wrapper_default_GetMakerNote(ia_3a_mknote_mode mknMode, ia_3a_mknote *note)
+{
+}
+
+static void
+wrapper_default_AddMakerNoteRecord(ia_3a_mknote_field_type mkn_format_id,
+                                   ia_3a_mknote_field_name mkn_name_id,
+                                   const void *record,
+                                   unsigned short record_size)
+{
+
+}
+
+static void
+wrapper_default_PutMakerNote(ia_3a_mknote *mknData)
+{
+
+}
+
+static void
+wrapper_default_ResetMakerNote(void)
+{
+}
+
+/*------------------------------------------------------------------------------------------------*/
+#ifdef USE_STATIC_3A
+static void
 lib_3a_void (void)
 {
   return;
@@ -662,3 +967,90 @@ lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci)
   mfldadvci->PutMakerNote = lib_3a_PutMakerNote;
   mfldadvci->ResetMakerNote = lib_3a_ResetMakerNote;
 }
+#endif /* USE_STATIC_3A */
+void
+wrapper_default_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci)
+{
+
+  mfldadvci->initialized = 0;
+  mfldadvci->init = wrapper_default_init;
+  mfldadvci->uninit = wrapper_default_uninit;
+  mfldadvci->isp_set_fd = wrapper_default_isp_set_fd;
+  mfldadvci->mode_spec_init = wrapper_default_int_void; /* TODO */
+  mfldadvci->switch_mode = wrapper_default_switch_mode;
+
+  mfldadvci->AeAfAwb_process = wrapper_default_AeAfAwb_process;
+  mfldadvci->get_statistics = wrapper_default_get_statistics; /* TODO atomisp_dis_statistics  ? */
+
+  mfldadvci->ae_calc_for_flash = wrapper_default_ae_calc_for_flash;
+  mfldadvci->ae_calc_without_flash = wrapper_default_calc_without_flash;
+  mfldadvci->ae_calc_with_flash = wrapper_default_calc_with_flash;
+
+  mfldadvci->ae_is_flash_needed = wrapper_default_is_flash_needed;
+
+  mfldadvci->ae_apply_results = wrapper_default_ae;
+
+  mfldadvci->af_start = wrapper_default_af_start;
+  mfldadvci->af_stop = wrapper_default_af_stop;
+  mfldadvci->af_is_complete = wrapper_default_af_is_complete;
+  mfldadvci->awb_apply_results = wrapper_default_awb_apply_results;
+  mfldadvci->awb_calc_flash = wrapper_default_void;
+
+  mfldadvci->dis_read_statistics = wrapper_default_void;
+  mfldadvci->update_dis_results = wrapper_default_void;
+  mfldadvci->dis_process = wrapper_default_dis_process;
+  mfldadvci->dis_calc_still = wrapper_default_dis_calc_still;
+
+  mfldadvci->do_redeye_removal = wrapper_default_do_redeye_removal;
+  mfldadvci->still_compose = wrapper_default_still_compose;
+  mfldadvci->load_gdc_table = wrapper_default_void;
+
+  mfldadvci->AeSetBias = wrapper_default_int_int;
+  mfldadvci->AeGetBias = wrapper_default_intp;
+  mfldadvci->AeSetFlickerMode = wrapper_default_AeSetFlickerMode;
+  mfldadvci->AeGetFlickerMode = wrapper_default_AeGetFlickerMode;
+  mfldadvci->AeSetExposureProgram = wrapper_default_AeSetExposureProgram;
+  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_SetWindow;
+  mfldadvci->AeSetIso = wrapper_default_AeSetManualIso;
+  mfldadvci->AeGetIso = wrapper_default_AeGetManualIso;
+
+
+  mfldadvci->AfSetMode = wrapper_default_AfSetMode;
+  mfldadvci->AfGetMode = wrapper_default_AfGetMode;
+  mfldadvci->AfSetRange = wrapper_default_AfSetRange;
+  mfldadvci->AfGetRange = wrapper_default_AfGetRange;
+  mfldadvci->AfSetMeteringMode = wrapper_default_AfSetMeteringMode;
+  mfldadvci->AfGetMeteringMode = wrapper_default_AfGetMeteringMode;
+  mfldadvci->AfGetWindow = wrapper_default_Ae_Af_GetWindow;
+  mfldadvci->AfSetWindow = wrapper_default_Ae_Af_SetWindow;
+
+  mfldadvci->AwbSetMode = wrapper_default_AwbSetMode;
+  mfldadvci->AwbGetMode = wrapper_default_AwbGetMode;
+  mfldadvci->AwbSetLightSource = wrapper_default_AwbSetLightSource;
+  mfldadvci->AwbGetLightSource = wrapper_default_AwbGetLightSource;
+  mfldadvci->AwbSetImageEffect = wrapper_default_AwbSetImageEffect;
+  mfldadvci->AwbGetImageEffect = wrapper_default_AwbGetImageEffect;
+
+  mfldadvci->AeGetWindowsNum = wrapper_default_AeGetWindowsNum;
+  mfldadvci->AwbVersion = wrapper_default_AwbVersion;
+  mfldadvci->AeVersion = wrapper_default_AeVersion;
+  mfldadvci->AfVersion = wrapper_default_AfVersion;
+  mfldadvci->AfGetStillAfStatus = wrapper_default_AfGetStillAfStatus;
+  mfldadvci->RerVersion = wrapper_default_RerVersion;
+  mfldadvci->AeGetManualShutter = wrapper_default_AeGetManualShutter;
+  mfldadvci->Awbdata = wrapper_default_Awbdata;
+  mfldadvci->AeGetManualAperture = wrapper_default_AeGetManualAperture;
+  mfldadvci->AeSetFlashMode = wrapper_default_AeSetFlashMode;
+  mfldadvci->AeGetFlashMode = wrapper_default_AeGetFlashMode;
+  mfldadvci->AwbGetManualColorTemperature = wrapper_default_AwbGetManualColorTemperature;
+  mfldadvci->Awbmatrix = wrapper_default_Awbmatrix;
+  mfldadvci->GetGridInfo = wrapper_default_GetGridInfo;
+  mfldadvci->GetMakerNote  = wrapper_default_GetMakerNote;
+  mfldadvci->AddMakerNoteRecord = wrapper_default_AddMakerNoteRecord;
+  mfldadvci->PutMakerNote = wrapper_default_PutMakerNote;
+  mfldadvci->ResetMakerNote = wrapper_default_ResetMakerNote;
+}
index 08b4728..ea14d20 100644 (file)
@@ -179,5 +179,6 @@ struct _GstV4l2MFLDAdvCI
 
 
 void lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci);
+void wrapper_default_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci);
 
 #endif
index 30d9e29..1cd35f0 100644 (file)
@@ -981,7 +981,35 @@ gst_v4l2camsrc_mfldadvci_wrapper_load (GstMFLDV4l2CamSrc * v4l2camsrc)
   GstV4l2MFLDAdvCI *mfldadvci;
 
   mfldadvci = g_new0 (GstV4l2MFLDAdvCI, 1);
-  lib_3a_link_functions_init(mfldadvci);
+  wrapper_default_link_functions_init(mfldadvci);
+
+  if (g_module_supported ()) {
+    gchar *module_file;
+    module_file = g_module_build_path (MFLD_ADVCI_PATH, "libmfldadvci.so.0");
+    GST_DEBUG_OBJECT (v4l2camsrc, "Loading %s", module_file);
+
+    v4l2camsrc->module = g_module_open (module_file, G_MODULE_BIND_LOCAL);
+
+    /* Open again if libmfldadvci.so.0 doesn't exist */
+    if (!v4l2camsrc->module) {
+      module_file = g_module_build_path (MFLD_ADVCI_PATH, "libmfldadvci.so");
+      v4l2camsrc->module = g_module_open (module_file, G_MODULE_BIND_LOCAL);
+      GST_DEBUG_OBJECT (v4l2camsrc, "Loading %s", module_file);
+    }
+    GST_DEBUG_OBJECT(v4l2camsrc, "Camera Source Interface version is %d\n", LIBMFLDADVCI_VERSION);
+    if (v4l2camsrc->module) {
+#ifdef USE_STATIC_3A
+      lib_3a_link_functions_init(mfldadvci);
+#endif /* USE_STATIC_3A */
+     /* for dynamic func initilisation
+      * ret = g_module_symbol (v4l2camsrc->module, "libmfldadvci_init",
+      * (gpointer) & init_function);
+      *  if (ret)
+      * advci_version = init_function (mfldadvci);
+      */
+    }
+  }
+
   return mfldadvci;
 }
 
@@ -993,7 +1021,11 @@ void
 gst_v4l2camsrc_mfldadvci_wrapper_unload (GstMFLDV4l2CamSrc * v4l2camsrc)
 {
   GstV4l2MFLDAdvCI *mfldadvci = v4l2camsrc->mfldadvci;
+  g_module_close (v4l2camsrc->module);
+  v4l2camsrc->module = NULL;
+
   g_free (mfldadvci);
+
 }
 
 
index b168c17..c24061a 100644 (file)
@@ -1,3 +1,7 @@
+* Thu Nov 22 2012 Marko Ollonen <marko.ollonen@ixonos.com> accepted/trunk/20121120.150732@36839a7
+- wrapper for 3a added.
+- Makernote cleanup.
+
 * Thu Nov 22 2012 Jussi Saavalainen <jussi.saavalainen@ixonos.com> accepted/trunk/20121112.215039@58b3c6d
 - Don't overwrite different stillshot fourCC in capture start
 
index 42ea365..37492ac 100644 (file)
@@ -30,7 +30,7 @@ Camera source component for Intel Medfield ISP.
 %build
 ln -sf /usr/src/kernels/*mfld-blackbay/include/ %{_builddir}/kernel_headers
 ./autogen.sh
-CFLAGS="-DSTDC99 -D__user= -I/usr/include/libmfldadvci/ -I%{_builddir}/kernel_headers" %configure  --disable-static \
+CFLAGS="-DSTDC99 -D__user= -DUSE_STATIC_3A -I/usr/include/libmfldadvci/ -I%{_builddir}/kernel_headers" %configure  --disable-static \
        --disable-nls \
        --enable-swscale \
        --prefix=%{_prefix} \