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 ===============================================================================*/
29 #include <mm_attrs_private.h>
31 #include "mm_camcorder.h"
32 #include "mm_camcorder_internal.h"
35 /*===============================================================================
36 | FUNCTION DEFINITIONS |
37 ===============================================================================*/
38 /*-------------------------------------------------------------------------------
39 | GLOBAL FUNCTION DEFINITIONS: |
40 -------------------------------------------------------------------------------*/
41 int mm_camcorder_create(MMHandleType *camcorder, MMCamPreset *info)
43 int error = MM_ERROR_NONE;
45 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
46 mmf_return_val_if_fail((void *)info, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
50 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:CREATE");
52 error = _mmcamcorder_create(camcorder, info);
54 traceEnd(TTRACE_TAG_CAMERA);
56 _mmcam_dbg_err("END");
62 int mm_camcorder_destroy(MMHandleType camcorder)
64 int error = MM_ERROR_NONE;
66 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
70 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:DESTROY");
72 error = _mmcamcorder_destroy(camcorder);
74 traceEnd(TTRACE_TAG_CAMERA);
76 _mmcam_dbg_err("END!!!");
82 int mm_camcorder_realize(MMHandleType camcorder)
84 int error = MM_ERROR_NONE;
86 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
90 _MMCAMCORDER_LOCK_ASM(camcorder);
92 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:REALIZE");
94 error = _mmcamcorder_realize(camcorder);
96 traceEnd(TTRACE_TAG_CAMERA);
98 _MMCAMCORDER_UNLOCK_ASM(camcorder);
100 _mmcam_dbg_err("END");
106 int mm_camcorder_unrealize(MMHandleType camcorder)
108 int error = MM_ERROR_NONE;
110 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
114 _MMCAMCORDER_LOCK_ASM(camcorder);
116 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:UNREALIZE");
118 error = _mmcamcorder_unrealize(camcorder);
120 traceEnd(TTRACE_TAG_CAMERA);
122 _MMCAMCORDER_UNLOCK_ASM(camcorder);
124 _mmcam_dbg_err("END");
130 int mm_camcorder_start(MMHandleType camcorder)
132 int error = MM_ERROR_NONE;
134 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
138 _MMCAMCORDER_LOCK_ASM(camcorder);
140 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:START");
142 error = _mmcamcorder_start(camcorder);
144 traceEnd(TTRACE_TAG_CAMERA);
146 _MMCAMCORDER_UNLOCK_ASM(camcorder);
148 _mmcam_dbg_err("END");
154 int mm_camcorder_stop(MMHandleType camcorder)
156 int error = MM_ERROR_NONE;
158 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
162 _MMCAMCORDER_LOCK_ASM(camcorder);
164 traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:STOP");
166 error = _mmcamcorder_stop(camcorder);
168 traceEnd(TTRACE_TAG_CAMERA);
170 _MMCAMCORDER_UNLOCK_ASM(camcorder);
172 _mmcam_dbg_err("END");
178 int mm_camcorder_capture_start(MMHandleType camcorder)
180 int error = MM_ERROR_NONE;
182 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
186 _MMCAMCORDER_LOCK_ASM(camcorder);
188 error = _mmcamcorder_capture_start(camcorder);
190 _MMCAMCORDER_UNLOCK_ASM(camcorder);
192 _mmcam_dbg_err("END");
198 int mm_camcorder_capture_stop(MMHandleType camcorder)
200 int error = MM_ERROR_NONE;
202 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
206 _MMCAMCORDER_LOCK_ASM(camcorder);
208 error = _mmcamcorder_capture_stop(camcorder);
210 _MMCAMCORDER_UNLOCK_ASM(camcorder);
212 _mmcam_dbg_err("END");
218 int mm_camcorder_record(MMHandleType camcorder)
220 int error = MM_ERROR_NONE;
222 mmf_return_val_if_fail((void*)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
226 _MMCAMCORDER_LOCK_ASM(camcorder);
228 error = _mmcamcorder_record(camcorder);
230 _MMCAMCORDER_UNLOCK_ASM(camcorder);
232 _mmcam_dbg_err("END");
238 int mm_camcorder_pause(MMHandleType camcorder)
240 int error = MM_ERROR_NONE;
242 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
246 _MMCAMCORDER_LOCK_ASM(camcorder);
248 error = _mmcamcorder_pause(camcorder);
250 _MMCAMCORDER_UNLOCK_ASM(camcorder);
252 _mmcam_dbg_err("END");
258 int mm_camcorder_commit(MMHandleType camcorder)
260 int error = MM_ERROR_NONE;
262 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
266 _MMCAMCORDER_LOCK_ASM(camcorder);
268 error = _mmcamcorder_commit(camcorder);
270 _MMCAMCORDER_UNLOCK_ASM(camcorder);
272 _mmcam_dbg_err("END");
278 int mm_camcorder_cancel(MMHandleType camcorder)
280 int error = MM_ERROR_NONE;
282 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
286 _MMCAMCORDER_LOCK_ASM(camcorder);
288 error = _mmcamcorder_cancel(camcorder);
290 _MMCAMCORDER_UNLOCK_ASM(camcorder);
292 _mmcam_dbg_err("END");
298 int mm_camcorder_set_message_callback(MMHandleType camcorder, MMMessageCallback callback, void *user_data)
300 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
302 return _mmcamcorder_set_message_callback(camcorder, callback, user_data);
306 int mm_camcorder_set_video_stream_callback(MMHandleType camcorder, mm_camcorder_video_stream_callback callback, void* user_data)
308 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
310 return _mmcamcorder_set_video_stream_callback(camcorder, callback, user_data);
314 int mm_camcorder_set_audio_stream_callback(MMHandleType camcorder, mm_camcorder_audio_stream_callback callback, void* user_data)
316 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
318 return _mmcamcorder_set_audio_stream_callback(camcorder, callback, user_data);
322 int mm_camcorder_set_muxed_stream_callback(MMHandleType camcorder, mm_camcorder_muxed_stream_callback callback, void *user_data)
324 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
326 return _mmcamcorder_set_muxed_stream_callback(camcorder, callback, user_data);
330 int mm_camcorder_set_video_capture_callback(MMHandleType camcorder, mm_camcorder_video_capture_callback callback, void* user_data)
332 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
334 return _mmcamcorder_set_video_capture_callback(camcorder, callback, user_data);
338 int mm_camcorder_get_state(MMHandleType camcorder, MMCamcorderStateType *status)
340 int ret = MM_ERROR_NONE;
343 _mmcam_dbg_warn("Empty handle.");
344 return MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
347 *status = _mmcamcorder_get_state(camcorder);
354 int mm_camcorder_get_attributes(MMHandleType camcorder, char **err_attr_name, const char *attribute_name, ...)
357 int ret = MM_ERROR_NONE;
359 return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
361 va_start(var_args, attribute_name);
362 ret = _mmcamcorder_get_attributes(camcorder, err_attr_name, attribute_name, var_args);
369 int mm_camcorder_set_attributes(MMHandleType camcorder, char **err_attr_name, const char *attribute_name, ...)
372 int ret = MM_ERROR_NONE;
374 return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
376 va_start(var_args, attribute_name);
377 ret = _mmcamcorder_set_attributes(camcorder, err_attr_name, attribute_name, var_args);
384 int mm_camcorder_get_attribute_info(MMHandleType camcorder, const char *attribute_name, MMCamAttrsInfo *info)
386 return _mmcamcorder_get_attribute_info(camcorder, attribute_name, info);
389 int mm_camcorder_get_fps_list_by_resolution(MMHandleType camcorder, int width, int height, MMCamAttrsInfo *fps_info)
391 return _mmcamcorder_get_fps_array_by_resolution(camcorder, width, height, fps_info);
395 int mm_camcorder_init_focusing(MMHandleType camcorder)
397 int error = MM_ERROR_NONE;
399 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
401 error = _mmcamcorder_init_focusing(camcorder);
407 int mm_camcorder_start_focusing(MMHandleType camcorder)
409 int error = MM_ERROR_NONE;
411 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
413 /* TODO : Add direction parameter */
415 error = _mmcamcorder_adjust_focus(camcorder, MM_CAMCORDER_MF_LENS_DIR_FORWARD);
421 int mm_camcorder_stop_focusing(MMHandleType camcorder)
423 int error = MM_ERROR_NONE;
425 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
427 error = _mmcamcorder_stop_focusing(camcorder);
432 void mm_camcorder_emit_signal(MMHandleType camcorder, const char *object_name,
433 const char *interface_name, const char *signal_name, int value)
435 mmf_return_if_fail((void *)camcorder);
437 _mmcamcorder_emit_signal(camcorder, object_name, interface_name, signal_name, value);
442 int mm_camcorder_check_codec_fileformat_compatibility(const char *codec_type, int codec, int file_format)
444 mmf_return_val_if_fail(codec_type, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
446 return _mmcamcorder_check_codec_fileformat_compatibility(codec_type, codec, file_format);