strobe light control added to camera control interface.
[adaptation/intel_mfld/gst-plugins-atomisp.git] / gst-libs / gst / camera / gstmfldcameracontroliface.c
index 1f12f73..53d4361 100644 (file)
@@ -235,26 +235,39 @@ gst_camerasrc_camera_control_set_strobe( GstCameraSrc* camerasrc,
   gboolean opened;
   gboolean ret = FALSE;
 
-/* using GstFlashMode enumeration
- * typedef enum
- * {
- * GST_PHOTOGRAPHY_FLASH_MODE_AUTO = 0,
- * GST_PHOTOGRAPHY_FLASH_MODE_OFF,
- * GST_PHOTOGRAPHY_FLASH_MODE_ON,
- * GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN,
- * GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE
- * } GstFlashMode;
-*/
 
   bclass = GST_CAMERA_SRC_GET_CLASS (camerasrc);
   opened = bclass->is_open (camerasrc);
   g_return_val_if_fail (opened, FALSE);
 
-  GST_OBJECT_LOCK (camerasrc);
-  camerasrc->photoconf.flash_mode = value;
-  GST_OBJECT_UNLOCK (camerasrc);
-  if (bclass->is_active (camerasrc)) {
-    ret = bclass->write_settings (camerasrc, &camerasrc->photoconf, FALSE);
+
+  if (type  == GST_CAMERA_CONTROL_STROBE_MODE ) {
+  /* using GstFlashMode enumeration
+   * typedef enum
+   * {
+   * GST_PHOTOGRAPHY_FLASH_MODE_AUTO = 0,
+   * GST_PHOTOGRAPHY_FLASH_MODE_OFF,
+   * GST_PHOTOGRAPHY_FLASH_MODE_ON,
+   * GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN,
+   * GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE
+   * } GstFlashMode;
+  */
+    GST_OBJECT_LOCK (camerasrc);
+    camerasrc->photoconf.flash_mode = value;
+    GST_OBJECT_UNLOCK (camerasrc);
+    if (bclass->is_active (camerasrc)) {
+      ret = bclass->write_settings (camerasrc, &camerasrc->photoconf, FALSE);
+    }
+  }
+  else if (type  == GST_CAMERA_CONTROL_STROBE_CONTROL) {
+    GST_OBJECT_LOCK (camerasrc);
+    if( value < 2)
+      camerasrc->enable_torch = value;
+    else
+      camerasrc->enable_torch = FALSE;
+    if (bclass->set_strobe_state)
+      bclass->set_strobe_state(camerasrc, camerasrc->enable_torch);
+    GST_OBJECT_UNLOCK (camerasrc);
   }
 
   return ret;
@@ -270,9 +283,17 @@ gst_camerasrc_camera_control_get_strobe( GstCameraSrc* camerasrc,
   opened = bclass->is_open (camerasrc);
   g_return_val_if_fail (opened, FALSE);
 
-  GST_OBJECT_LOCK (camerasrc);
-  *value =  camerasrc->photoconf.flash_mode;
-  GST_OBJECT_UNLOCK (camerasrc);
+
+  if (type  == GST_CAMERA_CONTROL_STROBE_MODE ) {
+    GST_OBJECT_LOCK (camerasrc);
+    *value =  camerasrc->photoconf.flash_mode;
+    GST_OBJECT_UNLOCK (camerasrc);
+  }
+  else if (type  == GST_CAMERA_CONTROL_STROBE_CONTROL) {
+    GST_OBJECT_LOCK (camerasrc);
+    *value = camerasrc->enable_torch;
+    GST_OBJECT_UNLOCK (camerasrc);
+  }
 
   return TRUE;
 }