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;
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;
}
gst_v4l2camsrc_set_flash_mode (GstCameraSrc *camsrc, int value);
gst_v4l2camsrc_read_exif (GstCameraSrc *camsrc,
GstCameraControlExifInfo *exif_info);
+gboolean
+gst_v4l2camsrc_set_strobe_state (GstCameraSrc *camsrc, gboolean state);
/*
camera_class->set_flash_mode = GST_DEBUG_FUNCPTR(gst_v4l2camsrc_set_flash_mode);
camera_class->read_exif = GST_DEBUG_FUNCPTR(gst_v4l2camsrc_read_exif);
+ camera_class->set_strobe_state = GST_DEBUG_FUNCPTR(gst_v4l2camsrc_set_strobe_state);
+
//camera_class->fill_image_tags = GST_DEBUG_FUNCPTR(gst_v4l2camsrc_fill_image_tags);
//camera_class->get_preview_image = GST_DEBUG_FUNCPTR(gst_v4l2camsrc_get_preview_image);
}