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 ===============================================================================*/
32 #include <mm_attrs_private.h>
33 #include "mm_camcorder.h"
34 #include "mm_camcorder_internal.h"
37 /*===============================================================================
38 | FUNCTION DEFINITIONS |
39 ===============================================================================*/
40 /*-------------------------------------------------------------------------------
41 | GLOBAL FUNCTION DEFINITIONS: |
42 -------------------------------------------------------------------------------*/
43 int mm_camcorder_create(MMHandleType *camcorder, MMCamPreset *info)
45 int error = MM_ERROR_NONE;
47 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
48 mmf_return_val_if_fail((void *)info, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
54 __ta__("_mmcamcorder_create",
55 error = _mmcamcorder_create(camcorder, info);
58 _mmcam_dbg_err("END");
64 int mm_camcorder_destroy(MMHandleType camcorder)
66 int error = MM_ERROR_NONE;
68 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
72 __ta__("_mmcamcorder_destroy",
73 error = _mmcamcorder_destroy(camcorder);
76 MMTA_ACUM_ITEM_SHOW_RESULT_TO(MMTA_SHOW_FILE);
79 _mmcam_dbg_err("END!!!");
85 int mm_camcorder_realize(MMHandleType camcorder)
87 int error = MM_ERROR_NONE;
89 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
93 if(((mmf_camcorder_t *)camcorder)->sync_state_change) {
94 __ta__("_mmcamcorder_realize",
95 error = _mmcamcorder_realize(camcorder);
98 /* After sending command, this function just return immediately. */
99 error = _mmcamcorder_append_simple_command(camcorder, _MMCAMCORDER_CMD_REALIZE);
102 _mmcam_dbg_err("END");
108 int mm_camcorder_unrealize(MMHandleType camcorder)
110 int error = MM_ERROR_NONE;
112 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
116 if(((mmf_camcorder_t *)camcorder)->sync_state_change) {
117 __ta__("_mmcamcorder_unrealize",
118 error = _mmcamcorder_unrealize(camcorder);
121 /* After sending command, this function just return immediately. */
122 error = _mmcamcorder_append_simple_command(camcorder, _MMCAMCORDER_CMD_UNREALIZE);
125 _mmcam_dbg_err("END");
131 int mm_camcorder_start(MMHandleType camcorder)
133 int error = MM_ERROR_NONE;
135 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
139 if(((mmf_camcorder_t *)camcorder)->sync_state_change) {
140 __ta__("_mmcamcorder_start",
141 error = _mmcamcorder_start(camcorder);
144 /* After sending command, this function just return immediately. */
145 error = _mmcamcorder_append_simple_command(camcorder, _MMCAMCORDER_CMD_START);
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 if(((mmf_camcorder_t *)camcorder)->sync_state_change) {
163 __ta__("_mmcamcorder_stop",
164 error = _mmcamcorder_stop(camcorder);
167 /* After sending command, this function just return immediately. */
168 error = _mmcamcorder_append_simple_command(camcorder, _MMCAMCORDER_CMD_STOP);
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 __ta__("_mmcamcorder_capture_start",
186 error = _mmcamcorder_capture_start(camcorder);
189 _mmcam_dbg_err("END");
195 int mm_camcorder_capture_stop(MMHandleType camcorder)
197 int error = MM_ERROR_NONE;
199 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
203 __ta__("_mmcamcorder_capture_stop",
204 error = _mmcamcorder_capture_stop(camcorder);
207 _mmcam_dbg_err("END");
213 int mm_camcorder_record(MMHandleType camcorder)
215 int error = MM_ERROR_NONE;
217 mmf_return_val_if_fail((void*)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
221 __ta__("_mmcamcorder_record",
222 error = _mmcamcorder_record(camcorder);
225 _mmcam_dbg_err("END");
231 int mm_camcorder_pause(MMHandleType camcorder)
233 int error = MM_ERROR_NONE;
235 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
239 __ta__("_mmcamcorder_pause",
240 error = _mmcamcorder_pause(camcorder);
243 _mmcam_dbg_err("END");
249 int mm_camcorder_commit(MMHandleType camcorder)
251 int error = MM_ERROR_NONE;
253 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
257 MMTA_ACUM_ITEM_BEGIN("Real Commit Time", 0);
259 if(((mmf_camcorder_t *)camcorder)->sync_state_change) {
260 __ta__("_mmcamcorder_stop",
261 error = _mmcamcorder_commit(camcorder);
264 /* After sending command, this function just return immediately. */
265 error = _mmcamcorder_append_simple_command(camcorder, _MMCAMCORDER_CMD_COMMIT);
268 _mmcam_dbg_err("END");
274 int mm_camcorder_cancel(MMHandleType camcorder)
276 int error = MM_ERROR_NONE;
278 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
282 __ta__("_mmcamcorder_cancel",
283 error = _mmcamcorder_cancel(camcorder);
286 _mmcam_dbg_err("END");
292 int mm_camcorder_set_message_callback(MMHandleType camcorder, MMMessageCallback callback, void *user_data)
294 int error = MM_ERROR_NONE;
296 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
298 error = _mmcamcorder_set_message_callback(camcorder, callback, user_data);
304 int mm_camcorder_set_video_stream_callback(MMHandleType camcorder, mm_camcorder_video_stream_callback callback, void* user_data)
306 int error = MM_ERROR_NONE;
308 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
310 error = _mmcamcorder_set_video_stream_callback(camcorder, callback, user_data);
316 int mm_camcorder_set_audio_stream_callback(MMHandleType camcorder, mm_camcorder_audio_stream_callback callback, void* user_data)
318 int error = MM_ERROR_NONE;
320 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
322 error = _mmcamcorder_set_audio_stream_callback(camcorder, callback, user_data);
328 int mm_camcorder_set_video_capture_callback(MMHandleType camcorder, mm_camcorder_video_capture_callback callback, void* user_data)
330 int error = MM_ERROR_NONE;
332 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT );
334 error = _mmcamcorder_set_video_capture_callback(camcorder, callback, user_data);
340 int mm_camcorder_get_state(MMHandleType camcorder, MMCamcorderStateType *status)
342 int ret = MM_ERROR_NONE;
345 _mmcam_dbg_warn("Empty handle.");
346 return MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
349 *status = _mmcamcorder_get_state(camcorder);
356 int mm_camcorder_get_attributes(MMHandleType camcorder, char **err_attr_name, const char *attribute_name, ...)
359 int ret = MM_ERROR_NONE;
361 return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
363 va_start(var_args, attribute_name);
364 ret = _mmcamcorder_get_attributes(camcorder, err_attr_name, attribute_name, var_args);
371 int mm_camcorder_set_attributes(MMHandleType camcorder, char **err_attr_name, const char *attribute_name, ...)
374 int ret = MM_ERROR_NONE;
376 return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
378 va_start (var_args, attribute_name);
379 ret = _mmcamcorder_set_attributes(camcorder, err_attr_name, attribute_name, var_args);
386 int mm_camcorder_get_attribute_info(MMHandleType camcorder, const char *attribute_name, MMCamAttrsInfo *info)
388 return _mmcamcorder_get_attribute_info(camcorder, attribute_name, info);
392 int mm_camcorder_init_focusing(MMHandleType camcorder)
394 int error = MM_ERROR_NONE;
396 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
398 error = _mmcamcorder_init_focusing(camcorder);
404 int mm_camcorder_start_focusing( MMHandleType camcorder )
406 int error = MM_ERROR_NONE;
408 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
410 /* TODO : Add direction parameter */
412 error = _mmcamcorder_adjust_focus(camcorder, MM_CAMCORDER_MF_LENS_DIR_FORWARD);
418 int mm_camcorder_stop_focusing(MMHandleType camcorder)
420 int error = MM_ERROR_NONE;
422 mmf_return_val_if_fail((void *)camcorder, MM_ERROR_CAMCORDER_INVALID_ARGUMENT);
424 error = _mmcamcorder_stop_focusing(camcorder);