4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jeongmo Yang <jm80.yang@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
22 /* ==============================================================================
24 ===============================================================================*/
30 #include "mm_camcorder.h"
31 #include "mm_camcorder_internal.h"
34 /*===============================================================================
35 | FUNCTION DEFINITIONS |
36 ===============================================================================*/
37 /*-------------------------------------------------------------------------------
38 | GLOBAL FUNCTION DEFINITIONS: |
39 -------------------------------------------------------------------------------*/
40 int mm_camcorder_create(MMHandleType *camcorder, MMCamPreset *info)
42 int error = MM_ERROR_NONE;
44 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
45 mmf_return_val_if_fail((void *)info, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
49 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:CREATE");
51 error = _mmcamcorder_create(camcorder, info);
53 traceEnd(TTRACE_TAG_CAMERA);
55 _mmcam_dbg_err("END");
61 int mm_camcorder_destroy(MMHandleType camcorder)
63 int error = MM_ERROR_NONE;
65 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
69 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:DESTROY");
71 error = _mmcamcorder_destroy(camcorder);
73 traceEnd(TTRACE_TAG_CAMERA);
75 _mmcam_dbg_err("END!!!");
81 int mm_camcorder_realize(MMHandleType camcorder)
83 int error = MM_ERROR_NONE;
85 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
89 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
91 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:REALIZE");
93 error = _mmcamcorder_realize(camcorder);
95 traceEnd(TTRACE_TAG_CAMERA);
97 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
99 _mmcam_dbg_err("END");
105 int mm_camcorder_unrealize(MMHandleType camcorder)
107 int error = MM_ERROR_NONE;
109 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
113 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
115 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:UNREALIZE");
117 error = _mmcamcorder_unrealize(camcorder);
119 traceEnd(TTRACE_TAG_CAMERA);
121 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
123 _mmcam_dbg_err("END");
129 int mm_camcorder_start(MMHandleType camcorder)
131 int error = MM_ERROR_NONE;
133 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
137 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
139 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:START");
141 error = _mmcamcorder_start(camcorder);
143 traceEnd(TTRACE_TAG_CAMERA);
145 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
147 _mmcam_dbg_err("END");
153 int mm_camcorder_stop(MMHandleType camcorder)
155 int error = MM_ERROR_NONE;
157 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
161 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
163 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:STOP");
165 error = _mmcamcorder_stop(camcorder);
167 traceEnd(TTRACE_TAG_CAMERA);
169 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
171 _mmcam_dbg_err("END");
177 int mm_camcorder_capture_start(MMHandleType camcorder)
179 int error = MM_ERROR_NONE;
181 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
185 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
187 error = _mmcamcorder_capture_start(camcorder);
189 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
191 _mmcam_dbg_err("END");
197 int mm_camcorder_capture_stop(MMHandleType camcorder)
199 int error = MM_ERROR_NONE;
201 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
205 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
207 error = _mmcamcorder_capture_stop(camcorder);
209 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
211 _mmcam_dbg_err("END");
217 int mm_camcorder_record(MMHandleType camcorder)
219 int error = MM_ERROR_NONE;
221 mmf_return_val_if_fail((void*)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
225 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
227 error = _mmcamcorder_record(camcorder);
229 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
231 _mmcam_dbg_err("END");
237 int mm_camcorder_pause(MMHandleType camcorder)
239 int error = MM_ERROR_NONE;
241 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
245 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
247 error = _mmcamcorder_pause(camcorder);
249 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
251 _mmcam_dbg_err("END");
257 int mm_camcorder_commit(MMHandleType camcorder)
259 int error = MM_ERROR_NONE;
261 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
265 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
267 error = _mmcamcorder_commit(camcorder);
269 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
271 _mmcam_dbg_err("END");
277 int mm_camcorder_cancel(MMHandleType camcorder)
279 int error = MM_ERROR_NONE;
281 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
285 _MMCAMCORDER_LOCK_INTERRUPT(camcorder);
287 error = _mmcamcorder_cancel(camcorder);
289 _MMCAMCORDER_UNLOCK_INTERRUPT(camcorder);
291 _mmcam_dbg_err("END");
297 int mm_camcorder_set_message_callback(MMHandleType camcorder, MMMessageCallback callback, void *user_data)
299 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
301 return _mmcamcorder_set_message_callback(camcorder, callback, user_data);
305 int mm_camcorder_set_video_stream_callback(MMHandleType camcorder, mm_camcorder_video_stream_callback callback, void* user_data)
307 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
309 return _mmcamcorder_set_video_stream_callback(camcorder, callback, user_data);
313 int mm_camcorder_set_audio_stream_callback(MMHandleType camcorder, mm_camcorder_audio_stream_callback callback, void* user_data)
315 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
317 return _mmcamcorder_set_audio_stream_callback(camcorder, callback, user_data);
321 int mm_camcorder_set_muxed_stream_callback(MMHandleType camcorder, mm_camcorder_muxed_stream_callback callback, void *user_data)
323 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
325 return _mmcamcorder_set_muxed_stream_callback(camcorder, callback, user_data);
329 int mm_camcorder_set_video_capture_callback(MMHandleType camcorder, mm_camcorder_video_capture_callback callback, void* user_data)
331 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
333 return _mmcamcorder_set_video_capture_callback(camcorder, callback, user_data);
337 int mm_camcorder_get_state(MMHandleType camcorder, MMCamcorderStateType *state)
339 int ret = MM_ERROR_NONE;
342 _mmcam_dbg_warn("Empty handle.");
343 return MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
346 *state = _mmcamcorder_get_state(camcorder);
352 int mm_camcorder_get_state2(MMHandleType camcorder, MMCamcorderStateType *state, MMCamcorderStateType *old_state)
355 _mmcam_dbg_warn("Empty handle.");
356 return MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
359 return _mmcamcorder_get_state2(camcorder, (int *)state, (int *)old_state);
363 int mm_camcorder_get_attributes(MMHandleType camcorder, char **err_attr_name, const char *attribute_name, ...)
366 int ret = MM_ERROR_NONE;
368 mmf_return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
370 va_start(var_args, attribute_name);
371 ret = _mmcamcorder_get_attributes(camcorder, err_attr_name, attribute_name, var_args);
378 int mm_camcorder_set_attributes(MMHandleType camcorder, char **err_attr_name, const char *attribute_name, ...)
381 int ret = MM_ERROR_NONE;
383 mmf_return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
385 va_start(var_args, attribute_name);
386 ret = _mmcamcorder_set_attributes(camcorder, err_attr_name, attribute_name, var_args);
393 int mm_camcorder_get_attribute_info(MMHandleType camcorder, const char *attribute_name, MMCamAttrsInfo *info)
395 return _mmcamcorder_get_attribute_info(camcorder, attribute_name, info);
398 int mm_camcorder_get_fps_list_by_resolution(MMHandleType camcorder, int width, int height, MMCamAttrsInfo *fps_info)
400 return _mmcamcorder_get_fps_array_by_resolution(camcorder, width, height, fps_info);
404 int mm_camcorder_init_focusing(MMHandleType camcorder)
406 int error = MM_ERROR_NONE;
408 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
410 error = _mmcamcorder_init_focusing(camcorder);
416 int mm_camcorder_start_focusing(MMHandleType camcorder)
418 int error = MM_ERROR_NONE;
420 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
422 /* TODO : Add direction parameter */
424 error = _mmcamcorder_adjust_focus(camcorder, MM_CAMCORDER_MF_LENS_DIR_FORWARD);
430 int mm_camcorder_stop_focusing(MMHandleType camcorder)
432 int error = MM_ERROR_NONE;
434 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
436 error = _mmcamcorder_stop_focusing(camcorder);
441 void mm_camcorder_emit_signal(MMHandleType camcorder, const char *object_name,
442 const char *interface_name, const char *signal_name, int value)
444 mmf_return_if_fail((void *)camcorder);
446 _mmcamcorder_emit_signal(camcorder, object_name, interface_name, signal_name, value);
451 int mm_camcorder_check_codec_fileformat_compatibility(const char *codec_type, int codec, int file_format)
453 mmf_return_val_if_fail(codec_type, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
455 return _mmcamcorder_check_codec_fileformat_compatibility(codec_type, codec, file_format);
458 int mm_camcorder_manage_external_storage_state(MMHandleType camcorder, int storage_state)
460 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
462 return _mmcamcorder_manage_external_storage_state(camcorder, storage_state);