return _mmcamcorder_manage_external_storage_state(camcorder, storage_state);
}
+int mm_camcorder_get_exposure(MMHandleType camcorder, int *exposure)
+{
+ mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
+
+ return _mmcamcorder_get_exposure(camcorder, exposure);
+}
+
int mm_camcorder_get_log_level(void)
{
return _mmcamcorder_get_log_level();
}
}
+int _mmcamcorder_get_exposure(MMHandleType handle, int *exposure)
+{
+ int ret = MM_ERROR_NONE;
+ int state = MM_CAMCORDER_STATE_NONE;
+ GstCameraControl *control = NULL;
+ _MMCamcorderSubContext *sc = NULL;
+ mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
+
+ mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
+ mmf_return_val_if_fail(exposure, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
+
+ state = _mmcamcorder_get_state(handle);
+ if (state < MM_CAMCORDER_STATE_READY) {
+ ret = mm_camcorder_get_attributes(handle, NULL,
+ MMCAM_CAMERA_EXPOSURE_VALUE, exposure,
+ NULL);
+
+ MMCAM_LOG_INFO("exposure[%d] from attribute[ret:0x%x]", *exposure, ret);
+
+ return ret;
+ }
+
+ sc = MMF_CAMCORDER_SUBCONTEXT(hcamcorder);
+ mmf_return_val_if_fail(sc, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
+
+ if (!GST_IS_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst)) {
+ MMCAM_LOG_ERROR("Can't cast Video source into camera control.");
+ return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
+ }
+
+ control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst);
+ if (!control) {
+ MMCAM_LOG_ERROR("cast CAMERA_CONTROL failed");
+ return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
+ }
+
+ if (!gst_camera_control_get_exposure(control, GST_CAMERA_CONTROL_EXPOSURE_VALUE, exposure, NULL)) {
+ MMCAM_LOG_ERROR("get exposure failed");
+ return MM_ERROR_CAMCORDER_INTERNAL;
+ }
+
+ MMCAM_LOG_INFO("exposure[%d] from device", *exposure);
+
+ return MM_ERROR_NONE;
+}
+
/*-----------------------------------------------
| CAMCORDER INTERNAL LOCAL |
-----------------------------------------------*/