continuos focus mode support added.
authorMarko Ollonen <marko.ollonen@ixonos.com>
Wed, 16 Jan 2013 13:47:52 +0000 (15:47 +0200)
committerMarko Ollonen <marko.ollonen@ixonos.com>
Wed, 16 Jan 2013 14:30:30 +0000 (16:30 +0200)
Change-Id: Ibbcbdf84043f70ff8b21d21ec694c55b67248edc

gst-libs/atomisphal/mfld_cam.c
gst-libs/atomisphal/mfld_cam.h
gst-libs/gst/camera/gstmfldcameracontroliface.c
gst/mfldv4l2cam/v4l2camsrc_calls.c
packaging/mfldv4l2camsrc.changes

index 26d4a80..50f6f98 100644 (file)
@@ -422,23 +422,39 @@ static cam_err_t
 set_focus_mode (int mode)
 {
 
+  cam_driver_dbg ("set_focus_mode: %d\n", mode);
+
   if (mfld_driver.sensor_type == SENSOR_TYPE_RAW){
     switch (mode) {
       case CAM_FOCUS_MODE_AUTO:
+        mfldadvci->AfSetMode (advci_af_mode_manual);
+        mfldadvci->AfSetRange (advci_af_range_norm);
+        mfldadvci->AfSetMeteringMode(advci_af_metering_mode_auto);
+        break;
+      case CAM_FOCUS_MODE_TOUCH_AUTO:
         mfldadvci->AfSetMode (advci_af_mode_auto);
+        mfldadvci->AfSetRange (advci_af_range_full);
+        mfldadvci->AfSetMeteringMode(advci_af_metering_mode_multi);
         break;
       case CAM_FOCUS_MODE_MACRO:
         mfldadvci->AfSetMode (advci_af_mode_auto);
         mfldadvci->AfSetRange (advci_af_range_macro);
+        mfldadvci->AfSetMeteringMode(advci_af_metering_mode_auto);
         break;
       case CAM_FOCUS_MODE_NORM:
         mfldadvci->AfSetMode (advci_af_mode_auto);
         mfldadvci->AfSetRange (advci_af_range_norm);
+        mfldadvci->AfSetMeteringMode(advci_af_metering_mode_auto);
         break;
       case CAM_FOCUS_MODE_FULL:
-        mfldadvci->AfSetMode (advci_af_mode_auto);
+        mfldadvci->AfSetMode (advci_af_mode_manual);
         mfldadvci->AfSetRange (advci_af_range_full);
         break;
+      case CAM_FOCUS_MODE_CONTINUOUS:
+        mfldadvci->AfSetMode (advci_af_mode_auto);
+        mfldadvci->AfSetRange (advci_af_range_norm);
+        mfldadvci->AfSetMeteringMode(advci_af_metering_mode_auto);
+        break;
       default:
         cam_driver_dbg ("Not supported mode\n");
         return CAM_ERR_UNSUPP;
index 22d5d0e..bda6288 100644 (file)
@@ -139,6 +139,8 @@ typedef enum
   CAM_FOCUS_MODE_MACRO,
   CAM_FOCUS_MODE_FULL,
   CAM_FOCUS_MODE_NORM,
+  CAM_FOCUS_MODE_CONTINUOUS,
+  CAM_FOCUS_MODE_TOUCH_AUTO,
 } cam_focus_mode_t;
 
 typedef enum
index 0a992e9..21020fe 100644 (file)
@@ -365,7 +365,9 @@ gst_camerasrc_camera_control_set_focus( GstCameraSrc* camerasrc,
   GstCameraSrcClass *bclass;
   gboolean opened;
   GstFocusMode focus_mode;
-  GST_DEBUG_OBJECT (camerasrc, "gst_camerasrc_camera_control_set_focus");
+  gboolean ret = TRUE;
+
+  GST_DEBUG_OBJECT (camerasrc, "gst_camerasrc_camera_control_set_focus: %d", mode);
 
   bclass = GST_CAMERA_SRC_GET_CLASS (camerasrc);
   opened = bclass->is_open (camerasrc);
@@ -377,9 +379,11 @@ gst_camerasrc_camera_control_set_focus( GstCameraSrc* camerasrc,
       focus_mode = GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY;
       break;
     case MM_CAMCORDER_FOCUS_MODE_AUTO:
-    case MM_CAMCORDER_FOCUS_MODE_TOUCH_AUTO:
       focus_mode = GST_PHOTOGRAPHY_FOCUS_MODE_AUTO;
       break;
+   case MM_CAMCORDER_FOCUS_MODE_TOUCH_AUTO:
+      focus_mode = GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT;
+      break;
     case MM_CAMCORDER_FOCUS_MODE_PAN:
       focus_mode = GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL;
       break;
@@ -397,7 +401,11 @@ gst_camerasrc_camera_control_set_focus( GstCameraSrc* camerasrc,
   camerasrc->photoconf.focus_mode = focus_mode;
   GST_OBJECT_UNLOCK (camerasrc);
 
-  return TRUE;
+  if (bclass->is_active (camerasrc)) {
+    ret = bclass->write_settings (camerasrc, &camerasrc->photoconf, FALSE);
+  }
+
+  return ret;
 }
 
 gboolean
index 4a43687..b328ec8 100644 (file)
@@ -1023,7 +1023,6 @@ gst_v4l2camsrc_get_attribute (GstCameraSrc * camsrc,
   control.id = attribute_num;
 
   if (control.id > SOURCE_PRIV_BASE) {
-    GST_DEBUG_OBJECT (v4l2camsrc, "mmfw control JippiKayJei");
     switch (control.id) {
       case MM_CAM_FILTER_WB_SOURCE_PRIV:
           err = cam_feature_get (v4l2camsrc->video_fd, CAM_AWB_MODE, &tmp_value);
@@ -1097,7 +1096,6 @@ gst_v4l2camsrc_set_attribute (GstCameraSrc * camsrc,
   control.id = attribute_num;
   control.value = value;
   if (control.id > SOURCE_PRIV_BASE) {
-    GST_DEBUG_OBJECT (v4l2camsrc, "mmfw control JippiKayJei");
     switch (control.id) {
       case MM_CAM_FILTER_WB_SOURCE_PRIV:
           cam_feature_set (v4l2camsrc->video_fd, CAM_AWB_MODE, gst_v4l2camsrc_wb_map[value]);
@@ -2914,12 +2912,12 @@ static const gint gst_v4l2camsrc_flash_map[] = {
 static const gint gst_v4l2camsrc_focus_map[] = {
   CAM_FOCUS_MODE_AUTO,          /* GST_PHOTOGRAPHY_FOCUS_MODE_AUTO = 0 */
   CAM_FOCUS_MODE_MACRO,         /* GST_PHOTOGRAPHY_FOCUS_MODE_MACRO */
-  CAM_FOCUS_MODE_NORM,          /* GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT */
+  CAM_FOCUS_MODE_TOUCH_AUTO,    /* GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT */
   CAM_FOCUS_MODE_FULL,          /* GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY */
   CAM_FOCUS_MODE_AUTO,          /* GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL */
   CAM_FOCUS_MODE_FULL,          /* GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED */
-  CAM_FOCUS_MODE_AUTO,          /* GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL */
-  CAM_FOCUS_MODE_AUTO,          /* GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED */
+  CAM_FOCUS_MODE_CONTINUOUS,    /* GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL */
+  CAM_FOCUS_MODE_CONTINUOUS,    /* GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED */
   -1
 };
 
index 6b56ce0..7e94d61 100644 (file)
@@ -1,7 +1,10 @@
+* Wed Jan 16 2013 Marko Ollonen <marko.ollonen@ixonos.com> accepted/trunk/20130114.185021@4590562
+- continuos focus mode support added, TZSP-1133.
+- fix bugs came from 3a lib dynamic linking change.
+
 * Mon Jan 14 2013 Marko Ollonen <marko.ollonen@ixonos.com> accepted/tizen_2.0/20130110.192337@36cdfa5
 - buffer-sharing: supports <video/x-vaapi-sharing> on video buffer, TZSP-4544.
 
-
 * Wed Jan 09 2013 Marko Ollonen <marko.ollonen@ixonos.com> submit/tizen_2.0/20130109.153255@4dec286
 - use 3a lib dynamically linked,TZSP-2927.