flash setting method for 3A lib added.
Change-Id: I086e0c74abba099b45a87a46864cc545127cfdef
*mode= ia_3a_ae_get_flash_mode();
}
+static void lib_3a_AeSetFlashMode(ia_3a_ae_flash_mode mode)
+{
+ cam_lib_3a_dbg("%s:%d mode:%d \n", __func__, __LINE__, mode);
+ ci_adv_ae_set_flash_mode(mode);
+}
+
static void lib_3a_AwbGetManualColorTemperature(int *ctemp)
{
cam_lib_3a_dbg("%s:%d\n", __func__, __LINE__);
mfldadvci->AeGetManualShutter = lib_3a_AeGetManualShutter;
mfldadvci->Awbdata = lib_3a_Awbdata;
mfldadvci->AeGetManualAperture = lib_3a_AeGetManualAperture;
+ mfldadvci->AeSetFlashMode = lib_3a_AeSetFlashMode;
mfldadvci->AeGetFlashMode = lib_3a_AeGetFlashMode;
mfldadvci->AwbGetManualColorTemperature = lib_3a_AwbGetManualColorTemperature;
mfldadvci->Awbmatrix = lib_3a_Awbmatrix;
unsigned * avg_b, unsigned * avg_gb);
void (*AeGetManualAperture)(int *aperture);
void (*AeGetFlashMode)(ia_3a_ae_flash_mode *mode);
+ void (*AeSetFlashMode)(ia_3a_ae_flash_mode mode);
void (*AwbGetManualColorTemperature)(int *ctemp);
void (*Awbmatrix)(int msqWbGain[3], int msqCcMtrx[9], unsigned short * shift);
void (*GetGridInfo)(void * grid_info);
}
return CAM_ERR_NONE;
}
+cam_err_t set_ae_flash_mode(int fd, cam_flash_mode_t mode)
+{
+ ia_3a_ae_flash_mode ia_mode;
+
+ switch(mode)
+ {
+ case CAM_LIGHT_FLASH_MODE_AUTO:
+ ia_mode = ia_3a_ae_flash_mode_auto;
+ break;
+ case CAM_LIGHT_FLASH_MODE_OFF:
+ ia_mode = ia_3a_ae_flash_mode_off;
+ break;
+ case CAM_LIGHT_FLASH_MODE_ON:
+ ia_mode = ia_3a_ae_flash_mode_on;
+ break;
+ default:
+ ia_mode = ia_3a_ae_flash_mode_auto;
+ break;
+ }
+
+ mfldadvci->AeSetFlashMode(ia_mode);
+
+ return CAM_ERR_NONE;
+}
+
cam_err_t get_awb_manual_color_temperature(int fd, int *ctemp)
{
unsigned * avg_gr, unsigned * avg_b, unsigned * avg_gb);
cam_err_t get_ae_manual_aperture(int fd, int *aperture);
cam_err_t get_ae_flash_mode(int fd, cam_flash_mode_t *mode);
+cam_err_t set_ae_flash_mode(int fd, cam_flash_mode_t mode);
+
int cam_find_item_new (const int table[][2], const int item, int reverse);
cam_err_t get_awb_manual_color_temperature(int fd, int *ctemp);
{
GstCameraSrcClass *bclass;
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);
- 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;
- }
+ camerasrc->photoconf.flash_mode = value;
GST_OBJECT_UNLOCK (camerasrc);
+ if (bclass->is_active (camerasrc)) {
+ ret = bclass->write_settings (camerasrc, &camerasrc->photoconf, FALSE);
+ }
- return TRUE;
+ return ret;
}
gboolean
gst_camerasrc_camera_control_get_strobe( GstCameraSrc* camerasrc,
GST_OBJECT_LOCK (camerasrc);
*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;
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;
err= cam_feature_set (v4l2camsrc->video_fd, CAM_LIGHT_FLASH_MODE,
flash);
+ set_ae_flash_mode(v4l2camsrc->video_fd,flash);
+
if(err)
goto error;
+* Thu Nov 15 2012 Marko Ollonen <marko.ollonen@ixonos.com> accepted/trunk/20121112.215039@c15e86d
+- clean up flash setting in camera control interface. flash setting method for 3A lib added.
+
* Thu Nov 15 2012 Marko Ollonen <marko.ollonen@ixonos.com> accepted/trunk/20121112.215039@f192b64
- white bablance control added.