2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include "cam_debug.h"
22 #include "cam_property.h"
23 #include "cam_typeconverter.h"
25 typedef struct _CamMMHandle {
31 static unsigned int g_caps = 0;
32 static int g_caps_cb_cnt = 0;
35 static void __get_iso_cb(camera_attr_iso_e iso, void *user_data);
36 static void __get_effect_cb(camera_attr_effect_mode_e effect, void *user_data);
37 static void __get_fps_cb(camera_attr_fps_e fps, void *user_data);
38 static void __get_wb_cb(camera_attr_whitebalance_e wb, void *user_data);
39 static void __get_focus_cb(camera_attr_af_mode_e focus, void *user_data);
40 static void __get_metering_cb(camera_attr_exposure_mode_e metering, void *user_data);
41 static void __get_scene_cb(camera_attr_scene_mode_e scene, void *user_data);
42 static void __get_flash_cb(camera_attr_flash_mode_e flash, void *user_data);
43 static void __get_capture_res_cb(int width, int height, void *user_data);
44 static void __get_recording_res_cb(int width, int height, void *user_data);
48 void rec_detail_error_get(int err_no)
51 case RECORDER_ERROR_INVALID_PARAMETER:
52 DEBUG_TRACE("RECORDER_ERROR_INVALID_PARAMETER");
54 case RECORDER_ERROR_INVALID_STATE:
55 DEBUG_TRACE("RECORDER_ERROR_INVALID_STATE");
57 case RECORDER_ERROR_OUT_OF_MEMORY:
58 DEBUG_TRACE("RECORDER_ERROR_OUT_OF_MEMORY");
60 case RECORDER_ERROR_DEVICE:
61 DEBUG_TRACE("RECORDER_ERROR_DEVICE");
63 case RECORDER_ERROR_INVALID_OPERATION:
64 DEBUG_TRACE("RECORDER_ERROR_INVALID_OPERATION");
66 case RECORDER_ERROR_SOUND_POLICY:
67 DEBUG_TRACE("RECORDER_ERROR_SOUND_POLICY");
69 case RECORDER_ERROR_NONE:
70 DEBUG_TRACE("NO ERROR");
73 DEBUG_TRACE("unknown error,err_no = %d", err_no);
78 void cam_detail_error_get(int err_no)
81 case CAMERA_ERROR_INVALID_PARAMETER:
82 DEBUG_TRACE("CAMERA_ERROR_INVALID_PARAMETER");
84 case CAMERA_ERROR_INVALID_STATE:
85 DEBUG_TRACE("CAMERA_ERROR_INVALID_STATE");
87 case CAMERA_ERROR_OUT_OF_MEMORY:
88 DEBUG_TRACE("CAMERA_ERROR_OUT_OF_MEMORY");
90 case CAMERA_ERROR_DEVICE:
91 DEBUG_TRACE("CAMERA_ERROR_DEVICE");
93 case CAMERA_ERROR_INVALID_OPERATION:
94 DEBUG_TRACE("CAMERA_ERROR_INVALID_OPERATION");
96 case CAMERA_ERROR_SOUND_POLICY:
97 DEBUG_TRACE("CAMERA_ERROR_SOUND_POLICY");
99 case CAMERA_ERROR_NONE:
100 DEBUG_TRACE("NO ERROR");
103 DEBUG_TRACE("unknown error,err_no = %d", err_no);
109 static CamMMHandle *g_mm_handle = NULL;
111 int cam_mm_get_cam_state(void)
113 g_return_val_if_fail(g_mm_handle, FALSE);
114 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
116 camera_state_e state = 0;
117 ret = camera_get_state(g_mm_handle->hcam, &state);
118 if (ret == CAMERA_ERROR_NONE)
124 int cam_mm_get_state(void)
126 g_return_val_if_fail(g_mm_handle, FALSE);
128 camera_state_e state = 0;
129 struct appdata *ad = (struct appdata *)cam_appdata_get();
130 g_return_val_if_fail(ad, FALSE);
131 CamAppData *camapp = ad->camapp_handle;
132 g_return_val_if_fail(camapp, FALSE);
133 if (camapp->camera_mode == CAM_CAMERA_MODE) {
134 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
135 ret = camera_get_state(g_mm_handle->hcam, (camera_state_e *)&state);
136 if (ret == CAMERA_ERROR_NONE)
141 if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
142 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
143 ret = recorder_get_state(g_mm_handle->hrec, (recorder_state_e *)&state);
144 if (ret == RECORDER_ERROR_NONE)
152 int cam_mm_get_rec_state(void)
154 g_return_val_if_fail(g_mm_handle, FALSE);
155 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
157 recorder_state_e state = 0;
158 ret = recorder_get_state(g_mm_handle->hrec, (recorder_state_e *)&state);
159 if (ret == RECORDER_ERROR_NONE)
165 gboolean cam_mm_get_video_device(int *device)
167 g_return_val_if_fail(g_mm_handle, FALSE);
169 if (g_mm_handle->hdev > CAMERA_DEVICE_CAMERA1)
172 *device = g_mm_handle->hdev;
173 DEBUG_TRACE("%d,%d",g_mm_handle->hdev,*device);
177 gboolean cam_mm_get_video_size(int *width, int *height)
180 g_return_val_if_fail(g_mm_handle, FALSE);
181 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
182 ret = camera_get_preview_resolution(g_mm_handle->hcam, width, height);
184 if (ret != CAMERA_ERROR_NONE) {
185 DEBUG_TRACE("camera_get_preview_resolution error code = %d" , ret);
192 gboolean cam_mm_set_video_size(int width, int height)
195 g_return_val_if_fail(g_mm_handle, FALSE);
196 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
198 ret = camera_set_preview_resolution(g_mm_handle->hcam, width, height);
200 if (ret != CAMERA_ERROR_NONE) {
201 DEBUG_TRACE("set attr failed - code[%x]\n", ret);
207 gboolean cam_mm_get_zoom(int *value)
210 g_return_val_if_fail(g_mm_handle, FALSE);
211 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
212 ret = camera_attr_get_zoom(g_mm_handle->hcam, value);
220 gboolean cam_mm_set_zoom(int value)
223 g_return_val_if_fail(g_mm_handle, FALSE);
224 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
226 ret = camera_attr_set_zoom(g_mm_handle->hcam, value);
234 gboolean cam_mm_get_wdr(int *value)
236 /*TODO:we do not need set this attribute now*/
242 gboolean cam_mm_set_wdr(int value)
244 /*TODO:we do not need set this attribute now*/
250 gboolean cam_mm_is_support_anti_hand_shake()
253 g_return_val_if_fail(g_mm_handle, FALSE);
254 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
256 ret = camera_attr_is_supported_anti_shake(g_mm_handle->hcam);
262 gboolean cam_mm_get_anti_hand_shake(gboolean *value)
265 g_return_val_if_fail(g_mm_handle, FALSE);
266 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
268 ret = camera_attr_is_enabled_anti_shake(g_mm_handle->hcam, (bool *)value);
269 if (ret != CAMERA_ERROR_NONE) {
276 gboolean cam_mm_set_anti_hand_shake(gboolean value)
279 g_return_val_if_fail(g_mm_handle, FALSE);
280 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
282 ret = camera_attr_enable_anti_shake(g_mm_handle->hcam, value);
283 if (ret != CAMERA_ERROR_NONE) {
290 gboolean cam_mm_get_auto_exposure(int *value)
293 g_return_val_if_fail(g_mm_handle, FALSE);
294 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
296 ret = camera_attr_get_exposure_mode(g_mm_handle->hcam, (camera_attr_exposure_mode_e *)value);
297 if (ret != CAMERA_ERROR_NONE) {
303 gboolean cam_mm_set_auto_exposure(int value)
306 g_return_val_if_fail(g_mm_handle, FALSE);
307 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
309 ret = camera_attr_set_exposure_mode(g_mm_handle->hcam, (camera_attr_exposure_mode_e)value);
310 if (ret != CAMERA_ERROR_NONE) {
316 gboolean cam_mm_set_fps(camera_attr_fps_e value)
319 g_return_val_if_fail(g_mm_handle, FALSE);
320 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
322 ret = camera_attr_set_preview_fps(g_mm_handle->hcam, value);
323 if (ret != CAMERA_ERROR_NONE) {
324 cam_detail_error_get(ret);
330 gboolean cam_mm_get_iso(int *value)
333 g_return_val_if_fail(g_mm_handle, FALSE);
334 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
336 ret = camera_attr_get_iso(g_mm_handle->hcam, (camera_attr_iso_e *)value);
337 if (ret != CAMERA_ERROR_NONE) {
343 gboolean cam_mm_set_iso(int value)
346 g_return_val_if_fail(g_mm_handle, FALSE);
347 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
349 ret = camera_attr_set_iso(g_mm_handle->hcam, (camera_attr_iso_e)value);
350 if (ret != CAMERA_ERROR_NONE) {
356 gboolean cam_mm_get_focus_mode(int *value)
359 g_return_val_if_fail(g_mm_handle, FALSE);
360 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
362 ret = camera_attr_get_af_mode(g_mm_handle->hcam, (camera_attr_af_mode_e *)value);
363 if (ret != CAMERA_ERROR_NONE) {
371 gboolean cam_mm_set_focus_mode(int value)
374 ret = camera_attr_set_af_mode(g_mm_handle->hcam, (camera_attr_af_mode_e)value);
375 if (ret != CAMERA_ERROR_NONE) {
382 gboolean cam_mm_get_zoom_valid_intrange(int *min, int *max)
385 g_return_val_if_fail(g_mm_handle, FALSE);
386 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
388 ret = camera_attr_get_zoom_range(g_mm_handle->hcam, min, max);
389 if (ret != CAMERA_ERROR_NONE) {
398 gboolean cam_mm_get_brightless_valid_intrange(int *min, int *max)
401 g_return_val_if_fail(g_mm_handle, FALSE);
402 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
404 ret = camera_attr_get_brightness_range(g_mm_handle->hcam, min, max);
405 if (ret != CAMERA_ERROR_NONE) {
414 gboolean cam_mm_get_exposure_valid_intrange(int *min, int *max)
417 g_return_val_if_fail(g_mm_handle, FALSE);
418 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
420 ret = camera_attr_get_exposure_range(g_mm_handle->hcam, min, max);
421 if (ret != CAMERA_ERROR_NONE) {
430 gboolean cam_mm_set_af_area(int x, int y, int w, int h)
433 g_return_val_if_fail(g_mm_handle, FALSE);
434 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
436 DEBUG_TRACE("\n Touch AF area ![ x,y,width,height: %d,%d,%d,%d ]\n", x, y, w, h);
438 ret = camera_attr_set_af_area(g_mm_handle->hcam, x, y);
439 if (ret != CAMERA_ERROR_NONE) {
440 DEBUG_TRACE("camera_attr_set_af_area failed [%d]\n", ret);
447 gboolean cam_mm_get_detect_mode(int *value)
449 #ifndef TODO_SURRPORT
450 /*TODO:framework not surrport it*/
455 gboolean cam_mm_set_detect_mode(int value)
457 /*TODO:libmm-camcorder not surrport it*/
463 gboolean cam_mm_get_image_enc_quality(int *value)
466 g_return_val_if_fail(g_mm_handle, FALSE);
467 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
469 ret = camera_attr_get_image_quality(g_mm_handle->hcam, value);
470 if (ret != CAMERA_ERROR_NONE) {
478 gboolean cam_mm_set_image_enc_quality(int value)
481 g_return_val_if_fail(g_mm_handle, FALSE);
482 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
484 ret = camera_attr_set_image_quality(g_mm_handle->hcam, value);
485 if (ret != CAMERA_ERROR_NONE) {
493 gboolean cam_mm_get_flash(int *value)
496 g_return_val_if_fail(g_mm_handle, FALSE);
497 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
499 ret = camera_attr_get_flash_mode(g_mm_handle->hcam, (camera_attr_flash_mode_e *)value);
500 if (ret != CAMERA_ERROR_NONE) {
507 gboolean cam_mm_set_flash(int value)
510 g_return_val_if_fail(g_mm_handle, FALSE);
511 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
513 ret = camera_attr_set_flash_mode(g_mm_handle->hcam, (camera_attr_flash_mode_e)value);
514 if (ret != CAMERA_ERROR_NONE) {
521 gboolean cam_mm_enable_auto_contrast(gboolean enable)
524 g_return_val_if_fail(g_mm_handle, FALSE);
525 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
527 ret = camera_attr_enable_auto_contrast(g_mm_handle->hcam, enable);
528 if (ret != CAMERA_ERROR_NONE) {
535 gboolean cam_mm_is_enabled_auto_contrast(gboolean *enable)
538 g_return_val_if_fail(g_mm_handle, FALSE);
539 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
541 ret = camera_attr_is_enabled_auto_contrast(g_mm_handle->hcam, (bool *)enable);
542 if (ret != CAMERA_ERROR_NONE) {
549 gboolean cam_mm_get_brightness(int *value)
552 g_return_val_if_fail(g_mm_handle, FALSE);
553 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
555 ret = camera_attr_get_brightness(g_mm_handle->hcam, value);
556 if (ret != CAMERA_ERROR_NONE) {
564 gboolean cam_mm_set_brightness(int value)
567 g_return_val_if_fail(g_mm_handle, FALSE);
568 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
570 ret = camera_attr_set_brightness(g_mm_handle->hcam, value);
571 if (ret != CAMERA_ERROR_NONE) {
578 gboolean cam_mm_get_white_balance(int *value)
581 g_return_val_if_fail(g_mm_handle, FALSE);
582 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
584 ret = camera_attr_get_whitebalance(g_mm_handle->hcam, (camera_attr_whitebalance_e *)value);
585 if (ret != CAMERA_ERROR_NONE) {
592 gboolean cam_mm_set_white_balance(int value)
595 g_return_val_if_fail(g_mm_handle, FALSE);
596 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
598 ret = camera_attr_set_whitebalance(g_mm_handle->hcam, (camera_attr_whitebalance_e)value);
599 if (ret != CAMERA_ERROR_NONE) {
606 gboolean cam_mm_get_effect(int *value)
609 g_return_val_if_fail(g_mm_handle, FALSE);
610 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
612 ret = camera_attr_get_effect(g_mm_handle->hcam, (camera_attr_effect_mode_e *)value);
613 if (ret != CAMERA_ERROR_NONE) {
621 gboolean cam_mm_set_effect(int value)
624 g_return_val_if_fail(g_mm_handle, FALSE);
625 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
627 ret = camera_attr_set_effect(g_mm_handle->hcam, (camera_attr_effect_mode_e)value);
628 if (ret != CAMERA_ERROR_NONE) {
636 gboolean cam_mm_get_program_mode(int *value)
639 g_return_val_if_fail(g_mm_handle, FALSE);
640 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
642 ret = camera_attr_get_scene_mode(g_mm_handle->hcam, (camera_attr_scene_mode_e *)value);
643 if (ret != CAMERA_ERROR_NONE) {
651 gboolean cam_mm_set_program_mode(int value)
654 g_return_val_if_fail(g_mm_handle, FALSE);
655 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
657 ret = camera_attr_set_scene_mode(g_mm_handle->hcam, value);
658 if (ret != CAMERA_ERROR_NONE) {
666 gboolean cam_mm_set_outdoor_visibility(gboolean on)
670 if (cam_mm_get_mdnie_mode(&scenario) == FALSE || scenario != SCENARIO_CAMERA) {
671 if (cam_mm_set_mdnie_mode(TRUE) == FALSE) {
672 cam_critical(LOG_MM, "device_set_image_enhance_scenario() fail");
678 if (device_set_image_enhance_outdoor(OUTDOOR_ON) < 0) {
679 cam_critical(LOG_MM, "device_set_image_enhance_outdoor(on) fail");
683 if (device_set_image_enhance_outdoor(OUTDOOR_OFF) < 0) {
684 cam_critical(LOG_MM, "device_set_image_enhance_outdoor(off) fail");
692 gboolean cam_mm_get_outdoor_visibility(gboolean *on)
695 if ((val = device_get_image_enhance_outdoor()) < 0)
697 if (val == OUTDOOR_OFF)
705 gboolean cam_mm_is_supported_outdoor_visibility(void)
707 if (device_get_image_enhance_info() < 0)
713 gboolean cam_mm_set_mdnie_mode(gboolean on)
715 DEBUG_TRACE("mode :%d", on);
716 if (cam_mm_is_supported_outdoor_visibility()) {
719 if (device_set_image_enhance_scenario(SCENARIO_CAMERA) < 0) {
720 cam_critical(LOG_MM, "device_set_image_enhance_scenario(SCENARIO_CAMERA) fail");
724 if (device_set_image_enhance_scenario(SCENARIO_UI) < 0) {
725 cam_critical(LOG_MM, "device_set_image_enhance_scenario(SCENARIO_UI) fail");
730 cam_critical(LOG_MM, "cam_mm_is_supported_outdoor_visibility() false");
737 gboolean cam_mm_get_mdnie_mode(int *val)
740 if ((ret = device_get_image_enhance_scenario()) < 0) {
741 cam_critical(LOG_MM, "device_get_image_enhance_scenario() fail");
751 gboolean cam_mm_set_audio_recording(gboolean b_on)
755 g_return_val_if_fail(g_mm_handle, FALSE);
756 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
758 ret = recorder_attr_set_mute(g_mm_handle->hrec, FALSE);
760 ret = recorder_attr_set_mute(g_mm_handle->hrec, TRUE);
762 if (ret != RECORDER_ERROR_NONE) {
763 DEBUG_TRACE("set attr failed - code[%x]\n", ret);
770 gboolean cam_mm_set_image_count(int value)
775 gboolean cam_mm_get_recommanded_preview_size(int *width, int *height)
778 g_return_val_if_fail(g_mm_handle, FALSE);
779 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
781 ret = camera_get_recommended_preview_resolution(g_mm_handle->hcam, width, height);
783 if (ret != CAMERA_ERROR_NONE) {
784 DEBUG_TRACE("camera_get_recommended_preview_resolution failed - code[%x] name[%s]\n", ret);
791 gboolean cam_mm_get_image_size(int *width, int *height)
794 g_return_val_if_fail(g_mm_handle, FALSE);
795 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
797 ret = camera_get_capture_resolution(g_mm_handle->hcam, width, height);
799 if (ret != CAMERA_ERROR_NONE) {
800 DEBUG_TRACE("set attr failed - code[%x] name[%s]\n", ret);
806 gboolean cam_mm_set_image_size(int width, int height)
809 g_return_val_if_fail(g_mm_handle, FALSE);
810 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
812 g_return_val_if_fail(g_mm_handle, FALSE);
813 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
815 ret = camera_set_capture_resolution(g_mm_handle->hcam, width, height);
817 if (ret != CAMERA_ERROR_NONE) {
818 DEBUG_TRACE("cam_mm_set_image_size failed");
824 gboolean cam_mm_set_video_encoder_bitrate(int bitrate)
826 recorder_error_e ret;
827 g_return_val_if_fail(g_mm_handle, FALSE);
828 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
830 ret = recorder_attr_set_video_encoder_bitrate(g_mm_handle->hrec, bitrate);
831 if (ret != RECORDER_ERROR_NONE) {
837 gboolean cam_mm_set_audio_encoder_bitrate(int bitrate)
839 recorder_error_e ret;
840 g_return_val_if_fail(g_mm_handle, FALSE);
841 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
843 ret = recorder_attr_set_audio_encoder_bitrate(g_mm_handle->hrec, bitrate);
844 if (ret != RECORDER_ERROR_NONE) {
850 gboolean cam_mm_set_display_device(int display_device, void *xid)
853 g_return_val_if_fail(g_mm_handle, FALSE);
854 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
856 ret = camera_set_display(g_mm_handle->hcam, display_device, xid);
857 if (ret != CAMERA_ERROR_NONE) {
864 gboolean cam_mm_set_display_rotate(int rotate)
867 g_return_val_if_fail(g_mm_handle, FALSE);
868 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
870 ret = camera_set_x11_display_rotation(g_mm_handle->hcam, rotate);
871 if (ret != CAMERA_ERROR_NONE) {
878 gboolean cam_mm_set_camera_rotate(int camera_rotate)
881 g_return_val_if_fail(g_mm_handle, FALSE);
882 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
884 #ifdef CAMERA_MACHINE_I686
885 ret = camera_attr_set_stream_rotation(g_mm_handle->hcam, 0);
887 ret = camera_attr_set_stream_rotation(g_mm_handle->hcam, camera_rotate);
889 if (ret != CAMERA_ERROR_NONE) {
890 cam_detail_error_get(ret);
897 gboolean cam_mm_get_display_geometry_method(int *value)
900 g_return_val_if_fail(g_mm_handle, FALSE);
901 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
903 ret = camera_get_x11_display_mode(g_mm_handle->hcam, (camera_display_mode_e *)value);
904 if (ret != CAMERA_ERROR_NONE) {
911 gboolean cam_mm_set_display_geometry_method(int value)
914 g_return_val_if_fail(g_mm_handle, FALSE);
915 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
917 ret = camera_set_x11_display_mode(g_mm_handle->hcam, (camera_display_mode_e)value);
918 if (ret != CAMERA_ERROR_NONE) {
924 gboolean cam_mm_set_display_visible(gboolean visible)
928 g_return_val_if_fail(g_mm_handle, FALSE);
929 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
931 ret = camera_set_x11_display_visible(g_mm_handle->hcam, visible);
932 if (ret != RECORDER_ERROR_NONE) {
939 gboolean cam_mm_set_filename(const gchar *filename)
942 /*char *err_name = NULL;*/
944 g_return_val_if_fail(g_mm_handle, FALSE);
945 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
948 ret = recorder_set_filename(g_mm_handle->hrec, filename);
949 if (ret != RECORDER_ERROR_NONE) {
960 gboolean cam_mm_get_filename(char **filename, gint *size)
964 g_return_val_if_fail(g_mm_handle, FALSE);
965 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
967 ret = recorder_get_filename(g_mm_handle->hrec, filename);
968 if (ret != RECORDER_ERROR_NONE) {
975 gboolean cam_mm_get_max_size(int *value)
977 recorder_error_e ret;
978 g_return_val_if_fail(g_mm_handle, FALSE);
979 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
980 ret = recorder_attr_get_time_limit(g_mm_handle->hrec, value);
981 if (ret != RECORDER_ERROR_NONE) {
988 gboolean cam_mm_get_max_time(int *value)
990 recorder_error_e ret;
991 g_return_val_if_fail(g_mm_handle, FALSE);
992 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
994 ret = recorder_attr_get_time_limit(g_mm_handle->hrec, value);
995 if (ret != RECORDER_ERROR_NONE) {
1003 gboolean cam_mm_set_max_size(int max_val)
1006 recorder_error_e ret;
1007 g_return_val_if_fail(g_mm_handle, FALSE);
1008 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1010 ret = recorder_attr_set_size_limit(g_mm_handle->hrec, max_val);
1011 if (ret != RECORDER_ERROR_NONE) {
1018 gboolean cam_mm_set_max_time(int max_val)
1020 recorder_error_e ret;
1021 g_return_val_if_fail(g_mm_handle, FALSE);
1022 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1023 ret = recorder_attr_set_time_limit(g_mm_handle->hrec, max_val);
1024 if (ret != RECORDER_ERROR_NONE) {
1031 gboolean cam_mm_get_tag_enable(int *value)
1034 g_return_val_if_fail(g_mm_handle, FALSE);
1035 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1037 ret = camera_attr_is_enabled_tag(g_mm_handle->hcam, (bool *)value);
1038 if (ret != CAMERA_ERROR_NONE) {
1046 gboolean cam_mm_set_tag_enable(gboolean bvalue)
1049 g_return_val_if_fail(g_mm_handle, FALSE);
1050 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1052 ret = camera_attr_enable_tag(g_mm_handle->hcam, (bool)bvalue);
1053 if (ret != CAMERA_ERROR_NONE) {
1060 gboolean cam_mm_set_tag_img_orient(int orient)
1062 g_return_val_if_fail(g_mm_handle, FALSE);
1063 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1065 ret = camera_attr_set_tag_orientation(g_mm_handle->hcam, (camera_attr_tag_orientation_e)orient);
1066 if (ret != CAMERA_ERROR_NONE) {
1067 cam_detail_error_get(ret);
1075 gboolean cam_mm_set_file_format(int format)
1077 recorder_error_e ret;
1078 g_return_val_if_fail(g_mm_handle, FALSE);
1079 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1080 ret = recorder_set_file_format(g_mm_handle->hrec, format);
1081 if (ret != RECORDER_ERROR_NONE) {
1082 DEBUG_TRACE("recorder_set_file_format failed - [%d]", ret);
1089 gboolean cam_mm_set_video_profile(void)
1093 g_return_val_if_fail(g_mm_handle, FALSE);
1094 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1096 e = recorder_attr_set_audio_device(g_mm_handle->hrec, RECORDER_AUDIO_DEVICE_MIC);
1097 if (e != RECORDER_ERROR_NONE) {
1098 DEBUG_TRACE("set attr failed - code[%x]\n", e);
1099 rec_detail_error_get(e);
1106 gboolean cam_mm_set_codec(int audio_codec, int video_codec)
1110 g_return_val_if_fail(g_mm_handle, FALSE);
1111 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1113 e = recorder_set_audio_encoder(g_mm_handle->hrec, audio_codec);
1114 if (e != RECORDER_ERROR_NONE) {
1115 DEBUG_TRACE("set attr failed - code[%x]\n", ret);
1116 rec_detail_error_get(ret);
1119 e = recorder_set_video_encoder(g_mm_handle->hrec, video_codec);
1120 if (e != RECORDER_ERROR_NONE) {
1121 DEBUG_TRACE("set attr failed - code[%x]\n", ret);
1127 gboolean cam_mm_set_audio_source(int sample_rate, int channel)
1131 g_return_val_if_fail(g_mm_handle, FALSE);
1132 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1133 e = recorder_attr_set_audio_samplerate(g_mm_handle->hrec, sample_rate);
1134 if (e != RECORDER_ERROR_NONE) {
1135 DEBUG_TRACE("set attr failed - code[%x]\n", ret);
1138 e = recorder_attr_set_audio_channel(g_mm_handle->hrec, channel);
1139 if (e != RECORDER_ERROR_NONE) {
1140 DEBUG_TRACE("set attr failed - code[%x]\n", ret);
1146 gboolean cam_mm_set_video_source_format(int format)
1148 if (format <= CAMERA_PIXEL_FORMAT_INVALID || format > CAMERA_PIXEL_FORMAT_JPEG)
1152 g_return_val_if_fail(g_mm_handle, FALSE);
1153 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1154 err = camera_set_preview_format(g_mm_handle->hcam, format);
1156 DEBUG_TRACE("!!!!!!!!!!!!!!!! format:%d !!!!!!!!!!!!!!!!!!!", format);
1157 if (err != CAMERA_ERROR_NONE) {
1164 gboolean cam_mm_get_video_source_format(const char *attribute_name, int *format)
1166 DEBUG_TRACE("attribute_name = %s", attribute_name);
1168 g_return_val_if_fail(g_mm_handle, FALSE);
1169 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1170 err = camera_get_preview_format(g_mm_handle->hcam, format);
1171 if (err != CAMERA_ERROR_NONE) {
1178 gboolean cam_mm_get_front_cam_display_rotate_value(int *value, int *rotate)
1181 g_return_val_if_fail(g_mm_handle, FALSE);
1182 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1183 err = camera_attr_get_lens_orientation(g_mm_handle->hcam, value);
1186 *rotate = CAMERA_ROTATION_NONE;
1189 *rotate = CAMERA_ROTATION_90;
1192 *rotate = CAMERA_ROTATION_180;
1195 *rotate = CAMERA_ROTATION_270;
1198 *rotate = CAMERA_ROTATION_NONE;
1201 if (err != CAMERA_ERROR_NONE) {
1210 gboolean cam_mm_get_scene_mode(camera_attr_scene_mode_e *mode)
1213 g_return_val_if_fail(g_mm_handle, FALSE);
1214 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1215 err = camera_attr_get_scene_mode(g_mm_handle->hcam, mode);
1216 if (err != CAMERA_ERROR_NONE) {
1223 gboolean cam_mm_set_scene_mode(camera_attr_scene_mode_e mode)
1226 g_return_val_if_fail(g_mm_handle, FALSE);
1227 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1228 err = camera_attr_set_scene_mode(g_mm_handle->hcam, mode);
1229 if (err != CAMERA_ERROR_NONE) {
1235 gboolean cam_mm_set_conti_shot_break(gboolean bvalue)
1238 g_return_val_if_fail(g_mm_handle, FALSE);
1239 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1241 err = camera_stop_continuous_capture(g_mm_handle->hcam);
1242 if (err != CAMERA_ERROR_NONE) {
1250 gboolean cam_mm_set_capture_format(int value)
1253 g_return_val_if_fail(g_mm_handle, FALSE);
1254 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1256 err = camera_set_capture_format(g_mm_handle->hcam, value);
1257 if (err != CAMERA_ERROR_NONE) {
1265 gboolean cam_mm_get_shutter_sound(int *value)
1267 /*todo:for lawer policy, capi could not surport it*/
1268 #ifndef TODO_SURRPORT
1269 return cam_mm_get_attr_int(MMCAM_SHUTTER_SOUND, value);
1275 gboolean cam_mm_set_shutter_sound(int value)
1277 /*todo:for lawer policy, capi could not surport it*/
1278 #ifndef TODO_SURRPORT
1279 return cam_mm_set_attr_int(MMCAM_SHUTTER_SOUND, value);
1286 gboolean cam_mm_remove_geo_tag(void)
1288 g_return_val_if_fail(g_mm_handle, FALSE);
1289 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1290 #ifdef TODO_SURRPORT
1292 ret = camera_attr_remove_geotag(g_mm_handle->hcam);
1293 if (ret != CAMERA_ERROR_NONE) {
1296 #endif /*TODO:capi has issue.if it fix, I will open it*/
1300 gboolean cam_mm_enable_geo_tag(gboolean value)
1303 g_return_val_if_fail(g_mm_handle, FALSE);
1304 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1306 ret = camera_attr_set_geotag(g_mm_handle->hcam, -1.0, -1.0, -1.0);
1308 ret = camera_attr_remove_geotag(g_mm_handle->hcam);
1310 if (ret != CAMERA_ERROR_NONE) {
1316 gboolean cam_mm_reset_recording_motion_fps()
1319 g_return_val_if_fail(g_mm_handle, FALSE);
1320 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1322 ret = recorder_attr_set_recording_motion_rate(g_mm_handle->hrec, DEFAULT_REC_FPS);
1323 if (ret != RECORDER_ERROR_NONE) {
1330 gboolean cam_mm_set_gps_data(double lat, double lon, double alt)
1333 g_return_val_if_fail(g_mm_handle, FALSE);
1334 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1335 e = camera_attr_set_geotag(g_mm_handle->hcam, lat, lon, alt);
1336 if (e != CAMERA_ERROR_NONE) {
1342 gboolean cam_mm_is_preview_started(int mode)
1344 g_return_val_if_fail(g_mm_handle, FALSE);
1345 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1348 mm_state = cam_mm_get_state();
1350 if ((CAM_CAMERA_MODE == mode && mm_state < CAMERA_STATE_PREVIEW)
1351 || (mode == CAM_CAMCORDER_MODE && mm_state < RECORDER_STATE_READY) ) {
1352 cam_critical(LOG_MM, "cur_state:%d", mm_state);
1358 gboolean cam_mm_preview_start(int mode)
1360 g_return_val_if_fail(g_mm_handle, FALSE);
1361 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1363 struct appdata *ad = (struct appdata *)cam_appdata_get();
1364 g_return_val_if_fail(ad, FALSE);
1366 int ret = (mode == CAM_CAMERA_MODE) ? CAMERA_ERROR_NONE : RECORDER_ERROR_NONE;
1367 if (CAM_CAMERA_MODE == mode) {
1369 ret = camera_start_preview(g_mm_handle->hcam);
1370 if (ret != CAMERA_ERROR_NONE) {
1371 if (ret == CAMERA_ERROR_SOUND_POLICY) {
1372 ad->fw_error_type = CAMERA_ERROR_SOUND_POLICY;
1373 } else if (ret == CAMERA_ERROR_SECURITY_RESTRICTED) {
1374 cam_app_mdm_syspopup(ad);
1377 cam_critical(LOG_MM, "camera_start_preview failed");
1381 cam_debug(LOG_MM, " ret : %d", ret);
1383 }else if (CAM_CAMCORDER_MODE == mode) {
1385 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1387 ret = recorder_prepare(g_mm_handle->hrec);
1388 if (ret != RECORDER_ERROR_NONE) {
1389 if (ret == RECORDER_ERROR_SOUND_POLICY) {
1390 ad->fw_error_type = RECORDER_ERROR_SOUND_POLICY;
1391 } else if (ret == RECORDER_ERROR_SECURITY_RESTRICTED) {
1392 cam_app_mdm_syspopup(ad);
1395 cam_critical(LOG_MM, "camera_start_preview failed");
1399 cam_debug(LOG_MM, " ret : %d", ret);
1406 gboolean cam_mm_preview_stop(int mode)
1409 g_return_val_if_fail(g_mm_handle, FALSE);
1410 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1412 if (CAM_CAMERA_MODE == mode) {
1413 state = cam_mm_get_cam_state();
1414 cam_critical(LOG_MM, " camera state : %d", state);
1415 /*todo:please consider recorder and camera*/
1420 case CAMERA_STATE_NONE:
1421 case CAMERA_STATE_CAPTURING:
1422 case CAMERA_STATE_CREATED:
1424 case CAMERA_STATE_PREVIEW:
1425 CHECK_MM_ERROR(camera_stop_preview(g_mm_handle->hcam));
1427 case CAMERA_STATE_CAPTURED:
1431 }else if (CAM_CAMCORDER_MODE == mode) {
1433 state = cam_mm_get_rec_state();
1434 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1435 cam_debug(LOG_MM, " camera state : %d", state);
1436 /*todo:please consider recorder and camera*/
1441 case RECORDER_STATE_NONE:
1442 case RECORDER_STATE_RECORDING:
1443 case RECORDER_STATE_PAUSED:
1446 case RECORDER_STATE_READY:
1447 CHECK_MM_ERROR(recorder_unprepare(g_mm_handle->hrec));
1450 case RECORDER_STATE_CREATED:
1460 gboolean cam_mm_is_created(void)
1462 debug_fenter(LOG_MM);
1469 gboolean cam_mm_create(int camera_type, int mode)
1471 CAM_TA_ACUM_ITEM_BEGIN("----cam_mm_create", 0);
1473 ("--------------------------------START----------------------------");
1474 DEBUG_TRACE("camera_type = %d" ,camera_type);
1476 cam_critical(LOG_MM, "The mm handle is already created");
1479 g_return_val_if_fail(g_mm_handle == NULL, FALSE);
1482 e = camera_create(camera_type, &hcam);
1483 if (e != CAMERA_ERROR_NONE) {
1484 DEBUG_TRACE("[ERROR] camera_create - error(%d)", e);
1487 g_return_val_if_fail(hcam, FALSE);
1488 recorder_h hrec = NULL;
1489 recorder_error_e re;
1490 re = recorder_create_videorecorder(hcam, &hrec);
1491 if (re != RECORDER_ERROR_NONE) {
1492 DEBUG_TRACE("[ERROR] camera_create - error(%d)", e);
1493 recorder_destroy(hrec);
1494 CHECK_MM_ERROR(camera_destroy(hcam));
1497 g_return_val_if_fail(hrec, FALSE);
1498 g_mm_handle = g_new0(CamMMHandle, 1);
1500 g_mm_handle->hcam = hcam;
1501 g_mm_handle->hdev = camera_type;
1502 g_mm_handle->hrec = hrec;
1504 DEBUG_TRACE("[ERROR] memory allocation failed", e);
1505 recorder_destroy(hrec);
1506 CHECK_MM_ERROR(camera_destroy(hcam));
1510 DEBUG_TRACE("camera_type = %d" , g_mm_handle->hdev);
1512 DEBUG_TRACE("--------------END---------------");
1513 CAM_TA_ACUM_ITEM_BEGIN("----cam_mm_create", 0);
1518 gboolean cam_mm_destory(void)
1520 g_return_val_if_fail(g_mm_handle, FALSE);
1522 if( g_mm_handle->hrec != 0){
1523 recorder_destroy(g_mm_handle->hrec);
1524 g_mm_handle->hrec = 0;
1527 if(g_mm_handle->hcam != 0){
1528 camera_destroy(g_mm_handle->hcam);
1529 g_mm_handle->hcam = 0;
1532 g_mm_handle->hdev = -1;
1534 g_free(g_mm_handle);
1540 gboolean cam_mm_continuous_capture_start(int count, int interval, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb , void *user_data)
1542 g_return_val_if_fail(g_mm_handle, FALSE);
1543 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1545 cam_debug(LOG_MM, "");
1546 CAM_TA_ACUM_ITEM_END(" camera key to capture start", 0);
1548 if (cam_mm_get_state() == CAMERA_STATE_PREVIEW) {
1549 CAM_TA_ACUM_ITEM_BEGIN("camera_start_continuous_capture", 0);
1550 CHECK_MM_ERROR(camera_start_continuous_capture(g_mm_handle->hcam, count, interval, capturing_cb, completed_cb, user_data));
1551 CAM_TA_ACUM_ITEM_END("camera_start_continuous_capture", 0);
1553 printf("[%s:%d] operation failed - state:%d \n", __func__, __LINE__, cam_mm_get_state());
1560 gboolean cam_mm_capture_start(camera_capturing_cb capturing_cb , camera_capture_completed_cb completed_cb , void *user_data)
1562 g_return_val_if_fail(g_mm_handle, FALSE);
1563 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1565 struct appdata *ad = (struct appdata *)user_data;
1566 g_return_val_if_fail(ad, FALSE);
1567 CamAppData *camapp = ad->camapp_handle;
1568 g_return_val_if_fail(camapp, FALSE);
1570 cam_debug(LOG_MM, "");
1571 CAM_TA_ACUM_ITEM_END(" camera key to capture start", 0);
1573 gboolean do_capture = FALSE;
1574 if (camapp->camera_mode == CAM_CAMERA_MODE) {
1575 if (cam_mm_get_state() == CAMERA_STATE_PREVIEW)
1577 } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
1578 if (cam_mm_get_state() == RECORDER_STATE_RECORDING
1579 || cam_mm_get_state() == RECORDER_STATE_PAUSED)
1584 CAM_TA_ACUM_ITEM_BEGIN("camera_start_capture", 0);
1585 CHECK_MM_ERROR(camera_start_capture(g_mm_handle->hcam, capturing_cb, completed_cb, user_data));
1586 CAM_TA_ACUM_ITEM_END("camera_start_capture", 0);
1588 printf("[%s:%d] operation failed - state:%d \n", __func__,
1589 __LINE__, cam_mm_get_state());
1595 gboolean cam_mm_capture_stop(gboolean skip_preview, CamMode mode)
1597 int state = CAMERA_STATE_NONE;/*TODO:now the value is same to record*/
1599 g_return_val_if_fail(g_mm_handle, FALSE);
1600 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1602 cam_debug(LOG_MM, " start");
1604 state = cam_mm_get_state();
1605 if (state == RECORDER_STATE_READY && skip_preview == FALSE && mode == CAM_CAMCORDER_MODE) {
1606 CHECK_MM_ERROR(recorder_prepare(g_mm_handle->hrec));
1608 printf("[%s:%d] operation failed - state:%d \n", __func__,
1609 __LINE__, cam_mm_get_state());
1613 cam_debug(LOG_MM, " done");
1618 gboolean cam_mm_rec_start()
1621 g_return_val_if_fail(g_mm_handle, FALSE);
1622 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1624 state = cam_mm_get_state();
1625 if ((state == RECORDER_STATE_READY)
1626 || (state == RECORDER_STATE_PAUSED)) {
1627 CHECK_MM_ERROR(recorder_start(g_mm_handle->hrec));
1629 DEBUG_TRACE("operation failed - state:%d \n", state);
1635 gboolean cam_mm_rec_stop(gboolean to_stop)
1638 g_return_val_if_fail(g_mm_handle, FALSE);
1639 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1641 state = cam_mm_get_state();
1642 if ((state == RECORDER_STATE_RECORDING)
1643 || (state == RECORDER_STATE_PAUSED)) {
1645 CHECK_MM_ERROR(recorder_commit(g_mm_handle->hrec));
1647 CHECK_MM_ERROR(recorder_commit(g_mm_handle->hrec));
1648 CHECK_MM_ERROR(recorder_unprepare(g_mm_handle->hrec));
1651 printf("[%s:%d] operation failed - state:%d \n", __func__,
1658 gboolean cam_mm_rec_pause()
1661 g_return_val_if_fail(g_mm_handle, FALSE);
1662 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1664 state = cam_mm_get_state();
1665 if ((state == RECORDER_STATE_RECORDING)) {
1666 CHECK_MM_ERROR(recorder_pause(g_mm_handle->hrec));
1668 printf("[%s:%d] operation failed - state:%d \n", __func__,
1675 gboolean cam_mm_rec_cancel()
1678 g_return_val_if_fail(g_mm_handle, FALSE);
1679 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1681 state = cam_mm_get_state();
1682 if ((state == RECORDER_STATE_RECORDING)
1683 || (state == RECORDER_STATE_PAUSED)) {
1684 CHECK_MM_ERROR(recorder_cancel(g_mm_handle->hrec));
1686 printf("[%s:%d] operation failed - state:%d \n", __func__,
1693 gboolean cam_mm_session_init(sound_session_type_e session_type)
1695 int ret = SOUND_MANAGER_ERROR_NONE;
1696 if (ret != sound_manager_set_session_type(session_type)) {
1697 DEBUG_TRACE("[%s:%d] operation failed - session_type:%d \n",
1698 __func__, __LINE__, session_type);
1704 gboolean cam_mm_start_focusing(gint af_mode)
1706 g_return_val_if_fail(g_mm_handle, FALSE);
1707 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1709 struct appdata *ad = (struct appdata *)cam_appdata_get();
1710 g_return_val_if_fail(ad, FALSE);
1711 CamAppData *camapp = ad->camapp_handle;
1712 g_return_val_if_fail(camapp, FALSE);
1714 cam_debug(LOG_UI, "");
1717 state = cam_mm_get_state();
1719 if (camapp->camera_mode == CAM_CAMERA_MODE) {
1720 if (state == CAMERA_STATE_PREVIEW
1721 || state == CAMERA_STATE_CREATED
1722 || state == CAMERA_STATE_CAPTURED) {
1723 if ((CamAppFocusMode)af_mode == CAM_FOCUS_MODE_CONTINUOUS) {
1724 cam_debug(LOG_UI, "continuous");
1725 CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, TRUE));
1727 cam_debug(LOG_UI, "touchAF");
1728 CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, FALSE));
1731 DEBUG_TRACE("Start focus operation failed in camera mode - invalid state:%d \n", state);
1734 } else if (camapp->camera_mode == CAM_CAMCORDER_MODE) {
1735 if (state == RECORDER_STATE_CREATED
1736 || state == RECORDER_STATE_READY
1737 || state == RECORDER_STATE_RECORDING
1738 || state == RECORDER_STATE_PAUSED) {
1739 if ((CamAppFocusMode)af_mode == CAM_FOCUS_MODE_CONTINUOUS) {
1740 CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, TRUE));
1742 CHECK_MM_ERROR(camera_start_focusing(g_mm_handle->hcam, FALSE));
1745 DEBUG_TRACE("Start focus operation failed in camcorder mode- invalid state:%d \n", state);
1753 gboolean cam_mm_stop_focusing()
1757 g_return_val_if_fail(g_mm_handle, FALSE);
1758 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1760 cam_debug(LOG_UI, "");
1762 state = cam_mm_get_state();
1763 if (state == CAMERA_STATE_PREVIEW
1764 || state == CAMERA_STATE_CREATED
1765 || state == RECORDER_STATE_RECORDING) {
1766 /*TODO:please think rec mod, but now the rec and cam mode state value is same*/
1767 CHECK_MM_ERROR(camera_cancel_focusing(g_mm_handle->hcam));
1770 ("[%s:%d] Stop focus operation failed - invalid state:%d \n",
1771 __func__, __LINE__, state);
1778 gboolean cam_mm_set_error_cb(camera_error_cb error_cb, void *data)
1781 g_return_val_if_fail(g_mm_handle, FALSE);
1782 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1783 e = camera_set_error_cb(g_mm_handle->hcam, error_cb, data);
1784 if (e != CAMERA_ERROR_NONE) {
1785 DEBUG_TRACE("[ERROR] camera_set_error_cb - error(%d)", e);
1792 gboolean cam_mm_unset_error_cb(void)
1795 g_return_val_if_fail(g_mm_handle, FALSE);
1796 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1797 e = camera_unset_error_cb(g_mm_handle->hcam);
1798 if (e != CAMERA_ERROR_NONE) {
1799 DEBUG_TRACE("[ERROR] camera_unset_error_cb - error(%d)", e);
1806 gboolean cam_mm_set_state_changed_cb(camera_state_changed_cb state_cb, void *data)
1809 g_return_val_if_fail(g_mm_handle, FALSE);
1810 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1812 e = camera_set_state_changed_cb(g_mm_handle->hcam, state_cb, data);
1813 if (e != CAMERA_ERROR_NONE) {
1814 DEBUG_TRACE("[ERROR] camera_set_state_changed_cb - error(%d)", e);
1820 gboolean cam_mm_unset_state_changed_cb(void)
1823 g_return_val_if_fail(g_mm_handle, FALSE);
1824 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1826 e = camera_unset_state_changed_cb(g_mm_handle->hcam);
1827 if (e != CAMERA_ERROR_NONE) {
1828 DEBUG_TRACE("[ERROR] camera_unset_state_changed_cb - error(%d)", e);
1835 gboolean cam_mm_set_focus_changed_cb(camera_focus_changed_cb focus_cb, void *data)
1838 g_return_val_if_fail(g_mm_handle, FALSE);
1839 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1841 e = camera_set_focus_changed_cb(g_mm_handle->hcam, focus_cb, data);
1842 if (e != CAMERA_ERROR_NONE) {
1843 DEBUG_TRACE("[ERROR] camera_set_focus_changed_cb - error(%d)", e);
1849 gboolean cam_mm_unset_focus_changed_cb(void)
1852 g_return_val_if_fail(g_mm_handle, FALSE);
1853 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1855 e = camera_unset_focus_changed_cb(g_mm_handle->hcam);
1856 if (e != CAMERA_ERROR_NONE) {
1857 DEBUG_TRACE("[ERROR] camera_unset_focus_changed_cb - error(%d)", e);
1863 gboolean cam_mm_set_preview_cb(camera_preview_cb preview_cb, void *data)
1866 g_return_val_if_fail(g_mm_handle, FALSE);
1867 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1869 e = camera_set_preview_cb(g_mm_handle->hcam, preview_cb, data);
1870 if (e != CAMERA_ERROR_NONE) {
1871 DEBUG_TRACE("[ERROR] camera_set_preview_cb - error(%d)", e);
1878 gboolean cam_mm_unset_preview_cb(void)
1881 g_return_val_if_fail(g_mm_handle, FALSE);
1882 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1884 e = camera_unset_preview_cb(g_mm_handle->hcam);
1885 if (e != CAMERA_ERROR_NONE) {
1886 DEBUG_TRACE("[ERROR] camera_unset_preview_cb - error(%d)", e);
1893 gboolean cam_mm_set_camera_interrupted_cb(camera_interrupted_cb callback, void *data){
1896 g_return_val_if_fail(g_mm_handle, FALSE);
1897 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
1899 e = camera_set_interrupted_cb(g_mm_handle->hcam, callback, data);
1900 if (e != CAMERA_ERROR_NONE) {
1901 DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
1906 gboolean cam_mm_set_recorder_interrupted_cb(recorder_interrupted_cb callback, void *data){
1909 g_return_val_if_fail(g_mm_handle, FALSE);
1910 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1912 e = recorder_set_interrupted_cb(g_mm_handle->hrec, callback, data);
1913 if (e != RECORDER_ERROR_NONE) {
1914 DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
1920 gboolean cam_mm_recorder_set_state_changed_cb(recorder_state_changed_cb callback, void* user_data)
1923 g_return_val_if_fail(g_mm_handle, FALSE);
1924 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1926 e = recorder_set_state_changed_cb(g_mm_handle->hrec, callback, user_data);
1927 if (e != RECORDER_ERROR_NONE) {
1928 DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
1929 rec_detail_error_get(e);
1936 gboolean cam_mm_recorder_unset_state_changed_cb(void)
1939 g_return_val_if_fail(g_mm_handle, FALSE);
1940 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1942 e = recorder_unset_state_changed_cb(g_mm_handle->hrec);
1943 if (e != RECORDER_ERROR_NONE) {
1944 DEBUG_TRACE("[ERROR] recorder_set_state_changed_cb - error(%d)", e);
1945 rec_detail_error_get(e);
1952 gboolean cam_mm_recorder_set_recording_status_cb(recorder_recording_status_cb callback, void* user_data)
1955 g_return_val_if_fail(g_mm_handle, FALSE);
1956 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1958 e = recorder_set_recording_status_cb(g_mm_handle->hrec, callback, user_data);
1959 if (e != RECORDER_ERROR_NONE) {
1960 DEBUG_TRACE("[ERROR] recorder_set_recording_status_cb - error(%d)", e);
1961 rec_detail_error_get(e);
1968 gboolean cam_mm_recorder_unset_recording_status_cb(void)
1971 g_return_val_if_fail(g_mm_handle, FALSE);
1972 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1974 e = recorder_unset_recording_status_cb(g_mm_handle->hrec);
1975 if (e != RECORDER_ERROR_NONE) {
1976 DEBUG_TRACE("[ERROR] recorder_unset_recording_status_cb - error(%d)", e);
1977 rec_detail_error_get(e);
1984 gboolean cam_mm_recorder_set_recording_limit_reached_cb(recorder_recording_limit_reached_cb callback, void* user_data)
1987 g_return_val_if_fail(g_mm_handle, FALSE);
1988 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
1990 e = recorder_set_recording_limit_reached_cb(g_mm_handle->hrec, callback, user_data);
1991 if (e != RECORDER_ERROR_NONE) {
1992 DEBUG_TRACE("[ERROR] recorder_set_recording_status_cb - error(%d)", e);
1993 rec_detail_error_get(e);
2000 gboolean cam_mm_recorder_unset_recording_limit_reached_cb(void)
2003 g_return_val_if_fail(g_mm_handle, FALSE);
2004 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
2006 e = recorder_unset_recording_limit_reached_cb(g_mm_handle->hrec);
2007 if (e != RECORDER_ERROR_NONE) {
2008 DEBUG_TRACE("[ERROR] recorder_unset_recording_status_cb - error(%d)", e);
2009 rec_detail_error_get(e);
2016 gboolean cam_mm_set_recording_motion(double rate)
2018 g_return_val_if_fail(g_mm_handle, FALSE);
2019 g_return_val_if_fail(g_mm_handle->hrec, FALSE);
2022 err = recorder_attr_set_recording_motion_rate(g_mm_handle->hrec, rate);
2023 if (err != RECORDER_ERROR_NONE) {
2024 DEBUG_TRACE("recorder_attr_set_recording_motion_rate failed");
2031 gboolean cam_mm_start_camera_face_detection(camera_face_detected_cb callback, void *data)
2034 g_return_val_if_fail(g_mm_handle, FALSE);
2035 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2037 e = camera_start_face_detection(g_mm_handle->hcam, callback, data);
2038 if (e != CAMERA_ERROR_NONE) {
2039 DEBUG_TRACE("[ERROR] camera_start_face_detection - error(%d)", e);
2045 gboolean cam_mm_stop_camera_face_detection(void)
2048 g_return_val_if_fail(g_mm_handle, FALSE);
2049 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2051 e = camera_stop_face_detection(g_mm_handle->hcam);
2052 if (e != CAMERA_ERROR_NONE) {
2053 DEBUG_TRACE("[ERROR] camera_stop_face_detection - error(%d)", e);
2059 gboolean cam_mm_is_supported_face_detection(void)
2061 g_return_val_if_fail(g_mm_handle, FALSE);
2062 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2064 return camera_is_supported_face_detection(g_mm_handle->hcam);
2068 gboolean cam_mm_set_camera_face_zoom(int face_id)
2071 g_return_val_if_fail(g_mm_handle, FALSE);
2072 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2074 e = camera_face_zoom(g_mm_handle->hcam, face_id);
2075 if (e != CAMERA_ERROR_NONE) {
2076 DEBUG_TRACE("[ERROR] camera_face_zoom - error(%d)", e);
2082 gboolean cam_mm_camera_cancel_face_zoom(void)
2085 g_return_val_if_fail(g_mm_handle, FALSE);
2086 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2088 e = camera_cancel_face_zoom(g_mm_handle->hcam);
2089 if (e != CAMERA_ERROR_NONE) {
2090 DEBUG_TRACE("[ERROR] camera_cancel_face_zoom - error(%d)", e);
2097 gboolean cam_mm_set_image_flip(gboolean value)
2100 g_return_val_if_fail(g_mm_handle, FALSE);
2101 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2104 e = camera_attr_set_stream_flip(g_mm_handle->hcam, CAMERA_FLIP_HORIZONTAL);
2106 if (g_mm_handle->hdev == 0) {
2107 e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_VERTICAL);
2109 e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_NONE);
2112 e = camera_attr_set_stream_flip(g_mm_handle->hcam, CAMERA_FLIP_NONE);
2114 if (g_mm_handle->hdev == 0) {
2115 e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_NONE);
2117 e = camera_set_x11_display_flip(g_mm_handle->hcam, CAMERA_FLIP_VERTICAL);
2121 if (e != CAMERA_ERROR_NONE) {
2122 DEBUG_TRACE("recorder_attr_set_recording_flip() error(%d)", e);
2128 gboolean cam_mm_get_caps_minmax(unsigned int type, int *min, int *max)
2130 if (!cam_mm_is_created()) {
2131 cam_debug(LOG_CAM, "cam_mm_is_created() false");
2135 gboolean ret = TRUE;
2136 int tempmin, tempmax = 0;
2139 case CAM_CP_FUNC_EXPOSURE:
2141 if (camera_attr_get_exposure_range(g_mm_handle->hcam, &tempmin, &tempmax) != CAMERA_ERROR_NONE) {
2142 cam_debug(LOG_CAM, "camera_attr_get_exposure_range() is false");
2147 case CAM_CP_FUNC_BRIGHTNESS:
2149 if (camera_attr_get_brightness_range(g_mm_handle->hcam, &tempmin, &tempmax) != CAMERA_ERROR_NONE) {
2150 cam_debug(LOG_CAM, "camera_attr_get_brightness_range() is false");
2155 case CAM_CP_FUNC_ZOOM:
2157 if (camera_attr_get_zoom_range(g_mm_handle->hcam, &tempmin, &tempmax) != CAMERA_ERROR_NONE) {
2158 cam_debug(LOG_CAM, "camera_attr_get_zoom_range() is false");
2162 if (tempmin == tempmax) {
2163 cam_debug(LOG_CAM, "zoom is not supported");
2170 cam_debug(LOG_CAM, "not support get_minmax() about this type[%d]", type);
2187 gboolean cam_mm_get_caps_range(unsigned int type, unsigned int *caps, void *user_data)
2189 if (!cam_mm_is_created()) {
2190 cam_debug(LOG_CAM, "cam_mm_is_created() false");
2196 gboolean ret = TRUE;
2199 case CAM_CP_FUNC_FLASH_MODE:
2201 if (camera_attr_foreach_supported_flash_mode(g_mm_handle->hcam,
2202 (camera_attr_supported_flash_mode_cb)__get_flash_cb, user_data) != CAMERA_ERROR_NONE ) {
2203 cam_debug(LOG_CAM, "camera_attr_foreach_supported_flash_mode() is fail");
2208 case CAM_CP_FUNC_ISO:
2210 if (camera_attr_foreach_supported_iso(g_mm_handle->hcam,
2211 (camera_attr_supported_iso_cb)__get_iso_cb, user_data) != CAMERA_ERROR_NONE ) {
2212 cam_debug(LOG_CAM, "camera_attr_foreach_supported_iso() is fail");
2217 case CAM_CP_FUNC_SCENE_MODE:
2219 if (camera_attr_foreach_supported_scene_mode(g_mm_handle->hcam,
2220 (camera_attr_supported_scene_mode_cb)__get_scene_cb, user_data) != CAMERA_ERROR_NONE ) {
2221 cam_debug(LOG_CAM, "camera_attr_foreach_supported_scene_mode() is fail");
2226 case CAM_CP_FUNC_METERING:
2228 if (camera_attr_foreach_supported_exposure_mode(g_mm_handle->hcam,
2229 (camera_attr_supported_exposure_mode_cb)__get_metering_cb, user_data) != CAMERA_ERROR_NONE ) {
2230 cam_debug(LOG_CAM, "camera_attr_foreach_supported_exposure_mode() is fail");
2235 case CAM_CP_FUNC_EFFECT_MODE:
2237 if (camera_attr_foreach_supported_effect(g_mm_handle->hcam,
2238 (camera_attr_supported_effect_cb)__get_effect_cb, user_data) != CAMERA_ERROR_NONE ) {
2239 cam_debug(LOG_CAM, "camera_attr_foreach_supported_effect() is fail");
2244 case CAM_CP_FUNC_WHITE_BALANCE:
2246 if (camera_attr_foreach_supported_whitebalance(g_mm_handle->hcam,
2247 (camera_attr_supported_whitebalance_cb)__get_wb_cb, user_data) != CAMERA_ERROR_NONE) {
2248 cam_debug(LOG_CAM, "camera_attr_foreach_supported_whitebalance() is fail");
2253 case CAM_CP_FUNC_FOCUS_MODE:
2255 if (camera_attr_foreach_supported_af_mode(g_mm_handle->hcam,
2256 (camera_attr_supported_af_mode_cb)__get_focus_cb, user_data) != CAMERA_ERROR_NONE) {
2257 cam_debug(LOG_CAM, "camera_attr_foreach_supported_exposure_mode() is fail");
2262 case CAM_CP_FUNC_FPS:
2264 if (camera_attr_foreach_supported_fps(g_mm_handle->hcam,
2265 (camera_attr_supported_fps_cb)__get_fps_cb, user_data) != CAMERA_ERROR_NONE) {
2266 cam_debug(LOG_CAM, "camera_attr_foreach_supported_fps() is fail");
2271 case CAM_CP_FUNC_CAM_RESOLUTION:
2273 if(camera_foreach_supported_capture_resolution(g_mm_handle->hcam,
2274 (camera_supported_capture_resolution_cb)__get_capture_res_cb, user_data) != CAMERA_ERROR_NONE) {
2275 cam_debug(LOG_CAM, "camera_foreach_supported_capture_resolution() is fail");
2280 case CAM_CP_FUNC_REC_RESOLUTION:
2282 if(camera_foreach_supported_preview_resolution(g_mm_handle->hcam,
2283 (camera_supported_preview_resolution_cb)__get_recording_res_cb, user_data) != CAMERA_ERROR_NONE) {
2284 cam_debug(LOG_CAM, "camera_foreach_supported_capture_resolution() is fail");
2291 cam_debug(LOG_CAM, "not support get_range() about this type[%d]", type);
2301 const int cam_mm_get_caps_cb_cnt()
2303 return g_caps_cb_cnt;
2306 static void __get_iso_cb(camera_attr_iso_e iso, void *user_data)
2308 cam_retm_if(iso > CAMERA_ATTR_ISO_3200, "input is invalid");
2310 unsigned int uRet = cam_iso_dev_convert_caps(iso);
2317 static void __get_effect_cb(camera_attr_effect_mode_e effect, void *user_data)
2319 cam_retm_if(effect > CAMERA_ATTR_EFFECT_SKETCH, "input is invalid");
2321 unsigned int uRet = cam_effect_dev_convert_caps(effect);
2328 static void __get_fps_cb(camera_attr_fps_e fps, void *user_data)
2330 cam_retm_if(fps > CAMERA_ATTR_FPS_120, "input is invalid");
2332 unsigned int uRet = cam_fps_dev_convert_caps(fps);
2339 static void __get_wb_cb(camera_attr_whitebalance_e wb, void *user_data)
2341 cam_retm_if(wb > CAMERA_ATTR_WHITE_BALANCE_CUSTOM, "input is invalid");
2343 unsigned int uRet = cam_wb_dev_convert_caps(wb);
2350 static void __get_focus_cb(camera_attr_af_mode_e focus, void *user_data)
2352 cam_retm_if(focus > CAMERA_ATTR_AF_FULL, "input is invalid");
2354 unsigned int uRet = cam_focus_dev_convert_caps(focus);
2361 static void __get_metering_cb(camera_attr_exposure_mode_e metering, void *user_data)
2363 cam_retm_if(metering > CAMERA_ATTR_EXPOSURE_MODE_CUSTOM, "input is invalid");
2365 unsigned int uRet = cam_metering_dev_convert_caps(metering);
2372 static void __get_scene_cb(camera_attr_scene_mode_e scene, void *user_data)
2374 cam_retm_if(scene > CAMERA_ATTR_SCENE_MODE_BACKLIGHT, "input is invalid");
2376 unsigned int uRet = cam_scene_dev_convert_caps(scene);
2383 static void __get_flash_cb(camera_attr_flash_mode_e flash, void *user_data)
2385 cam_retm_if(flash > CAMERA_ATTR_FLASH_MODE_PERMANENT, "input is invalid");
2387 unsigned int uRet = cam_flash_dev_convert_caps(flash);
2394 static void __get_capture_res_cb(int width, int height, void *user_data)
2396 unsigned int uRet = cam_resolution_cam_convert_caps((unsigned int)CAM_RESOLUTION(width, height));
2403 static void __get_recording_res_cb(int width, int height, void *user_data)
2405 unsigned int uRet = cam_resolution_cam_convert_caps((unsigned int)CAM_RESOLUTION(width, height));
2412 gboolean cam_mm_is_support_front_camera(void)
2414 g_return_val_if_fail(g_mm_handle, FALSE);
2415 g_return_val_if_fail(g_mm_handle->hcam, FALSE);
2418 int device_count = 0;
2420 camera_get_device_count(g_mm_handle->hcam, &device_count);
2421 cam_debug(LOG_MM, "device count is [%d]", device_count);
2423 if (device_count == 2) {