2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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.
24 #include <muse_camera.h>
25 #include <muse_camera_msg.h>
26 #include <muse_core_ipc.h>
27 #include <muse_core_module.h>
28 #include <camera_private.h>
29 #include <muse_core.h>
31 #include <Elementary.h>
32 #include <tbm_surface_internal.h>
34 #include <mm_camcorder.h>
35 #include <mm_camcorder_client.h>
38 #include <Ecore_Wayland.h>
46 #define LOG_TAG "TIZEN_N_CAMERA"
49 int __convert_camera_error_code(const char *func, int code)
51 int ret = CAMERA_ERROR_NONE;
52 const char *errorstr = NULL;
56 ret = CAMERA_ERROR_NONE;
57 errorstr = "ERROR_NONE";
59 case MM_ERROR_CAMCORDER_INVALID_ARGUMENT:
60 case MM_ERROR_COMMON_INVALID_ATTRTYPE:
61 ret = CAMERA_ERROR_INVALID_PARAMETER;
62 errorstr = "INVALID_PARAMETER";
64 case MM_ERROR_CAMCORDER_NOT_INITIALIZED:
65 case MM_ERROR_CAMCORDER_INVALID_STATE:
66 ret = CAMERA_ERROR_INVALID_STATE;
67 errorstr = "INVALID_STATE";
69 case MM_ERROR_CAMCORDER_DEVICE_NOT_FOUND:
70 ret = CAMERA_ERROR_DEVICE_NOT_FOUND;
71 errorstr = "DEVICE_NOT_FOUND";
73 case MM_ERROR_CAMCORDER_DEVICE_BUSY:
74 case MM_ERROR_CAMCORDER_DEVICE_OPEN:
75 case MM_ERROR_CAMCORDER_CMD_IS_RUNNING:
76 ret = CAMERA_ERROR_DEVICE_BUSY;
77 errorstr = "DEVICE_BUSY";
79 case MM_ERROR_CAMCORDER_DEVICE:
80 case MM_ERROR_CAMCORDER_DEVICE_IO:
81 case MM_ERROR_CAMCORDER_DEVICE_TIMEOUT:
82 case MM_ERROR_CAMCORDER_DEVICE_WRONG_JPEG:
83 case MM_ERROR_CAMCORDER_DEVICE_LACK_BUFFER:
84 ret = CAMERA_ERROR_DEVICE;
85 errorstr = "ERROR_DEVICE";
87 case MM_ERROR_CAMCORDER_GST_CORE:
88 case MM_ERROR_CAMCORDER_GST_LIBRARY:
89 case MM_ERROR_CAMCORDER_GST_RESOURCE:
90 case MM_ERROR_CAMCORDER_GST_STREAM:
91 case MM_ERROR_CAMCORDER_GST_STATECHANGE:
92 case MM_ERROR_CAMCORDER_GST_NEGOTIATION:
93 case MM_ERROR_CAMCORDER_GST_LINK:
94 case MM_ERROR_CAMCORDER_GST_FLOW_ERROR:
95 case MM_ERROR_CAMCORDER_ENCODER:
96 case MM_ERROR_CAMCORDER_ENCODER_BUFFER:
97 case MM_ERROR_CAMCORDER_ENCODER_WRONG_TYPE:
98 case MM_ERROR_CAMCORDER_ENCODER_WORKING:
99 case MM_ERROR_CAMCORDER_INTERNAL:
100 case MM_ERROR_CAMCORDER_RESPONSE_TIMEOUT:
101 case MM_ERROR_CAMCORDER_DSP_FAIL:
102 case MM_ERROR_CAMCORDER_AUDIO_EMPTY:
103 case MM_ERROR_CAMCORDER_CREATE_CONFIGURE:
104 case MM_ERROR_CAMCORDER_FILE_SIZE_OVER:
105 case MM_ERROR_CAMCORDER_DISPLAY_DEVICE_OFF:
106 case MM_ERROR_CAMCORDER_INVALID_CONDITION:
107 ret = CAMERA_ERROR_INVALID_OPERATION;
108 errorstr = "INVALID_OPERATION";
110 case MM_ERROR_CAMCORDER_RESOURCE_CREATION:
111 case MM_ERROR_COMMON_OUT_OF_MEMORY:
112 ret = CAMERA_ERROR_OUT_OF_MEMORY;
113 errorstr = "OUT_OF_MEMORY";
115 case MM_ERROR_POLICY_BLOCKED:
116 ret = CAMERA_ERROR_SOUND_POLICY;
117 errorstr = "ERROR_SOUND_POLICY";
119 case MM_ERROR_POLICY_BLOCKED_BY_CALL:
120 ret = CAMERA_ERROR_SOUND_POLICY_BY_CALL;
121 errorstr = "ERROR_SOUND_POLICY_BY_CALL";
123 case MM_ERROR_POLICY_BLOCKED_BY_ALARM:
124 ret = CAMERA_ERROR_SOUND_POLICY_BY_ALARM;
125 errorstr = "ERROR_SOUND_POLICY_BY_ALARM";
127 case MM_ERROR_POLICY_RESTRICTED:
128 ret = CAMERA_ERROR_SECURITY_RESTRICTED;
129 errorstr = "ERROR_RESTRICTED";
131 case MM_ERROR_CAMCORDER_DEVICE_REG_TROUBLE:
132 ret = CAMERA_ERROR_ESD;
133 errorstr = "ERROR_ESD";
135 case MM_ERROR_COMMON_INVALID_PERMISSION:
136 ret = CAMERA_ERROR_PERMISSION_DENIED;
137 errorstr = "ERROR_PERMISSION_DENIED";
139 case MM_ERROR_COMMON_OUT_OF_ARRAY:
140 case MM_ERROR_COMMON_OUT_OF_RANGE:
141 case MM_ERROR_COMMON_ATTR_NOT_EXIST:
142 case MM_ERROR_CAMCORDER_NOT_SUPPORTED:
143 ret = CAMERA_ERROR_NOT_SUPPORTED;
144 errorstr = "ERROR_NOT_SUPPORTED";
147 ret = CAMERA_ERROR_INVALID_OPERATION;
148 errorstr = "INVALID_OPERATION";
151 if (code != MM_ERROR_NONE)
152 LOGE("[%s] %s(0x%08x) : core frameworks error code(0x%08x)", func ? func : "NULL_FUNC", errorstr, ret, code);
158 static MMCamWaylandInfo *_get_wl_info(Evas_Object *obj)
160 MMCamWaylandInfo *wl_info = NULL;
163 LOGE("evas object is NULL");
167 wl_info = g_new0(MMCamWaylandInfo, 1);
168 if (wl_info == NULL) {
169 LOGE("wl_info alloc failed : %d", sizeof(MMCamWaylandInfo));
173 wl_info->evas_obj = (void *)obj;
174 wl_info->window = (void *)elm_win_wl_window_get(obj);
175 wl_info->surface = (void *)ecore_wl_window_surface_get(wl_info->window);
176 wl_info->display = (void *)ecore_wl_display_get();
178 if (wl_info->window == NULL || wl_info->surface == NULL || wl_info->display == NULL) {
179 LOGE("something is NULL %p, %p, %p", wl_info->window, wl_info->surface, wl_info->display);
184 evas_object_geometry_get(obj, &wl_info->window_x, &wl_info->window_y,
185 &wl_info->window_width, &wl_info->window_height);
187 LOGD("wayland obj %p, window %p, surface %p, display %p, size %d,%d,%dx%d",
188 wl_info->evas_obj, wl_info->window, wl_info->surface, wl_info->display,
189 wl_info->window_x, wl_info->window_y, wl_info->window_width, wl_info->window_height);
193 #endif /* HAVE_WAYLAND */
195 static int _import_tbm_key(tbm_bufmgr bufmgr, unsigned int tbm_key, tbm_bo *bo, tbm_bo_handle *bo_handle)
197 tbm_bo tmp_bo = NULL;
198 tbm_bo_handle tmp_bo_handle = {NULL, };
200 if (bufmgr == NULL || bo == NULL || bo_handle == NULL || tbm_key == 0) {
201 LOGE("invalid parameter - bufmgr %p, bo %p, bo_handle %p, key %d",
202 bufmgr, bo, bo_handle, tbm_key);
206 tmp_bo = tbm_bo_import(bufmgr, tbm_key);
207 if (tmp_bo == NULL) {
208 LOGE("bo import failed - bufmgr %p, key %d", bufmgr, tbm_key);
212 tmp_bo_handle = tbm_bo_map(tmp_bo, TBM_DEVICE_CPU, TBM_OPTION_READ);
213 if (tmp_bo_handle.ptr == NULL) {
214 LOGE("bo map failed %p", tmp_bo);
215 tbm_bo_unref(tmp_bo);
220 /* set bo and bo_handle */
222 *bo_handle = tmp_bo_handle;
227 static void _release_imported_bo(tbm_bo *bo)
229 if (bo == NULL || *bo == NULL) {
241 static int _client_wait_for_cb_return(muse_camera_api_e api, camera_cb_info_s *cb_info, int time_out)
243 int ret = CAMERA_ERROR_NONE;
246 LOGD("Enter api : %d", api);
248 g_mutex_lock(&(cb_info->api_mutex[api]));
250 if (cb_info->api_activating[api] == 0) {
251 end_time = g_get_monotonic_time() + time_out * G_TIME_SPAN_SECOND;
252 if (g_cond_wait_until(&(cb_info->api_cond[api]), &(cb_info->api_mutex[api]), end_time)) {
253 ret = cb_info->api_ret[api];
254 cb_info->api_activating[api] = 0;
256 LOGD("return value : 0x%x", ret);
258 ret = CAMERA_ERROR_INVALID_OPERATION;
260 LOGE("api %d was TIMED OUT!", api);
263 ret = cb_info->api_ret[api];
264 cb_info->api_activating[api] = 0;
266 LOGD("condition is already checked for the api[%d], return[0x%x]", api, ret);
269 g_mutex_unlock(&(cb_info->api_mutex[api]));
274 int _camera_get_tbm_surface_format(int in_format, uint32_t *out_format)
276 if (in_format <= MM_PIXEL_FORMAT_INVALID ||
277 in_format >= MM_PIXEL_FORMAT_NUM ||
278 out_format == NULL) {
279 LOGE("INVALID_PARAMETER : in_format %d, out_format ptr %p", in_format, out_format);
280 return CAMERA_ERROR_INVALID_PARAMETER;
284 case MM_PIXEL_FORMAT_NV12:
285 case MM_PIXEL_FORMAT_NV12T:
286 *out_format = TBM_FORMAT_NV12;
288 case MM_PIXEL_FORMAT_NV16:
289 *out_format = TBM_FORMAT_NV16;
291 case MM_PIXEL_FORMAT_NV21:
292 *out_format = TBM_FORMAT_NV21;
294 case MM_PIXEL_FORMAT_YUYV:
295 *out_format = TBM_FORMAT_YUYV;
297 case MM_PIXEL_FORMAT_UYVY:
298 case MM_PIXEL_FORMAT_ITLV_JPEG_UYVY:
299 *out_format = TBM_FORMAT_UYVY;
301 case MM_PIXEL_FORMAT_422P:
302 *out_format = TBM_FORMAT_YUV422;
304 case MM_PIXEL_FORMAT_I420:
305 *out_format = TBM_FORMAT_YUV420;
307 case MM_PIXEL_FORMAT_YV12:
308 *out_format = TBM_FORMAT_YVU420;
310 case MM_PIXEL_FORMAT_RGB565:
311 *out_format = TBM_FORMAT_RGB565;
313 case MM_PIXEL_FORMAT_RGB888:
314 *out_format = TBM_FORMAT_RGB888;
316 case MM_PIXEL_FORMAT_RGBA:
317 *out_format = TBM_FORMAT_RGBA8888;
319 case MM_PIXEL_FORMAT_ARGB:
320 *out_format = TBM_FORMAT_ARGB8888;
323 LOGE("invalid in_format %d", in_format);
324 return CAMERA_ERROR_INVALID_PARAMETER;
327 return CAMERA_ERROR_NONE;
331 int _camera_get_media_packet_mimetype(int in_format, media_format_mimetype_e *mimetype)
333 if (in_format <= MM_PIXEL_FORMAT_INVALID ||
334 in_format >= MM_PIXEL_FORMAT_NUM ||
336 LOGE("INVALID_PARAMETER : in_format %d, mimetype ptr %p", in_format, mimetype);
337 return CAMERA_ERROR_INVALID_PARAMETER;
341 case MM_PIXEL_FORMAT_NV12:
342 case MM_PIXEL_FORMAT_NV12T:
343 *mimetype = MEDIA_FORMAT_NV12;
345 case MM_PIXEL_FORMAT_NV16:
346 *mimetype = MEDIA_FORMAT_NV16;
348 case MM_PIXEL_FORMAT_NV21:
349 *mimetype = MEDIA_FORMAT_NV21;
351 case MM_PIXEL_FORMAT_YUYV:
352 *mimetype = MEDIA_FORMAT_YUYV;
354 case MM_PIXEL_FORMAT_UYVY:
355 case MM_PIXEL_FORMAT_ITLV_JPEG_UYVY:
356 *mimetype = MEDIA_FORMAT_UYVY;
358 case MM_PIXEL_FORMAT_422P:
359 *mimetype = MEDIA_FORMAT_422P;
361 case MM_PIXEL_FORMAT_I420:
362 *mimetype = MEDIA_FORMAT_I420;
364 case MM_PIXEL_FORMAT_YV12:
365 *mimetype = MEDIA_FORMAT_YV12;
367 case MM_PIXEL_FORMAT_RGB565:
368 *mimetype = MEDIA_FORMAT_RGB565;
370 case MM_PIXEL_FORMAT_RGB888:
371 *mimetype = MEDIA_FORMAT_RGB888;
373 case MM_PIXEL_FORMAT_RGBA:
374 *mimetype = MEDIA_FORMAT_RGBA;
376 case MM_PIXEL_FORMAT_ARGB:
377 *mimetype = MEDIA_FORMAT_ARGB;
380 LOGE("invalid in_format %d", in_format);
381 return CAMERA_ERROR_INVALID_PARAMETER;
384 return CAMERA_ERROR_NONE;
387 int _camera_media_packet_finalize(media_packet_h pkt, int error_code, void *user_data)
391 camera_cb_info_s *cb_info = (camera_cb_info_s *)user_data;
392 camera_media_packet_data *mp_data = NULL;
393 tbm_surface_h tsurf = NULL;
395 if (pkt == NULL || cb_info == NULL) {
396 LOGE("invalid parameter buffer %p, cb_info %p", pkt, cb_info);
397 return MEDIA_PACKET_FINALIZE;
400 ret = media_packet_get_extra(pkt, (void **)&mp_data);
401 if (ret != MEDIA_PACKET_ERROR_NONE) {
402 LOGE("media_packet_get_extra failed 0x%x", ret);
403 return MEDIA_PACKET_FINALIZE;
406 /*LOGD("mp_data %p", mp_data);*/
409 int tbm_key = mp_data->tbm_key;
411 /* release imported bo */
412 for (i = 0 ; i < mp_data->num_buffer_key ; i++) {
413 tbm_bo_unref(mp_data->buffer_bo[i]);
414 mp_data->buffer_bo[i] = NULL;
417 /* unmap and unref tbm bo */
418 _release_imported_bo(&mp_data->bo);
421 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
422 cb_info->fd, cb_info, INT, tbm_key);
427 ret = media_packet_get_tbm_surface(pkt, &tsurf);
428 if (ret != MEDIA_PACKET_ERROR_NONE) {
429 LOGE("media_packet_get_tbm_surface failed 0x%x", ret);
430 return MEDIA_PACKET_FINALIZE;
434 tbm_surface_destroy(tsurf);
438 return MEDIA_PACKET_FINALIZE;
441 static void _client_user_callback(camera_cb_info_s *cb_info, char *recv_msg, muse_camera_event_e event)
447 tbm_bo_handle bo_handle = {NULL, };
449 if (recv_msg == NULL || event >= MUSE_CAMERA_EVENT_TYPE_NUM) {
450 LOGE("invalid parameter - camera msg %p, event %d", recv_msg, event);
454 LOGD("get camera msg %s, event %d", recv_msg, event);
456 if (cb_info->user_cb[event] == NULL) {
457 LOGW("user callback for event %d is not set", event);
462 case MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE:
468 muse_camera_msg_get(previous, recv_msg);
469 muse_camera_msg_get(current, recv_msg);
470 muse_camera_msg_get(by_policy, recv_msg);
472 LOGD("STATE CHANGE - previous %d, current %d, by_policy %d",
473 previous, current, by_policy);
475 ((camera_state_changed_cb)cb_info->user_cb[event])((camera_state_e)previous,
476 (camera_state_e)current, (bool)by_policy, cb_info->user_data[event]);
479 case MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE:
483 muse_camera_msg_get(state, recv_msg);
485 LOGD("FOCUS state - %d", state);
487 ((camera_focus_changed_cb)cb_info->user_cb[event])((camera_focus_state_e)state, cb_info->user_data[event]);
490 case MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE:
491 LOGD("CAPTURE_COMPLETED");
492 ((camera_capture_completed_cb)cb_info->user_cb[event])(cb_info->user_data[event]);
494 case MUSE_CAMERA_EVENT_TYPE_PREVIEW:
495 case MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW:
497 camera_preview_data_s frame;
498 unsigned char *buf_pos = NULL;
499 MMCamcorderVideoStreamDataType *stream = NULL;
502 int num_buffer_key = 0;
503 int buffer_key[BUFFER_MAX_PLANE_NUM] = {0, };
504 tbm_bo buffer_bo[BUFFER_MAX_PLANE_NUM] = {NULL, };
505 tbm_bo_handle buffer_bo_handle[BUFFER_MAX_PLANE_NUM] = {{.ptr = NULL}, };
506 camera_media_packet_data *mp_data = NULL;
508 muse_camera_msg_get(tbm_key, recv_msg);
509 muse_camera_msg_get(num_buffer_key, recv_msg);
510 muse_camera_msg_get_array(buffer_key, recv_msg);
512 memset(&frame, 0x0, sizeof(camera_preview_data_s));
515 LOGE("invalid key %d", tbm_key);
519 /* import tbm bo and get virtual address */
520 if (!_import_tbm_key(cb_info->bufmgr, tbm_key, &bo, &bo_handle)) {
521 LOGE("failed to import key %d", tbm_key);
523 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
524 cb_info->fd, cb_info, INT, tbm_key);
528 buf_pos = (unsigned char *)bo_handle.ptr;
530 /* get stream info */
531 stream = (MMCamcorderVideoStreamDataType *)buf_pos;
533 for (i = 0 ; i < num_buffer_key ; i++) {
534 /* import buffer bo and get virtual address */
535 if (!_import_tbm_key(cb_info->bufmgr, buffer_key[i], &buffer_bo[i], &buffer_bo_handle[i])) {
536 LOGE("failed to import buffer key %d", buffer_key[i]);
538 /* release imported bo */
539 for (i -= 1 ; i >= 0 ; i--)
540 _release_imported_bo(&buffer_bo[i]);
542 _release_imported_bo(&bo);
544 /* send return buffer */
545 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
546 cb_info->fd, cb_info, INT, tbm_key);
551 if (cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_PREVIEW]) {
553 if (stream->format == MM_PIXEL_FORMAT_ITLV_JPEG_UYVY)
554 frame.format = MM_PIXEL_FORMAT_UYVY;
556 frame.format = stream->format;
557 frame.width = stream->width;
558 frame.height = stream->height;
559 frame.timestamp = stream->timestamp;
560 frame.num_of_planes = stream->num_planes;
562 if (num_buffer_key == 0) {
564 buf_pos += sizeof(MMCamcorderVideoStreamDataType);
566 if (stream->format == MM_PIXEL_FORMAT_ENCODED_H264) {
567 frame.data.encoded_plane.data = buf_pos;
568 frame.data.encoded_plane.size = stream->data.encoded.length_data;
569 total_size = stream->data.encoded.length_data;
571 switch (stream->num_planes) {
573 frame.data.single_plane.yuv = buf_pos;
574 frame.data.single_plane.size = stream->data.yuv420.length_yuv;
575 total_size = stream->data.yuv420.length_yuv;
578 frame.data.double_plane.y = buf_pos;
579 frame.data.double_plane.y_size = stream->data.yuv420sp.length_y;
580 buf_pos += stream->data.yuv420sp.length_y;
581 frame.data.double_plane.uv = buf_pos;
582 frame.data.double_plane.uv_size = stream->data.yuv420sp.length_uv;
583 total_size = stream->data.yuv420sp.length_y + \
584 stream->data.yuv420sp.length_uv;
587 frame.data.triple_plane.y = buf_pos;
588 frame.data.triple_plane.y_size = stream->data.yuv420p.length_y;
589 buf_pos += stream->data.yuv420p.length_y;
590 frame.data.triple_plane.u = buf_pos;
591 frame.data.triple_plane.u_size = stream->data.yuv420p.length_u;
592 buf_pos += stream->data.yuv420p.length_u;
593 frame.data.triple_plane.v = buf_pos;
594 frame.data.triple_plane.v_size = stream->data.yuv420p.length_v;
595 total_size = stream->data.yuv420p.length_y + \
596 stream->data.yuv420p.length_u + \
597 stream->data.yuv420p.length_v;
605 switch (stream->num_planes) {
607 frame.data.single_plane.yuv = buffer_bo_handle[0].ptr;
608 frame.data.single_plane.size = stream->data.yuv420.length_yuv;
609 total_size = stream->data.yuv420.length_yuv;
612 frame.data.double_plane.y = buffer_bo_handle[0].ptr;
613 if (stream->num_planes == (unsigned int)num_buffer_key)
614 frame.data.double_plane.uv = buffer_bo_handle[1].ptr;
616 frame.data.double_plane.uv = buffer_bo_handle[0].ptr + stream->data.yuv420sp.length_y;
617 frame.data.double_plane.y_size = stream->data.yuv420sp.length_y;
618 frame.data.double_plane.uv_size = stream->data.yuv420sp.length_uv;
619 total_size = stream->data.yuv420sp.length_y + \
620 stream->data.yuv420sp.length_uv;
623 frame.data.triple_plane.y = buffer_bo_handle[0].ptr;
624 if (stream->num_planes == (unsigned int)num_buffer_key) {
625 frame.data.triple_plane.u = buffer_bo_handle[1].ptr;
626 frame.data.triple_plane.v = buffer_bo_handle[2].ptr;
628 frame.data.triple_plane.u = buffer_bo_handle[0].ptr + stream->data.yuv420p.length_y;
629 frame.data.triple_plane.v = buffer_bo_handle[1].ptr + stream->data.yuv420p.length_u;
631 frame.data.triple_plane.y_size = stream->data.yuv420p.length_y;
632 frame.data.triple_plane.u_size = stream->data.yuv420p.length_u;
633 frame.data.triple_plane.v_size = stream->data.yuv420p.length_v;
634 total_size = stream->data.yuv420p.length_y + \
635 stream->data.yuv420p.length_u + \
636 stream->data.yuv420p.length_v;
644 LOGD("PREVIEW_CB - format %d, %dx%d, size %d plane num %d",
645 frame.format, frame.width, frame.height, total_size, frame.num_of_planes);
648 ((camera_preview_cb)cb_info->user_cb[event])(&frame, cb_info->user_data[event]);
650 /*LOGD("PREVIEW_CB retuned");*/
653 if (cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW]) {
654 media_packet_h pkt = NULL;
655 tbm_surface_h tsurf = NULL;
656 uint32_t bo_format = 0;
658 media_format_mimetype_e mimetype = MEDIA_FORMAT_NV12;
659 bool make_pkt_fmt = false;
660 tbm_surface_info_s tsurf_info;
662 memset(&tsurf_info, 0x0, sizeof(tbm_surface_info_s));
664 /* unmap buffer bo */
665 for (i = 0 ; i < num_buffer_key ; i++) {
667 tbm_bo_unmap(buffer_bo[i]);
670 /* create tbm surface */
671 for (i = 0 ; i < BUFFER_MAX_PLANE_NUM ; i++)
672 tsurf_info.planes[i].stride = stream->stride[i];
674 /* get tbm surface format */
675 ret = _camera_get_tbm_surface_format(stream->format, &bo_format);
676 ret |= _camera_get_media_packet_mimetype(stream->format, &mimetype);
678 if (num_buffer_key > 0 && ret == CAMERA_ERROR_NONE) {
679 tsurf_info.width = stream->width;
680 tsurf_info.height = stream->height;
681 tsurf_info.format = bo_format;
682 tsurf_info.bpp = tbm_surface_internal_get_bpp(bo_format);
683 tsurf_info.num_planes = tbm_surface_internal_get_num_planes(bo_format);
686 case TBM_FORMAT_NV12:
687 case TBM_FORMAT_NV21:
688 tsurf_info.planes[0].size = stream->stride[0] * stream->elevation[0];
689 tsurf_info.planes[1].size = stream->stride[1] * stream->elevation[1];
690 tsurf_info.planes[0].offset = 0;
691 if (num_buffer_key == 1)
692 tsurf_info.planes[1].offset = tsurf_info.planes[0].size;
693 tsurf_info.size = tsurf_info.planes[0].size + tsurf_info.planes[1].size;
695 case TBM_FORMAT_YUV420:
696 case TBM_FORMAT_YVU420:
697 tsurf_info.planes[0].size = stream->stride[0] * stream->elevation[0];
698 tsurf_info.planes[1].size = stream->stride[1] * stream->elevation[1];
699 tsurf_info.planes[2].size = stream->stride[2] * stream->elevation[2];
700 tsurf_info.planes[0].offset = 0;
701 if (num_buffer_key == 1) {
702 tsurf_info.planes[1].offset = tsurf_info.planes[0].size;
703 tsurf_info.planes[2].offset = tsurf_info.planes[0].size + tsurf_info.planes[1].size;
705 tsurf_info.size = tsurf_info.planes[0].size + tsurf_info.planes[1].size + tsurf_info.planes[2].size;
707 case TBM_FORMAT_UYVY:
708 case TBM_FORMAT_YUYV:
709 tsurf_info.planes[0].size = (stream->stride[0] * stream->elevation[0]) << 1;
710 tsurf_info.planes[0].offset = 0;
711 tsurf_info.size = tsurf_info.planes[0].size;
717 tsurf = tbm_surface_internal_create_with_bos(&tsurf_info, buffer_bo, num_buffer_key);
718 /*LOGD("tbm surface %p", tsurf);*/
722 /* check media packet format */
723 if (cb_info->pkt_fmt) {
724 int pkt_fmt_width = 0;
725 int pkt_fmt_height = 0;
726 media_format_mimetype_e pkt_fmt_mimetype = MEDIA_FORMAT_NV12;
728 media_format_get_video_info(cb_info->pkt_fmt, &pkt_fmt_mimetype, &pkt_fmt_width, &pkt_fmt_height, NULL, NULL);
729 if (pkt_fmt_mimetype != mimetype ||
730 pkt_fmt_width != stream->width ||
731 pkt_fmt_height != stream->height) {
732 LOGW("different format. current 0x%x, %dx%d, new 0x%x, %dx%d",
733 pkt_fmt_mimetype, pkt_fmt_width, pkt_fmt_height, mimetype, stream->width, stream->height);
734 media_format_unref(cb_info->pkt_fmt);
735 cb_info->pkt_fmt = NULL;
742 /* create packet format */
744 LOGW("make new pkt_fmt - mimetype 0x%x, %dx%d", mimetype, stream->width, stream->height);
745 ret = media_format_create(&cb_info->pkt_fmt);
746 if (ret == MEDIA_FORMAT_ERROR_NONE) {
747 ret = media_format_set_video_mime(cb_info->pkt_fmt, mimetype);
748 ret |= media_format_set_video_width(cb_info->pkt_fmt, stream->width);
749 ret |= media_format_set_video_height(cb_info->pkt_fmt, stream->height);
750 LOGW("media_format_set_video_mime,width,height ret : 0x%x", ret);
752 LOGW("media_format_create failed");
756 /* create media packet */
757 ret = media_packet_create_from_tbm_surface(cb_info->pkt_fmt,
758 tsurf, (media_packet_finalize_cb)_camera_media_packet_finalize,
759 (void *)cb_info, &pkt);
760 if (ret != MEDIA_PACKET_ERROR_NONE) {
761 LOGE("media_packet_create_from_tbm_surface failed");
763 tbm_surface_destroy(tsurf);
767 LOGE("failed to create tbm surface %dx%d, format %d, num_buffer_key %d",
768 stream->width, stream->height, stream->format, num_buffer_key);
772 /*LOGD("media packet %p, internal buffer %p", pkt, stream->internal_buffer);*/
774 mp_data = g_new0(camera_media_packet_data, 1);
776 mp_data->tbm_key = tbm_key;
777 mp_data->num_buffer_key = num_buffer_key;
779 for (i = 0 ; i < num_buffer_key ; i++)
780 mp_data->buffer_bo[i] = buffer_bo[i];
782 /* set media packet data */
783 ret = media_packet_set_extra(pkt, (void *)mp_data);
784 if (ret != MEDIA_PACKET_ERROR_NONE) {
785 LOGE("media_packet_set_extra failed");
792 media_packet_destroy(pkt);
795 int e_type = MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW;
797 /* set timestamp : msec -> nsec */
798 if (media_packet_set_pts(pkt, (uint64_t)(stream->timestamp) * 1000000) != MEDIA_PACKET_ERROR_NONE)
799 LOGW("media_packet_set_pts failed");
801 /* call media packet callback */
802 ((camera_media_packet_preview_cb)cb_info->user_cb[e_type])(pkt, cb_info->user_data[e_type]);
805 LOGE("failed to alloc media packet data");
810 /* send message for preview callback return */
811 muse_camera_msg_send_no_return(MUSE_CAMERA_API_PREVIEW_CB_RETURN, cb_info->fd, cb_info);
813 if (mp_data == NULL) {
814 /* release imported bo */
815 for (i = 0 ; i < num_buffer_key ; i++)
816 _release_imported_bo(&buffer_bo[i]);
818 /* unmap and unref tbm bo */
819 _release_imported_bo(&bo);
822 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
823 cb_info->fd, cb_info, INT, tbm_key);
825 /*LOGD("return buffer Done");*/
829 case MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS:
833 muse_camera_msg_get(percent, recv_msg);
835 LOGD("HDR progress - %d \%", percent);
837 ((camera_attr_hdr_progress_cb)cb_info->user_cb[event])(percent, cb_info->user_data[event]);
840 case MUSE_CAMERA_EVENT_TYPE_INTERRUPTED:
846 muse_camera_msg_get(policy, recv_msg);
847 muse_camera_msg_get(previous, recv_msg);
848 muse_camera_msg_get(current, recv_msg);
850 LOGD("INTERRUPTED - policy %d, state previous %d, current %d",
851 policy, previous, current);
853 ((camera_interrupted_cb)cb_info->user_cb[event])((camera_policy_e)policy,
854 (camera_state_e)previous, (camera_state_e)current, cb_info->user_data[event]);
857 case MUSE_CAMERA_EVENT_TYPE_FACE_DETECTION:
860 camera_detected_face_s *faces = NULL;
862 muse_camera_msg_get(count, recv_msg);
863 muse_camera_msg_get(tbm_key, recv_msg);
865 if (count > 0 && tbm_key > 0) {
866 LOGD("FACE_DETECTION - count %d, tbm_key %d", count, tbm_key);
868 if (!_import_tbm_key(cb_info->bufmgr, tbm_key, &bo, &bo_handle))
872 faces = bo_handle.ptr;
874 ((camera_face_detected_cb)cb_info->user_cb[event])(faces, count, cb_info->user_data[event]);
880 for (i = 0 ; i < count ; i++) {
881 LOGD("id[%2d] - score %d, position (%d,%d,%dx%d)",
882 i, faces[i].score, faces[i].x, faces[i].y, faces[i].width, faces[i].height);
888 _release_imported_bo(&bo);
891 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
892 cb_info->fd, cb_info, INT, tbm_key);
894 LOGD("return buffer done");
896 LOGE("invalid message - count %d, key %d", count, tbm_key);
900 case MUSE_CAMERA_EVENT_TYPE_ERROR:
903 int current_state = 0;
905 muse_camera_msg_get(error, recv_msg);
906 muse_camera_msg_get(current_state, recv_msg);
908 LOGE("ERROR - error 0x%x, current_state %d", error, current_state);
910 ((camera_error_cb)cb_info->user_cb[event])((camera_error_e)error,
911 (camera_state_e)current_state, cb_info->user_data[event]);
914 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_RESOLUTION:
915 muse_camera_msg_get(param1, recv_msg);
916 muse_camera_msg_get(param2, recv_msg);
918 LOGD("SUPPORTED_PREVIEW_RESOLUTION - %d x %d", param1, param2);
920 ((camera_supported_preview_resolution_cb)cb_info->user_cb[event])(param1, param2, cb_info->user_data[event]);
922 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_RESOLUTION:
923 muse_camera_msg_get(param1, recv_msg);
924 muse_camera_msg_get(param2, recv_msg);
926 LOGD("SUPPORTED_CAPTURE_RESOLUTION - %d x %d", param1, param2);
928 ((camera_supported_capture_resolution_cb)cb_info->user_cb[event])(param1, param2, cb_info->user_data[event]);
930 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_FORMAT:
931 muse_camera_msg_get(param1, recv_msg);
933 LOGD("SUPPORTED_CAPTURE_FORMAT - %d ", param1);
935 ((camera_supported_capture_format_cb)cb_info->user_cb[event])((camera_pixel_format_e)param1, cb_info->user_data[event]);
937 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_FORMAT:
938 muse_camera_msg_get(param1, recv_msg);
940 LOGD("SUPPORTED_PREVIEW_FORMAT - %d ", param1);
942 ((camera_supported_preview_format_cb)cb_info->user_cb[event])((camera_pixel_format_e)param1, cb_info->user_data[event]);
944 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_AF_MODE:
945 muse_camera_msg_get(param1, recv_msg);
947 LOGD("SUPPORTED_AF_MODE - %d ", param1);
949 ((camera_attr_supported_af_mode_cb)cb_info->user_cb[event])((camera_attr_af_mode_e)param1, cb_info->user_data[event]);
951 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EXPOSURE_MODE:
952 muse_camera_msg_get(param1, recv_msg);
954 LOGD("SUPPORTED_EXPOSURE_MODE - %d ", param1);
956 ((camera_attr_supported_exposure_mode_cb)cb_info->user_cb[event])((camera_attr_exposure_mode_e)param1, cb_info->user_data[event]);
958 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_ISO:
959 muse_camera_msg_get(param1, recv_msg);
961 LOGD("SUPPORTED_ISO - %d ", param1);
963 ((camera_attr_supported_iso_cb)cb_info->user_cb[event])((camera_attr_iso_e)param1, cb_info->user_data[event]);
965 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_WHITEBALANCE:
966 muse_camera_msg_get(param1, recv_msg);
968 LOGD("SUPPORTED_WHITEBALANCE - %d ", param1);
970 ((camera_attr_supported_whitebalance_cb)cb_info->user_cb[event])((camera_attr_whitebalance_e)param1, cb_info->user_data[event]);
972 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EFFECT:
973 muse_camera_msg_get(param1, recv_msg);
975 LOGD("SUPPORTED_EFFECT - %d ", param1);
977 ((camera_attr_supported_effect_cb)cb_info->user_cb[event])((camera_attr_effect_mode_e)param1, cb_info->user_data[event]);
979 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_SCENE_MODE:
980 muse_camera_msg_get(param1, recv_msg);
982 LOGD("SUPPORTED_SCENE_MODE - %d ", param1);
984 ((camera_attr_supported_scene_mode_cb)cb_info->user_cb[event])((camera_attr_scene_mode_e)param1, cb_info->user_data[event]);
986 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FLASH_MODE:
987 muse_camera_msg_get(param1, recv_msg);
989 LOGD("SUPPORTED_FLASH_MODE - %d ", param1);
991 ((camera_attr_supported_flash_mode_cb)cb_info->user_cb[event])((camera_attr_flash_mode_e)param1, cb_info->user_data[event]);
993 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS:
994 muse_camera_msg_get(param1, recv_msg);
996 LOGD("SUPPORTED_FPS - %d ", param1);
998 ((camera_attr_supported_fps_cb)cb_info->user_cb[event])((camera_attr_fps_e)param1, cb_info->user_data[event]);
1000 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS_BY_RESOLUTION:
1001 muse_camera_msg_get(param1, recv_msg);
1003 LOGD("SUPPORTED_FPS_BY_RESOLUTION - %d ", param1);
1005 ((camera_attr_supported_fps_cb)cb_info->user_cb[event])((camera_attr_fps_e)param1, cb_info->user_data[event]);
1007 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_FLIP:
1008 muse_camera_msg_get(param1, recv_msg);
1010 LOGD("SUPPORTED_STREAM_FLIP - %d ", param1);
1012 ((camera_attr_supported_stream_flip_cb)cb_info->user_cb[event])((camera_flip_e)param1, cb_info->user_data[event]);
1014 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_ROTATION:
1015 muse_camera_msg_get(param1, recv_msg);
1017 LOGD("SUPPORTED_STREAM_ROTATION - %d ", param1);
1019 ((camera_attr_supported_stream_rotation_cb)cb_info->user_cb[event])((camera_rotation_e)param1, cb_info->user_data[event]);
1021 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_THEATER_MODE:
1022 muse_camera_msg_get(param1, recv_msg);
1024 LOGD("SUPPORTED_THEATER_MODE - %d ", param1);
1026 ((camera_attr_supported_theater_mode_cb)cb_info->user_cb[event])((camera_attr_theater_mode_e)param1, cb_info->user_data[event]);
1028 case MUSE_CAMERA_EVENT_TYPE_CAPTURE:
1030 camera_image_data_s *rImage = NULL;
1031 camera_image_data_s *rPostview = NULL;
1032 camera_image_data_s *rThumbnail = NULL;
1033 unsigned char *buf_pos = NULL;
1034 int is_postview = 0;
1035 int is_thumbnail = 0;
1037 muse_camera_msg_get(tbm_key, recv_msg);
1038 muse_camera_msg_get(is_postview, recv_msg);
1039 muse_camera_msg_get(is_thumbnail, recv_msg);
1041 LOGD("camera capture callback came in. key %d, postview %d, thumbnail %d",
1042 tbm_key, is_postview, is_thumbnail);
1045 LOGE("invalid key %d", tbm_key);
1049 /* import tbm bo and get virtual address */
1050 if (!_import_tbm_key(cb_info->bufmgr, tbm_key, &bo, &bo_handle))
1053 buf_pos = (unsigned char *)bo_handle.ptr;
1054 rImage = (camera_image_data_s *)buf_pos;
1055 rImage->data = buf_pos + sizeof(camera_image_data_s);
1056 buf_pos += sizeof(camera_image_data_s) + rImage->size;
1059 rPostview = (camera_image_data_s *)buf_pos;
1060 LOGD("rPostview->size : %d", rPostview->size);
1061 rPostview->data = buf_pos + sizeof(camera_image_data_s);
1062 buf_pos += sizeof(camera_image_data_s) + rPostview->size;
1066 rThumbnail = (camera_image_data_s *)buf_pos;
1067 LOGD("rThumbnail->size : %d", rThumbnail->size);
1068 rThumbnail->data = buf_pos + sizeof(camera_image_data_s);
1069 buf_pos += sizeof(camera_image_data_s) + rThumbnail->size;
1072 LOGD("image info %dx%d, size : %d", rImage->height, rImage->width, rImage->size);
1074 ((camera_capturing_cb)cb_info->user_cb[event])(rImage, rPostview, rThumbnail, cb_info->user_data[event]);
1076 /* unmap and unref tbm bo */
1077 _release_imported_bo(&bo);
1080 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
1081 cb_info->fd, cb_info, INT, tbm_key);
1083 LOGD("return buffer done");
1086 case MUSE_CAMERA_EVENT_TYPE_VIDEO_FRAME_RENDER_ERROR:
1089 LOGW("Unknown event : %d", event);
1096 static bool _camera_idle_event_callback(void *data)
1098 camera_cb_info_s *cb_info = NULL;
1099 camera_idle_event_s *cam_idle_event = (camera_idle_event_s *)data;
1101 if (cam_idle_event == NULL) {
1102 LOGE("cam_idle_event is NULL");
1107 g_mutex_lock(&cam_idle_event->event_mutex);
1109 cb_info = cam_idle_event->cb_info;
1110 if (cb_info == NULL) {
1111 LOGW("camera cb_info is NULL. event %d", cam_idle_event->event);
1112 goto IDLE_EVENT_CALLBACK_DONE;
1115 /* remove event from list */
1116 g_mutex_lock(&cb_info->idle_event_mutex);
1117 if (cb_info->idle_event_list)
1118 cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)cam_idle_event);
1120 /*LOGD("remove camera idle event %p, %p", cam_idle_event, cb_info->idle_event_list);*/
1121 g_mutex_unlock(&cb_info->idle_event_mutex);
1124 _client_user_callback(cam_idle_event->cb_info, cam_idle_event->recv_msg, cam_idle_event->event);
1126 /* send signal for waiting thread */
1127 g_cond_signal(&cb_info->idle_event_cond);
1129 IDLE_EVENT_CALLBACK_DONE:
1130 /* unlock and release event */
1131 g_mutex_unlock(&cam_idle_event->event_mutex);
1132 g_mutex_clear(&cam_idle_event->event_mutex);
1134 free(cam_idle_event);
1135 cam_idle_event = NULL;
1140 static void *_camera_msg_handler_func(gpointer data)
1145 int event_class = 0;
1146 camera_message_s *cam_msg = NULL;
1147 camera_idle_event_s *cam_idle_event = NULL;
1148 camera_cb_info_s *cb_info = (camera_cb_info_s *)data;
1150 if (cb_info == NULL) {
1151 LOGE("cb_info NULL");
1157 g_mutex_lock(&cb_info->msg_handler_mutex);
1159 while (g_atomic_int_get(&cb_info->msg_handler_running)) {
1160 if (g_queue_is_empty(cb_info->msg_queue)) {
1161 LOGD("signal wait...");
1162 g_cond_wait(&cb_info->msg_handler_cond, &cb_info->msg_handler_mutex);
1163 LOGD("signal received");
1165 if (g_atomic_int_get(&cb_info->msg_handler_running) == 0) {
1166 LOGD("stop event thread");
1171 cam_msg = (camera_message_s *)g_queue_pop_head(cb_info->msg_queue);
1173 g_mutex_unlock(&cb_info->msg_handler_mutex);
1175 if (cam_msg == NULL) {
1176 LOGE("NULL message");
1177 g_mutex_lock(&cb_info->msg_handler_mutex);
1183 if (api < MUSE_CAMERA_API_MAX) {
1184 g_mutex_lock(&cb_info->api_mutex[api]);
1186 if (muse_camera_msg_get(ret, cam_msg->recv_msg)) {
1187 cb_info->api_ret[api] = ret;
1188 cb_info->api_activating[api] = 1;
1190 LOGD("camera api %d - return 0x%x", ret);
1192 g_cond_signal(&cb_info->api_cond[api]);
1194 LOGE("failed to get camera ret for api %d, msg %s", api, cam_msg->recv_msg);
1197 g_mutex_unlock(&cb_info->api_mutex[api]);
1198 } else if (api == MUSE_CAMERA_CB_EVENT) {
1202 if (!muse_camera_msg_get(event, cam_msg->recv_msg) ||
1203 !muse_camera_msg_get(event_class, cam_msg->recv_msg)) {
1204 LOGE("failed to get camera event %d, class %d", event, event_class);
1209 g_mutex_lock(&cb_info->msg_handler_mutex);
1213 switch (event_class) {
1214 case MUSE_CAMERA_EVENT_CLASS_THREAD_SUB:
1215 _client_user_callback(cb_info, cam_msg->recv_msg, event);
1217 case MUSE_CAMERA_EVENT_CLASS_THREAD_MAIN:
1218 cam_idle_event = (camera_idle_event_s *)malloc(sizeof(camera_idle_event_s));
1219 if (cam_idle_event == NULL) {
1220 LOGE("cam_idle_event alloc failed");
1224 cam_idle_event->event = event;
1225 cam_idle_event->cb_info = cb_info;
1226 g_mutex_init(&cam_idle_event->event_mutex);
1227 memcpy(cam_idle_event->recv_msg, cam_msg->recv_msg, sizeof(cam_idle_event->recv_msg));
1229 LOGD("add camera event[%d, %p] to IDLE", event, cam_idle_event);
1231 g_mutex_lock(&cb_info->idle_event_mutex);
1232 cb_info->idle_event_list = g_list_append(cb_info->idle_event_list, (gpointer)cam_idle_event);
1233 g_mutex_unlock(&cb_info->idle_event_mutex);
1235 g_idle_add_full(G_PRIORITY_DEFAULT,
1236 (GSourceFunc)_camera_idle_event_callback,
1237 (gpointer)cam_idle_event,
1241 LOGE("unknown camera event class %d", event_class);
1245 LOGE("unknown camera api[%d] message[%s]", api, cam_msg->recv_msg);
1251 g_mutex_lock(&cb_info->msg_handler_mutex);
1254 /* remove remained event */
1255 while (!g_queue_is_empty(cb_info->msg_queue)) {
1256 cam_msg = (camera_message_s *)g_queue_pop_head(cb_info->msg_queue);
1258 LOGD("remove camera message %p", cam_msg);
1262 LOGW("NULL camera message");
1266 g_mutex_unlock(&cb_info->msg_handler_mutex);
1273 static void _camera_remove_idle_event_all(camera_cb_info_s *cb_info)
1275 camera_idle_event_s *cam_idle_event = NULL;
1276 gboolean ret = TRUE;
1278 gint64 end_time = 0;
1280 if (cb_info == NULL) {
1281 LOGE("cb_info is NULL");
1285 g_mutex_lock(&cb_info->idle_event_mutex);
1287 if (cb_info->idle_event_list == NULL) {
1288 LOGD("No idle event is remained.");
1290 list = cb_info->idle_event_list;
1293 cam_idle_event = list->data;
1294 list = g_list_next(list);
1296 if (!cam_idle_event) {
1297 LOGW("Fail to remove idle event. The event is NULL");
1299 if (g_mutex_trylock(&cam_idle_event->event_mutex)) {
1300 ret = g_idle_remove_by_data(cam_idle_event);
1302 LOGD("remove idle event [%p], ret[%d]", cam_idle_event, ret);
1305 cam_idle_event->cb_info = NULL;
1306 LOGW("idle callback for event %p will be called later", cam_idle_event);
1309 cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)cam_idle_event);
1311 g_mutex_unlock(&cam_idle_event->event_mutex);
1314 g_mutex_clear(&cam_idle_event->event_mutex);
1316 free(cam_idle_event);
1317 cam_idle_event = NULL;
1319 LOGD("remove idle event done");
1322 LOGW("event lock failed. it's being called...");
1324 end_time = g_get_monotonic_time() + G_TIME_SPAN_MILLISECOND * 100;
1326 if (g_cond_wait_until(&cb_info->idle_event_cond, &cb_info->idle_event_mutex, end_time))
1327 LOGW("signal received");
1334 g_list_free(cb_info->idle_event_list);
1335 cb_info->idle_event_list = NULL;
1338 g_mutex_unlock(&cb_info->idle_event_mutex);
1343 static void *_camera_msg_recv_func(gpointer data)
1352 int prev_state = CAMERA_STATE_NONE;
1353 char *recv_msg = NULL;
1354 char **parse_str = NULL;
1355 camera_cb_info_s *cb_info = (camera_cb_info_s *)data;
1357 if (cb_info == NULL) {
1358 LOGE("cb_info NULL");
1364 parse_str = (char **)malloc(sizeof(char *) * CAMERA_PARSE_STRING_SIZE);
1365 if (parse_str == NULL) {
1366 LOGE("parse_str malloc failed");
1370 for (i = 0 ; i < CAMERA_PARSE_STRING_SIZE ; i++) {
1371 parse_str[i] = (char *)malloc(sizeof(char) * MUSE_CAMERA_MSG_MAX_LENGTH);
1372 if (parse_str[i] == NULL) {
1373 LOGE("parse_str[%d] malloc failed", i);
1374 goto CB_HANDLER_EXIT;
1378 recv_msg = cb_info->recv_msg;
1380 while (g_atomic_int_get(&cb_info->msg_recv_running)) {
1381 ret = muse_core_ipc_recv_msg(cb_info->fd, recv_msg);
1384 recv_msg[ret] = '\0';
1390 /*LOGD("recvMSg : %s, length : %d", recv_msg, ret);*/
1392 /* Need to split the combined entering msgs.
1393 This module supports up to 200 combined msgs. */
1394 for (str_pos = 0; str_pos < ret; str_pos++) {
1395 if (recv_msg[str_pos] == '}') {
1396 memset(parse_str[num_token], 0x0, sizeof(char) * MUSE_CAMERA_MSG_MAX_LENGTH);
1397 strncpy(parse_str[num_token], recv_msg + prev_pos, str_pos - prev_pos + 1);
1398 LOGD("splitted msg : [%s], Index : %d", parse_str[num_token], num_token);
1399 prev_pos = str_pos+1;
1404 /*LOGD("num_token : %d", num_token);*/
1406 /* Re-construct to the useful single msg. */
1407 for (i = 0; i < num_token; i++) {
1408 if (i >= CAMERA_PARSE_STRING_SIZE) {
1409 LOGE("invalid token index %d", i);
1416 if (!muse_camera_msg_get(api, parse_str[i])) {
1417 LOGE("failed to get camera api");
1421 if (muse_camera_msg_get(api_class, parse_str[i]))
1422 LOGD("camera api_class[%d]", api_class);
1424 if (api_class == MUSE_CAMERA_API_CLASS_IMMEDIATE) {
1425 g_mutex_lock(&cb_info->api_mutex[api]);
1427 if (!muse_camera_msg_get(ret, parse_str[i])) {
1428 LOGE("failed to get camera ret");
1429 g_mutex_unlock(&cb_info->api_mutex[api]);
1433 cb_info->api_ret[api] = ret;
1434 cb_info->api_activating[api] = 1;
1436 if (api == MUSE_CAMERA_API_CREATE) {
1437 if (ret != CAMERA_ERROR_NONE) {
1438 g_atomic_int_set(&cb_info->msg_recv_running, 0);
1439 LOGE("camera create error 0x%x. close client cb handler", ret);
1441 } else if (api == MUSE_CAMERA_API_DESTROY) {
1442 if (ret == CAMERA_ERROR_NONE) {
1443 g_atomic_int_set(&cb_info->msg_recv_running, 0);
1444 LOGD("camera destroy done. close client cb handler");
1446 } else if (api == MUSE_CAMERA_API_START_PREVIEW) {
1447 muse_camera_msg_get(prev_state, parse_str[i]);
1448 cb_info->prev_state = prev_state;
1451 g_cond_signal(&cb_info->api_cond[api]);
1452 g_mutex_unlock(&cb_info->api_mutex[api]);
1453 } else if (api_class == MUSE_CAMERA_API_CLASS_THREAD_SUB || api == MUSE_CAMERA_CB_EVENT) {
1454 camera_message_s *cam_msg = g_new0(camera_message_s, 1);
1455 if (cam_msg == NULL) {
1456 LOGE("failed to alloc cam_msg");
1461 memcpy(cam_msg->recv_msg, parse_str[i], sizeof(cam_msg->recv_msg));
1463 LOGD("add camera message to queue : api %d", api);
1465 g_mutex_lock(&cb_info->msg_handler_mutex);
1466 g_queue_push_tail(cb_info->msg_queue, (gpointer)cam_msg);
1467 g_cond_signal(&cb_info->msg_handler_cond);
1468 g_mutex_unlock(&cb_info->msg_handler_mutex);
1470 LOGW("unknown camera api %d and api_class %d", api, api_class);
1476 LOGD("client cb exit");
1480 for (i = 0 ; i < CAMERA_PARSE_STRING_SIZE ; i++) {
1483 parse_str[i] = NULL;
1494 static camera_cb_info_s *_client_callback_new(gint sockfd)
1496 camera_cb_info_s *cb_info = NULL;
1497 gint *tmp_activating = NULL;
1498 gint *tmp_ret = NULL;
1501 g_return_val_if_fail(sockfd > 0, NULL);
1503 cb_info = g_new0(camera_cb_info_s, 1);
1504 if (cb_info == NULL) {
1505 LOGE("cb_info failed");
1509 g_mutex_init(&cb_info->msg_handler_mutex);
1510 g_cond_init(&cb_info->msg_handler_cond);
1511 g_mutex_init(&cb_info->idle_event_mutex);
1512 g_cond_init(&cb_info->idle_event_cond);
1514 for (i = 0 ; i < MUSE_CAMERA_API_MAX ; i++) {
1515 g_mutex_init(&cb_info->api_mutex[i]);
1516 g_cond_init(&cb_info->api_cond[i]);
1519 tmp_activating = g_new0(gint, MUSE_CAMERA_API_MAX);
1520 if (tmp_activating == NULL) {
1521 LOGE("tmp_activating failed");
1525 tmp_ret = g_new0(gint, MUSE_CAMERA_API_MAX);
1526 if (tmp_ret == NULL) {
1527 LOGE("tmp_ret failed");
1531 cb_info->msg_queue = g_queue_new();
1532 if (cb_info->msg_queue == NULL) {
1533 LOGE("msg_queue new failed");
1537 g_atomic_int_set(&cb_info->msg_handler_running, 1);
1538 cb_info->msg_handler_thread = g_thread_try_new("camera_msg_handler",
1539 _camera_msg_handler_func, (gpointer)cb_info, NULL);
1540 if (cb_info->msg_handler_thread == NULL) {
1541 LOGE("message handler thread creation failed");
1545 cb_info->fd = sockfd;
1546 cb_info->api_activating = tmp_activating;
1547 cb_info->api_ret = tmp_ret;
1549 g_atomic_int_set(&cb_info->msg_recv_running, 1);
1550 cb_info->msg_recv_thread = g_thread_try_new("camera_msg_recv",
1551 _camera_msg_recv_func, (gpointer)cb_info, NULL);
1552 if (cb_info->msg_recv_thread == NULL) {
1553 LOGE("message receive thread creation failed");
1561 if (cb_info->msg_handler_thread) {
1562 g_mutex_lock(&cb_info->msg_handler_mutex);
1563 g_atomic_int_set(&cb_info->msg_handler_running, 0);
1564 g_cond_signal(&cb_info->msg_handler_cond);
1565 g_mutex_unlock(&cb_info->msg_handler_mutex);
1567 g_thread_join(cb_info->msg_handler_thread);
1568 g_thread_unref(cb_info->msg_handler_thread);
1569 cb_info->msg_handler_thread = NULL;
1572 for (i = 0 ; i < MUSE_CAMERA_API_MAX ; i++) {
1573 g_mutex_clear(&cb_info->api_mutex[i]);
1574 g_cond_clear(&cb_info->api_cond[i]);
1577 g_mutex_clear(&cb_info->msg_handler_mutex);
1578 g_cond_clear(&cb_info->msg_handler_cond);
1579 g_mutex_clear(&cb_info->idle_event_mutex);
1580 g_cond_clear(&cb_info->idle_event_cond);
1582 if (cb_info->msg_queue) {
1583 g_queue_free(cb_info->msg_queue);
1584 cb_info->msg_queue = NULL;
1591 if (tmp_activating) {
1592 g_free(tmp_activating);
1593 tmp_activating = NULL;
1603 static void _client_callback_destroy(camera_cb_info_s *cb_info)
1607 g_return_if_fail(cb_info != NULL);
1609 LOGD("MSG receive thread[%p] destroy", cb_info->msg_recv_thread);
1611 g_thread_join(cb_info->msg_recv_thread);
1612 g_thread_unref(cb_info->msg_recv_thread);
1613 cb_info->msg_recv_thread = NULL;
1615 LOGD("msg thread removed");
1617 g_mutex_lock(&cb_info->msg_handler_mutex);
1618 g_atomic_int_set(&cb_info->msg_handler_running, 0);
1619 g_cond_signal(&cb_info->msg_handler_cond);
1620 g_mutex_unlock(&cb_info->msg_handler_mutex);
1622 g_thread_join(cb_info->msg_handler_thread);
1623 g_thread_unref(cb_info->msg_handler_thread);
1624 cb_info->msg_handler_thread = NULL;
1626 g_queue_free(cb_info->msg_queue);
1627 cb_info->msg_queue = NULL;
1629 for (i = 0 ; i < MUSE_CAMERA_API_MAX ; i++) {
1630 g_mutex_clear(&cb_info->api_mutex[i]);
1631 g_cond_clear(&cb_info->api_cond[i]);
1634 g_mutex_clear(&cb_info->msg_handler_mutex);
1635 g_cond_clear(&cb_info->msg_handler_cond);
1636 g_mutex_clear(&cb_info->idle_event_mutex);
1637 g_cond_clear(&cb_info->idle_event_cond);
1639 LOGD("event thread removed");
1641 if (cb_info->bufmgr) {
1642 tbm_bufmgr_deinit(cb_info->bufmgr);
1643 cb_info->bufmgr = NULL;
1645 if (cb_info->api_activating) {
1646 g_free(cb_info->api_activating);
1647 cb_info->api_activating = NULL;
1649 if (cb_info->api_ret) {
1650 g_free(cb_info->api_ret);
1651 cb_info->api_ret = NULL;
1653 if (cb_info->pkt_fmt) {
1654 media_format_unref(cb_info->pkt_fmt);
1655 cb_info->pkt_fmt = NULL;
1664 int camera_create(camera_device_e device, camera_h* camera)
1668 int ret = CAMERA_ERROR_NONE;
1670 camera_cli_s *pc = NULL;
1671 tbm_bufmgr bufmgr = NULL;
1673 muse_camera_api_e api = MUSE_CAMERA_API_CREATE;
1674 muse_core_api_module_e muse_module = MUSE_CAMERA;
1675 int device_type = (int)device;
1677 if (camera == NULL) {
1678 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1679 return CAMERA_ERROR_INVALID_PARAMETER;
1682 bufmgr = tbm_bufmgr_init(-1);
1683 if (bufmgr == NULL) {
1684 LOGE("get tbm bufmgr failed");
1685 return CAMERA_ERROR_INVALID_OPERATION;
1688 sock_fd = muse_core_client_new();
1690 LOGE("muse_core_client_new failed - returned fd %d", sock_fd);
1691 ret = CAMERA_ERROR_INVALID_OPERATION;
1697 sndMsg = muse_core_msg_json_factory_new(api,
1698 MUSE_TYPE_INT, "module", muse_module,
1699 MUSE_TYPE_INT, PARAM_DEVICE_TYPE, device_type,
1700 MUSE_TYPE_INT, "pid", pid,
1703 muse_core_ipc_send_msg(sock_fd, sndMsg);
1704 muse_core_msg_json_factory_free(sndMsg);
1706 pc = g_new0(camera_cli_s, 1);
1708 LOGE("camera_cli_s alloc failed");
1709 ret = CAMERA_ERROR_OUT_OF_MEMORY;
1713 pc->cb_info = _client_callback_new(sock_fd);
1714 if (pc->cb_info == NULL) {
1715 LOGE("cb_info alloc failed");
1716 ret = CAMERA_ERROR_OUT_OF_MEMORY;
1720 LOGD("cb info : %d", pc->cb_info->fd);
1722 ret = _client_wait_for_cb_return(api, pc->cb_info, CALLBACK_TIME_OUT);
1723 if (ret == CAMERA_ERROR_NONE) {
1724 intptr_t handle = 0;
1725 muse_camera_msg_get_pointer(handle, pc->cb_info->recv_msg);
1727 LOGE("Receiving Handle Failed!!");
1728 ret = CAMERA_ERROR_INVALID_OPERATION;
1732 pc->remote_handle = handle;
1733 pc->cb_info->bufmgr = bufmgr;
1735 LOGD("camera create 0x%x", pc->remote_handle);
1736 *camera = (camera_h) pc;
1744 tbm_bufmgr_deinit(bufmgr);
1748 _client_callback_destroy(pc->cb_info);
1754 LOGE("camera create error : 0x%x", ret);
1759 int camera_destroy(camera_h camera)
1761 if (camera == NULL) {
1762 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1763 return CAMERA_ERROR_INVALID_PARAMETER;
1766 int ret = CAMERA_ERROR_NONE;
1767 muse_camera_api_e api = MUSE_CAMERA_API_DESTROY;
1768 camera_cli_s *pc = (camera_cli_s *)camera;
1773 if (pc->cb_info == NULL) {
1774 LOGE("cb_info NULL, INVALID_PARAMETER");
1775 return CAMERA_ERROR_INVALID_PARAMETER;
1778 sock_fd = pc->cb_info->fd;
1780 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
1781 if (ret == CAMERA_ERROR_NONE) {
1782 if (pc->client_handle) {
1783 mm_camcorder_client_destroy(pc->client_handle);
1784 pc->client_handle = NULL;
1786 _camera_remove_idle_event_all(pc->cb_info);
1787 _client_callback_destroy(pc->cb_info);
1792 g_free(pc->wl_info);
1795 #endif /* HAVE_WAYLAND */
1800 LOGE("camera destroy error : 0x%x", ret);
1806 int camera_start_preview(camera_h camera)
1808 int ret = CAMERA_ERROR_NONE;
1809 muse_camera_api_e api = MUSE_CAMERA_API_START_PREVIEW;
1810 camera_cli_s *pc = (camera_cli_s *)camera;
1812 char caps[MUSE_CAMERA_MSG_MAX_LENGTH] = {0};
1814 if (camera == NULL) {
1815 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1816 return CAMERA_ERROR_INVALID_PARAMETER;
1819 if (pc->cb_info == NULL) {
1820 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1821 return CAMERA_ERROR_INVALID_PARAMETER;
1826 sock_fd = pc->cb_info->fd;
1828 if (pc->client_handle == NULL) {
1829 LOGW("set display is not called by application. set NONE type internally");
1830 ret = camera_set_display(camera, CAMERA_DISPLAY_TYPE_NONE, NULL);
1831 if (ret != CAMERA_ERROR_NONE) {
1832 LOGE("Internal camera_set_display failed 0x%x", ret);
1837 muse_camera_msg_send_longtime(api, sock_fd, pc->cb_info, ret);
1839 if (ret != CAMERA_ERROR_NONE) {
1840 LOGE("start preview failed 0x%x", ret);
1844 if (pc->cb_info->prev_state == CAMERA_STATE_CREATED) {
1845 if (muse_camera_msg_get_string(caps, pc->cb_info->recv_msg) == FALSE) {
1846 LOGE("failed to get caps string");
1847 goto _START_PREVIEW_ERROR;
1850 LOGD("caps : %s", caps);
1852 ret = mm_camcorder_client_realize(pc->client_handle, caps);
1853 if (ret != MM_ERROR_NONE) {
1854 LOGE("client realize failed 0x%x", ret);
1855 goto _START_PREVIEW_ERROR;
1859 LOGD("ret : 0x%x", ret);
1861 return CAMERA_ERROR_NONE;
1863 _START_PREVIEW_ERROR:
1864 muse_camera_msg_send_longtime(MUSE_CAMERA_API_STOP_PREVIEW, sock_fd, pc->cb_info, ret);
1866 return CAMERA_ERROR_INVALID_OPERATION;
1869 int camera_stop_preview(camera_h camera)
1871 if (camera == NULL) {
1872 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1873 return CAMERA_ERROR_INVALID_PARAMETER;
1875 int ret = CAMERA_ERROR_NONE;
1876 camera_cli_s *pc = (camera_cli_s *)camera;
1878 muse_camera_api_e api = MUSE_CAMERA_API_STOP_PREVIEW;
1880 if (pc->cb_info == NULL) {
1881 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1882 return CAMERA_ERROR_INVALID_PARAMETER;
1885 sock_fd = pc->cb_info->fd;
1887 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
1889 if (ret != CAMERA_ERROR_NONE) {
1890 LOGE("stop preview failed 0x%x", ret);
1894 if (pc->client_handle != NULL) {
1895 if (mm_camcorder_client_unrealize(pc->client_handle) == MM_ERROR_NONE) {
1896 LOGD("client unrealize done");
1898 LOGE("client unrealize failed. restart preview...");
1899 muse_camera_msg_send_longtime(MUSE_CAMERA_API_START_PREVIEW, sock_fd, pc->cb_info, ret);
1900 return CAMERA_ERROR_INVALID_OPERATION;
1903 LOGW("client handle is NULL");
1906 LOGD("ret : 0x%x", ret);
1911 int camera_start_capture(camera_h camera, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb, void *user_data)
1913 if (camera == NULL) {
1914 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1915 return CAMERA_ERROR_INVALID_PARAMETER;
1917 int ret = CAMERA_ERROR_NONE;
1919 camera_cli_s *pc = (camera_cli_s *)camera;
1920 muse_camera_api_e api = MUSE_CAMERA_API_START_CAPTURE;
1922 int is_capturing_cb = 0;
1923 int is_completed_cb = 0;
1924 LOGD("Enter, handle :%x", pc->remote_handle);
1926 if (pc->cb_info == NULL) {
1927 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1928 return CAMERA_ERROR_INVALID_PARAMETER;
1931 sock_fd = pc->cb_info->fd;
1933 if (capturing_cb != NULL) {
1934 is_capturing_cb = 1;
1935 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = capturing_cb;
1936 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = user_data;
1939 if (completed_cb != NULL) {
1940 is_completed_cb = 1;
1941 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE] = completed_cb;
1942 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE] = user_data;
1945 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, is_capturing_cb, INT, is_completed_cb);
1946 LOGD("is_capturing_cb :%d, is_completed_cb : %d", is_capturing_cb, is_completed_cb);
1947 LOGD("ret : 0x%x", ret);
1951 bool camera_is_supported_continuous_capture(camera_h camera)
1953 if (camera == NULL) {
1954 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1958 int ret = CAMERA_ERROR_NONE;
1959 camera_cli_s *pc = (camera_cli_s *)camera;
1960 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_CONTINUOUS_CAPTURE;
1963 if (pc->cb_info == NULL) {
1964 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1965 return CAMERA_ERROR_INVALID_PARAMETER;
1968 sock_fd = pc->cb_info->fd;
1970 LOGD("Enter, remote_handle : %x", pc->remote_handle);
1971 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
1972 LOGD("ret : 0x%x", ret);
1976 int camera_start_continuous_capture(camera_h camera, int count, int interval, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb , void *user_data)
1978 if (camera == NULL) {
1979 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1980 return CAMERA_ERROR_INVALID_PARAMETER;
1983 int ret = CAMERA_ERROR_NONE;
1985 camera_cli_s *pc = (camera_cli_s *)camera;
1986 muse_camera_api_e api = MUSE_CAMERA_API_START_CONTINUOUS_CAPTURE;
1988 LOGD("Enter, handle :%x", pc->remote_handle);
1991 if (pc->cb_info == NULL) {
1992 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1993 return CAMERA_ERROR_INVALID_PARAMETER;
1995 sock_fd = pc->cb_info->fd;
1997 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = capturing_cb;
1998 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = user_data;
1999 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE] = completed_cb;
2001 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, count, INT, interval);
2003 LOGD("ret : 0x%x", ret);
2008 int camera_stop_continuous_capture(camera_h camera)
2010 if (camera == NULL) {
2011 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2012 return CAMERA_ERROR_INVALID_PARAMETER;
2016 int ret = CAMERA_ERROR_NONE;
2018 camera_cli_s *pc = (camera_cli_s *)camera;
2019 muse_camera_api_e api = MUSE_CAMERA_API_STOP_CONTINUOUS_CAPTURE;
2020 LOGD("Enter, handle :%x", pc->remote_handle);
2022 if (pc->cb_info == NULL) {
2023 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2024 return CAMERA_ERROR_INVALID_PARAMETER;
2026 sock_fd = pc->cb_info->fd;
2027 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2028 LOGD("ret : 0x%x", ret);
2032 bool camera_is_supported_face_detection(camera_h camera)
2034 if (camera == NULL) {
2035 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2038 int ret = CAMERA_ERROR_NONE;
2040 camera_cli_s *pc = (camera_cli_s *)camera;
2041 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_FACE_DETECTION;
2043 if (pc->cb_info == NULL) {
2044 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2045 return CAMERA_ERROR_INVALID_PARAMETER;
2047 sock_fd = pc->cb_info->fd;
2049 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2050 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2051 LOGD("ret : 0x%x", ret);
2055 bool camera_is_supported_zero_shutter_lag(camera_h camera)
2057 if (camera == NULL) {
2058 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2061 int ret = CAMERA_ERROR_NONE;
2063 camera_cli_s *pc = (camera_cli_s *)camera;
2064 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_ZERO_SHUTTER_LAG;
2066 if (pc->cb_info == NULL) {
2067 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2068 return CAMERA_ERROR_INVALID_PARAMETER;
2070 sock_fd = pc->cb_info->fd;
2072 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2073 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2074 LOGD("ret : 0x%x", ret);
2078 bool camera_is_supported_media_packet_preview_cb(camera_h camera)
2080 if (camera == NULL) {
2081 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2085 int ret = CAMERA_ERROR_NONE;
2087 camera_cli_s *pc = (camera_cli_s *)camera;
2088 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_MEDIA_PACKET_PREVIEW_CB;
2090 if (pc->cb_info == NULL) {
2091 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2092 return CAMERA_ERROR_INVALID_PARAMETER;
2094 sock_fd = pc->cb_info->fd;
2096 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2097 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2098 LOGD("ret : 0x%x", ret);
2102 int camera_get_device_count(camera_h camera, int *device_count)
2104 if (camera == NULL || device_count == NULL) {
2105 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2106 return CAMERA_ERROR_INVALID_PARAMETER;
2108 int ret = CAMERA_ERROR_NONE;
2110 camera_cli_s *pc = (camera_cli_s *)camera;
2111 muse_camera_api_e api = MUSE_CAMERA_API_GET_DEVICE_COUNT;
2113 if (pc->cb_info == NULL) {
2114 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2115 return CAMERA_ERROR_INVALID_PARAMETER;
2117 sock_fd = pc->cb_info->fd;
2118 int get_device_count;
2120 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2121 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2123 if (ret == CAMERA_ERROR_NONE) {
2124 muse_camera_msg_get(get_device_count, pc->cb_info->recv_msg);
2125 *device_count = get_device_count;
2127 LOGD("ret : 0x%x", ret);
2131 int camera_start_face_detection(camera_h camera, camera_face_detected_cb callback, void * user_data)
2133 if (camera == NULL) {
2134 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2135 return CAMERA_ERROR_INVALID_PARAMETER;
2138 int ret = CAMERA_ERROR_NONE;
2140 camera_cli_s *pc = (camera_cli_s *)camera;
2141 muse_camera_api_e api = MUSE_CAMERA_API_START_FACE_DETECTION;
2143 LOGD("Enter, handle :%x", pc->remote_handle);
2145 if (pc->cb_info == NULL) {
2146 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2147 return CAMERA_ERROR_INVALID_PARAMETER;
2149 sock_fd = pc->cb_info->fd;
2150 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FACE_DETECTION] = callback;
2151 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FACE_DETECTION] = user_data;
2153 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2154 LOGD("ret : 0x%x", ret);
2158 int camera_stop_face_detection(camera_h camera)
2160 if (camera == NULL) {
2161 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2162 return CAMERA_ERROR_INVALID_PARAMETER;
2165 int ret = CAMERA_ERROR_NONE;
2167 camera_cli_s *pc = (camera_cli_s *)camera;
2168 muse_camera_api_e api = MUSE_CAMERA_API_STOP_FACE_DETECTION;
2169 LOGD("Enter, handle :%x", pc->remote_handle);
2171 if (pc->cb_info == NULL) {
2172 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2173 return CAMERA_ERROR_INVALID_PARAMETER;
2175 sock_fd = pc->cb_info->fd;
2176 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2177 LOGD("ret : 0x%x", ret);
2181 int camera_get_state(camera_h camera, camera_state_e * state)
2183 if (camera == NULL || state == NULL) {
2184 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2185 return CAMERA_ERROR_INVALID_PARAMETER;
2187 int ret = CAMERA_ERROR_NONE;
2189 camera_cli_s *pc = (camera_cli_s *)camera;
2190 muse_camera_api_e api = MUSE_CAMERA_API_GET_STATE;
2192 if (pc->cb_info == NULL) {
2193 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2194 return CAMERA_ERROR_INVALID_PARAMETER;
2196 sock_fd = pc->cb_info->fd;
2199 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2200 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2202 if (ret == CAMERA_ERROR_NONE) {
2203 muse_camera_msg_get(get_state, pc->cb_info->recv_msg);
2204 *state = (camera_state_e)get_state;
2206 LOGD("ret : 0x%x", ret);
2210 int camera_start_focusing(camera_h camera, bool continuous)
2212 if (camera == NULL) {
2213 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2214 return CAMERA_ERROR_INVALID_PARAMETER;
2217 int ret = CAMERA_ERROR_NONE;
2219 camera_cli_s *pc = (camera_cli_s *)camera;
2220 muse_camera_api_e api = MUSE_CAMERA_API_START_FOCUSING;
2222 if (pc->cb_info == NULL) {
2223 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2224 return CAMERA_ERROR_INVALID_PARAMETER;
2226 sock_fd = pc->cb_info->fd;
2227 int is_continuous = (int)continuous;
2229 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2230 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, is_continuous);
2231 LOGD("ret : 0x%x", ret);
2235 int camera_cancel_focusing(camera_h camera)
2237 if (camera == NULL) {
2238 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2239 return CAMERA_ERROR_INVALID_PARAMETER;
2242 int ret = CAMERA_ERROR_NONE;
2244 camera_cli_s *pc = (camera_cli_s *)camera;
2245 muse_camera_api_e api = MUSE_CAMERA_API_CANCEL_FOCUSING;
2247 if (pc->cb_info == NULL) {
2248 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2249 return CAMERA_ERROR_INVALID_PARAMETER;
2251 sock_fd = pc->cb_info->fd;
2253 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2254 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2255 LOGD("ret : 0x%x", ret);
2259 int camera_set_display(camera_h camera, camera_display_type_e type, camera_display_h display)
2261 int ret = CAMERA_ERROR_NONE;
2262 void *set_display_handle = NULL;
2263 int set_surface = MM_DISPLAY_SURFACE_X;
2264 Evas_Object *obj = NULL;
2265 const char *object_type = NULL;
2266 char socket_path[MUSE_CAMERA_MSG_MAX_LENGTH] = {0,};
2268 MMCamWaylandInfo *wl_info = NULL;
2269 #endif /* HAVE_WAYLAND */
2271 if (camera == NULL) {
2272 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2273 return CAMERA_ERROR_INVALID_PARAMETER;
2276 if (type != CAMERA_DISPLAY_TYPE_NONE && display == NULL) {
2277 LOGE("display type[%d] is not NONE, but display handle is NULL", type);
2278 return CAMERA_ERROR_INVALID_PARAMETER;
2281 camera_cli_s *pc = (camera_cli_s *)camera;
2282 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY;
2284 if (pc->cb_info == NULL) {
2285 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2286 return CAMERA_ERROR_INVALID_PARAMETER;
2288 sock_fd = pc->cb_info->fd;
2290 LOGD("Enter, remote_handle : %x display : 0x%x", pc->remote_handle, display);
2292 if (type == CAMERA_DISPLAY_TYPE_NONE) {
2293 set_display_handle = 0;
2294 set_surface = MM_DISPLAY_SURFACE_NULL;
2295 LOGD("display type NONE");
2297 obj = (Evas_Object *)display;
2298 object_type = evas_object_type_get(obj);
2300 if (type == CAMERA_DISPLAY_TYPE_OVERLAY && !strcmp(object_type, "elm_win")) {
2302 /* set wayland info */
2303 wl_info = _get_wl_info(obj);
2304 if (wl_info == NULL) {
2305 LOGE("failed to get wl_info");
2306 return CAMERA_ERROR_INVALID_OPERATION;
2309 set_display_handle = (void *)wl_info;
2310 #else /* HAVE_WAYLAND */
2311 /* x window overlay surface */
2312 set_display_handle = (void *)elm_win_xwindow_get(obj);
2314 set_surface = MM_DISPLAY_SURFACE_X;
2315 LOGD("display type OVERLAY : handle %p", set_display_handle);
2316 } else if (type == CAMERA_DISPLAY_TYPE_EVAS && !strcmp(object_type, "image")) {
2317 /* evas object surface */
2318 set_display_handle = (void *)display;
2319 set_surface = MM_DISPLAY_SURFACE_EVAS;
2320 LOGD("display type EVAS : handle %p", set_display_handle);
2322 LOGE("unknown evas object [%p,%s] or type [%d] mismatch", obj, object_type, type);
2323 return CAMERA_ERROR_INVALID_PARAMETER;
2326 LOGE("failed to get evas object type from %p", obj);
2327 return CAMERA_ERROR_INVALID_PARAMETER;
2331 pc->display_handle = (intptr_t)set_display_handle;
2333 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2335 if (ret == CAMERA_ERROR_NONE) {
2336 if (pc->client_handle == NULL) {
2337 ret = mm_camcorder_client_create(&pc->client_handle);
2338 if (ret != MM_ERROR_NONE) {
2339 LOGE("camera client create Failed 0x%x", ret);
2340 goto _SET_DISPLAY_ERROR;
2344 if (muse_camera_msg_get_string(socket_path, pc->cb_info->recv_msg) == FALSE) {
2345 LOGE("failed to get socket path");
2346 goto _SET_DISPLAY_ERROR;
2349 LOGD("socket path : %s", socket_path);
2351 ret = mm_camcorder_client_set_socket_path(pc->client_handle, socket_path);
2352 if (ret != MM_ERROR_NONE) {
2353 LOGE("failed to set socket path 0x%x", ret);
2354 goto _SET_DISPLAY_ERROR;
2357 ret = mm_camcorder_set_attributes(pc->client_handle, NULL,
2358 MMCAM_DISPLAY_SURFACE, set_surface,
2360 if (ret != MM_ERROR_NONE) {
2361 LOGE("set display surface failed 0x%x", ret);
2362 goto _SET_DISPLAY_ERROR;
2365 if (type != CAMERA_DISPLAY_TYPE_NONE) {
2366 ret = mm_camcorder_set_attributes(pc->client_handle, NULL,
2367 MMCAM_DISPLAY_HANDLE, set_display_handle, sizeof(void *),
2369 if (ret != MM_ERROR_NONE) {
2370 LOGE("set display handle failed 0x%x", ret);
2371 goto _SET_DISPLAY_ERROR;
2377 g_free(pc->wl_info);
2381 pc->wl_info = wl_info;
2382 #endif /* HAVE_WAYLAND */
2384 return CAMERA_ERROR_NONE;;
2386 LOGE("set display error - 0x%x");
2396 #endif /* HAVE_WAYLAND */
2398 return __convert_camera_error_code(__func__, ret);
2401 int camera_set_preview_resolution(camera_h camera, int width, int height)
2403 if (camera == NULL) {
2404 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2405 return CAMERA_ERROR_INVALID_PARAMETER;
2407 int ret = CAMERA_ERROR_NONE;
2409 camera_cli_s *pc = (camera_cli_s *)camera;
2410 muse_camera_api_e api = MUSE_CAMERA_API_SET_PREVIEW_RESOLUTION;
2412 if (pc->cb_info == NULL) {
2413 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2414 return CAMERA_ERROR_INVALID_PARAMETER;
2416 sock_fd = pc->cb_info->fd;
2418 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2419 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, width, INT, height);
2420 LOGD("ret : 0x%x", ret);
2425 int camera_set_capture_resolution(camera_h camera, int width, int height)
2427 if (camera == NULL) {
2428 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2429 return CAMERA_ERROR_INVALID_PARAMETER;
2432 int ret = CAMERA_ERROR_NONE;
2434 camera_cli_s *pc = (camera_cli_s *)camera;
2435 muse_camera_api_e api = MUSE_CAMERA_API_SET_CAPTURE_RESOLUTION;
2437 if (pc->cb_info == NULL) {
2438 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2439 return CAMERA_ERROR_INVALID_PARAMETER;
2441 sock_fd = pc->cb_info->fd;
2443 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2444 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, width, INT, height);
2445 LOGD("ret : 0x%x", ret);
2449 int camera_set_capture_format(camera_h camera, camera_pixel_format_e format)
2451 if (camera == NULL) {
2452 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2453 return CAMERA_ERROR_INVALID_PARAMETER;
2456 int ret = CAMERA_ERROR_NONE;
2457 int set_format = (int)format;
2459 camera_cli_s *pc = (camera_cli_s *)camera;
2460 muse_camera_api_e api = MUSE_CAMERA_API_SET_CAPTURE_FORMAT;
2462 if (pc->cb_info == NULL) {
2463 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2464 return CAMERA_ERROR_INVALID_PARAMETER;
2466 sock_fd = pc->cb_info->fd;
2468 LOGD("Enter, remote_handle : %x, capture_format: %d", pc->remote_handle, set_format);
2469 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_format);
2470 LOGD("ret : 0x%x", ret);
2474 int camera_set_preview_format(camera_h camera, camera_pixel_format_e format)
2476 if (camera == NULL) {
2477 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2478 return CAMERA_ERROR_INVALID_PARAMETER;
2481 int ret = CAMERA_ERROR_NONE;
2482 int set_format = (int)format;
2484 camera_cli_s *pc = (camera_cli_s *)camera;
2485 muse_camera_api_e api = MUSE_CAMERA_API_SET_PREVIEW_FORMAT;
2487 if (pc->cb_info == NULL) {
2488 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2489 return CAMERA_ERROR_INVALID_PARAMETER;
2491 sock_fd = pc->cb_info->fd;
2493 LOGD("Enter, remote_handle : %x, capture_format: %d", pc->remote_handle, set_format);
2494 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_format);
2495 LOGD("ret : 0x%x", ret);
2499 int camera_get_preview_resolution(camera_h camera, int *width, int *height)
2501 if (camera == NULL || width == NULL || height == NULL) {
2502 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2503 return CAMERA_ERROR_INVALID_PARAMETER;
2507 int ret = CAMERA_ERROR_NONE;
2509 camera_cli_s *pc = (camera_cli_s *)camera;
2510 muse_camera_api_e api = MUSE_CAMERA_API_GET_PREVIEW_RESOLUTION;
2512 if (pc->cb_info == NULL) {
2513 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2514 return CAMERA_ERROR_INVALID_PARAMETER;
2516 sock_fd = pc->cb_info->fd;
2520 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2521 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2523 if (ret == CAMERA_ERROR_NONE) {
2524 muse_camera_msg_get(get_width, pc->cb_info->recv_msg);
2525 muse_camera_msg_get(get_height, pc->cb_info->recv_msg);
2527 *height = get_height;
2529 LOGD("ret : 0x%x", ret);
2533 int camera_set_display_rotation(camera_h camera, camera_rotation_e rotation)
2535 if (camera == NULL) {
2536 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2537 return CAMERA_ERROR_INVALID_PARAMETER;
2540 int ret = CAMERA_ERROR_NONE;
2541 camera_cli_s *pc = (camera_cli_s *)camera;
2542 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_ROTATION;
2544 if (pc->cb_info == NULL) {
2545 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2546 return CAMERA_ERROR_INVALID_PARAMETER;
2548 sock_fd = pc->cb_info->fd;
2549 int set_rotation = (int)rotation;
2551 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2552 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_rotation);
2553 LOGD("ret : 0x%x", ret);
2557 int camera_get_display_rotation(camera_h camera, camera_rotation_e *rotation)
2559 if (camera == NULL || rotation == NULL) {
2560 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2561 return CAMERA_ERROR_INVALID_PARAMETER;
2564 int ret = CAMERA_ERROR_NONE;
2566 camera_cli_s *pc = (camera_cli_s *)camera;
2567 muse_camera_api_e api = MUSE_CAMERA_API_GET_DISPLAY_ROTATION;
2569 if (pc->cb_info == NULL) {
2570 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2571 return CAMERA_ERROR_INVALID_PARAMETER;
2573 sock_fd = pc->cb_info->fd;
2576 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2577 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2579 if (ret == CAMERA_ERROR_NONE) {
2580 muse_camera_msg_get(get_rotation, pc->cb_info->recv_msg);
2581 *rotation = (camera_rotation_e)get_rotation;
2583 LOGD("ret : 0x%x", ret);
2587 int camera_set_display_flip(camera_h camera, camera_flip_e flip)
2589 if (camera == NULL) {
2590 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2591 return CAMERA_ERROR_INVALID_PARAMETER;
2594 int ret = CAMERA_ERROR_NONE;
2596 camera_cli_s *pc = (camera_cli_s *)camera;
2597 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_FLIP;
2599 if (pc->cb_info == NULL) {
2600 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2601 return CAMERA_ERROR_INVALID_PARAMETER;
2603 sock_fd = pc->cb_info->fd;
2604 int set_flip = (int)flip;
2606 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2607 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_flip);
2608 LOGD("ret : 0x%x", ret);
2612 int camera_get_display_flip(camera_h camera, camera_flip_e *flip)
2614 if (camera == NULL || flip == NULL) {
2615 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2616 return CAMERA_ERROR_INVALID_PARAMETER;
2619 int ret = CAMERA_ERROR_NONE;
2621 camera_cli_s *pc = (camera_cli_s *)camera;
2622 muse_camera_api_e api = MUSE_CAMERA_API_GET_DISPLAY_FLIP;
2624 if (pc->cb_info == NULL) {
2625 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2626 return CAMERA_ERROR_INVALID_PARAMETER;
2628 sock_fd = pc->cb_info->fd;
2631 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2632 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2634 if (ret == CAMERA_ERROR_NONE) {
2635 muse_camera_msg_get(get_flip, pc->cb_info->recv_msg);
2636 *flip = (camera_flip_e)get_flip;
2638 LOGD("ret : 0x%x", ret);
2642 int camera_set_display_visible(camera_h camera, bool visible)
2644 if (camera == NULL) {
2645 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2646 return CAMERA_ERROR_INVALID_PARAMETER;
2649 int ret = CAMERA_ERROR_NONE;
2651 camera_cli_s *pc = (camera_cli_s *)camera;
2652 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_VISIBLE;
2653 int set_visible = (int)visible;
2655 if (pc->cb_info == NULL) {
2656 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2657 return CAMERA_ERROR_INVALID_PARAMETER;
2659 sock_fd = pc->cb_info->fd;
2661 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2662 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_visible);
2663 LOGD("ret : 0x%x", ret);
2667 int camera_is_display_visible(camera_h camera, bool* visible)
2669 if (camera == NULL || visible == NULL) {
2670 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2671 return CAMERA_ERROR_INVALID_PARAMETER;
2674 int ret = CAMERA_ERROR_NONE;
2676 camera_cli_s *pc = (camera_cli_s *)camera;
2677 muse_camera_api_e api = MUSE_CAMERA_API_IS_DISPLAY_VISIBLE;
2679 if (pc->cb_info == NULL) {
2680 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2681 return CAMERA_ERROR_INVALID_PARAMETER;
2683 sock_fd = pc->cb_info->fd;
2686 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2687 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2689 if (ret == CAMERA_ERROR_NONE) {
2690 muse_camera_msg_get(get_visible, pc->cb_info->recv_msg);
2691 *visible = (bool)get_visible;
2693 LOGD("ret : 0x%x", ret);
2697 int camera_set_display_mode(camera_h camera, camera_display_mode_e mode)
2699 if (camera == NULL) {
2700 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2701 return CAMERA_ERROR_INVALID_PARAMETER;
2704 int ret = CAMERA_ERROR_NONE;
2705 int set_mode = (int)mode;
2707 camera_cli_s *pc = (camera_cli_s *)camera;
2708 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_MODE;
2710 if (pc->cb_info == NULL) {
2711 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2712 return CAMERA_ERROR_INVALID_PARAMETER;
2714 sock_fd = pc->cb_info->fd;
2716 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2717 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
2718 LOGD("ret : 0x%x", ret);
2722 int camera_get_display_mode(camera_h camera, camera_display_mode_e* mode)
2724 if (camera == NULL || mode == NULL) {
2725 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2726 return CAMERA_ERROR_INVALID_PARAMETER;
2729 int ret = CAMERA_ERROR_NONE;
2731 camera_cli_s *pc = (camera_cli_s *)camera;
2732 muse_camera_api_e api = MUSE_CAMERA_API_GET_DISPLAY_MODE;
2734 if (pc->cb_info == NULL) {
2735 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2736 return CAMERA_ERROR_INVALID_PARAMETER;
2738 sock_fd = pc->cb_info->fd;
2741 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2742 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2744 if (ret == CAMERA_ERROR_NONE) {
2745 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
2746 *mode = (camera_display_mode_e)get_mode;
2748 LOGD("ret : 0x%x", ret);
2752 int camera_get_capture_resolution(camera_h camera, int *width, int *height)
2754 if (camera == NULL || width == NULL || height == NULL) {
2755 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2756 return CAMERA_ERROR_INVALID_PARAMETER;
2758 int ret = CAMERA_ERROR_NONE;
2760 camera_cli_s *pc = (camera_cli_s *)camera;
2761 muse_camera_api_e api = MUSE_CAMERA_API_GET_CAPTURE_RESOLUTION;
2763 if (pc->cb_info == NULL) {
2764 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2765 return CAMERA_ERROR_INVALID_PARAMETER;
2767 sock_fd = pc->cb_info->fd;
2771 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2772 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2774 if (ret == CAMERA_ERROR_NONE) {
2775 muse_camera_msg_get(get_width, pc->cb_info->recv_msg);
2776 muse_camera_msg_get(get_height, pc->cb_info->recv_msg);
2778 *height = get_height;
2780 LOGD("ret : 0x%x", ret);
2784 int camera_get_capture_format(camera_h camera, camera_pixel_format_e *format)
2786 if (camera == NULL || format == NULL) {
2787 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2788 return CAMERA_ERROR_INVALID_PARAMETER;
2790 int ret = CAMERA_ERROR_NONE;
2792 camera_cli_s *pc = (camera_cli_s *)camera;
2793 muse_camera_api_e api = MUSE_CAMERA_API_GET_CAPTURE_FORMAT;
2796 if (pc->cb_info == NULL) {
2797 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2798 return CAMERA_ERROR_INVALID_PARAMETER;
2800 sock_fd = pc->cb_info->fd;
2802 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2803 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2805 if (ret == CAMERA_ERROR_NONE) {
2806 muse_camera_msg_get(get_format, pc->cb_info->recv_msg);
2807 *format = (camera_pixel_format_e)get_format;
2809 LOGD("ret : 0x%x", ret);
2813 int camera_get_preview_format(camera_h camera, camera_pixel_format_e *format)
2815 if (camera == NULL || format == NULL) {
2816 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2817 return CAMERA_ERROR_INVALID_PARAMETER;
2820 int ret = CAMERA_ERROR_NONE;
2822 camera_cli_s *pc = (camera_cli_s *)camera;
2823 muse_camera_api_e api = MUSE_CAMERA_API_GET_PREVIEW_FORMAT;
2826 if (pc->cb_info == NULL) {
2827 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2828 return CAMERA_ERROR_INVALID_PARAMETER;
2830 sock_fd = pc->cb_info->fd;
2832 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2833 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2835 if (ret == CAMERA_ERROR_NONE) {
2836 muse_camera_msg_get(get_format, pc->cb_info->recv_msg);
2837 *format = (camera_pixel_format_e)get_format;
2839 LOGD("ret : 0x%x", ret);
2843 int camera_get_facing_direction(camera_h camera, camera_facing_direction_e *facing_direciton)
2845 if (camera == NULL || facing_direciton == NULL) {
2846 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2847 return CAMERA_ERROR_INVALID_PARAMETER;
2850 int ret = CAMERA_ERROR_NONE;
2852 camera_cli_s *pc = (camera_cli_s *)camera;
2853 muse_camera_api_e api = MUSE_CAMERA_API_GET_FACING_DIRECTION;
2855 if (pc->cb_info == NULL) {
2856 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2857 return CAMERA_ERROR_INVALID_PARAMETER;
2859 sock_fd = pc->cb_info->fd;
2860 int get_facing_direction;
2862 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2863 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2865 if (ret == CAMERA_ERROR_NONE) {
2866 muse_camera_msg_get(get_facing_direction, pc->cb_info->recv_msg);
2867 *facing_direciton = (camera_facing_direction_e)get_facing_direction;
2869 LOGD("ret : 0x%x", ret);
2873 int camera_set_preview_cb(camera_h camera, camera_preview_cb callback, void* user_data)
2875 if (camera == NULL || callback == NULL) {
2876 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2877 return CAMERA_ERROR_INVALID_PARAMETER;
2879 int ret = CAMERA_ERROR_NONE;
2881 camera_cli_s *pc = (camera_cli_s *)camera;
2883 if (pc->cb_info == NULL) {
2884 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2885 return CAMERA_ERROR_INVALID_PARAMETER;
2887 sock_fd = pc->cb_info->fd;
2888 muse_camera_api_e api = MUSE_CAMERA_API_SET_PREVIEW_CB;
2890 LOGD("Enter, handle :%x", pc->remote_handle);
2892 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = callback;
2893 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = user_data;
2895 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2896 LOGD("ret : 0x%x", ret);
2900 int camera_unset_preview_cb(camera_h camera)
2902 if (camera == NULL) {
2903 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2904 return CAMERA_ERROR_INVALID_PARAMETER;
2907 int ret = CAMERA_ERROR_NONE;
2909 camera_cli_s *pc = (camera_cli_s *)camera;
2910 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_PREVIEW_CB;
2912 LOGD("Enter, handle :%x", pc->remote_handle);
2915 if (pc->cb_info == NULL) {
2916 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2917 return CAMERA_ERROR_INVALID_PARAMETER;
2919 sock_fd = pc->cb_info->fd;
2920 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = (void *)NULL;
2921 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = (void *)NULL;
2923 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2924 LOGD("ret : 0x%x", ret);
2928 int camera_set_media_packet_preview_cb(camera_h camera, camera_media_packet_preview_cb callback, void* user_data)
2930 if (camera == NULL) {
2931 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
2932 return CAMERA_ERROR_INVALID_PARAMETER;
2935 if (camera_is_supported_media_packet_preview_cb(camera) == false) {
2936 LOGE("NOT SUPPORTED");
2937 return CAMERA_ERROR_NOT_SUPPORTED;
2940 if (callback == NULL) {
2941 LOGE("INVALID_PARAMETER(0x%08x) - callback", CAMERA_ERROR_INVALID_PARAMETER);
2942 return CAMERA_ERROR_INVALID_PARAMETER;
2945 int ret = CAMERA_ERROR_NONE;
2947 camera_cli_s *pc = (camera_cli_s *)camera;
2948 muse_camera_api_e api = MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_CB;
2950 LOGD("Enter, handle :%x", pc->remote_handle);
2953 if (pc->cb_info == NULL) {
2954 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2955 return CAMERA_ERROR_INVALID_PARAMETER;
2957 sock_fd = pc->cb_info->fd;
2958 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = callback;
2959 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = user_data;
2961 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2962 LOGD("ret : 0x%x", ret);
2966 int camera_unset_media_packet_preview_cb(camera_h camera)
2968 if (camera == NULL) {
2969 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2970 return CAMERA_ERROR_INVALID_PARAMETER;
2973 int ret = CAMERA_ERROR_NONE;
2975 camera_cli_s *pc = (camera_cli_s *)camera;
2976 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB;
2978 LOGD("Enter, handle :%x", pc->remote_handle);
2981 if (pc->cb_info == NULL) {
2982 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2983 return CAMERA_ERROR_INVALID_PARAMETER;
2985 sock_fd = pc->cb_info->fd;
2986 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = (void *)NULL;
2987 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = (void *)NULL;
2989 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2990 LOGD("ret : 0x%x", ret);
2994 int camera_set_state_changed_cb(camera_h camera, camera_state_changed_cb callback, void* user_data)
2996 if (camera == NULL || callback == NULL) {
2997 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2998 return CAMERA_ERROR_INVALID_PARAMETER;
3000 int ret = CAMERA_ERROR_NONE;
3002 camera_cli_s *pc = (camera_cli_s *)camera;
3003 muse_camera_api_e api = MUSE_CAMERA_API_SET_STATE_CHANGED_CB;
3005 LOGD("Enter, handle :%x", pc->remote_handle);
3008 if (pc->cb_info == NULL) {
3009 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3010 return CAMERA_ERROR_INVALID_PARAMETER;
3012 sock_fd = pc->cb_info->fd;
3013 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = callback;
3014 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = user_data;
3016 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3017 LOGD("ret : 0x%x", ret);
3020 int camera_unset_state_changed_cb(camera_h camera)
3022 if (camera == NULL) {
3023 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3024 return CAMERA_ERROR_INVALID_PARAMETER;
3026 int ret = CAMERA_ERROR_NONE;
3028 camera_cli_s *pc = (camera_cli_s *)camera;
3029 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_STATE_CHANGED_CB;
3031 LOGD("Enter, handle :%x", pc->remote_handle);
3034 if (pc->cb_info == NULL) {
3035 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3036 return CAMERA_ERROR_INVALID_PARAMETER;
3038 sock_fd = pc->cb_info->fd;
3039 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = (void *)NULL;
3040 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = (void *)NULL;
3042 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3043 LOGD("ret : 0x%x", ret);
3047 int camera_set_interrupted_cb(camera_h camera, camera_interrupted_cb callback, void *user_data)
3049 if (camera == NULL || callback == NULL) {
3050 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3051 return CAMERA_ERROR_INVALID_PARAMETER;
3053 int ret = CAMERA_ERROR_NONE;
3055 camera_cli_s *pc = (camera_cli_s *)camera;
3056 muse_camera_api_e api = MUSE_CAMERA_API_SET_INTERRUPTED_CB;
3058 LOGD("Enter, handle :%x", pc->remote_handle);
3061 if (pc->cb_info == NULL) {
3062 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3063 return CAMERA_ERROR_INVALID_PARAMETER;
3065 sock_fd = pc->cb_info->fd;
3066 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = callback;
3067 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = user_data;
3069 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3070 LOGD("ret : 0x%x", ret);
3074 int camera_unset_interrupted_cb(camera_h camera)
3076 if (camera == NULL) {
3077 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3078 return CAMERA_ERROR_INVALID_PARAMETER;
3080 int ret = CAMERA_ERROR_NONE;
3082 camera_cli_s *pc = (camera_cli_s *)camera;
3083 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_INTERRUPTED_CB;
3085 LOGD("Enter, handle :%x", pc->remote_handle);
3088 if (pc->cb_info == NULL) {
3089 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3090 return CAMERA_ERROR_INVALID_PARAMETER;
3092 sock_fd = pc->cb_info->fd;
3093 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = (void *)NULL;
3094 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = (void *)NULL;
3096 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3097 LOGD("ret : 0x%x", ret);
3101 int camera_set_focus_changed_cb(camera_h camera, camera_focus_changed_cb callback, void* user_data)
3103 if (camera == NULL || callback == NULL) {
3104 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3105 return CAMERA_ERROR_INVALID_PARAMETER;
3107 int ret = CAMERA_ERROR_NONE;
3109 camera_cli_s *pc = (camera_cli_s *)camera;
3110 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOCUS_CHANGED_CB;
3112 LOGD("Enter, handle :%x", pc->remote_handle);
3115 if (pc->cb_info == NULL) {
3116 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3117 return CAMERA_ERROR_INVALID_PARAMETER;
3119 sock_fd = pc->cb_info->fd;
3120 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = callback;
3121 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = user_data;
3123 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3124 LOGD("ret : 0x%x", ret);
3128 int camera_unset_focus_changed_cb(camera_h camera)
3130 if (camera == NULL) {
3131 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3132 return CAMERA_ERROR_INVALID_PARAMETER;
3134 int ret = CAMERA_ERROR_NONE;
3136 camera_cli_s *pc = (camera_cli_s *)camera;
3137 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_FOCUS_CHANGED_CB;
3139 LOGD("Enter, handle :%x", pc->remote_handle);
3142 if (pc->cb_info == NULL) {
3143 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3144 return CAMERA_ERROR_INVALID_PARAMETER;
3146 sock_fd = pc->cb_info->fd;
3147 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = (void *)NULL;
3148 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = (void *)NULL;
3150 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3151 LOGD("ret : 0x%x", ret);
3155 int camera_set_error_cb(camera_h camera, camera_error_cb callback, void *user_data)
3157 if (camera == NULL || callback == NULL) {
3158 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3159 return CAMERA_ERROR_INVALID_PARAMETER;
3161 int ret = CAMERA_ERROR_NONE;
3163 camera_cli_s *pc = (camera_cli_s *)camera;
3164 muse_camera_api_e api = MUSE_CAMERA_API_SET_ERROR_CB;
3166 LOGD("Enter, handle :%x", pc->remote_handle);
3169 if (pc->cb_info == NULL) {
3170 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3171 return CAMERA_ERROR_INVALID_PARAMETER;
3173 sock_fd = pc->cb_info->fd;
3174 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_ERROR] = callback;
3175 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_ERROR] = user_data;
3177 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3178 LOGD("ret : 0x%x", ret);
3182 int camera_unset_error_cb(camera_h camera)
3184 if (camera == NULL) {
3185 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3186 return CAMERA_ERROR_INVALID_PARAMETER;
3188 int ret = CAMERA_ERROR_NONE;
3190 camera_cli_s *pc = (camera_cli_s *)camera;
3191 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_ERROR_CB;
3193 LOGD("Enter, handle :%x", pc->remote_handle);
3196 if (pc->cb_info == NULL) {
3197 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3198 return CAMERA_ERROR_INVALID_PARAMETER;
3200 sock_fd = pc->cb_info->fd;
3201 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_ERROR] = (void *)NULL;
3202 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_ERROR] = (void *)NULL;
3204 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3205 LOGD("ret : 0x%x", ret);
3209 int camera_foreach_supported_preview_resolution(camera_h camera, camera_supported_preview_resolution_cb foreach_cb , void *user_data)
3211 if (camera == NULL || foreach_cb == NULL) {
3212 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3213 return CAMERA_ERROR_INVALID_PARAMETER;
3215 int ret = CAMERA_ERROR_NONE;
3217 camera_cli_s *pc = (camera_cli_s *)camera;
3218 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_RESOLUTION;
3220 LOGD("Enter, handle :%x", pc->remote_handle);
3223 if (pc->cb_info == NULL) {
3224 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3225 return CAMERA_ERROR_INVALID_PARAMETER;
3227 sock_fd = pc->cb_info->fd;
3228 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_RESOLUTION] = foreach_cb;
3229 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_RESOLUTION] = user_data;
3231 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3232 LOGD("ret : 0x%x", ret);
3236 int camera_foreach_supported_capture_resolution(camera_h camera, camera_supported_capture_resolution_cb foreach_cb , void *user_data)
3238 if (camera == NULL || foreach_cb == NULL) {
3239 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3240 return CAMERA_ERROR_INVALID_PARAMETER;
3242 int ret = CAMERA_ERROR_NONE;
3244 camera_cli_s *pc = (camera_cli_s *)camera;
3245 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_RESOLUTION;
3247 LOGD("Enter, handle :%x", pc->remote_handle);
3250 if (pc->cb_info == NULL) {
3251 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3252 return CAMERA_ERROR_INVALID_PARAMETER;
3254 sock_fd = pc->cb_info->fd;
3255 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_RESOLUTION] = foreach_cb;
3256 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_RESOLUTION] = user_data;
3258 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3259 LOGD("ret : 0x%x", ret);
3263 int camera_foreach_supported_capture_format(camera_h camera, camera_supported_capture_format_cb foreach_cb , void *user_data)
3265 if (camera == NULL || foreach_cb == NULL) {
3266 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3267 return CAMERA_ERROR_INVALID_PARAMETER;
3269 int ret = CAMERA_ERROR_NONE;
3271 camera_cli_s *pc = (camera_cli_s *)camera;
3272 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_FORMAT;
3274 LOGD("Enter, handle :%x", pc->remote_handle);
3277 if (pc->cb_info == NULL) {
3278 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3279 return CAMERA_ERROR_INVALID_PARAMETER;
3281 sock_fd = pc->cb_info->fd;
3282 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_FORMAT] = foreach_cb;
3283 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_FORMAT] = user_data;
3285 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3286 LOGD("ret : 0x%x", ret);
3291 int camera_foreach_supported_preview_format(camera_h camera, camera_supported_preview_format_cb foreach_cb , void *user_data)
3293 if (camera == NULL || foreach_cb == NULL) {
3294 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3295 return CAMERA_ERROR_INVALID_PARAMETER;
3297 int ret = CAMERA_ERROR_NONE;
3299 camera_cli_s *pc = (camera_cli_s *)camera;
3300 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_FORMAT;
3302 LOGD("Enter, handle :%x", pc->remote_handle);
3305 if (pc->cb_info == NULL) {
3306 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3307 return CAMERA_ERROR_INVALID_PARAMETER;
3309 sock_fd = pc->cb_info->fd;
3310 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_FORMAT] = foreach_cb;
3311 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_FORMAT] = user_data;
3313 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3314 LOGD("ret : 0x%x", ret);
3319 int camera_get_recommended_preview_resolution(camera_h camera, int *width, int *height)
3321 if (camera == NULL || width == NULL || height == NULL) {
3322 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3323 return CAMERA_ERROR_INVALID_PARAMETER;
3325 int ret = CAMERA_ERROR_NONE;
3327 camera_cli_s *pc = (camera_cli_s *)camera;
3328 muse_camera_api_e api = MUSE_CAMERA_API_GET_RECOMMENDED_PREVIEW_RESOLUTION;
3330 if (pc->cb_info == NULL) {
3331 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3332 return CAMERA_ERROR_INVALID_PARAMETER;
3334 sock_fd = pc->cb_info->fd;
3338 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3339 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3341 if (ret == CAMERA_ERROR_NONE) {
3342 muse_camera_msg_get(get_width, pc->cb_info->recv_msg);
3343 muse_camera_msg_get(get_height, pc->cb_info->recv_msg);
3345 *height = get_height;
3347 LOGD("ret : 0x%x", ret);
3352 int camera_attr_get_lens_orientation(camera_h camera, int *angle)
3354 if (camera == NULL || angle == NULL) {
3355 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3356 return CAMERA_ERROR_INVALID_PARAMETER;
3358 int ret = CAMERA_ERROR_NONE;
3360 camera_cli_s *pc = (camera_cli_s *)camera;
3361 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_LENS_ORIENTATION;
3363 if (pc->cb_info == NULL) {
3364 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3365 return CAMERA_ERROR_INVALID_PARAMETER;
3367 sock_fd = pc->cb_info->fd;
3370 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3371 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3373 if (ret == CAMERA_ERROR_NONE) {
3374 muse_camera_msg_get(get_angle, pc->cb_info->recv_msg);
3377 LOGD("ret : 0x%x", ret);
3381 int camera_attr_set_theater_mode(camera_h camera, camera_attr_theater_mode_e mode)
3383 if (camera == NULL) {
3384 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3385 return CAMERA_ERROR_INVALID_PARAMETER;
3387 int ret = CAMERA_ERROR_NONE;
3388 camera_cli_s *pc = (camera_cli_s *)camera;
3389 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_THEATER_MODE;
3391 if (pc->cb_info == NULL) {
3392 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3393 return CAMERA_ERROR_INVALID_PARAMETER;
3395 sock_fd = pc->cb_info->fd;
3396 int set_mode = (int)mode;
3397 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3398 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3399 LOGD("ret : 0x%x", ret);
3403 int camera_attr_get_theater_mode(camera_h camera, camera_attr_theater_mode_e *mode)
3405 if (camera == NULL || mode == NULL) {
3406 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3407 return CAMERA_ERROR_INVALID_PARAMETER;
3410 int ret = CAMERA_ERROR_NONE;
3411 camera_cli_s *pc = (camera_cli_s *)camera;
3412 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_THEATER_MODE;
3414 if (pc->cb_info == NULL) {
3415 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3416 return CAMERA_ERROR_INVALID_PARAMETER;
3418 sock_fd = pc->cb_info->fd;
3420 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3421 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3423 if (ret == CAMERA_ERROR_NONE) {
3424 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
3425 *mode = (camera_attr_theater_mode_e)get_mode;
3427 LOGD("ret : 0x%x", ret);
3431 int camera_attr_foreach_supported_theater_mode(camera_h camera, camera_attr_supported_theater_mode_cb foreach_cb, void *user_data)
3433 if (camera == NULL || foreach_cb == NULL) {
3434 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3435 return CAMERA_ERROR_INVALID_PARAMETER;
3437 int ret = CAMERA_ERROR_NONE;
3439 camera_cli_s *pc = (camera_cli_s *)camera;
3440 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_THEATER_MODE;
3442 LOGD("Enter, handle :%x", pc->remote_handle);
3445 if (pc->cb_info == NULL) {
3446 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3447 return CAMERA_ERROR_INVALID_PARAMETER;
3449 sock_fd = pc->cb_info->fd;
3450 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_THEATER_MODE] = foreach_cb;
3451 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_THEATER_MODE] = user_data;
3453 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3455 LOGD("Finish, return :%x", ret);
3460 int camera_attr_set_preview_fps(camera_h camera, camera_attr_fps_e fps)
3462 if (camera == NULL) {
3463 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3464 return CAMERA_ERROR_INVALID_PARAMETER;
3466 int ret = CAMERA_ERROR_NONE;
3467 camera_cli_s *pc = (camera_cli_s *)camera;
3468 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_PREVIEW_FPS;
3470 if (pc->cb_info == NULL) {
3471 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3472 return CAMERA_ERROR_INVALID_PARAMETER;
3474 sock_fd = pc->cb_info->fd;
3475 int set_fps = (int)fps;
3476 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3477 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_fps);
3478 LOGD("ret : 0x%x", ret);
3483 int camera_attr_set_image_quality(camera_h camera, int quality)
3485 if (camera == NULL) {
3486 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3487 return CAMERA_ERROR_INVALID_PARAMETER;
3489 int ret = CAMERA_ERROR_NONE;
3491 camera_cli_s *pc = (camera_cli_s *)camera;
3492 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_IMAGE_QUALITY;
3494 if (pc->cb_info == NULL) {
3495 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3496 return CAMERA_ERROR_INVALID_PARAMETER;
3498 sock_fd = pc->cb_info->fd;
3499 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3500 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, quality);
3501 LOGD("ret : 0x%x", ret);
3505 int camera_attr_get_preview_fps(camera_h camera, camera_attr_fps_e *fps)
3507 if (camera == NULL || fps == NULL) {
3508 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3509 return CAMERA_ERROR_INVALID_PARAMETER;
3511 int ret = CAMERA_ERROR_NONE;
3513 camera_cli_s *pc = (camera_cli_s *)camera;
3514 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_PREVIEW_FPS;
3517 if (pc->cb_info == NULL) {
3518 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3519 return CAMERA_ERROR_INVALID_PARAMETER;
3521 sock_fd = pc->cb_info->fd;
3523 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3524 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3526 if (ret == CAMERA_ERROR_NONE) {
3527 muse_camera_msg_get(get_fps, pc->cb_info->recv_msg);
3528 *fps = (camera_attr_fps_e)get_fps;
3530 LOGD("ret : 0x%x", ret);
3535 int camera_attr_get_image_quality(camera_h camera, int *quality)
3537 if (camera == NULL || quality == NULL) {
3538 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3539 return CAMERA_ERROR_INVALID_PARAMETER;
3541 int ret = CAMERA_ERROR_NONE;
3543 camera_cli_s *pc = (camera_cli_s *)camera;
3544 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_IMAGE_QUALITY;
3546 if (pc->cb_info == NULL) {
3547 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3548 return CAMERA_ERROR_INVALID_PARAMETER;
3550 sock_fd = pc->cb_info->fd;
3552 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3553 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3555 if (ret == CAMERA_ERROR_NONE) {
3556 muse_camera_msg_get(get_quality, pc->cb_info->recv_msg);
3557 *quality = get_quality;
3559 LOGD("ret : 0x%x", ret);
3564 int camera_attr_set_zoom(camera_h camera, int zoom)
3566 if (camera == NULL) {
3567 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3568 return CAMERA_ERROR_INVALID_PARAMETER;
3570 int ret = CAMERA_ERROR_NONE;
3572 camera_cli_s *pc = (camera_cli_s *)camera;
3573 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_ZOOM;
3575 if (pc->cb_info == NULL) {
3576 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3577 return CAMERA_ERROR_INVALID_PARAMETER;
3579 sock_fd = pc->cb_info->fd;
3581 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3582 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, zoom);
3583 LOGD("ret : 0x%x", ret);
3587 int camera_attr_set_af_mode(camera_h camera, camera_attr_af_mode_e mode)
3589 if (camera == NULL) {
3590 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3591 return CAMERA_ERROR_INVALID_PARAMETER;
3593 int ret = CAMERA_ERROR_NONE;
3595 camera_cli_s *pc = (camera_cli_s *)camera;
3596 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_AF_MODE;
3598 if (pc->cb_info == NULL) {
3599 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3600 return CAMERA_ERROR_INVALID_PARAMETER;
3602 sock_fd = pc->cb_info->fd;
3603 int set_mode = (int)mode;
3604 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3605 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3606 LOGD("ret : 0x%x", ret);
3610 int camera_attr_set_af_area(camera_h camera, int x, int y)
3612 if (camera == NULL) {
3613 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3614 return CAMERA_ERROR_INVALID_PARAMETER;
3616 int ret = CAMERA_ERROR_NONE;
3617 camera_cli_s *pc = (camera_cli_s *)camera;
3618 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_AF_AREA;
3619 int sock_fd = pc->cb_info->fd;
3620 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3621 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, x, INT, y);
3622 LOGD("ret : 0x%x", ret);
3627 int camera_attr_clear_af_area(camera_h camera)
3629 if (camera == NULL) {
3630 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3631 return CAMERA_ERROR_INVALID_PARAMETER;
3633 int ret = CAMERA_ERROR_NONE;
3635 camera_cli_s *pc = (camera_cli_s *)camera;
3636 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_CLEAR_AF_AREA;
3638 if (pc->cb_info == NULL) {
3639 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3640 return CAMERA_ERROR_INVALID_PARAMETER;
3642 sock_fd = pc->cb_info->fd;
3643 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3644 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3645 LOGD("ret : 0x%x", ret);
3650 int camera_attr_set_exposure_mode(camera_h camera, camera_attr_exposure_mode_e mode)
3652 if (camera == NULL) {
3653 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3654 return CAMERA_ERROR_INVALID_PARAMETER;
3657 if (mode < CAMERA_ATTR_EXPOSURE_MODE_OFF || mode > CAMERA_ATTR_EXPOSURE_MODE_CUSTOM) {
3658 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3659 return CAMERA_ERROR_INVALID_PARAMETER;
3662 int ret = CAMERA_ERROR_NONE;
3663 camera_cli_s *pc = (camera_cli_s *)camera;
3664 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EXPOSURE_MODE;
3665 int set_mode = (int)mode;
3667 if (pc->cb_info == NULL) {
3668 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3669 return CAMERA_ERROR_INVALID_PARAMETER;
3671 sock_fd = pc->cb_info->fd;
3672 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3673 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3674 LOGD("ret : 0x%x", ret);
3679 int camera_attr_set_exposure(camera_h camera, int value)
3681 if (camera == NULL) {
3682 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3683 return CAMERA_ERROR_INVALID_PARAMETER;
3685 int ret = CAMERA_ERROR_NONE;
3687 camera_cli_s *pc = (camera_cli_s *)camera;
3688 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EXPOSURE;
3690 if (pc->cb_info == NULL) {
3691 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3692 return CAMERA_ERROR_INVALID_PARAMETER;
3694 sock_fd = pc->cb_info->fd;
3696 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3697 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, value);
3698 LOGD("ret : 0x%x", ret);
3703 int camera_attr_set_iso(camera_h camera, camera_attr_iso_e iso)
3705 if (camera == NULL) {
3706 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3707 return CAMERA_ERROR_INVALID_PARAMETER;
3709 int ret = CAMERA_ERROR_NONE;
3711 camera_cli_s *pc = (camera_cli_s *)camera;
3712 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_ISO;
3714 if (pc->cb_info == NULL) {
3715 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3716 return CAMERA_ERROR_INVALID_PARAMETER;
3718 sock_fd = pc->cb_info->fd;
3719 int set_iso = (int)iso;
3720 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3721 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_iso);
3722 LOGD("ret : 0x%x", ret);
3727 int camera_attr_set_brightness(camera_h camera, int level)
3729 if (camera == NULL) {
3730 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3731 return CAMERA_ERROR_INVALID_PARAMETER;
3733 int ret = CAMERA_ERROR_NONE;
3735 camera_cli_s *pc = (camera_cli_s *)camera;
3736 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_BRIGHTNESS;
3738 if (pc->cb_info == NULL) {
3739 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3740 return CAMERA_ERROR_INVALID_PARAMETER;
3742 sock_fd = pc->cb_info->fd;
3744 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3745 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, level);
3746 LOGD("ret : 0x%x", ret);
3751 int camera_attr_set_contrast(camera_h camera, int level)
3753 if (camera == NULL) {
3754 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3755 return CAMERA_ERROR_INVALID_PARAMETER;
3757 int ret = CAMERA_ERROR_NONE;
3759 camera_cli_s *pc = (camera_cli_s *)camera;
3760 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_CONTRAST;
3762 if (pc->cb_info == NULL) {
3763 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3764 return CAMERA_ERROR_INVALID_PARAMETER;
3766 sock_fd = pc->cb_info->fd;
3768 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3769 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, level);
3770 LOGD("ret : 0x%x", ret);
3775 int camera_attr_set_whitebalance(camera_h camera, camera_attr_whitebalance_e wb)
3777 if (camera == NULL) {
3778 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3779 return CAMERA_ERROR_INVALID_PARAMETER;
3782 if (wb < CAMERA_ATTR_WHITE_BALANCE_NONE || wb > CAMERA_ATTR_WHITE_BALANCE_CUSTOM) {
3783 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_NOT_SUPPORTED);
3784 return CAMERA_ERROR_NOT_SUPPORTED;
3787 int ret = CAMERA_ERROR_NONE;
3789 camera_cli_s *pc = (camera_cli_s *)camera;
3790 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_WHITEBALANCE;
3792 if (pc->cb_info == NULL) {
3793 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3794 return CAMERA_ERROR_INVALID_PARAMETER;
3796 sock_fd = pc->cb_info->fd;
3797 int set_whitebalance = (int)wb;
3798 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3799 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_whitebalance);
3800 LOGD("ret : 0x%x", ret);
3805 int camera_attr_set_effect(camera_h camera, camera_attr_effect_mode_e effect)
3807 if (camera == NULL) {
3808 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3809 return CAMERA_ERROR_INVALID_PARAMETER;
3811 int ret = CAMERA_ERROR_NONE;
3813 camera_cli_s *pc = (camera_cli_s *)camera;
3814 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EFFECT;
3816 if (pc->cb_info == NULL) {
3817 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3818 return CAMERA_ERROR_INVALID_PARAMETER;
3820 sock_fd = pc->cb_info->fd;
3821 int set_effect = (int)effect;
3822 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3823 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_effect);
3824 LOGD("ret : 0x%x", ret);
3829 int camera_attr_set_scene_mode(camera_h camera, camera_attr_scene_mode_e mode)
3831 if (camera == NULL) {
3832 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3833 return CAMERA_ERROR_INVALID_PARAMETER;
3835 int ret = CAMERA_ERROR_NONE;
3837 camera_cli_s *pc = (camera_cli_s *)camera;
3838 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_SCENE_MODE;
3840 if (pc->cb_info == NULL) {
3841 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3842 return CAMERA_ERROR_INVALID_PARAMETER;
3844 sock_fd = pc->cb_info->fd;
3845 int set_mode = (int)mode;
3846 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3847 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3848 LOGD("ret : 0x%x", ret);
3853 int camera_attr_enable_tag(camera_h camera, bool enable)
3855 if (camera == NULL) {
3856 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3857 return CAMERA_ERROR_INVALID_PARAMETER;
3859 int ret = CAMERA_ERROR_NONE;
3860 camera_cli_s *pc = (camera_cli_s *)camera;
3861 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_TAG;
3863 if (pc->cb_info == NULL) {
3864 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3865 return CAMERA_ERROR_INVALID_PARAMETER;
3867 sock_fd = pc->cb_info->fd;
3868 int set_enable = (int)enable;
3870 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3871 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
3872 LOGD("ret : 0x%x", ret);
3877 int camera_attr_set_tag_image_description(camera_h camera, const char *description)
3879 if (camera == NULL) {
3880 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3881 return CAMERA_ERROR_INVALID_PARAMETER;
3883 if (description == NULL) {
3884 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3885 return CAMERA_ERROR_INVALID_PARAMETER;
3887 int ret = CAMERA_ERROR_NONE;
3888 camera_cli_s *pc = (camera_cli_s *)camera;
3889 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_TAG_IMAGE_DESCRIPTION;
3891 if (pc->cb_info == NULL) {
3892 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3893 return CAMERA_ERROR_INVALID_PARAMETER;
3895 sock_fd = pc->cb_info->fd;
3896 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3897 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, STRING, description);
3898 LOGD("ret : 0x%x", ret);
3903 int camera_attr_set_tag_orientation(camera_h camera, camera_attr_tag_orientation_e orientation)
3905 if (camera == NULL) {
3906 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3907 return CAMERA_ERROR_INVALID_PARAMETER;
3909 int ret = CAMERA_ERROR_NONE;
3910 camera_cli_s *pc = (camera_cli_s *)camera;
3911 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_TAG_ORIENTATION;
3913 if (pc->cb_info == NULL) {
3914 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3915 return CAMERA_ERROR_INVALID_PARAMETER;
3917 sock_fd = pc->cb_info->fd;
3918 int set_orientation = (int)orientation;
3920 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3921 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_orientation);
3922 LOGD("ret : 0x%x", ret);
3927 int camera_attr_set_tag_software(camera_h camera, const char *software)
3929 if (camera == NULL) {
3930 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3931 return CAMERA_ERROR_INVALID_PARAMETER;
3933 if (software == NULL) {
3934 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3935 return CAMERA_ERROR_INVALID_PARAMETER;
3937 int ret = CAMERA_ERROR_NONE;
3938 camera_cli_s *pc = (camera_cli_s *)camera;
3939 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_TAG_SOFTWARE;
3941 if (pc->cb_info == NULL) {
3942 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3943 return CAMERA_ERROR_INVALID_PARAMETER;
3945 sock_fd = pc->cb_info->fd;
3946 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3947 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, STRING, software);
3948 LOGD("ret : 0x%x", ret);
3953 int camera_attr_set_geotag(camera_h camera, double latitude , double longitude, double altitude)
3955 if (camera == NULL) {
3956 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3957 return CAMERA_ERROR_INVALID_PARAMETER;
3959 int ret = CAMERA_ERROR_NONE;
3960 camera_cli_s *pc = (camera_cli_s *)camera;
3961 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_GEOTAG;
3963 if (pc->cb_info == NULL) {
3964 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3965 return CAMERA_ERROR_INVALID_PARAMETER;
3967 sock_fd = pc->cb_info->fd;
3968 double set_geotag[3] = { latitude, longitude, altitude };
3970 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3971 muse_camera_msg_send_array(api, sock_fd, pc->cb_info, ret,
3972 set_geotag, sizeof(set_geotag), sizeof(double));
3973 LOGD("ret : 0x%x", ret);
3978 int camera_attr_remove_geotag(camera_h camera)
3980 if (camera == NULL) {
3981 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3982 return CAMERA_ERROR_INVALID_PARAMETER;
3984 int ret = CAMERA_ERROR_NONE;
3985 camera_cli_s *pc = (camera_cli_s *)camera;
3986 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_REMOVE_GEOTAG;
3988 if (pc->cb_info == NULL) {
3989 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3990 return CAMERA_ERROR_INVALID_PARAMETER;
3992 sock_fd = pc->cb_info->fd;
3993 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3994 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3995 LOGD("ret : 0x%x", ret);
4000 int camera_attr_set_flash_mode(camera_h camera, camera_attr_flash_mode_e mode)
4002 if (camera == NULL) {
4003 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4004 return CAMERA_ERROR_INVALID_PARAMETER;
4006 int ret = CAMERA_ERROR_NONE;
4007 camera_cli_s *pc = (camera_cli_s *)camera;
4008 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_FLASH_MODE;
4010 if (pc->cb_info == NULL) {
4011 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4012 return CAMERA_ERROR_INVALID_PARAMETER;
4014 sock_fd = pc->cb_info->fd;
4015 int set_mode = (int)mode;
4017 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4018 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
4019 LOGD("ret : 0x%x", ret);
4024 int camera_attr_get_zoom(camera_h camera, int *zoom)
4026 if (camera == NULL || zoom == NULL) {
4027 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4028 return CAMERA_ERROR_INVALID_PARAMETER;
4030 int ret = CAMERA_ERROR_NONE;
4032 camera_cli_s *pc = (camera_cli_s *)camera;
4033 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ZOOM;
4036 if (pc->cb_info == NULL) {
4037 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4038 return CAMERA_ERROR_INVALID_PARAMETER;
4040 sock_fd = pc->cb_info->fd;
4042 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4043 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4045 if (ret == CAMERA_ERROR_NONE) {
4046 muse_camera_msg_get(get_zoom, pc->cb_info->recv_msg);
4049 LOGD("ret : 0x%x", ret);
4054 int camera_attr_get_zoom_range(camera_h camera, int *min, int *max)
4056 if (camera == NULL || min == NULL || max == NULL) {
4057 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4058 return CAMERA_ERROR_INVALID_PARAMETER;
4060 int ret = CAMERA_ERROR_NONE;
4061 camera_cli_s *pc = (camera_cli_s *)camera;
4063 if (pc->cb_info == NULL) {
4064 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4065 return CAMERA_ERROR_INVALID_PARAMETER;
4067 sock_fd = pc->cb_info->fd;
4068 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ZOOM_RANGE;
4072 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4073 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4075 if (ret == CAMERA_ERROR_NONE) {
4076 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4077 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4081 LOGD("ret : 0x%x", ret);
4086 int camera_attr_get_af_mode(camera_h camera, camera_attr_af_mode_e *mode)
4088 if (camera == NULL || mode == NULL) {
4089 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4090 return CAMERA_ERROR_INVALID_PARAMETER;
4092 int ret = CAMERA_ERROR_NONE;
4093 camera_cli_s *pc = (camera_cli_s *)camera;
4095 if (pc->cb_info == NULL) {
4096 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4097 return CAMERA_ERROR_INVALID_PARAMETER;
4099 sock_fd = pc->cb_info->fd;
4100 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_AF_MODE;
4103 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4104 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4106 if (ret == CAMERA_ERROR_NONE) {
4107 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4108 *mode = (camera_attr_af_mode_e)get_mode;
4110 LOGD("ret : 0x%x", ret);
4115 int camera_attr_get_exposure_mode(camera_h camera, camera_attr_exposure_mode_e *mode)
4117 if (camera == NULL || mode == NULL) {
4118 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4119 return CAMERA_ERROR_INVALID_PARAMETER;
4121 int ret = CAMERA_ERROR_NONE;
4122 camera_cli_s *pc = (camera_cli_s *)camera;
4124 if (pc->cb_info == NULL) {
4125 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4126 return CAMERA_ERROR_INVALID_PARAMETER;
4128 sock_fd = pc->cb_info->fd;
4129 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXPOSURE_MODE;
4132 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4133 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4135 if (ret == CAMERA_ERROR_NONE) {
4136 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4137 *mode = (camera_attr_exposure_mode_e)get_mode;
4139 LOGD("ret : 0x%x", ret);
4143 int camera_attr_get_exposure(camera_h camera, int *value)
4145 if (camera == NULL || value == NULL) {
4146 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4147 return CAMERA_ERROR_INVALID_PARAMETER;
4149 int ret = CAMERA_ERROR_NONE;
4150 camera_cli_s *pc = (camera_cli_s *)camera;
4152 if (pc->cb_info == NULL) {
4153 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4154 return CAMERA_ERROR_INVALID_PARAMETER;
4156 sock_fd = pc->cb_info->fd;
4157 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXPOSURE;
4160 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4161 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4163 if (ret == CAMERA_ERROR_NONE) {
4164 muse_camera_msg_get(get_value, pc->cb_info->recv_msg);
4167 LOGD("ret : 0x%x", ret);
4172 int camera_attr_get_exposure_range(camera_h camera, int *min, int *max)
4174 if (camera == NULL || min == NULL || max == NULL) {
4175 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4176 return CAMERA_ERROR_INVALID_PARAMETER;
4178 int ret = CAMERA_ERROR_NONE;
4179 camera_cli_s *pc = (camera_cli_s *)camera;
4181 if (pc->cb_info == NULL) {
4182 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4183 return CAMERA_ERROR_INVALID_PARAMETER;
4185 sock_fd = pc->cb_info->fd;
4186 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXPOSURE_RANGE;
4190 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4191 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4193 if (ret == CAMERA_ERROR_NONE) {
4194 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4195 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4199 LOGD("ret : 0x%x", ret);
4204 int camera_attr_get_iso(camera_h camera, camera_attr_iso_e *iso)
4206 if (camera == NULL || iso == NULL) {
4207 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4208 return CAMERA_ERROR_INVALID_PARAMETER;
4210 int ret = CAMERA_ERROR_NONE;
4211 camera_cli_s *pc = (camera_cli_s *)camera;
4213 if (pc->cb_info == NULL) {
4214 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4215 return CAMERA_ERROR_INVALID_PARAMETER;
4217 sock_fd = pc->cb_info->fd;
4218 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ISO;
4221 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4222 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4224 if (ret == CAMERA_ERROR_NONE) {
4225 muse_camera_msg_get(get_iso, pc->cb_info->recv_msg);
4226 *iso = (camera_attr_iso_e)get_iso;
4228 LOGD("ret : 0x%x", ret);
4233 int camera_attr_get_brightness(camera_h camera, int *level)
4235 if (camera == NULL || level == NULL) {
4236 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4237 return CAMERA_ERROR_INVALID_PARAMETER;
4239 int ret = CAMERA_ERROR_NONE;
4240 camera_cli_s *pc = (camera_cli_s *)camera;
4242 if (pc->cb_info == NULL) {
4243 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4244 return CAMERA_ERROR_INVALID_PARAMETER;
4246 sock_fd = pc->cb_info->fd;
4247 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_BRIGHTNESS;
4250 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4251 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4253 if (ret == CAMERA_ERROR_NONE) {
4254 muse_camera_msg_get(get_level, pc->cb_info->recv_msg);
4257 LOGD("ret : 0x%x", ret);
4262 int camera_attr_get_brightness_range(camera_h camera, int *min, int *max)
4264 if (camera == NULL || min == NULL || max == NULL) {
4265 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4266 return CAMERA_ERROR_INVALID_PARAMETER;
4268 int ret = CAMERA_ERROR_NONE;
4269 camera_cli_s *pc = (camera_cli_s *)camera;
4271 if (pc->cb_info == NULL) {
4272 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4273 return CAMERA_ERROR_INVALID_PARAMETER;
4275 sock_fd = pc->cb_info->fd;
4276 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_BRIGHTNESS_RANGE;
4280 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4281 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4283 if (ret == CAMERA_ERROR_NONE) {
4284 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4285 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4289 LOGD("ret : 0x%x", ret);
4294 int camera_attr_get_contrast(camera_h camera, int *level)
4296 if (camera == NULL || level == NULL) {
4297 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4298 return CAMERA_ERROR_INVALID_PARAMETER;
4300 int ret = CAMERA_ERROR_NONE;
4301 camera_cli_s *pc = (camera_cli_s *)camera;
4302 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_CONTRAST;
4304 if (pc->cb_info == NULL) {
4305 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4306 return CAMERA_ERROR_INVALID_PARAMETER;
4308 sock_fd = pc->cb_info->fd;
4311 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4312 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4314 if (ret == CAMERA_ERROR_NONE) {
4315 muse_camera_msg_get(get_level, pc->cb_info->recv_msg);
4318 LOGD("ret : 0x%x", ret);
4323 int camera_attr_get_contrast_range(camera_h camera, int *min , int *max)
4325 if (camera == NULL || min == NULL || max == NULL) {
4326 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4327 return CAMERA_ERROR_INVALID_PARAMETER;
4329 int ret = CAMERA_ERROR_NONE;
4330 camera_cli_s *pc = (camera_cli_s *)camera;
4331 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_CONTRAST_RANGE;
4333 if (pc->cb_info == NULL) {
4334 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4335 return CAMERA_ERROR_INVALID_PARAMETER;
4337 sock_fd = pc->cb_info->fd;
4341 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4342 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4344 if (ret == CAMERA_ERROR_NONE) {
4345 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4346 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4350 LOGD("ret : 0x%x", ret);
4355 int camera_attr_get_whitebalance(camera_h camera, camera_attr_whitebalance_e *wb)
4357 if (camera == NULL || wb == NULL) {
4358 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4359 return CAMERA_ERROR_INVALID_PARAMETER;
4361 int ret = CAMERA_ERROR_NONE;
4362 camera_cli_s *pc = (camera_cli_s *)camera;
4363 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE;
4365 if (pc->cb_info == NULL) {
4366 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4367 return CAMERA_ERROR_INVALID_PARAMETER;
4369 sock_fd = pc->cb_info->fd;
4372 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4373 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4375 if (ret == CAMERA_ERROR_NONE) {
4376 muse_camera_msg_get(get_wb, pc->cb_info->recv_msg);
4377 *wb = (camera_attr_whitebalance_e)get_wb;
4379 LOGD("ret : 0x%x", ret);
4384 int camera_attr_get_effect(camera_h camera, camera_attr_effect_mode_e *effect)
4386 if (camera == NULL || effect == NULL) {
4387 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4388 return CAMERA_ERROR_INVALID_PARAMETER;
4391 int ret = CAMERA_ERROR_NONE;
4392 camera_cli_s *pc = (camera_cli_s *)camera;
4393 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EFFECT;
4395 if (pc->cb_info == NULL) {
4396 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4397 return CAMERA_ERROR_INVALID_PARAMETER;
4399 sock_fd = pc->cb_info->fd;
4402 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4403 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4405 if (ret == CAMERA_ERROR_NONE) {
4406 muse_camera_msg_get(get_effect, pc->cb_info->recv_msg);
4407 *effect = (camera_attr_effect_mode_e)get_effect;
4409 LOGD("ret : 0x%x", ret);
4414 int camera_attr_get_scene_mode(camera_h camera, camera_attr_scene_mode_e *mode)
4416 if (camera == NULL || mode == NULL) {
4417 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4418 return CAMERA_ERROR_INVALID_PARAMETER;
4421 int ret = CAMERA_ERROR_NONE;
4422 camera_cli_s *pc = (camera_cli_s *)camera;
4423 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_SCENE_MODE;
4425 if (pc->cb_info == NULL) {
4426 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4427 return CAMERA_ERROR_INVALID_PARAMETER;
4429 sock_fd = pc->cb_info->fd;
4432 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4433 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4435 if (ret == CAMERA_ERROR_NONE) {
4436 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4437 *mode = (camera_attr_scene_mode_e)get_mode;
4439 LOGD("ret : 0x%x", ret);
4444 int camera_attr_is_enabled_tag(camera_h camera, bool *enable)
4446 if (camera == NULL || enable == NULL) {
4447 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4448 return CAMERA_ERROR_INVALID_PARAMETER;
4451 int ret = CAMERA_ERROR_NONE;
4452 camera_cli_s *pc = (camera_cli_s *)camera;
4453 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_TAG;
4455 if (pc->cb_info == NULL) {
4456 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4457 return CAMERA_ERROR_INVALID_PARAMETER;
4459 sock_fd = pc->cb_info->fd;
4462 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4463 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4465 if (ret == CAMERA_ERROR_NONE) {
4466 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
4467 *enable = (bool)get_enabled;
4469 LOGD("ret : 0x%x", ret);
4474 int camera_attr_get_tag_image_description(camera_h camera, char **description)
4476 if (camera == NULL || description == NULL) {
4477 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4478 return CAMERA_ERROR_INVALID_PARAMETER;
4481 int ret = CAMERA_ERROR_NONE;
4482 camera_cli_s *pc = (camera_cli_s *)camera;
4483 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_TAG_IMAGE_DESCRIPTION;
4485 if (pc->cb_info == NULL) {
4486 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4487 return CAMERA_ERROR_INVALID_PARAMETER;
4489 sock_fd = pc->cb_info->fd;
4490 char get_description[MUSE_CAMERA_MSG_MAX_LENGTH] = {0,};
4492 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4493 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4495 if (ret == CAMERA_ERROR_NONE) {
4496 muse_camera_msg_get_string(get_description, pc->cb_info->recv_msg);
4497 *description = strdup(get_description);
4499 LOGD("ret : 0x%x", ret);
4504 int camera_attr_get_tag_orientation(camera_h camera, camera_attr_tag_orientation_e *orientation)
4506 if (camera == NULL || orientation == NULL) {
4507 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4508 return CAMERA_ERROR_INVALID_PARAMETER;
4511 int ret = CAMERA_ERROR_NONE;
4512 camera_cli_s *pc = (camera_cli_s *)camera;
4513 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_TAG_ORIENTATION;
4515 if (pc->cb_info == NULL) {
4516 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4517 return CAMERA_ERROR_INVALID_PARAMETER;
4519 sock_fd = pc->cb_info->fd;
4520 int get_orientation;
4522 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4523 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4525 if (ret == CAMERA_ERROR_NONE) {
4526 muse_camera_msg_get(get_orientation, pc->cb_info->recv_msg);
4527 *orientation = (camera_attr_tag_orientation_e)get_orientation;
4528 LOGD("success, orientation : %d", *orientation);
4530 LOGD("ret : 0x%x", ret);
4535 int camera_attr_get_tag_software(camera_h camera, char **software)
4537 if (camera == NULL || software == NULL) {
4538 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4539 return CAMERA_ERROR_INVALID_PARAMETER;
4542 int ret = CAMERA_ERROR_NONE;
4543 camera_cli_s *pc = (camera_cli_s *)camera;
4544 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_TAG_SOFTWARE;
4546 if (pc->cb_info == NULL) {
4547 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4548 return CAMERA_ERROR_INVALID_PARAMETER;
4550 sock_fd = pc->cb_info->fd;
4551 char get_software[MUSE_CAMERA_MSG_MAX_LENGTH] = {0,};
4553 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4554 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4556 if (ret == CAMERA_ERROR_NONE) {
4557 muse_camera_msg_get_string(get_software, pc->cb_info->recv_msg);
4558 *software = strdup(get_software);
4560 LOGD("ret : 0x%x", ret);
4565 int camera_attr_get_geotag(camera_h camera, double *latitude , double *longitude, double *altitude)
4567 if (camera == NULL || latitude == NULL || longitude == NULL || altitude == NULL) {
4568 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4569 return CAMERA_ERROR_INVALID_PARAMETER;
4572 int ret = CAMERA_ERROR_NONE;
4573 camera_cli_s *pc = (camera_cli_s *)camera;
4574 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_GEOTAG;
4575 double get_geotag[3] = {0,};
4577 if (pc->cb_info == NULL) {
4578 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4579 return CAMERA_ERROR_INVALID_PARAMETER;
4581 sock_fd = pc->cb_info->fd;
4583 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4584 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4586 if (ret == CAMERA_ERROR_NONE) {
4587 muse_camera_msg_get_array(get_geotag, pc->cb_info->recv_msg);
4588 *latitude = get_geotag[0];
4589 *longitude = get_geotag[1];
4590 *altitude = get_geotag[2];
4592 LOGE("Returned value is not valid : 0x%x", valid);
4595 LOGD("ret : 0x%x", ret);
4601 int camera_attr_get_flash_mode(camera_h camera, camera_attr_flash_mode_e *mode)
4603 if (camera == NULL || mode == NULL) {
4604 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4605 return CAMERA_ERROR_INVALID_PARAMETER;
4608 int ret = CAMERA_ERROR_NONE;
4609 camera_cli_s *pc = (camera_cli_s *)camera;
4610 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_FLASH_MODE;
4612 if (pc->cb_info == NULL) {
4613 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4614 return CAMERA_ERROR_INVALID_PARAMETER;
4616 sock_fd = pc->cb_info->fd;
4619 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4620 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4622 if (ret == CAMERA_ERROR_NONE) {
4623 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4624 *mode = (camera_attr_flash_mode_e)get_mode;
4626 LOGD("ret : 0x%x", ret);
4631 int camera_attr_foreach_supported_af_mode(camera_h camera, camera_attr_supported_af_mode_cb foreach_cb, void *user_data)
4633 if (camera == NULL || foreach_cb == NULL) {
4634 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4635 return CAMERA_ERROR_INVALID_PARAMETER;
4637 int ret = CAMERA_ERROR_NONE;
4639 camera_cli_s *pc = (camera_cli_s *)camera;
4640 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_AF_MODE;
4642 LOGD("Enter, handle :%x", pc->remote_handle);
4645 if (pc->cb_info == NULL) {
4646 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4647 return CAMERA_ERROR_INVALID_PARAMETER;
4649 sock_fd = pc->cb_info->fd;
4650 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_AF_MODE] = foreach_cb;
4651 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_AF_MODE] = user_data;
4653 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4654 LOGD("ret : 0x%x", ret);
4659 int camera_attr_foreach_supported_exposure_mode(camera_h camera, camera_attr_supported_exposure_mode_cb foreach_cb , void *user_data)
4661 if (camera == NULL || foreach_cb == NULL) {
4662 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4663 return CAMERA_ERROR_INVALID_PARAMETER;
4665 int ret = CAMERA_ERROR_NONE;
4667 camera_cli_s *pc = (camera_cli_s *)camera;
4668 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EXPOSURE_MODE;
4670 LOGD("Enter, handle :%x", pc->remote_handle);
4673 if (pc->cb_info == NULL) {
4674 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4675 return CAMERA_ERROR_INVALID_PARAMETER;
4677 sock_fd = pc->cb_info->fd;
4678 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EXPOSURE_MODE] = foreach_cb;
4679 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EXPOSURE_MODE] = user_data;
4681 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4682 LOGD("ret : 0x%x", ret);
4687 int camera_attr_foreach_supported_iso(camera_h camera, camera_attr_supported_iso_cb foreach_cb, void *user_data)
4689 if (camera == NULL || foreach_cb == NULL) {
4690 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4691 return CAMERA_ERROR_INVALID_PARAMETER;
4693 int ret = CAMERA_ERROR_NONE;
4695 camera_cli_s *pc = (camera_cli_s *)camera;
4696 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_ISO;
4698 LOGD("Enter, handle :%x", pc->remote_handle);
4701 if (pc->cb_info == NULL) {
4702 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4703 return CAMERA_ERROR_INVALID_PARAMETER;
4705 sock_fd = pc->cb_info->fd;
4706 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_ISO] = foreach_cb;
4707 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_ISO] = user_data;
4709 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4710 LOGD("ret : 0x%x", ret);
4715 int camera_attr_foreach_supported_whitebalance(camera_h camera, camera_attr_supported_whitebalance_cb foreach_cb , void *user_data)
4717 if (camera == NULL || foreach_cb == NULL) {
4718 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4719 return CAMERA_ERROR_INVALID_PARAMETER;
4721 int ret = CAMERA_ERROR_NONE;
4723 camera_cli_s *pc = (camera_cli_s *)camera;
4724 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_WHITEBALANCE;
4726 LOGD("Enter, handle :%x", pc->remote_handle);
4729 if (pc->cb_info == NULL) {
4730 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4731 return CAMERA_ERROR_INVALID_PARAMETER;
4733 sock_fd = pc->cb_info->fd;
4734 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_WHITEBALANCE] = foreach_cb;
4735 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_WHITEBALANCE] = user_data;
4737 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4738 LOGD("ret : 0x%x", ret);
4743 int camera_attr_foreach_supported_effect(camera_h camera, camera_attr_supported_effect_cb foreach_cb , void *user_data)
4745 if (camera == NULL || foreach_cb == NULL) {
4746 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4747 return CAMERA_ERROR_INVALID_PARAMETER;
4749 int ret = CAMERA_ERROR_NONE;
4751 camera_cli_s *pc = (camera_cli_s *)camera;
4752 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EFFECT;
4754 LOGD("Enter, handle :%x", pc->remote_handle);
4757 if (pc->cb_info == NULL) {
4758 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4759 return CAMERA_ERROR_INVALID_PARAMETER;
4761 sock_fd = pc->cb_info->fd;
4762 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EFFECT] = foreach_cb;
4763 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EFFECT] = user_data;
4765 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4766 LOGD("ret : 0x%x", ret);
4771 int camera_attr_foreach_supported_scene_mode(camera_h camera, camera_attr_supported_scene_mode_cb foreach_cb , void *user_data)
4773 if (camera == NULL || foreach_cb == NULL) {
4774 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4775 return CAMERA_ERROR_INVALID_PARAMETER;
4777 int ret = CAMERA_ERROR_NONE;
4779 camera_cli_s *pc = (camera_cli_s *)camera;
4780 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_SCENE_MODE;
4782 LOGD("Enter, handle :%x", pc->remote_handle);
4785 if (pc->cb_info == NULL) {
4786 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4787 return CAMERA_ERROR_INVALID_PARAMETER;
4789 sock_fd = pc->cb_info->fd;
4790 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_SCENE_MODE] = foreach_cb;
4791 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_SCENE_MODE] = user_data;
4793 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4794 LOGD("ret : 0x%x", ret);
4799 int camera_attr_foreach_supported_flash_mode(camera_h camera, camera_attr_supported_flash_mode_cb foreach_cb , void *user_data)
4801 if (camera == NULL || foreach_cb == NULL) {
4802 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4803 return CAMERA_ERROR_INVALID_PARAMETER;
4805 int ret = CAMERA_ERROR_NONE;
4807 camera_cli_s *pc = (camera_cli_s *)camera;
4808 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FLASH_MODE;
4810 LOGD("Enter, handle :%x", pc->remote_handle);
4813 if (pc->cb_info == NULL) {
4814 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4815 return CAMERA_ERROR_INVALID_PARAMETER;
4817 sock_fd = pc->cb_info->fd;
4818 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FLASH_MODE] = foreach_cb;
4819 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FLASH_MODE] = user_data;
4821 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4822 LOGD("ret : 0x%x", ret);
4827 int camera_attr_foreach_supported_fps(camera_h camera, camera_attr_supported_fps_cb foreach_cb , void *user_data)
4829 if (camera == NULL || foreach_cb == NULL) {
4830 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4831 return CAMERA_ERROR_INVALID_PARAMETER;
4833 int ret = CAMERA_ERROR_NONE;
4835 camera_cli_s *pc = (camera_cli_s *)camera;
4836 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FPS;
4838 if (pc->cb_info == NULL) {
4839 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4840 return CAMERA_ERROR_INVALID_PARAMETER;
4842 sock_fd = pc->cb_info->fd;
4843 LOGD("Enter, handle :%x", pc->remote_handle);
4844 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS] = foreach_cb;
4845 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS] = user_data;
4847 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4848 LOGD("Enter, handle :%x", pc->remote_handle);
4852 int camera_attr_foreach_supported_fps_by_resolution(camera_h camera, int width, int height, camera_attr_supported_fps_cb foreach_cb, void *user_data)
4854 if (camera == NULL || foreach_cb == NULL) {
4855 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4856 return CAMERA_ERROR_INVALID_PARAMETER;
4858 int ret = CAMERA_ERROR_NONE;
4860 camera_cli_s *pc = (camera_cli_s *)camera;
4861 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FPS_BY_RESOLUTION;
4863 if (pc->cb_info == NULL) {
4864 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4865 return CAMERA_ERROR_INVALID_PARAMETER;
4867 sock_fd = pc->cb_info->fd;
4868 LOGD("Enter, handle :%x", pc->remote_handle);
4869 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS_BY_RESOLUTION] = foreach_cb;
4870 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS_BY_RESOLUTION] = user_data;
4872 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, width, INT, height);
4873 LOGD("ret : 0x%x", ret);
4877 int camera_attr_foreach_supported_stream_flip(camera_h camera, camera_attr_supported_stream_flip_cb foreach_cb, void *user_data)
4879 if (camera == NULL || foreach_cb == NULL) {
4880 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4881 return CAMERA_ERROR_INVALID_PARAMETER;
4883 int ret = CAMERA_ERROR_NONE;
4885 camera_cli_s *pc = (camera_cli_s *)camera;
4886 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_FLIP;
4888 if (pc->cb_info == NULL) {
4889 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4890 return CAMERA_ERROR_INVALID_PARAMETER;
4892 sock_fd = pc->cb_info->fd;
4893 LOGD("Enter, handle :%x", pc->remote_handle);
4894 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_FLIP] = foreach_cb;
4895 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_FLIP] = user_data;
4897 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4898 LOGD("ret : 0x%x", ret);
4903 int camera_attr_foreach_supported_stream_rotation(camera_h camera, camera_attr_supported_stream_rotation_cb foreach_cb, void *user_data)
4905 if (camera == NULL || foreach_cb == NULL) {
4906 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4907 return CAMERA_ERROR_INVALID_PARAMETER;
4909 int ret = CAMERA_ERROR_NONE;
4911 camera_cli_s *pc = (camera_cli_s *)camera;
4912 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_ROTATION;
4914 if (pc->cb_info == NULL) {
4915 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4916 return CAMERA_ERROR_INVALID_PARAMETER;
4918 sock_fd = pc->cb_info->fd;
4919 LOGD("Enter, handle :%x", pc->remote_handle);
4920 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_ROTATION] = foreach_cb;
4921 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_ROTATION] = user_data;
4923 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4924 LOGD("ret : 0x%x", ret);
4929 int camera_attr_set_stream_rotation(camera_h camera , camera_rotation_e rotation)
4931 if (camera == NULL) {
4932 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4933 return CAMERA_ERROR_INVALID_PARAMETER;
4936 int ret = CAMERA_ERROR_NONE;
4937 camera_cli_s *pc = (camera_cli_s *)camera;
4938 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_STREAM_ROTATION;
4940 if (pc->cb_info == NULL) {
4941 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4942 return CAMERA_ERROR_INVALID_PARAMETER;
4944 sock_fd = pc->cb_info->fd;
4945 int set_rotation = (int)rotation;
4947 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4948 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_rotation);
4949 LOGD("ret : 0x%x", ret);
4954 int camera_attr_get_stream_rotation(camera_h camera , camera_rotation_e *rotation)
4956 if (camera == NULL || rotation == NULL) {
4957 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4958 return CAMERA_ERROR_INVALID_PARAMETER;
4961 int ret = CAMERA_ERROR_NONE;
4962 camera_cli_s *pc = (camera_cli_s *)camera;
4963 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_STREAM_ROTATION;
4965 if (pc->cb_info == NULL) {
4966 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4967 return CAMERA_ERROR_INVALID_PARAMETER;
4969 sock_fd = pc->cb_info->fd;
4972 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4973 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4975 if (ret == CAMERA_ERROR_NONE) {
4976 muse_camera_msg_get(get_rotation, pc->cb_info->recv_msg);
4977 *rotation = (camera_rotation_e)get_rotation;
4979 LOGD("ret : 0x%x", ret);
4984 int camera_attr_set_stream_flip(camera_h camera , camera_flip_e flip)
4986 if (camera == NULL) {
4987 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4988 return CAMERA_ERROR_INVALID_PARAMETER;
4991 int ret = CAMERA_ERROR_NONE;
4992 camera_cli_s *pc = (camera_cli_s *)camera;
4993 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_STREAM_FLIP;
4995 if (pc->cb_info == NULL) {
4996 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4997 return CAMERA_ERROR_INVALID_PARAMETER;
4999 sock_fd = pc->cb_info->fd;
5000 int set_flip = (int)flip;
5002 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5003 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_flip);
5004 LOGD("ret : 0x%x", ret);
5009 int camera_attr_get_stream_flip(camera_h camera , camera_flip_e *flip)
5011 if (camera == NULL || flip == NULL) {
5012 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5013 return CAMERA_ERROR_INVALID_PARAMETER;
5016 int ret = CAMERA_ERROR_NONE;
5017 camera_cli_s *pc = (camera_cli_s *)camera;
5018 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_STREAM_FLIP;
5020 if (pc->cb_info == NULL) {
5021 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5022 return CAMERA_ERROR_INVALID_PARAMETER;
5024 sock_fd = pc->cb_info->fd;
5027 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5028 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5030 if (ret == CAMERA_ERROR_NONE) {
5031 muse_camera_msg_get(get_flip, pc->cb_info->recv_msg);
5032 *flip = (camera_flip_e)get_flip;
5034 LOGD("ret : 0x%x", ret);
5038 int camera_attr_set_hdr_mode(camera_h camera, camera_attr_hdr_mode_e mode)
5040 if (camera == NULL) {
5041 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5042 return CAMERA_ERROR_INVALID_PARAMETER;
5045 int ret = CAMERA_ERROR_NONE;
5046 camera_cli_s *pc = (camera_cli_s *)camera;
5047 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_HDR_MODE;
5049 if (pc->cb_info == NULL) {
5050 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5051 return CAMERA_ERROR_INVALID_PARAMETER;
5053 sock_fd = pc->cb_info->fd;
5054 int set_mode = (int)mode;
5056 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5057 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
5058 LOGD("ret : 0x%x", ret);
5063 int camera_attr_get_hdr_mode(camera_h camera, camera_attr_hdr_mode_e *mode)
5065 if (camera == NULL) {
5066 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5067 return CAMERA_ERROR_INVALID_PARAMETER;
5070 LOGE("CAMERA_ERROR_NOT_SUPPORTED(0x%08x) - mode", CAMERA_ERROR_NOT_SUPPORTED);
5071 return CAMERA_ERROR_NOT_SUPPORTED;
5073 int ret = CAMERA_ERROR_NONE;
5074 camera_cli_s *pc = (camera_cli_s *)camera;
5075 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_HDR_MODE;
5077 if (pc->cb_info == NULL) {
5078 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5079 return CAMERA_ERROR_INVALID_PARAMETER;
5081 sock_fd = pc->cb_info->fd;
5084 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5085 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5087 if (ret == CAMERA_ERROR_NONE) {
5088 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
5089 *mode = (camera_attr_hdr_mode_e)get_mode;
5091 LOGD("ret : 0x%x", ret);
5096 bool camera_attr_is_supported_hdr_capture(camera_h camera)
5098 if (camera == NULL) {
5099 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5103 int ret = CAMERA_ERROR_NONE;
5104 camera_cli_s *pc = (camera_cli_s *)camera;
5105 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_HDR_CAPTURE;
5107 if (pc->cb_info == NULL) {
5108 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5109 return CAMERA_ERROR_INVALID_PARAMETER;
5111 sock_fd = pc->cb_info->fd;
5112 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5113 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5114 LOGD("ret : 0x%x", ret);
5119 int camera_attr_set_hdr_capture_progress_cb(camera_h camera, camera_attr_hdr_progress_cb callback, void* user_data)
5121 if (camera == NULL) {
5122 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5123 return CAMERA_ERROR_INVALID_PARAMETER;
5125 if (callback == NULL) {
5126 LOGE("CAMERA_ERROR_NOT_SUPPORTED(0x%08x) - callback", CAMERA_ERROR_NOT_SUPPORTED);
5127 return CAMERA_ERROR_NOT_SUPPORTED;
5129 int ret = CAMERA_ERROR_NONE;
5131 camera_cli_s *pc = (camera_cli_s *)camera;
5132 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_HDR_CAPTURE_PROGRESS_CB;
5134 if (pc->cb_info == NULL) {
5135 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5136 return CAMERA_ERROR_INVALID_PARAMETER;
5138 sock_fd = pc->cb_info->fd;
5139 LOGD("Enter, handle :%x", pc->remote_handle);
5141 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = callback;
5142 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = user_data;
5144 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5145 LOGD("ret : 0x%x", ret);
5150 int camera_attr_unset_hdr_capture_progress_cb(camera_h camera)
5152 if (camera == NULL) {
5153 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5154 return CAMERA_ERROR_INVALID_PARAMETER;
5157 int ret = CAMERA_ERROR_NONE;
5159 camera_cli_s *pc = (camera_cli_s *)camera;
5160 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_UNSET_HDR_CAPTURE_PROGRESS_CB;
5162 if (pc->cb_info == NULL) {
5163 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5164 return CAMERA_ERROR_INVALID_PARAMETER;
5166 sock_fd = pc->cb_info->fd;
5167 LOGD("Enter, handle :%x", pc->remote_handle);
5169 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = (void *)NULL;
5170 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = (void *)NULL;
5172 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5173 LOGD("ret : 0x%x", ret);
5178 int camera_attr_enable_anti_shake(camera_h camera, bool enable)
5180 if (camera == NULL) {
5181 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5182 return CAMERA_ERROR_INVALID_PARAMETER;
5185 int ret = CAMERA_ERROR_NONE;
5186 camera_cli_s *pc = (camera_cli_s *)camera;
5187 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_ANTI_SHAKE;
5189 if (pc->cb_info == NULL) {
5190 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5191 return CAMERA_ERROR_INVALID_PARAMETER;
5193 sock_fd = pc->cb_info->fd;
5194 int set_enable = (int)enable;
5196 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5197 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
5198 LOGD("ret : 0x%x", ret);
5203 int camera_attr_is_enabled_anti_shake(camera_h camera , bool *enabled)
5205 if (camera == NULL) {
5206 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5207 return CAMERA_ERROR_INVALID_PARAMETER;
5209 if (enabled == NULL) {
5210 LOGE("INVALID_PARAMETER(0x%08x) - enabled", CAMERA_ERROR_INVALID_PARAMETER);
5211 return CAMERA_ERROR_NOT_SUPPORTED;
5213 int ret = CAMERA_ERROR_NONE;
5214 camera_cli_s *pc = (camera_cli_s *)camera;
5215 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_ANTI_SHAKE;
5217 if (pc->cb_info == NULL) {
5218 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5219 return CAMERA_ERROR_INVALID_PARAMETER;
5221 sock_fd = pc->cb_info->fd;
5224 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5225 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5227 if (ret == CAMERA_ERROR_NONE) {
5228 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
5229 *enabled = (bool)get_enabled;
5231 LOGD("ret : 0x%x", ret);
5236 bool camera_attr_is_supported_anti_shake(camera_h camera)
5239 if (camera == NULL) {
5240 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5244 int ret = CAMERA_ERROR_NONE;
5245 camera_cli_s *pc = (camera_cli_s *)camera;
5246 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_ANTI_SHAKE;
5248 if (pc->cb_info == NULL) {
5249 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5250 return CAMERA_ERROR_INVALID_PARAMETER;
5252 sock_fd = pc->cb_info->fd;
5253 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5254 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5255 LOGD("ret : 0x%x", ret);
5260 int camera_attr_enable_video_stabilization(camera_h camera, bool enable)
5262 if (camera == NULL) {
5263 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5264 return CAMERA_ERROR_INVALID_PARAMETER;
5267 int ret = CAMERA_ERROR_NONE;
5268 camera_cli_s *pc = (camera_cli_s *)camera;
5269 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_VIDEO_STABILIZATION;
5271 if (pc->cb_info == NULL) {
5272 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5273 return CAMERA_ERROR_INVALID_PARAMETER;
5275 sock_fd = pc->cb_info->fd;
5276 int set_enable = (int)enable;
5278 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5279 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
5280 LOGD("ret : 0x%x", ret);
5285 int camera_attr_is_enabled_video_stabilization(camera_h camera, bool *enabled)
5287 if (camera == NULL) {
5288 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5289 return CAMERA_ERROR_INVALID_PARAMETER;
5291 if (enabled == NULL) {
5292 LOGE("INVALID_PARAMETER(0x%08x) - enabled", CAMERA_ERROR_INVALID_PARAMETER);
5293 return CAMERA_ERROR_NOT_SUPPORTED;
5295 int ret = CAMERA_ERROR_NONE;
5296 camera_cli_s *pc = (camera_cli_s *)camera;
5297 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_VIDEO_STABILIZATION;
5299 if (pc->cb_info == NULL) {
5300 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5301 return CAMERA_ERROR_INVALID_PARAMETER;
5303 sock_fd = pc->cb_info->fd;
5306 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5307 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5309 if (ret == CAMERA_ERROR_NONE) {
5310 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
5311 *enabled = (bool)get_enabled;
5313 LOGD("ret : 0x%x", ret);
5318 bool camera_attr_is_supported_video_stabilization(camera_h camera)
5320 if (camera == NULL) {
5321 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5325 int ret = CAMERA_ERROR_NONE;
5326 camera_cli_s *pc = (camera_cli_s *)camera;
5327 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_VIDEO_STABILIZATION;
5329 if (pc->cb_info == NULL) {
5330 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5331 return CAMERA_ERROR_INVALID_PARAMETER;
5333 sock_fd = pc->cb_info->fd;
5334 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5335 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5336 LOGD("ret : 0x%x", ret);
5341 int camera_attr_enable_auto_contrast(camera_h camera, bool enable)
5343 if (camera == NULL) {
5344 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5345 return CAMERA_ERROR_INVALID_PARAMETER;
5348 int ret = CAMERA_ERROR_NONE;
5349 camera_cli_s *pc = (camera_cli_s *)camera;
5350 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_AUTO_CONTRAST;
5352 if (pc->cb_info == NULL) {
5353 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5354 return CAMERA_ERROR_INVALID_PARAMETER;
5356 sock_fd = pc->cb_info->fd;
5357 int set_enable = (int)enable;
5359 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5360 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
5361 LOGD("ret : 0x%x", ret);
5366 int camera_attr_is_enabled_auto_contrast(camera_h camera, bool *enabled)
5368 if (camera == NULL) {
5369 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5370 return CAMERA_ERROR_INVALID_PARAMETER;
5372 if (enabled == NULL) {
5373 LOGE("INVALID_PARAMETER(0x%08x) - enabled", CAMERA_ERROR_INVALID_PARAMETER);
5374 return CAMERA_ERROR_INVALID_PARAMETER;
5376 int ret = CAMERA_ERROR_NONE;
5377 camera_cli_s *pc = (camera_cli_s *)camera;
5378 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_AUTO_CONTRAST;
5380 if (pc->cb_info == NULL) {
5381 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5382 return CAMERA_ERROR_INVALID_PARAMETER;
5384 sock_fd = pc->cb_info->fd;
5387 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5388 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5390 if (ret == CAMERA_ERROR_NONE) {
5391 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
5392 *enabled = (bool)get_enabled;
5394 LOGD("ret : 0x%x", ret);
5399 bool camera_attr_is_supported_auto_contrast(camera_h camera)
5401 if (camera == NULL) {
5402 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5406 int ret = CAMERA_ERROR_NONE;
5407 camera_cli_s *pc = (camera_cli_s *)camera;
5408 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_AUTO_CONTRAST;
5410 if (pc->cb_info == NULL) {
5411 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5412 return CAMERA_ERROR_INVALID_PARAMETER;
5414 sock_fd = pc->cb_info->fd;
5415 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5416 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5417 LOGD("ret : 0x%x", ret);
5422 int camera_attr_disable_shutter_sound(camera_h camera, bool disable)
5424 if (camera == NULL) {
5425 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5426 return CAMERA_ERROR_INVALID_PARAMETER;
5429 int ret = CAMERA_ERROR_NONE;
5430 camera_cli_s *pc = (camera_cli_s *)camera;
5431 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_DISABLE_SHUTTER_SOUND;
5433 if (pc->cb_info == NULL) {
5434 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5435 return CAMERA_ERROR_INVALID_PARAMETER;
5437 sock_fd = pc->cb_info->fd;
5438 int set_disable = (int)disable;
5440 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5441 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_disable);
5442 LOGD("ret : 0x%x", ret);