}
static cam_err_t
-set_flash_mode (int mode)
+set_flash_mode (int fd, int mode)
{
cam_err_t ret = CAM_ERR_NONE;
mfld_cam_settings.flash_mode = mode;
+
+ cam_driver_dbg ("set flash mode: %d\n",mode);
+ /* TODO check this when making auto modes etc.. */
switch (mode) {
case CAM_LIGHT_FLASH_MODE_AUTO:
- case CAM_LIGHT_FLASH_MODE_OFF:
case CAM_LIGHT_FLASH_MODE_ON:
- break;
case CAM_LIGHT_FLASH_MODE_FILL_IN:
- break;
case CAM_LIGHT_FLASH_MODE_RED_EYE:
+ ret = cam_driver_set_flash_mode(fd,ATOMISP_FLASH_MODE_FLASH);
+ break;
+ case CAM_LIGHT_FLASH_MODE_OFF:
+ ret = cam_driver_set_flash_mode(fd,ATOMISP_FLASH_MODE_OFF);
break;
}
return ret;
ret = set_scene_mode (value);
break;
case CAM_LIGHT_FLASH_MODE:
- ret = set_flash_mode (value);
+ ret = set_flash_mode (fd, value);
break;
case CAM_EXPOSURE_MANUAL_TIME:
ret = cam_driver_set_exposure (fd, value);
}
}
+cam_err_t
+cam_driver_set_flash_mode (int fd,int mode)
+{
+ cam_driver_dbg ("%s: mode %d\n", __func__, mode);
+
+ return cam_driver_set_attribute (fd, V4L2_CID_FLASH_MODE, mode, "Flash Mode");
+}
+
cam_err_t cam_driver_get_aperture (int fd, int *aperture);
+cam_err_t cam_driver_set_flash_mode(int fd,int mode);
+
#endif /* _MFLD_DRIVER_H */
g_return_val_if_fail (opened, FALSE);
GST_OBJECT_LOCK (camerasrc);
- camerasrc->cam_ctrl.flash_mode = value;
+ switch (value) {
+ case MM_CAMCORDER_STROBE_MODE_OFF:
+ camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_OFF;
+ break;
+ case MM_CAMCORDER_STROBE_MODE_ON:
+ camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_ON;
+ break;
+ case MM_CAMCORDER_STROBE_MODE_AUTO:
+ camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_AUTO;
+ break;
+ case MM_CAMCORDER_STROBE_MODE_REDEYE_REDUCTION:
+ camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE;
+ break;
+ case MM_CAMCORDER_STROBE_MODE_SLOW_SYNC:
+ case MM_CAMCORDER_STROBE_MODE_FRONT_CURTAIN:
+ case MM_CAMCORDER_STROBE_MODE_REAR_CURTAIN:
+ // TODO check if used in torch or indication
+ case MM_CAMCORDER_STROBE_MODE_PERMANENT:
+ default:
+ camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_OFF;
+ break;
+ }
GST_OBJECT_UNLOCK (camerasrc);
- ret = bclass->set_flash_mode(camerasrc, value);
return ret;
}
gboolean
g_return_val_if_fail (opened, FALSE);
GST_OBJECT_LOCK (camerasrc);
- *value = camerasrc->cam_ctrl.flash_mode;
+ *value = camerasrc->photoconf.flash_mode;
+ switch (camerasrc->photoconf.flash_mode) {
+ case GST_PHOTOGRAPHY_FLASH_MODE_OFF:
+ *value = MM_CAMCORDER_STROBE_MODE_OFF;
+ break;
+ case GST_PHOTOGRAPHY_FLASH_MODE_AUTO:
+ *value = MM_CAMCORDER_STROBE_MODE_AUTO;
+ break;
+ case GST_PHOTOGRAPHY_FLASH_MODE_ON:
+ *value = MM_CAMCORDER_STROBE_MODE_ON;
+ break;
+ case GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE:
+ *value = MM_CAMCORDER_STROBE_MODE_REDEYE_REDUCTION;
+ break;
+ default:
+ *value = MM_CAMCORDER_STROBE_MODE_OFF;
+ break;
+ }
GST_OBJECT_UNLOCK (camerasrc);
return TRUE;
#define GST_IS_CAMERA_SRC_CAMERA_CONTROL_CHANNEL_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_CAMERA_SRC_CAMERA_CONTROL_CHANNEL))
-
+/* Nicely defined Interface. These are taken from user of interface no definitions in interface itself */
typedef enum{
MM_CAMCORDER_FOCUS_MODE_NONE = 0, /**< Focus mode is None */
MM_CAMCORDER_FOCUS_MODE_PAN, /**< Pan focus mode*/
MM_CAMCORDER_FOCUS_MODE_CONTINUOUS, /**< Continuous Autofocus mode*/
} MMCamcorderFocusMode;
+/* Nicely defined Interface. These are taken from user of interface no definitions in interface itself */
+enum MMCamcorderStrobeMode {
+ MM_CAMCORDER_STROBE_MODE_OFF = 0, /**< Always off */
+ MM_CAMCORDER_STROBE_MODE_ON, /**< Always splashes */
+ MM_CAMCORDER_STROBE_MODE_AUTO, /**< Depending on intensity of light, strobe starts to flash. */
+ MM_CAMCORDER_STROBE_MODE_REDEYE_REDUCTION, /**< Red eye reduction. Multiple flash before capturing. */
+ MM_CAMCORDER_STROBE_MODE_SLOW_SYNC, /**< Slow sync. A type of curtain synchronization. */
+ MM_CAMCORDER_STROBE_MODE_FRONT_CURTAIN, /**< Front curtain. A type of curtain synchronization. */
+ MM_CAMCORDER_STROBE_MODE_REAR_CURTAIN, /**< Rear curtain. A type of curtain synchronization. */
+ MM_CAMCORDER_STROBE_MODE_PERMANENT, /**< keep turned on until turning off */
+};
+
typedef struct _GstCameraSrcCameraControlChannel {
GstCameraControlChannel parent;
camerasrc->photoconf.iso_speed = 0; /* 0 = auto */
camerasrc->photoconf.wb_mode = GST_PHOTOGRAPHY_WB_MODE_AUTO;
camerasrc->photoconf.scene_mode = GST_PHOTOGRAPHY_SCENE_MODE_MANUAL;
- camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_AUTO;
+ camerasrc->photoconf.flash_mode = GST_PHOTOGRAPHY_FLASH_MODE_OFF;
camerasrc->photoconf.tone_mode = GST_PHOTOGRAPHY_COLOUR_TONE_MODE_NORMAL;
camerasrc->photoconf.flicker_mode = GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ;
camerasrc->photoconf.focus_mode = GST_PHOTOGRAPHY_FOCUS_MODE_AUTO;
typedef struct
{
- guint flash_mode;
GstCameraControlExifInfo exif_info;
} GstCameraControlInt;
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
break;
}
+ GST_DEBUG_OBJECT (v4l2camsrc, "Set flash mode: %d",flash);
err= cam_feature_set (v4l2camsrc->video_fd, CAM_LIGHT_FLASH_MODE,
flash);