/* check compatability between codec and file format */
int mm_camcorder_check_codec_fileformat_compatibility(const char *codec_type, int codec, int file_format);
+/* external storage state management */
+int mm_camcorder_manage_external_storage_state(MMHandleType camcorder, int storage_state);
+
/**
@}
*/
_MMCAMCORDER_STATE_CHANGE_NORMAL = 0,
_MMCAMCORDER_STATE_CHANGE_BY_FOCUS,
_MMCAMCORDER_STATE_CHANGE_BY_RM,
- _MMCAMCORDER_STATE_CHANGE_BY_DPM
+ _MMCAMCORDER_STATE_CHANGE_BY_DPM,
+ _MMCAMCORDER_STATE_CHANGE_BY_STORAGE
} _MMCamcorderStateChange;
void _mmcamcorder_emit_signal(MMHandleType handle, const char *object_name,
const char *interface_name, const char *signal_name, int value);
+/* external storage state management */
+int _mmcamcorder_manage_external_storage_state(MMHandleType handle, int storage_state);
+
#ifdef __cplusplus
}
#endif
return _mmcamcorder_check_codec_fileformat_compatibility(codec_type, codec, file_format);
}
+
+int mm_camcorder_manage_external_storage_state(MMHandleType camcorder, int storage_state)
+{
+ mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
+
+ return _mmcamcorder_manage_external_storage_state(camcorder, storage_state);
+}
return cb_res;
}
#endif /* _MMCAMCORDER_RM_SUPPORT */
+
+
+int _mmcamcorder_manage_external_storage_state(MMHandleType handle, int storage_state)
+{
+ int ret = MM_ERROR_NONE;
+ int current_state = MM_CAMCORDER_STATE_NONE;
+ mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
+ _MMCamcorderMsgItem msg;
+
+ mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
+
+ _mmcam_dbg_warn("storage state %d", storage_state);
+
+ /* check storage state */
+ if (storage_state != STORAGE_STATE_UNMOUNTABLE &&
+ storage_state != STORAGE_STATE_REMOVED) {
+ _mmcam_dbg_warn("nothing to do");
+ return MM_ERROR_NONE;
+ }
+
+ _MMCAMCORDER_LOCK_ASM(hcamcorder);
+
+ /* check recording state */
+ current_state = _mmcamcorder_get_state(handle);
+
+ _mmcam_dbg_warn("current_state %d", current_state);
+
+ if (current_state < MM_CAMCORDER_STATE_RECORDING) {
+ _mmcam_dbg_warn("no recording now");
+ goto _MANAGE_DONE;
+ }
+
+ /* check storage type */
+ if (hcamcorder->storage_info.type != STORAGE_TYPE_EXTERNAL) {
+ _mmcam_dbg_warn("external storage is not used");
+ goto _MANAGE_DONE;
+ }
+
+ /* cancel recording */
+ ret = _mmcamcorder_cancel(handle);
+
+ /* send error message */
+ msg.id = MM_MESSAGE_CAMCORDER_ERROR;
+ msg.param.code = MM_ERROR_OUT_OF_STORAGE;
+
+ _mmcamcorder_send_message(handle, &msg);
+
+_MANAGE_DONE:
+ _MMCAMCORDER_UNLOCK_ASM(hcamcorder);
+
+ _mmcam_dbg_warn("done - ret 0x%x", ret);
+
+ return ret;
+}