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 if (((camera_supported_preview_resolution_cb)cb_info->user_cb[event])(param1, param2, cb_info->user_data[event]) == false) {
921 cb_info->user_cb[event] = NULL;
922 cb_info->user_data[event] = NULL;
923 LOGD("stop foreach callback for SUPPORTED_PREVIEW_RESOLUTION");
926 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_RESOLUTION:
927 muse_camera_msg_get(param1, recv_msg);
928 muse_camera_msg_get(param2, recv_msg);
930 LOGD("SUPPORTED_CAPTURE_RESOLUTION - %d x %d", param1, param2);
932 if (((camera_supported_capture_resolution_cb)cb_info->user_cb[event])(param1, param2, cb_info->user_data[event]) == false) {
933 cb_info->user_cb[event] = NULL;
934 cb_info->user_data[event] = NULL;
935 LOGD("stop foreach callback for SUPPORTED_CAPTURE_RESOLUTION");
938 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_FORMAT:
939 muse_camera_msg_get(param1, recv_msg);
941 LOGD("SUPPORTED_CAPTURE_FORMAT - %d ", param1);
943 if (((camera_supported_capture_format_cb)cb_info->user_cb[event])((camera_pixel_format_e)param1, cb_info->user_data[event]) == false) {
944 cb_info->user_cb[event] = NULL;
945 cb_info->user_data[event] = NULL;
946 LOGD("stop foreach callback for SUPPORTED_CAPTURE_FORMAT");
949 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_FORMAT:
950 muse_camera_msg_get(param1, recv_msg);
952 LOGD("SUPPORTED_PREVIEW_FORMAT - %d ", param1);
954 if (((camera_supported_preview_format_cb)cb_info->user_cb[event])((camera_pixel_format_e)param1, cb_info->user_data[event]) == false) {
955 cb_info->user_cb[event] = NULL;
956 cb_info->user_data[event] = NULL;
957 LOGD("stop foreach callback for SUPPORTED_PREVIEW_FORMAT");
960 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_AF_MODE:
961 muse_camera_msg_get(param1, recv_msg);
963 LOGD("SUPPORTED_AF_MODE - %d ", param1);
965 if (((camera_attr_supported_af_mode_cb)cb_info->user_cb[event])((camera_attr_af_mode_e)param1, cb_info->user_data[event]) == false) {
966 cb_info->user_cb[event] = NULL;
967 cb_info->user_data[event] = NULL;
968 LOGD("stop foreach callback for SUPPORTED_AF_MODE");
971 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EXPOSURE_MODE:
972 muse_camera_msg_get(param1, recv_msg);
974 LOGD("SUPPORTED_EXPOSURE_MODE - %d ", param1);
976 if (((camera_attr_supported_exposure_mode_cb)cb_info->user_cb[event])((camera_attr_exposure_mode_e)param1, cb_info->user_data[event]) == false) {
977 cb_info->user_cb[event] = NULL;
978 cb_info->user_data[event] = NULL;
979 LOGD("stop foreach callback for SUPPORTED_EXPOSURE_MODE");
982 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_ISO:
983 muse_camera_msg_get(param1, recv_msg);
985 LOGD("SUPPORTED_ISO - %d ", param1);
987 if (((camera_attr_supported_iso_cb)cb_info->user_cb[event])((camera_attr_iso_e)param1, cb_info->user_data[event]) == false) {
988 cb_info->user_cb[event] = NULL;
989 cb_info->user_data[event] = NULL;
990 LOGD("stop foreach callback for SUPPORTED_ISO");
993 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_WHITEBALANCE:
994 muse_camera_msg_get(param1, recv_msg);
996 LOGD("SUPPORTED_WHITEBALANCE - %d ", param1);
998 if (((camera_attr_supported_whitebalance_cb)cb_info->user_cb[event])((camera_attr_whitebalance_e)param1, cb_info->user_data[event]) == false) {
999 cb_info->user_cb[event] = NULL;
1000 cb_info->user_data[event] = NULL;
1001 LOGD("stop foreach callback for SUPPORTED_WHITEBALANCE");
1004 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EFFECT:
1005 muse_camera_msg_get(param1, recv_msg);
1007 LOGD("SUPPORTED_EFFECT - %d ", param1);
1009 if (((camera_attr_supported_effect_cb)cb_info->user_cb[event])((camera_attr_effect_mode_e)param1, cb_info->user_data[event]) == false) {
1010 cb_info->user_cb[event] = NULL;
1011 cb_info->user_data[event] = NULL;
1012 LOGD("stop foreach callback for SUPPORTED_EFFECT");
1015 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_SCENE_MODE:
1016 muse_camera_msg_get(param1, recv_msg);
1018 LOGD("SUPPORTED_SCENE_MODE - %d ", param1);
1020 if (((camera_attr_supported_scene_mode_cb)cb_info->user_cb[event])((camera_attr_scene_mode_e)param1, cb_info->user_data[event]) == false) {
1021 cb_info->user_cb[event] = NULL;
1022 cb_info->user_data[event] = NULL;
1023 LOGD("stop foreach callback for SUPPORTED_SCENE_MODE");
1026 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FLASH_MODE:
1027 muse_camera_msg_get(param1, recv_msg);
1029 LOGD("SUPPORTED_FLASH_MODE - %d ", param1);
1031 if (((camera_attr_supported_flash_mode_cb)cb_info->user_cb[event])((camera_attr_flash_mode_e)param1, cb_info->user_data[event]) == false) {
1032 cb_info->user_cb[event] = NULL;
1033 cb_info->user_data[event] = NULL;
1034 LOGD("stop foreach callback for SUPPORTED_FLASH_MODE");
1037 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS:
1038 muse_camera_msg_get(param1, recv_msg);
1040 LOGD("SUPPORTED_FPS - %d ", param1);
1042 if (((camera_attr_supported_fps_cb)cb_info->user_cb[event])((camera_attr_fps_e)param1, cb_info->user_data[event]) == false) {
1043 cb_info->user_cb[event] = NULL;
1044 cb_info->user_data[event] = NULL;
1045 LOGD("stop foreach callback for SUPPORTED_FPS");
1048 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS_BY_RESOLUTION:
1049 muse_camera_msg_get(param1, recv_msg);
1051 LOGD("SUPPORTED_FPS_BY_RESOLUTION - %d ", param1);
1053 if (((camera_attr_supported_fps_cb)cb_info->user_cb[event])((camera_attr_fps_e)param1, cb_info->user_data[event]) == false) {
1054 cb_info->user_cb[event] = NULL;
1055 cb_info->user_data[event] = NULL;
1056 LOGD("stop foreach callback for SUPPORTED_FPS_BY_RESOLUTION");
1059 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_FLIP:
1060 muse_camera_msg_get(param1, recv_msg);
1062 LOGD("SUPPORTED_STREAM_FLIP - %d ", param1);
1064 if (((camera_attr_supported_stream_flip_cb)cb_info->user_cb[event])((camera_flip_e)param1, cb_info->user_data[event]) == false) {
1065 cb_info->user_cb[event] = NULL;
1066 cb_info->user_data[event] = NULL;
1067 LOGD("stop foreach callback for SUPPORTED_STREAM_FLIP");
1070 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_ROTATION:
1071 muse_camera_msg_get(param1, recv_msg);
1073 LOGD("SUPPORTED_STREAM_ROTATION - %d ", param1);
1075 if (((camera_attr_supported_stream_rotation_cb)cb_info->user_cb[event])((camera_rotation_e)param1, cb_info->user_data[event]) == false) {
1076 cb_info->user_cb[event] = NULL;
1077 cb_info->user_data[event] = NULL;
1078 LOGD("stop foreach callback for SUPPORTED_STREAM_ROTATION");
1081 case MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_THEATER_MODE:
1082 muse_camera_msg_get(param1, recv_msg);
1084 LOGD("SUPPORTED_THEATER_MODE - %d ", param1);
1086 if (((camera_attr_supported_theater_mode_cb)cb_info->user_cb[event])((camera_attr_theater_mode_e)param1, cb_info->user_data[event]) == false) {
1087 cb_info->user_cb[event] = NULL;
1088 cb_info->user_data[event] = NULL;
1089 LOGD("stop foreach callback for SUPPORTED_THEATER_MODE");
1092 case MUSE_CAMERA_EVENT_TYPE_CAPTURE:
1094 camera_image_data_s *rImage = NULL;
1095 camera_image_data_s *rPostview = NULL;
1096 camera_image_data_s *rThumbnail = NULL;
1097 unsigned char *buf_pos = NULL;
1098 int is_postview = 0;
1099 int is_thumbnail = 0;
1101 muse_camera_msg_get(tbm_key, recv_msg);
1102 muse_camera_msg_get(is_postview, recv_msg);
1103 muse_camera_msg_get(is_thumbnail, recv_msg);
1105 LOGD("camera capture callback came in. key %d, postview %d, thumbnail %d",
1106 tbm_key, is_postview, is_thumbnail);
1109 LOGE("invalid key %d", tbm_key);
1113 /* import tbm bo and get virtual address */
1114 if (!_import_tbm_key(cb_info->bufmgr, tbm_key, &bo, &bo_handle))
1117 buf_pos = (unsigned char *)bo_handle.ptr;
1118 rImage = (camera_image_data_s *)buf_pos;
1119 rImage->data = buf_pos + sizeof(camera_image_data_s);
1120 buf_pos += sizeof(camera_image_data_s) + rImage->size;
1123 rPostview = (camera_image_data_s *)buf_pos;
1124 LOGD("rPostview->size : %d", rPostview->size);
1125 rPostview->data = buf_pos + sizeof(camera_image_data_s);
1126 buf_pos += sizeof(camera_image_data_s) + rPostview->size;
1130 rThumbnail = (camera_image_data_s *)buf_pos;
1131 LOGD("rThumbnail->size : %d", rThumbnail->size);
1132 rThumbnail->data = buf_pos + sizeof(camera_image_data_s);
1133 buf_pos += sizeof(camera_image_data_s) + rThumbnail->size;
1136 LOGD("image info %dx%d, size : %d", rImage->height, rImage->width, rImage->size);
1138 ((camera_capturing_cb)cb_info->user_cb[event])(rImage, rPostview, rThumbnail, cb_info->user_data[event]);
1140 /* unmap and unref tbm bo */
1141 _release_imported_bo(&bo);
1144 muse_camera_msg_send1_no_return(MUSE_CAMERA_API_RETURN_BUFFER,
1145 cb_info->fd, cb_info, INT, tbm_key);
1147 LOGD("return buffer done");
1150 case MUSE_CAMERA_EVENT_TYPE_VIDEO_FRAME_RENDER_ERROR:
1153 LOGW("Unknown event : %d", event);
1160 static bool _camera_idle_event_callback(void *data)
1162 camera_cb_info_s *cb_info = NULL;
1163 camera_idle_event_s *cam_idle_event = (camera_idle_event_s *)data;
1165 if (cam_idle_event == NULL) {
1166 LOGE("cam_idle_event is NULL");
1171 g_mutex_lock(&cam_idle_event->event_mutex);
1173 cb_info = cam_idle_event->cb_info;
1174 if (cb_info == NULL) {
1175 LOGW("camera cb_info is NULL. event %d", cam_idle_event->event);
1176 goto IDLE_EVENT_CALLBACK_DONE;
1179 /* remove event from list */
1180 g_mutex_lock(&cb_info->idle_event_mutex);
1181 if (cb_info->idle_event_list)
1182 cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)cam_idle_event);
1184 /*LOGD("remove camera idle event %p, %p", cam_idle_event, cb_info->idle_event_list);*/
1185 g_mutex_unlock(&cb_info->idle_event_mutex);
1188 _client_user_callback(cam_idle_event->cb_info, cam_idle_event->recv_msg, cam_idle_event->event);
1190 /* send signal for waiting thread */
1191 g_cond_signal(&cb_info->idle_event_cond);
1193 IDLE_EVENT_CALLBACK_DONE:
1194 /* unlock and release event */
1195 g_mutex_unlock(&cam_idle_event->event_mutex);
1196 g_mutex_clear(&cam_idle_event->event_mutex);
1198 free(cam_idle_event);
1199 cam_idle_event = NULL;
1204 static void *_camera_msg_handler_func(gpointer data)
1209 int event_class = 0;
1210 camera_message_s *cam_msg = NULL;
1211 camera_idle_event_s *cam_idle_event = NULL;
1212 camera_cb_info_s *cb_info = (camera_cb_info_s *)data;
1214 if (cb_info == NULL) {
1215 LOGE("cb_info NULL");
1221 g_mutex_lock(&cb_info->msg_handler_mutex);
1223 while (g_atomic_int_get(&cb_info->msg_handler_running)) {
1224 if (g_queue_is_empty(cb_info->msg_queue)) {
1225 LOGD("signal wait...");
1226 g_cond_wait(&cb_info->msg_handler_cond, &cb_info->msg_handler_mutex);
1227 LOGD("signal received");
1229 if (g_atomic_int_get(&cb_info->msg_handler_running) == 0) {
1230 LOGD("stop event thread");
1235 cam_msg = (camera_message_s *)g_queue_pop_head(cb_info->msg_queue);
1237 g_mutex_unlock(&cb_info->msg_handler_mutex);
1239 if (cam_msg == NULL) {
1240 LOGE("NULL message");
1241 g_mutex_lock(&cb_info->msg_handler_mutex);
1247 if (api < MUSE_CAMERA_API_MAX) {
1248 g_mutex_lock(&cb_info->api_mutex[api]);
1250 if (muse_camera_msg_get(ret, cam_msg->recv_msg)) {
1251 cb_info->api_ret[api] = ret;
1252 cb_info->api_activating[api] = 1;
1254 LOGD("camera api %d - return 0x%x", ret);
1256 g_cond_signal(&cb_info->api_cond[api]);
1258 LOGE("failed to get camera ret for api %d, msg %s", api, cam_msg->recv_msg);
1261 g_mutex_unlock(&cb_info->api_mutex[api]);
1262 } else if (api == MUSE_CAMERA_CB_EVENT) {
1266 if (!muse_camera_msg_get(event, cam_msg->recv_msg) ||
1267 !muse_camera_msg_get(event_class, cam_msg->recv_msg)) {
1268 LOGE("failed to get camera event %d, class %d", event, event_class);
1273 g_mutex_lock(&cb_info->msg_handler_mutex);
1277 switch (event_class) {
1278 case MUSE_CAMERA_EVENT_CLASS_THREAD_SUB:
1279 _client_user_callback(cb_info, cam_msg->recv_msg, event);
1281 case MUSE_CAMERA_EVENT_CLASS_THREAD_MAIN:
1282 cam_idle_event = (camera_idle_event_s *)malloc(sizeof(camera_idle_event_s));
1283 if (cam_idle_event == NULL) {
1284 LOGE("cam_idle_event alloc failed");
1288 cam_idle_event->event = event;
1289 cam_idle_event->cb_info = cb_info;
1290 g_mutex_init(&cam_idle_event->event_mutex);
1291 memcpy(cam_idle_event->recv_msg, cam_msg->recv_msg, sizeof(cam_idle_event->recv_msg));
1293 LOGD("add camera event[%d, %p] to IDLE", event, cam_idle_event);
1295 g_mutex_lock(&cb_info->idle_event_mutex);
1296 cb_info->idle_event_list = g_list_append(cb_info->idle_event_list, (gpointer)cam_idle_event);
1297 g_mutex_unlock(&cb_info->idle_event_mutex);
1299 g_idle_add_full(G_PRIORITY_DEFAULT,
1300 (GSourceFunc)_camera_idle_event_callback,
1301 (gpointer)cam_idle_event,
1305 LOGE("unknown camera event class %d", event_class);
1309 LOGE("unknown camera api[%d] message[%s]", api, cam_msg->recv_msg);
1315 g_mutex_lock(&cb_info->msg_handler_mutex);
1318 /* remove remained event */
1319 while (!g_queue_is_empty(cb_info->msg_queue)) {
1320 cam_msg = (camera_message_s *)g_queue_pop_head(cb_info->msg_queue);
1322 LOGD("remove camera message %p", cam_msg);
1326 LOGW("NULL camera message");
1330 g_mutex_unlock(&cb_info->msg_handler_mutex);
1337 static void _camera_remove_idle_event_all(camera_cb_info_s *cb_info)
1339 camera_idle_event_s *cam_idle_event = NULL;
1340 gboolean ret = TRUE;
1342 gint64 end_time = 0;
1344 if (cb_info == NULL) {
1345 LOGE("cb_info is NULL");
1349 g_mutex_lock(&cb_info->idle_event_mutex);
1351 if (cb_info->idle_event_list == NULL) {
1352 LOGD("No idle event is remained.");
1354 list = cb_info->idle_event_list;
1357 cam_idle_event = list->data;
1358 list = g_list_next(list);
1360 if (!cam_idle_event) {
1361 LOGW("Fail to remove idle event. The event is NULL");
1363 if (g_mutex_trylock(&cam_idle_event->event_mutex)) {
1364 ret = g_idle_remove_by_data(cam_idle_event);
1366 LOGD("remove idle event [%p], ret[%d]", cam_idle_event, ret);
1369 cam_idle_event->cb_info = NULL;
1370 LOGW("idle callback for event %p will be called later", cam_idle_event);
1373 cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)cam_idle_event);
1375 g_mutex_unlock(&cam_idle_event->event_mutex);
1378 g_mutex_clear(&cam_idle_event->event_mutex);
1380 free(cam_idle_event);
1381 cam_idle_event = NULL;
1383 LOGD("remove idle event done");
1386 LOGW("event lock failed. it's being called...");
1388 end_time = g_get_monotonic_time() + G_TIME_SPAN_MILLISECOND * 100;
1390 if (g_cond_wait_until(&cb_info->idle_event_cond, &cb_info->idle_event_mutex, end_time))
1391 LOGW("signal received");
1398 g_list_free(cb_info->idle_event_list);
1399 cb_info->idle_event_list = NULL;
1402 g_mutex_unlock(&cb_info->idle_event_mutex);
1407 static void *_camera_msg_recv_func(gpointer data)
1416 int prev_state = CAMERA_STATE_NONE;
1417 char *recv_msg = NULL;
1418 char **parse_str = NULL;
1419 camera_cb_info_s *cb_info = (camera_cb_info_s *)data;
1421 if (cb_info == NULL) {
1422 LOGE("cb_info NULL");
1428 parse_str = (char **)malloc(sizeof(char *) * CAMERA_PARSE_STRING_SIZE);
1429 if (parse_str == NULL) {
1430 LOGE("parse_str malloc failed");
1434 for (i = 0 ; i < CAMERA_PARSE_STRING_SIZE ; i++) {
1435 parse_str[i] = (char *)malloc(sizeof(char) * MUSE_CAMERA_MSG_MAX_LENGTH);
1436 if (parse_str[i] == NULL) {
1437 LOGE("parse_str[%d] malloc failed", i);
1438 goto CB_HANDLER_EXIT;
1442 recv_msg = cb_info->recv_msg;
1444 while (g_atomic_int_get(&cb_info->msg_recv_running)) {
1445 ret = muse_core_ipc_recv_msg(cb_info->fd, recv_msg);
1448 recv_msg[ret] = '\0';
1454 /*LOGD("recvMSg : %s, length : %d", recv_msg, ret);*/
1456 /* Need to split the combined entering msgs.
1457 This module supports up to 200 combined msgs. */
1458 for (str_pos = 0; str_pos < ret; str_pos++) {
1459 if (recv_msg[str_pos] == '}') {
1460 memset(parse_str[num_token], 0x0, sizeof(char) * MUSE_CAMERA_MSG_MAX_LENGTH);
1461 strncpy(parse_str[num_token], recv_msg + prev_pos, str_pos - prev_pos + 1);
1462 LOGD("splitted msg : [%s], Index : %d", parse_str[num_token], num_token);
1463 prev_pos = str_pos+1;
1468 /*LOGD("num_token : %d", num_token);*/
1470 /* Re-construct to the useful single msg. */
1471 for (i = 0; i < num_token; i++) {
1472 if (i >= CAMERA_PARSE_STRING_SIZE) {
1473 LOGE("invalid token index %d", i);
1480 if (!muse_camera_msg_get(api, parse_str[i])) {
1481 LOGE("failed to get camera api");
1485 if (muse_camera_msg_get(api_class, parse_str[i]))
1486 LOGD("camera api_class[%d]", api_class);
1488 if (api_class == MUSE_CAMERA_API_CLASS_IMMEDIATE) {
1489 g_mutex_lock(&cb_info->api_mutex[api]);
1491 if (!muse_camera_msg_get(ret, parse_str[i])) {
1492 LOGE("failed to get camera ret");
1493 g_mutex_unlock(&cb_info->api_mutex[api]);
1497 cb_info->api_ret[api] = ret;
1498 cb_info->api_activating[api] = 1;
1500 if (api == MUSE_CAMERA_API_CREATE) {
1501 if (ret != CAMERA_ERROR_NONE) {
1502 g_atomic_int_set(&cb_info->msg_recv_running, 0);
1503 LOGE("camera create error 0x%x. close client cb handler", ret);
1505 } else if (api == MUSE_CAMERA_API_DESTROY) {
1506 if (ret == CAMERA_ERROR_NONE) {
1507 g_atomic_int_set(&cb_info->msg_recv_running, 0);
1508 LOGD("camera destroy done. close client cb handler");
1510 } else if (api == MUSE_CAMERA_API_START_PREVIEW) {
1511 muse_camera_msg_get(prev_state, parse_str[i]);
1512 cb_info->prev_state = prev_state;
1515 g_cond_signal(&cb_info->api_cond[api]);
1516 g_mutex_unlock(&cb_info->api_mutex[api]);
1517 } else if (api_class == MUSE_CAMERA_API_CLASS_THREAD_SUB || api == MUSE_CAMERA_CB_EVENT) {
1518 camera_message_s *cam_msg = g_new0(camera_message_s, 1);
1519 if (cam_msg == NULL) {
1520 LOGE("failed to alloc cam_msg");
1525 memcpy(cam_msg->recv_msg, parse_str[i], sizeof(cam_msg->recv_msg));
1527 LOGD("add camera message to queue : api %d", api);
1529 g_mutex_lock(&cb_info->msg_handler_mutex);
1530 g_queue_push_tail(cb_info->msg_queue, (gpointer)cam_msg);
1531 g_cond_signal(&cb_info->msg_handler_cond);
1532 g_mutex_unlock(&cb_info->msg_handler_mutex);
1534 LOGW("unknown camera api %d and api_class %d", api, api_class);
1540 LOGD("client cb exit");
1544 for (i = 0 ; i < CAMERA_PARSE_STRING_SIZE ; i++) {
1547 parse_str[i] = NULL;
1558 static camera_cb_info_s *_client_callback_new(gint sockfd)
1560 camera_cb_info_s *cb_info = NULL;
1561 gint *tmp_activating = NULL;
1562 gint *tmp_ret = NULL;
1565 g_return_val_if_fail(sockfd > 0, NULL);
1567 cb_info = g_new0(camera_cb_info_s, 1);
1568 if (cb_info == NULL) {
1569 LOGE("cb_info failed");
1573 g_mutex_init(&cb_info->msg_handler_mutex);
1574 g_cond_init(&cb_info->msg_handler_cond);
1575 g_mutex_init(&cb_info->idle_event_mutex);
1576 g_cond_init(&cb_info->idle_event_cond);
1578 for (i = 0 ; i < MUSE_CAMERA_API_MAX ; i++) {
1579 g_mutex_init(&cb_info->api_mutex[i]);
1580 g_cond_init(&cb_info->api_cond[i]);
1583 tmp_activating = g_new0(gint, MUSE_CAMERA_API_MAX);
1584 if (tmp_activating == NULL) {
1585 LOGE("tmp_activating failed");
1589 tmp_ret = g_new0(gint, MUSE_CAMERA_API_MAX);
1590 if (tmp_ret == NULL) {
1591 LOGE("tmp_ret failed");
1595 cb_info->msg_queue = g_queue_new();
1596 if (cb_info->msg_queue == NULL) {
1597 LOGE("msg_queue new failed");
1601 g_atomic_int_set(&cb_info->msg_handler_running, 1);
1602 cb_info->msg_handler_thread = g_thread_try_new("camera_msg_handler",
1603 _camera_msg_handler_func, (gpointer)cb_info, NULL);
1604 if (cb_info->msg_handler_thread == NULL) {
1605 LOGE("message handler thread creation failed");
1609 cb_info->fd = sockfd;
1610 cb_info->api_activating = tmp_activating;
1611 cb_info->api_ret = tmp_ret;
1613 g_atomic_int_set(&cb_info->msg_recv_running, 1);
1614 cb_info->msg_recv_thread = g_thread_try_new("camera_msg_recv",
1615 _camera_msg_recv_func, (gpointer)cb_info, NULL);
1616 if (cb_info->msg_recv_thread == NULL) {
1617 LOGE("message receive thread creation failed");
1625 if (cb_info->msg_handler_thread) {
1626 g_mutex_lock(&cb_info->msg_handler_mutex);
1627 g_atomic_int_set(&cb_info->msg_handler_running, 0);
1628 g_cond_signal(&cb_info->msg_handler_cond);
1629 g_mutex_unlock(&cb_info->msg_handler_mutex);
1631 g_thread_join(cb_info->msg_handler_thread);
1632 g_thread_unref(cb_info->msg_handler_thread);
1633 cb_info->msg_handler_thread = NULL;
1636 for (i = 0 ; i < MUSE_CAMERA_API_MAX ; i++) {
1637 g_mutex_clear(&cb_info->api_mutex[i]);
1638 g_cond_clear(&cb_info->api_cond[i]);
1641 g_mutex_clear(&cb_info->msg_handler_mutex);
1642 g_cond_clear(&cb_info->msg_handler_cond);
1643 g_mutex_clear(&cb_info->idle_event_mutex);
1644 g_cond_clear(&cb_info->idle_event_cond);
1646 if (cb_info->msg_queue) {
1647 g_queue_free(cb_info->msg_queue);
1648 cb_info->msg_queue = NULL;
1655 if (tmp_activating) {
1656 g_free(tmp_activating);
1657 tmp_activating = NULL;
1667 static void _client_callback_destroy(camera_cb_info_s *cb_info)
1671 g_return_if_fail(cb_info != NULL);
1673 LOGD("MSG receive thread[%p] destroy", cb_info->msg_recv_thread);
1675 g_thread_join(cb_info->msg_recv_thread);
1676 g_thread_unref(cb_info->msg_recv_thread);
1677 cb_info->msg_recv_thread = NULL;
1679 LOGD("msg thread removed");
1681 g_mutex_lock(&cb_info->msg_handler_mutex);
1682 g_atomic_int_set(&cb_info->msg_handler_running, 0);
1683 g_cond_signal(&cb_info->msg_handler_cond);
1684 g_mutex_unlock(&cb_info->msg_handler_mutex);
1686 g_thread_join(cb_info->msg_handler_thread);
1687 g_thread_unref(cb_info->msg_handler_thread);
1688 cb_info->msg_handler_thread = NULL;
1690 g_queue_free(cb_info->msg_queue);
1691 cb_info->msg_queue = NULL;
1693 for (i = 0 ; i < MUSE_CAMERA_API_MAX ; i++) {
1694 g_mutex_clear(&cb_info->api_mutex[i]);
1695 g_cond_clear(&cb_info->api_cond[i]);
1698 g_mutex_clear(&cb_info->msg_handler_mutex);
1699 g_cond_clear(&cb_info->msg_handler_cond);
1700 g_mutex_clear(&cb_info->idle_event_mutex);
1701 g_cond_clear(&cb_info->idle_event_cond);
1703 LOGD("event thread removed");
1705 if (cb_info->fd > -1) {
1706 muse_core_connection_close(cb_info->fd);
1710 if (cb_info->bufmgr) {
1711 tbm_bufmgr_deinit(cb_info->bufmgr);
1712 cb_info->bufmgr = NULL;
1714 if (cb_info->api_activating) {
1715 g_free(cb_info->api_activating);
1716 cb_info->api_activating = NULL;
1718 if (cb_info->api_ret) {
1719 g_free(cb_info->api_ret);
1720 cb_info->api_ret = NULL;
1722 if (cb_info->pkt_fmt) {
1723 media_format_unref(cb_info->pkt_fmt);
1724 cb_info->pkt_fmt = NULL;
1733 int camera_create(camera_device_e device, camera_h* camera)
1737 int ret = CAMERA_ERROR_NONE;
1739 camera_cli_s *pc = NULL;
1740 tbm_bufmgr bufmgr = NULL;
1742 muse_camera_api_e api = MUSE_CAMERA_API_CREATE;
1743 muse_core_api_module_e muse_module = MUSE_CAMERA;
1744 int device_type = (int)device;
1746 if (camera == NULL) {
1747 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1748 return CAMERA_ERROR_INVALID_PARAMETER;
1751 bufmgr = tbm_bufmgr_init(-1);
1752 if (bufmgr == NULL) {
1753 LOGE("get tbm bufmgr failed");
1754 return CAMERA_ERROR_INVALID_OPERATION;
1757 sock_fd = muse_core_client_new();
1759 LOGE("muse_core_client_new failed - returned fd %d", sock_fd);
1760 ret = CAMERA_ERROR_INVALID_OPERATION;
1766 sndMsg = muse_core_msg_json_factory_new(api,
1767 MUSE_TYPE_INT, "module", muse_module,
1768 MUSE_TYPE_INT, PARAM_DEVICE_TYPE, device_type,
1769 MUSE_TYPE_INT, "pid", pid,
1772 muse_core_ipc_send_msg(sock_fd, sndMsg);
1773 muse_core_msg_json_factory_free(sndMsg);
1775 pc = g_new0(camera_cli_s, 1);
1777 LOGE("camera_cli_s alloc failed");
1778 ret = CAMERA_ERROR_OUT_OF_MEMORY;
1782 pc->cb_info = _client_callback_new(sock_fd);
1783 if (pc->cb_info == NULL) {
1784 LOGE("cb_info alloc failed");
1785 ret = CAMERA_ERROR_OUT_OF_MEMORY;
1789 LOGD("cb info : %d", pc->cb_info->fd);
1791 ret = _client_wait_for_cb_return(api, pc->cb_info, CALLBACK_TIME_OUT);
1792 if (ret == CAMERA_ERROR_NONE) {
1793 intptr_t handle = 0;
1794 muse_camera_msg_get_pointer(handle, pc->cb_info->recv_msg);
1796 LOGE("Receiving Handle Failed!!");
1797 ret = CAMERA_ERROR_INVALID_OPERATION;
1801 pc->remote_handle = handle;
1802 pc->cb_info->bufmgr = bufmgr;
1804 LOGD("camera create 0x%x", pc->remote_handle);
1805 *camera = (camera_h) pc;
1813 tbm_bufmgr_deinit(bufmgr);
1817 _client_callback_destroy(pc->cb_info);
1823 LOGE("camera create error : 0x%x", ret);
1828 int camera_destroy(camera_h camera)
1830 if (camera == NULL) {
1831 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1832 return CAMERA_ERROR_INVALID_PARAMETER;
1835 int ret = CAMERA_ERROR_NONE;
1836 muse_camera_api_e api = MUSE_CAMERA_API_DESTROY;
1837 camera_cli_s *pc = (camera_cli_s *)camera;
1842 if (pc->cb_info == NULL) {
1843 LOGE("cb_info NULL, INVALID_PARAMETER");
1844 return CAMERA_ERROR_INVALID_PARAMETER;
1847 sock_fd = pc->cb_info->fd;
1849 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
1850 if (ret == CAMERA_ERROR_NONE) {
1851 if (pc->client_handle) {
1852 mm_camcorder_client_destroy(pc->client_handle);
1853 pc->client_handle = NULL;
1855 _camera_remove_idle_event_all(pc->cb_info);
1856 _client_callback_destroy(pc->cb_info);
1861 g_free(pc->wl_info);
1864 #endif /* HAVE_WAYLAND */
1869 LOGE("camera destroy error : 0x%x", ret);
1875 int camera_start_preview(camera_h camera)
1877 int ret = CAMERA_ERROR_NONE;
1878 muse_camera_api_e api = MUSE_CAMERA_API_START_PREVIEW;
1879 camera_cli_s *pc = (camera_cli_s *)camera;
1881 char caps[MUSE_CAMERA_MSG_MAX_LENGTH] = {0};
1883 if (camera == NULL) {
1884 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1885 return CAMERA_ERROR_INVALID_PARAMETER;
1888 if (pc->cb_info == NULL) {
1889 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1890 return CAMERA_ERROR_INVALID_PARAMETER;
1895 sock_fd = pc->cb_info->fd;
1897 if (pc->client_handle == NULL) {
1898 LOGW("set display is not called by application. set NONE type internally");
1899 ret = camera_set_display(camera, CAMERA_DISPLAY_TYPE_NONE, NULL);
1900 if (ret != CAMERA_ERROR_NONE) {
1901 LOGE("Internal camera_set_display failed 0x%x", ret);
1906 muse_camera_msg_send_longtime(api, sock_fd, pc->cb_info, ret);
1908 if (ret != CAMERA_ERROR_NONE) {
1909 LOGE("start preview failed 0x%x", ret);
1913 if (pc->cb_info->prev_state == CAMERA_STATE_CREATED) {
1914 if (muse_camera_msg_get_string(caps, pc->cb_info->recv_msg) == FALSE) {
1915 LOGE("failed to get caps string");
1916 goto _START_PREVIEW_ERROR;
1919 LOGD("caps : %s", caps);
1921 ret = mm_camcorder_client_realize(pc->client_handle, caps);
1922 if (ret != MM_ERROR_NONE) {
1923 LOGE("client realize failed 0x%x", ret);
1924 goto _START_PREVIEW_ERROR;
1928 LOGD("ret : 0x%x", ret);
1930 return CAMERA_ERROR_NONE;
1932 _START_PREVIEW_ERROR:
1933 muse_camera_msg_send_longtime(MUSE_CAMERA_API_STOP_PREVIEW, sock_fd, pc->cb_info, ret);
1935 return CAMERA_ERROR_INVALID_OPERATION;
1938 int camera_stop_preview(camera_h camera)
1940 if (camera == NULL) {
1941 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1942 return CAMERA_ERROR_INVALID_PARAMETER;
1944 int ret = CAMERA_ERROR_NONE;
1945 camera_cli_s *pc = (camera_cli_s *)camera;
1947 muse_camera_api_e api = MUSE_CAMERA_API_STOP_PREVIEW;
1949 if (pc->cb_info == NULL) {
1950 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1951 return CAMERA_ERROR_INVALID_PARAMETER;
1954 sock_fd = pc->cb_info->fd;
1956 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
1958 if (ret != CAMERA_ERROR_NONE) {
1959 LOGE("stop preview failed 0x%x", ret);
1963 if (pc->client_handle != NULL) {
1964 if (mm_camcorder_client_unrealize(pc->client_handle) == MM_ERROR_NONE) {
1965 LOGD("client unrealize done");
1967 LOGE("client unrealize failed. restart preview...");
1968 muse_camera_msg_send_longtime(MUSE_CAMERA_API_START_PREVIEW, sock_fd, pc->cb_info, ret);
1969 return CAMERA_ERROR_INVALID_OPERATION;
1972 LOGW("client handle is NULL");
1975 LOGD("ret : 0x%x", ret);
1980 int camera_start_capture(camera_h camera, camera_capturing_cb capturing_cb, camera_capture_completed_cb completed_cb, void *user_data)
1982 if (camera == NULL) {
1983 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1984 return CAMERA_ERROR_INVALID_PARAMETER;
1986 int ret = CAMERA_ERROR_NONE;
1988 camera_cli_s *pc = (camera_cli_s *)camera;
1989 muse_camera_api_e api = MUSE_CAMERA_API_START_CAPTURE;
1991 int is_capturing_cb = 0;
1992 int is_completed_cb = 0;
1993 LOGD("Enter, handle :%x", pc->remote_handle);
1995 if (pc->cb_info == NULL) {
1996 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
1997 return CAMERA_ERROR_INVALID_PARAMETER;
2000 sock_fd = pc->cb_info->fd;
2002 if (capturing_cb != NULL) {
2003 is_capturing_cb = 1;
2004 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = capturing_cb;
2005 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = user_data;
2008 if (completed_cb != NULL) {
2009 is_completed_cb = 1;
2010 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE] = completed_cb;
2011 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE] = user_data;
2014 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, is_capturing_cb, INT, is_completed_cb);
2015 LOGD("is_capturing_cb :%d, is_completed_cb : %d", is_capturing_cb, is_completed_cb);
2016 LOGD("ret : 0x%x", ret);
2020 bool camera_is_supported_continuous_capture(camera_h camera)
2022 if (camera == NULL) {
2023 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2027 int ret = CAMERA_ERROR_NONE;
2028 camera_cli_s *pc = (camera_cli_s *)camera;
2029 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_CONTINUOUS_CAPTURE;
2032 if (pc->cb_info == NULL) {
2033 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2034 return CAMERA_ERROR_INVALID_PARAMETER;
2037 sock_fd = pc->cb_info->fd;
2039 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2040 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2041 LOGD("ret : 0x%x", ret);
2045 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)
2047 if (camera == NULL) {
2048 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2049 return CAMERA_ERROR_INVALID_PARAMETER;
2052 int ret = CAMERA_ERROR_NONE;
2054 camera_cli_s *pc = (camera_cli_s *)camera;
2055 muse_camera_api_e api = MUSE_CAMERA_API_START_CONTINUOUS_CAPTURE;
2057 LOGD("Enter, handle :%x", pc->remote_handle);
2060 if (pc->cb_info == NULL) {
2061 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2062 return CAMERA_ERROR_INVALID_PARAMETER;
2064 sock_fd = pc->cb_info->fd;
2066 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = capturing_cb;
2067 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_CAPTURE] = user_data;
2068 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_CAPTURE_COMPLETE] = completed_cb;
2070 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, count, INT, interval);
2072 LOGD("ret : 0x%x", ret);
2077 int camera_stop_continuous_capture(camera_h camera)
2079 if (camera == NULL) {
2080 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2081 return 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_STOP_CONTINUOUS_CAPTURE;
2089 LOGD("Enter, handle :%x", pc->remote_handle);
2091 if (pc->cb_info == NULL) {
2092 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2093 return CAMERA_ERROR_INVALID_PARAMETER;
2095 sock_fd = pc->cb_info->fd;
2096 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2097 LOGD("ret : 0x%x", ret);
2101 bool camera_is_supported_face_detection(camera_h camera)
2103 if (camera == NULL) {
2104 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2107 int ret = CAMERA_ERROR_NONE;
2109 camera_cli_s *pc = (camera_cli_s *)camera;
2110 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_FACE_DETECTION;
2112 if (pc->cb_info == NULL) {
2113 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2114 return CAMERA_ERROR_INVALID_PARAMETER;
2116 sock_fd = pc->cb_info->fd;
2118 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2119 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2120 LOGD("ret : 0x%x", ret);
2124 bool camera_is_supported_zero_shutter_lag(camera_h camera)
2126 if (camera == NULL) {
2127 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2130 int ret = CAMERA_ERROR_NONE;
2132 camera_cli_s *pc = (camera_cli_s *)camera;
2133 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_ZERO_SHUTTER_LAG;
2135 if (pc->cb_info == NULL) {
2136 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2137 return CAMERA_ERROR_INVALID_PARAMETER;
2139 sock_fd = pc->cb_info->fd;
2141 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2142 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2143 LOGD("ret : 0x%x", ret);
2147 bool camera_is_supported_media_packet_preview_cb(camera_h camera)
2149 if (camera == NULL) {
2150 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2154 int ret = CAMERA_ERROR_NONE;
2156 camera_cli_s *pc = (camera_cli_s *)camera;
2157 muse_camera_api_e api = MUSE_CAMERA_API_SUPPORT_MEDIA_PACKET_PREVIEW_CB;
2159 if (pc->cb_info == NULL) {
2160 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2161 return CAMERA_ERROR_INVALID_PARAMETER;
2163 sock_fd = pc->cb_info->fd;
2165 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2166 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2167 LOGD("ret : 0x%x", ret);
2171 int camera_get_device_count(camera_h camera, int *device_count)
2173 if (camera == NULL || device_count == NULL) {
2174 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2175 return CAMERA_ERROR_INVALID_PARAMETER;
2177 int ret = CAMERA_ERROR_NONE;
2179 camera_cli_s *pc = (camera_cli_s *)camera;
2180 muse_camera_api_e api = MUSE_CAMERA_API_GET_DEVICE_COUNT;
2182 if (pc->cb_info == NULL) {
2183 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2184 return CAMERA_ERROR_INVALID_PARAMETER;
2186 sock_fd = pc->cb_info->fd;
2187 int get_device_count;
2189 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2190 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2192 if (ret == CAMERA_ERROR_NONE) {
2193 muse_camera_msg_get(get_device_count, pc->cb_info->recv_msg);
2194 *device_count = get_device_count;
2196 LOGD("ret : 0x%x", ret);
2200 int camera_start_face_detection(camera_h camera, camera_face_detected_cb callback, void * user_data)
2202 if (camera == NULL) {
2203 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2204 return CAMERA_ERROR_INVALID_PARAMETER;
2207 int ret = CAMERA_ERROR_NONE;
2209 camera_cli_s *pc = (camera_cli_s *)camera;
2210 muse_camera_api_e api = MUSE_CAMERA_API_START_FACE_DETECTION;
2212 LOGD("Enter, handle :%x", pc->remote_handle);
2214 if (pc->cb_info == NULL) {
2215 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2216 return CAMERA_ERROR_INVALID_PARAMETER;
2218 sock_fd = pc->cb_info->fd;
2219 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FACE_DETECTION] = callback;
2220 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FACE_DETECTION] = user_data;
2222 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2223 LOGD("ret : 0x%x", ret);
2227 int camera_stop_face_detection(camera_h camera)
2229 if (camera == NULL) {
2230 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2231 return CAMERA_ERROR_INVALID_PARAMETER;
2234 int ret = CAMERA_ERROR_NONE;
2236 camera_cli_s *pc = (camera_cli_s *)camera;
2237 muse_camera_api_e api = MUSE_CAMERA_API_STOP_FACE_DETECTION;
2238 LOGD("Enter, handle :%x", pc->remote_handle);
2240 if (pc->cb_info == NULL) {
2241 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2242 return CAMERA_ERROR_INVALID_PARAMETER;
2244 sock_fd = pc->cb_info->fd;
2245 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2246 LOGD("ret : 0x%x", ret);
2250 int camera_get_state(camera_h camera, camera_state_e * state)
2252 if (camera == NULL || state == NULL) {
2253 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2254 return CAMERA_ERROR_INVALID_PARAMETER;
2256 int ret = CAMERA_ERROR_NONE;
2258 camera_cli_s *pc = (camera_cli_s *)camera;
2259 muse_camera_api_e api = MUSE_CAMERA_API_GET_STATE;
2261 if (pc->cb_info == NULL) {
2262 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2263 return CAMERA_ERROR_INVALID_PARAMETER;
2265 sock_fd = pc->cb_info->fd;
2268 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2269 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2271 if (ret == CAMERA_ERROR_NONE) {
2272 muse_camera_msg_get(get_state, pc->cb_info->recv_msg);
2273 *state = (camera_state_e)get_state;
2275 LOGD("ret : 0x%x", ret);
2279 int camera_start_focusing(camera_h camera, bool continuous)
2281 if (camera == NULL) {
2282 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2283 return CAMERA_ERROR_INVALID_PARAMETER;
2286 int ret = CAMERA_ERROR_NONE;
2288 camera_cli_s *pc = (camera_cli_s *)camera;
2289 muse_camera_api_e api = MUSE_CAMERA_API_START_FOCUSING;
2291 if (pc->cb_info == NULL) {
2292 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2293 return CAMERA_ERROR_INVALID_PARAMETER;
2295 sock_fd = pc->cb_info->fd;
2296 int is_continuous = (int)continuous;
2298 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2299 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, is_continuous);
2300 LOGD("ret : 0x%x", ret);
2304 int camera_cancel_focusing(camera_h camera)
2306 if (camera == NULL) {
2307 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2308 return CAMERA_ERROR_INVALID_PARAMETER;
2311 int ret = CAMERA_ERROR_NONE;
2313 camera_cli_s *pc = (camera_cli_s *)camera;
2314 muse_camera_api_e api = MUSE_CAMERA_API_CANCEL_FOCUSING;
2316 if (pc->cb_info == NULL) {
2317 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2318 return CAMERA_ERROR_INVALID_PARAMETER;
2320 sock_fd = pc->cb_info->fd;
2322 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2323 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2324 LOGD("ret : 0x%x", ret);
2328 int camera_set_display(camera_h camera, camera_display_type_e type, camera_display_h display)
2330 int ret = CAMERA_ERROR_NONE;
2331 void *set_display_handle = NULL;
2332 int set_surface = MM_DISPLAY_SURFACE_X;
2333 Evas_Object *obj = NULL;
2334 const char *object_type = NULL;
2335 char socket_path[MUSE_CAMERA_MSG_MAX_LENGTH] = {0,};
2337 MMCamWaylandInfo *wl_info = NULL;
2338 #endif /* HAVE_WAYLAND */
2340 if (camera == NULL) {
2341 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2342 return CAMERA_ERROR_INVALID_PARAMETER;
2345 if (type != CAMERA_DISPLAY_TYPE_NONE && display == NULL) {
2346 LOGE("display type[%d] is not NONE, but display handle is NULL", type);
2347 return CAMERA_ERROR_INVALID_PARAMETER;
2350 camera_cli_s *pc = (camera_cli_s *)camera;
2351 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY;
2353 if (pc->cb_info == NULL) {
2354 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2355 return CAMERA_ERROR_INVALID_PARAMETER;
2357 sock_fd = pc->cb_info->fd;
2359 LOGD("Enter, remote_handle : %x display : 0x%x", pc->remote_handle, display);
2361 if (type == CAMERA_DISPLAY_TYPE_NONE) {
2362 set_display_handle = 0;
2363 set_surface = MM_DISPLAY_SURFACE_NULL;
2364 LOGD("display type NONE");
2366 obj = (Evas_Object *)display;
2367 object_type = evas_object_type_get(obj);
2369 if (type == CAMERA_DISPLAY_TYPE_OVERLAY && !strcmp(object_type, "elm_win")) {
2371 /* set wayland info */
2372 wl_info = _get_wl_info(obj);
2373 if (wl_info == NULL) {
2374 LOGE("failed to get wl_info");
2375 return CAMERA_ERROR_INVALID_OPERATION;
2378 set_display_handle = (void *)wl_info;
2379 #else /* HAVE_WAYLAND */
2380 /* x window overlay surface */
2381 set_display_handle = (void *)elm_win_xwindow_get(obj);
2383 set_surface = MM_DISPLAY_SURFACE_X;
2384 LOGD("display type OVERLAY : handle %p", set_display_handle);
2385 } else if (type == CAMERA_DISPLAY_TYPE_EVAS && !strcmp(object_type, "image")) {
2386 /* evas object surface */
2387 set_display_handle = (void *)display;
2388 set_surface = MM_DISPLAY_SURFACE_EVAS;
2389 LOGD("display type EVAS : handle %p", set_display_handle);
2391 LOGE("unknown evas object [%p,%s] or type [%d] mismatch", obj, object_type, type);
2392 return CAMERA_ERROR_INVALID_PARAMETER;
2395 LOGE("failed to get evas object type from %p", obj);
2396 return CAMERA_ERROR_INVALID_PARAMETER;
2400 pc->display_handle = (intptr_t)set_display_handle;
2402 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2404 if (ret == CAMERA_ERROR_NONE) {
2405 if (pc->client_handle == NULL) {
2406 ret = mm_camcorder_client_create(&pc->client_handle);
2407 if (ret != MM_ERROR_NONE) {
2408 LOGE("camera client create Failed 0x%x", ret);
2409 goto _SET_DISPLAY_ERROR;
2413 if (muse_camera_msg_get_string(socket_path, pc->cb_info->recv_msg) == FALSE) {
2414 LOGE("failed to get socket path");
2415 goto _SET_DISPLAY_ERROR;
2418 LOGD("socket path : %s", socket_path);
2420 ret = mm_camcorder_client_set_socket_path(pc->client_handle, socket_path);
2421 if (ret != MM_ERROR_NONE) {
2422 LOGE("failed to set socket path 0x%x", ret);
2423 goto _SET_DISPLAY_ERROR;
2426 ret = mm_camcorder_set_attributes(pc->client_handle, NULL,
2427 MMCAM_DISPLAY_SURFACE, set_surface,
2429 if (ret != MM_ERROR_NONE) {
2430 LOGE("set display surface failed 0x%x", ret);
2431 goto _SET_DISPLAY_ERROR;
2434 if (type != CAMERA_DISPLAY_TYPE_NONE) {
2435 ret = mm_camcorder_set_attributes(pc->client_handle, NULL,
2436 MMCAM_DISPLAY_HANDLE, set_display_handle, sizeof(void *),
2438 if (ret != MM_ERROR_NONE) {
2439 LOGE("set display handle failed 0x%x", ret);
2440 goto _SET_DISPLAY_ERROR;
2446 g_free(pc->wl_info);
2450 pc->wl_info = wl_info;
2451 #endif /* HAVE_WAYLAND */
2453 return CAMERA_ERROR_NONE;;
2455 LOGE("set display error - 0x%x");
2465 #endif /* HAVE_WAYLAND */
2467 return __convert_camera_error_code(__func__, ret);
2470 int camera_set_preview_resolution(camera_h camera, int width, int height)
2472 if (camera == NULL) {
2473 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2474 return CAMERA_ERROR_INVALID_PARAMETER;
2476 int ret = CAMERA_ERROR_NONE;
2478 camera_cli_s *pc = (camera_cli_s *)camera;
2479 muse_camera_api_e api = MUSE_CAMERA_API_SET_PREVIEW_RESOLUTION;
2481 if (pc->cb_info == NULL) {
2482 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2483 return CAMERA_ERROR_INVALID_PARAMETER;
2485 sock_fd = pc->cb_info->fd;
2487 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2488 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, width, INT, height);
2489 LOGD("ret : 0x%x", ret);
2494 int camera_set_capture_resolution(camera_h camera, int width, int height)
2496 if (camera == NULL) {
2497 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2498 return CAMERA_ERROR_INVALID_PARAMETER;
2501 int ret = CAMERA_ERROR_NONE;
2503 camera_cli_s *pc = (camera_cli_s *)camera;
2504 muse_camera_api_e api = MUSE_CAMERA_API_SET_CAPTURE_RESOLUTION;
2506 if (pc->cb_info == NULL) {
2507 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2508 return CAMERA_ERROR_INVALID_PARAMETER;
2510 sock_fd = pc->cb_info->fd;
2512 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2513 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, width, INT, height);
2514 LOGD("ret : 0x%x", ret);
2518 int camera_set_capture_format(camera_h camera, camera_pixel_format_e format)
2520 if (camera == NULL) {
2521 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2522 return CAMERA_ERROR_INVALID_PARAMETER;
2525 int ret = CAMERA_ERROR_NONE;
2526 int set_format = (int)format;
2528 camera_cli_s *pc = (camera_cli_s *)camera;
2529 muse_camera_api_e api = MUSE_CAMERA_API_SET_CAPTURE_FORMAT;
2531 if (pc->cb_info == NULL) {
2532 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2533 return CAMERA_ERROR_INVALID_PARAMETER;
2535 sock_fd = pc->cb_info->fd;
2537 LOGD("Enter, remote_handle : %x, capture_format: %d", pc->remote_handle, set_format);
2538 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_format);
2539 LOGD("ret : 0x%x", ret);
2543 int camera_set_preview_format(camera_h camera, camera_pixel_format_e format)
2545 if (camera == NULL) {
2546 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2547 return CAMERA_ERROR_INVALID_PARAMETER;
2550 int ret = CAMERA_ERROR_NONE;
2551 int set_format = (int)format;
2553 camera_cli_s *pc = (camera_cli_s *)camera;
2554 muse_camera_api_e api = MUSE_CAMERA_API_SET_PREVIEW_FORMAT;
2556 if (pc->cb_info == NULL) {
2557 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2558 return CAMERA_ERROR_INVALID_PARAMETER;
2560 sock_fd = pc->cb_info->fd;
2562 LOGD("Enter, remote_handle : %x, capture_format: %d", pc->remote_handle, set_format);
2563 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_format);
2564 LOGD("ret : 0x%x", ret);
2568 int camera_get_preview_resolution(camera_h camera, int *width, int *height)
2570 if (camera == NULL || width == NULL || height == NULL) {
2571 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2572 return CAMERA_ERROR_INVALID_PARAMETER;
2576 int ret = CAMERA_ERROR_NONE;
2578 camera_cli_s *pc = (camera_cli_s *)camera;
2579 muse_camera_api_e api = MUSE_CAMERA_API_GET_PREVIEW_RESOLUTION;
2581 if (pc->cb_info == NULL) {
2582 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2583 return CAMERA_ERROR_INVALID_PARAMETER;
2585 sock_fd = pc->cb_info->fd;
2589 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2590 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2592 if (ret == CAMERA_ERROR_NONE) {
2593 muse_camera_msg_get(get_width, pc->cb_info->recv_msg);
2594 muse_camera_msg_get(get_height, pc->cb_info->recv_msg);
2596 *height = get_height;
2598 LOGD("ret : 0x%x", ret);
2602 int camera_set_display_rotation(camera_h camera, camera_rotation_e rotation)
2604 if (camera == NULL) {
2605 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2606 return CAMERA_ERROR_INVALID_PARAMETER;
2609 int ret = CAMERA_ERROR_NONE;
2610 camera_cli_s *pc = (camera_cli_s *)camera;
2611 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_ROTATION;
2613 if (pc->cb_info == NULL) {
2614 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2615 return CAMERA_ERROR_INVALID_PARAMETER;
2617 sock_fd = pc->cb_info->fd;
2618 int set_rotation = (int)rotation;
2620 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2621 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_rotation);
2622 LOGD("ret : 0x%x", ret);
2626 int camera_get_display_rotation(camera_h camera, camera_rotation_e *rotation)
2628 if (camera == NULL || rotation == NULL) {
2629 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2630 return CAMERA_ERROR_INVALID_PARAMETER;
2633 int ret = CAMERA_ERROR_NONE;
2635 camera_cli_s *pc = (camera_cli_s *)camera;
2636 muse_camera_api_e api = MUSE_CAMERA_API_GET_DISPLAY_ROTATION;
2638 if (pc->cb_info == NULL) {
2639 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2640 return CAMERA_ERROR_INVALID_PARAMETER;
2642 sock_fd = pc->cb_info->fd;
2645 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2646 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2648 if (ret == CAMERA_ERROR_NONE) {
2649 muse_camera_msg_get(get_rotation, pc->cb_info->recv_msg);
2650 *rotation = (camera_rotation_e)get_rotation;
2652 LOGD("ret : 0x%x", ret);
2656 int camera_set_display_flip(camera_h camera, camera_flip_e flip)
2658 if (camera == NULL) {
2659 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2660 return CAMERA_ERROR_INVALID_PARAMETER;
2663 int ret = CAMERA_ERROR_NONE;
2665 camera_cli_s *pc = (camera_cli_s *)camera;
2666 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_FLIP;
2668 if (pc->cb_info == NULL) {
2669 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2670 return CAMERA_ERROR_INVALID_PARAMETER;
2672 sock_fd = pc->cb_info->fd;
2673 int set_flip = (int)flip;
2675 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2676 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_flip);
2677 LOGD("ret : 0x%x", ret);
2681 int camera_get_display_flip(camera_h camera, camera_flip_e *flip)
2683 if (camera == NULL || flip == NULL) {
2684 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2685 return CAMERA_ERROR_INVALID_PARAMETER;
2688 int ret = CAMERA_ERROR_NONE;
2690 camera_cli_s *pc = (camera_cli_s *)camera;
2691 muse_camera_api_e api = MUSE_CAMERA_API_GET_DISPLAY_FLIP;
2693 if (pc->cb_info == NULL) {
2694 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2695 return CAMERA_ERROR_INVALID_PARAMETER;
2697 sock_fd = pc->cb_info->fd;
2700 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2701 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2703 if (ret == CAMERA_ERROR_NONE) {
2704 muse_camera_msg_get(get_flip, pc->cb_info->recv_msg);
2705 *flip = (camera_flip_e)get_flip;
2707 LOGD("ret : 0x%x", ret);
2711 int camera_set_display_visible(camera_h camera, bool visible)
2713 if (camera == NULL) {
2714 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2715 return CAMERA_ERROR_INVALID_PARAMETER;
2718 int ret = CAMERA_ERROR_NONE;
2720 camera_cli_s *pc = (camera_cli_s *)camera;
2721 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_VISIBLE;
2722 int set_visible = (int)visible;
2724 if (pc->cb_info == NULL) {
2725 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2726 return CAMERA_ERROR_INVALID_PARAMETER;
2728 sock_fd = pc->cb_info->fd;
2730 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2731 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_visible);
2732 LOGD("ret : 0x%x", ret);
2736 int camera_is_display_visible(camera_h camera, bool* visible)
2738 if (camera == NULL || visible == NULL) {
2739 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2740 return CAMERA_ERROR_INVALID_PARAMETER;
2743 int ret = CAMERA_ERROR_NONE;
2745 camera_cli_s *pc = (camera_cli_s *)camera;
2746 muse_camera_api_e api = MUSE_CAMERA_API_IS_DISPLAY_VISIBLE;
2748 if (pc->cb_info == NULL) {
2749 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2750 return CAMERA_ERROR_INVALID_PARAMETER;
2752 sock_fd = pc->cb_info->fd;
2755 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2756 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2758 if (ret == CAMERA_ERROR_NONE) {
2759 muse_camera_msg_get(get_visible, pc->cb_info->recv_msg);
2760 *visible = (bool)get_visible;
2762 LOGD("ret : 0x%x", ret);
2766 int camera_set_display_mode(camera_h camera, camera_display_mode_e mode)
2768 if (camera == NULL) {
2769 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2770 return CAMERA_ERROR_INVALID_PARAMETER;
2773 int ret = CAMERA_ERROR_NONE;
2774 int set_mode = (int)mode;
2776 camera_cli_s *pc = (camera_cli_s *)camera;
2777 muse_camera_api_e api = MUSE_CAMERA_API_SET_DISPLAY_MODE;
2779 if (pc->cb_info == NULL) {
2780 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2781 return CAMERA_ERROR_INVALID_PARAMETER;
2783 sock_fd = pc->cb_info->fd;
2785 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2786 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
2787 LOGD("ret : 0x%x", ret);
2791 int camera_get_display_mode(camera_h camera, camera_display_mode_e* mode)
2793 if (camera == NULL || mode == NULL) {
2794 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2795 return CAMERA_ERROR_INVALID_PARAMETER;
2798 int ret = CAMERA_ERROR_NONE;
2800 camera_cli_s *pc = (camera_cli_s *)camera;
2801 muse_camera_api_e api = MUSE_CAMERA_API_GET_DISPLAY_MODE;
2803 if (pc->cb_info == NULL) {
2804 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2805 return CAMERA_ERROR_INVALID_PARAMETER;
2807 sock_fd = pc->cb_info->fd;
2810 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2811 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2813 if (ret == CAMERA_ERROR_NONE) {
2814 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
2815 *mode = (camera_display_mode_e)get_mode;
2817 LOGD("ret : 0x%x", ret);
2821 int camera_get_capture_resolution(camera_h camera, int *width, int *height)
2823 if (camera == NULL || width == NULL || height == NULL) {
2824 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2825 return CAMERA_ERROR_INVALID_PARAMETER;
2827 int ret = CAMERA_ERROR_NONE;
2829 camera_cli_s *pc = (camera_cli_s *)camera;
2830 muse_camera_api_e api = MUSE_CAMERA_API_GET_CAPTURE_RESOLUTION;
2832 if (pc->cb_info == NULL) {
2833 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2834 return CAMERA_ERROR_INVALID_PARAMETER;
2836 sock_fd = pc->cb_info->fd;
2840 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2841 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2843 if (ret == CAMERA_ERROR_NONE) {
2844 muse_camera_msg_get(get_width, pc->cb_info->recv_msg);
2845 muse_camera_msg_get(get_height, pc->cb_info->recv_msg);
2847 *height = get_height;
2849 LOGD("ret : 0x%x", ret);
2853 int camera_get_capture_format(camera_h camera, camera_pixel_format_e *format)
2855 if (camera == NULL || format == NULL) {
2856 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2857 return CAMERA_ERROR_INVALID_PARAMETER;
2859 int ret = CAMERA_ERROR_NONE;
2861 camera_cli_s *pc = (camera_cli_s *)camera;
2862 muse_camera_api_e api = MUSE_CAMERA_API_GET_CAPTURE_FORMAT;
2865 if (pc->cb_info == NULL) {
2866 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2867 return CAMERA_ERROR_INVALID_PARAMETER;
2869 sock_fd = pc->cb_info->fd;
2871 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2872 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2874 if (ret == CAMERA_ERROR_NONE) {
2875 muse_camera_msg_get(get_format, pc->cb_info->recv_msg);
2876 *format = (camera_pixel_format_e)get_format;
2878 LOGD("ret : 0x%x", ret);
2882 int camera_get_preview_format(camera_h camera, camera_pixel_format_e *format)
2884 if (camera == NULL || format == NULL) {
2885 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2886 return CAMERA_ERROR_INVALID_PARAMETER;
2889 int ret = CAMERA_ERROR_NONE;
2891 camera_cli_s *pc = (camera_cli_s *)camera;
2892 muse_camera_api_e api = MUSE_CAMERA_API_GET_PREVIEW_FORMAT;
2895 if (pc->cb_info == NULL) {
2896 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2897 return CAMERA_ERROR_INVALID_PARAMETER;
2899 sock_fd = pc->cb_info->fd;
2901 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2902 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2904 if (ret == CAMERA_ERROR_NONE) {
2905 muse_camera_msg_get(get_format, pc->cb_info->recv_msg);
2906 *format = (camera_pixel_format_e)get_format;
2908 LOGD("ret : 0x%x", ret);
2912 int camera_get_facing_direction(camera_h camera, camera_facing_direction_e *facing_direciton)
2914 if (camera == NULL || facing_direciton == NULL) {
2915 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2916 return CAMERA_ERROR_INVALID_PARAMETER;
2919 int ret = CAMERA_ERROR_NONE;
2921 camera_cli_s *pc = (camera_cli_s *)camera;
2922 muse_camera_api_e api = MUSE_CAMERA_API_GET_FACING_DIRECTION;
2924 if (pc->cb_info == NULL) {
2925 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2926 return CAMERA_ERROR_INVALID_PARAMETER;
2928 sock_fd = pc->cb_info->fd;
2929 int get_facing_direction;
2931 LOGD("Enter, remote_handle : %x", pc->remote_handle);
2932 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2934 if (ret == CAMERA_ERROR_NONE) {
2935 muse_camera_msg_get(get_facing_direction, pc->cb_info->recv_msg);
2936 *facing_direciton = (camera_facing_direction_e)get_facing_direction;
2938 LOGD("ret : 0x%x", ret);
2942 int camera_set_preview_cb(camera_h camera, camera_preview_cb callback, void* user_data)
2944 if (camera == NULL || callback == NULL) {
2945 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2946 return CAMERA_ERROR_INVALID_PARAMETER;
2948 int ret = CAMERA_ERROR_NONE;
2950 camera_cli_s *pc = (camera_cli_s *)camera;
2952 if (pc->cb_info == NULL) {
2953 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2954 return CAMERA_ERROR_INVALID_PARAMETER;
2956 sock_fd = pc->cb_info->fd;
2957 muse_camera_api_e api = MUSE_CAMERA_API_SET_PREVIEW_CB;
2959 LOGD("Enter, handle :%x", pc->remote_handle);
2961 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = callback;
2962 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = user_data;
2964 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2965 LOGD("ret : 0x%x", ret);
2969 int camera_unset_preview_cb(camera_h camera)
2971 if (camera == NULL) {
2972 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2973 return CAMERA_ERROR_INVALID_PARAMETER;
2976 int ret = CAMERA_ERROR_NONE;
2978 camera_cli_s *pc = (camera_cli_s *)camera;
2979 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_PREVIEW_CB;
2981 LOGD("Enter, handle :%x", pc->remote_handle);
2984 if (pc->cb_info == NULL) {
2985 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
2986 return CAMERA_ERROR_INVALID_PARAMETER;
2988 sock_fd = pc->cb_info->fd;
2989 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = (void *)NULL;
2990 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_PREVIEW] = (void *)NULL;
2992 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
2993 LOGD("ret : 0x%x", ret);
2997 int camera_set_media_packet_preview_cb(camera_h camera, camera_media_packet_preview_cb callback, void* user_data)
2999 if (camera == NULL) {
3000 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
3001 return CAMERA_ERROR_INVALID_PARAMETER;
3004 if (camera_is_supported_media_packet_preview_cb(camera) == false) {
3005 LOGE("NOT SUPPORTED");
3006 return CAMERA_ERROR_NOT_SUPPORTED;
3009 if (callback == NULL) {
3010 LOGE("INVALID_PARAMETER(0x%08x) - callback", CAMERA_ERROR_INVALID_PARAMETER);
3011 return CAMERA_ERROR_INVALID_PARAMETER;
3014 int ret = CAMERA_ERROR_NONE;
3016 camera_cli_s *pc = (camera_cli_s *)camera;
3017 muse_camera_api_e api = MUSE_CAMERA_API_SET_MEDIA_PACKET_PREVIEW_CB;
3019 LOGD("Enter, handle :%x", pc->remote_handle);
3022 if (pc->cb_info == NULL) {
3023 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3024 return CAMERA_ERROR_INVALID_PARAMETER;
3026 sock_fd = pc->cb_info->fd;
3027 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = callback;
3028 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = user_data;
3030 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3031 LOGD("ret : 0x%x", ret);
3035 int camera_unset_media_packet_preview_cb(camera_h camera)
3037 if (camera == NULL) {
3038 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3039 return CAMERA_ERROR_INVALID_PARAMETER;
3042 int ret = CAMERA_ERROR_NONE;
3044 camera_cli_s *pc = (camera_cli_s *)camera;
3045 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_MEDIA_PACKET_PREVIEW_CB;
3047 LOGD("Enter, handle :%x", pc->remote_handle);
3050 if (pc->cb_info == NULL) {
3051 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3052 return CAMERA_ERROR_INVALID_PARAMETER;
3054 sock_fd = pc->cb_info->fd;
3055 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = (void *)NULL;
3056 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_MEDIA_PACKET_PREVIEW] = (void *)NULL;
3058 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3059 LOGD("ret : 0x%x", ret);
3063 int camera_set_state_changed_cb(camera_h camera, camera_state_changed_cb callback, void* user_data)
3065 if (camera == NULL || callback == NULL) {
3066 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3067 return CAMERA_ERROR_INVALID_PARAMETER;
3069 int ret = CAMERA_ERROR_NONE;
3071 camera_cli_s *pc = (camera_cli_s *)camera;
3072 muse_camera_api_e api = MUSE_CAMERA_API_SET_STATE_CHANGED_CB;
3074 LOGD("Enter, handle :%x", pc->remote_handle);
3077 if (pc->cb_info == NULL) {
3078 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3079 return CAMERA_ERROR_INVALID_PARAMETER;
3081 sock_fd = pc->cb_info->fd;
3082 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = callback;
3083 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = user_data;
3085 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3086 LOGD("ret : 0x%x", ret);
3089 int camera_unset_state_changed_cb(camera_h camera)
3091 if (camera == NULL) {
3092 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3093 return CAMERA_ERROR_INVALID_PARAMETER;
3095 int ret = CAMERA_ERROR_NONE;
3097 camera_cli_s *pc = (camera_cli_s *)camera;
3098 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_STATE_CHANGED_CB;
3100 LOGD("Enter, handle :%x", pc->remote_handle);
3103 if (pc->cb_info == NULL) {
3104 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3105 return CAMERA_ERROR_INVALID_PARAMETER;
3107 sock_fd = pc->cb_info->fd;
3108 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = (void *)NULL;
3109 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_STATE_CHANGE] = (void *)NULL;
3111 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3112 LOGD("ret : 0x%x", ret);
3116 int camera_set_interrupted_cb(camera_h camera, camera_interrupted_cb callback, void *user_data)
3118 if (camera == NULL || callback == NULL) {
3119 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3120 return CAMERA_ERROR_INVALID_PARAMETER;
3122 int ret = CAMERA_ERROR_NONE;
3124 camera_cli_s *pc = (camera_cli_s *)camera;
3125 muse_camera_api_e api = MUSE_CAMERA_API_SET_INTERRUPTED_CB;
3127 LOGD("Enter, handle :%x", pc->remote_handle);
3130 if (pc->cb_info == NULL) {
3131 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3132 return CAMERA_ERROR_INVALID_PARAMETER;
3134 sock_fd = pc->cb_info->fd;
3135 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = callback;
3136 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = user_data;
3138 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3139 LOGD("ret : 0x%x", ret);
3143 int camera_unset_interrupted_cb(camera_h camera)
3145 if (camera == NULL) {
3146 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3147 return CAMERA_ERROR_INVALID_PARAMETER;
3149 int ret = CAMERA_ERROR_NONE;
3151 camera_cli_s *pc = (camera_cli_s *)camera;
3152 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_INTERRUPTED_CB;
3154 LOGD("Enter, handle :%x", pc->remote_handle);
3157 if (pc->cb_info == NULL) {
3158 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3159 return CAMERA_ERROR_INVALID_PARAMETER;
3161 sock_fd = pc->cb_info->fd;
3162 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = (void *)NULL;
3163 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_INTERRUPTED] = (void *)NULL;
3165 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3166 LOGD("ret : 0x%x", ret);
3170 int camera_set_focus_changed_cb(camera_h camera, camera_focus_changed_cb callback, void* user_data)
3172 if (camera == NULL || callback == NULL) {
3173 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3174 return CAMERA_ERROR_INVALID_PARAMETER;
3176 int ret = CAMERA_ERROR_NONE;
3178 camera_cli_s *pc = (camera_cli_s *)camera;
3179 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOCUS_CHANGED_CB;
3181 LOGD("Enter, handle :%x", pc->remote_handle);
3184 if (pc->cb_info == NULL) {
3185 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3186 return CAMERA_ERROR_INVALID_PARAMETER;
3188 sock_fd = pc->cb_info->fd;
3189 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = callback;
3190 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = user_data;
3192 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3193 LOGD("ret : 0x%x", ret);
3197 int camera_unset_focus_changed_cb(camera_h camera)
3199 if (camera == NULL) {
3200 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3201 return CAMERA_ERROR_INVALID_PARAMETER;
3203 int ret = CAMERA_ERROR_NONE;
3205 camera_cli_s *pc = (camera_cli_s *)camera;
3206 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_FOCUS_CHANGED_CB;
3208 LOGD("Enter, handle :%x", pc->remote_handle);
3211 if (pc->cb_info == NULL) {
3212 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3213 return CAMERA_ERROR_INVALID_PARAMETER;
3215 sock_fd = pc->cb_info->fd;
3216 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = (void *)NULL;
3217 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOCUS_CHANGE] = (void *)NULL;
3219 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3220 LOGD("ret : 0x%x", ret);
3224 int camera_set_error_cb(camera_h camera, camera_error_cb callback, void *user_data)
3226 if (camera == NULL || callback == NULL) {
3227 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3228 return CAMERA_ERROR_INVALID_PARAMETER;
3230 int ret = CAMERA_ERROR_NONE;
3232 camera_cli_s *pc = (camera_cli_s *)camera;
3233 muse_camera_api_e api = MUSE_CAMERA_API_SET_ERROR_CB;
3235 LOGD("Enter, handle :%x", pc->remote_handle);
3238 if (pc->cb_info == NULL) {
3239 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3240 return CAMERA_ERROR_INVALID_PARAMETER;
3242 sock_fd = pc->cb_info->fd;
3243 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_ERROR] = callback;
3244 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_ERROR] = user_data;
3246 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3247 LOGD("ret : 0x%x", ret);
3251 int camera_unset_error_cb(camera_h camera)
3253 if (camera == NULL) {
3254 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3255 return CAMERA_ERROR_INVALID_PARAMETER;
3257 int ret = CAMERA_ERROR_NONE;
3259 camera_cli_s *pc = (camera_cli_s *)camera;
3260 muse_camera_api_e api = MUSE_CAMERA_API_UNSET_ERROR_CB;
3262 LOGD("Enter, handle :%x", pc->remote_handle);
3265 if (pc->cb_info == NULL) {
3266 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3267 return CAMERA_ERROR_INVALID_PARAMETER;
3269 sock_fd = pc->cb_info->fd;
3270 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_ERROR] = (void *)NULL;
3271 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_ERROR] = (void *)NULL;
3273 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3274 LOGD("ret : 0x%x", ret);
3278 int camera_foreach_supported_preview_resolution(camera_h camera, camera_supported_preview_resolution_cb foreach_cb , void *user_data)
3280 if (camera == NULL || foreach_cb == NULL) {
3281 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3282 return CAMERA_ERROR_INVALID_PARAMETER;
3284 int ret = CAMERA_ERROR_NONE;
3286 camera_cli_s *pc = (camera_cli_s *)camera;
3287 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_RESOLUTION;
3289 LOGD("Enter, handle :%x", pc->remote_handle);
3292 if (pc->cb_info == NULL) {
3293 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3294 return CAMERA_ERROR_INVALID_PARAMETER;
3296 sock_fd = pc->cb_info->fd;
3297 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_RESOLUTION] = foreach_cb;
3298 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_RESOLUTION] = user_data;
3300 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3301 LOGD("ret : 0x%x", ret);
3305 int camera_foreach_supported_capture_resolution(camera_h camera, camera_supported_capture_resolution_cb foreach_cb , void *user_data)
3307 if (camera == NULL || foreach_cb == NULL) {
3308 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3309 return CAMERA_ERROR_INVALID_PARAMETER;
3311 int ret = CAMERA_ERROR_NONE;
3313 camera_cli_s *pc = (camera_cli_s *)camera;
3314 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_RESOLUTION;
3316 LOGD("Enter, handle :%x", pc->remote_handle);
3319 if (pc->cb_info == NULL) {
3320 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3321 return CAMERA_ERROR_INVALID_PARAMETER;
3323 sock_fd = pc->cb_info->fd;
3324 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_RESOLUTION] = foreach_cb;
3325 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_RESOLUTION] = user_data;
3327 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3328 LOGD("ret : 0x%x", ret);
3332 int camera_foreach_supported_capture_format(camera_h camera, camera_supported_capture_format_cb foreach_cb , void *user_data)
3334 if (camera == NULL || foreach_cb == NULL) {
3335 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3336 return CAMERA_ERROR_INVALID_PARAMETER;
3338 int ret = CAMERA_ERROR_NONE;
3340 camera_cli_s *pc = (camera_cli_s *)camera;
3341 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_CAPTURE_FORMAT;
3343 LOGD("Enter, handle :%x", pc->remote_handle);
3346 if (pc->cb_info == NULL) {
3347 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3348 return CAMERA_ERROR_INVALID_PARAMETER;
3350 sock_fd = pc->cb_info->fd;
3351 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_FORMAT] = foreach_cb;
3352 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_CAPTURE_FORMAT] = user_data;
3354 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3355 LOGD("ret : 0x%x", ret);
3360 int camera_foreach_supported_preview_format(camera_h camera, camera_supported_preview_format_cb foreach_cb , void *user_data)
3362 if (camera == NULL || foreach_cb == NULL) {
3363 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3364 return CAMERA_ERROR_INVALID_PARAMETER;
3366 int ret = CAMERA_ERROR_NONE;
3368 camera_cli_s *pc = (camera_cli_s *)camera;
3369 muse_camera_api_e api = MUSE_CAMERA_API_SET_FOREACH_SUPPORTED_PREVIEW_FORMAT;
3371 LOGD("Enter, handle :%x", pc->remote_handle);
3374 if (pc->cb_info == NULL) {
3375 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3376 return CAMERA_ERROR_INVALID_PARAMETER;
3378 sock_fd = pc->cb_info->fd;
3379 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_FORMAT] = foreach_cb;
3380 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_PREVIEW_FORMAT] = user_data;
3382 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3383 LOGD("ret : 0x%x", ret);
3388 int camera_get_recommended_preview_resolution(camera_h camera, int *width, int *height)
3390 if (camera == NULL || width == NULL || height == NULL) {
3391 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3392 return CAMERA_ERROR_INVALID_PARAMETER;
3394 int ret = CAMERA_ERROR_NONE;
3396 camera_cli_s *pc = (camera_cli_s *)camera;
3397 muse_camera_api_e api = MUSE_CAMERA_API_GET_RECOMMENDED_PREVIEW_RESOLUTION;
3399 if (pc->cb_info == NULL) {
3400 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3401 return CAMERA_ERROR_INVALID_PARAMETER;
3403 sock_fd = pc->cb_info->fd;
3407 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3408 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3410 if (ret == CAMERA_ERROR_NONE) {
3411 muse_camera_msg_get(get_width, pc->cb_info->recv_msg);
3412 muse_camera_msg_get(get_height, pc->cb_info->recv_msg);
3414 *height = get_height;
3416 LOGD("ret : 0x%x", ret);
3421 int camera_attr_get_lens_orientation(camera_h camera, int *angle)
3423 if (camera == NULL || angle == NULL) {
3424 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3425 return CAMERA_ERROR_INVALID_PARAMETER;
3427 int ret = CAMERA_ERROR_NONE;
3429 camera_cli_s *pc = (camera_cli_s *)camera;
3430 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_LENS_ORIENTATION;
3432 if (pc->cb_info == NULL) {
3433 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3434 return CAMERA_ERROR_INVALID_PARAMETER;
3436 sock_fd = pc->cb_info->fd;
3439 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3440 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3442 if (ret == CAMERA_ERROR_NONE) {
3443 muse_camera_msg_get(get_angle, pc->cb_info->recv_msg);
3446 LOGD("ret : 0x%x", ret);
3450 int camera_attr_set_theater_mode(camera_h camera, camera_attr_theater_mode_e mode)
3452 if (camera == NULL) {
3453 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3454 return CAMERA_ERROR_INVALID_PARAMETER;
3456 int ret = CAMERA_ERROR_NONE;
3457 camera_cli_s *pc = (camera_cli_s *)camera;
3458 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_THEATER_MODE;
3460 if (pc->cb_info == NULL) {
3461 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3462 return CAMERA_ERROR_INVALID_PARAMETER;
3464 sock_fd = pc->cb_info->fd;
3465 int set_mode = (int)mode;
3466 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3467 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3468 LOGD("ret : 0x%x", ret);
3472 int camera_attr_get_theater_mode(camera_h camera, camera_attr_theater_mode_e *mode)
3474 if (camera == NULL || mode == NULL) {
3475 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3476 return CAMERA_ERROR_INVALID_PARAMETER;
3479 int ret = CAMERA_ERROR_NONE;
3480 camera_cli_s *pc = (camera_cli_s *)camera;
3481 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_THEATER_MODE;
3483 if (pc->cb_info == NULL) {
3484 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3485 return CAMERA_ERROR_INVALID_PARAMETER;
3487 sock_fd = pc->cb_info->fd;
3489 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3490 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3492 if (ret == CAMERA_ERROR_NONE) {
3493 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
3494 *mode = (camera_attr_theater_mode_e)get_mode;
3496 LOGD("ret : 0x%x", ret);
3500 int camera_attr_foreach_supported_theater_mode(camera_h camera, camera_attr_supported_theater_mode_cb foreach_cb, void *user_data)
3502 if (camera == NULL || foreach_cb == NULL) {
3503 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3504 return CAMERA_ERROR_INVALID_PARAMETER;
3506 int ret = CAMERA_ERROR_NONE;
3508 camera_cli_s *pc = (camera_cli_s *)camera;
3509 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_THEATER_MODE;
3511 LOGD("Enter, handle :%x", pc->remote_handle);
3514 if (pc->cb_info == NULL) {
3515 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3516 return CAMERA_ERROR_INVALID_PARAMETER;
3518 sock_fd = pc->cb_info->fd;
3519 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_THEATER_MODE] = foreach_cb;
3520 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_THEATER_MODE] = user_data;
3522 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3524 LOGD("Finish, return :%x", ret);
3529 int camera_attr_set_preview_fps(camera_h camera, camera_attr_fps_e fps)
3531 if (camera == NULL) {
3532 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3533 return CAMERA_ERROR_INVALID_PARAMETER;
3535 int ret = CAMERA_ERROR_NONE;
3536 camera_cli_s *pc = (camera_cli_s *)camera;
3537 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_PREVIEW_FPS;
3539 if (pc->cb_info == NULL) {
3540 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3541 return CAMERA_ERROR_INVALID_PARAMETER;
3543 sock_fd = pc->cb_info->fd;
3544 int set_fps = (int)fps;
3545 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3546 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_fps);
3547 LOGD("ret : 0x%x", ret);
3552 int camera_attr_set_image_quality(camera_h camera, int quality)
3554 if (camera == NULL) {
3555 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3556 return CAMERA_ERROR_INVALID_PARAMETER;
3558 int ret = CAMERA_ERROR_NONE;
3560 camera_cli_s *pc = (camera_cli_s *)camera;
3561 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_IMAGE_QUALITY;
3563 if (pc->cb_info == NULL) {
3564 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3565 return CAMERA_ERROR_INVALID_PARAMETER;
3567 sock_fd = pc->cb_info->fd;
3568 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3569 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, quality);
3570 LOGD("ret : 0x%x", ret);
3574 int camera_attr_get_preview_fps(camera_h camera, camera_attr_fps_e *fps)
3576 if (camera == NULL || fps == NULL) {
3577 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3578 return CAMERA_ERROR_INVALID_PARAMETER;
3580 int ret = CAMERA_ERROR_NONE;
3582 camera_cli_s *pc = (camera_cli_s *)camera;
3583 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_PREVIEW_FPS;
3586 if (pc->cb_info == NULL) {
3587 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3588 return CAMERA_ERROR_INVALID_PARAMETER;
3590 sock_fd = pc->cb_info->fd;
3592 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3593 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3595 if (ret == CAMERA_ERROR_NONE) {
3596 muse_camera_msg_get(get_fps, pc->cb_info->recv_msg);
3597 *fps = (camera_attr_fps_e)get_fps;
3599 LOGD("ret : 0x%x", ret);
3604 int camera_attr_get_image_quality(camera_h camera, int *quality)
3606 if (camera == NULL || quality == NULL) {
3607 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3608 return CAMERA_ERROR_INVALID_PARAMETER;
3610 int ret = CAMERA_ERROR_NONE;
3612 camera_cli_s *pc = (camera_cli_s *)camera;
3613 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_IMAGE_QUALITY;
3615 if (pc->cb_info == NULL) {
3616 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3617 return CAMERA_ERROR_INVALID_PARAMETER;
3619 sock_fd = pc->cb_info->fd;
3621 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3622 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3624 if (ret == CAMERA_ERROR_NONE) {
3625 muse_camera_msg_get(get_quality, pc->cb_info->recv_msg);
3626 *quality = get_quality;
3628 LOGD("ret : 0x%x", ret);
3633 int camera_attr_set_zoom(camera_h camera, int zoom)
3635 if (camera == NULL) {
3636 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3637 return CAMERA_ERROR_INVALID_PARAMETER;
3639 int ret = CAMERA_ERROR_NONE;
3641 camera_cli_s *pc = (camera_cli_s *)camera;
3642 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_ZOOM;
3644 if (pc->cb_info == NULL) {
3645 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3646 return CAMERA_ERROR_INVALID_PARAMETER;
3648 sock_fd = pc->cb_info->fd;
3650 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3651 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, zoom);
3652 LOGD("ret : 0x%x", ret);
3656 int camera_attr_set_af_mode(camera_h camera, camera_attr_af_mode_e mode)
3658 if (camera == NULL) {
3659 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3660 return CAMERA_ERROR_INVALID_PARAMETER;
3662 int ret = CAMERA_ERROR_NONE;
3664 camera_cli_s *pc = (camera_cli_s *)camera;
3665 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_AF_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 int set_mode = (int)mode;
3673 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3674 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3675 LOGD("ret : 0x%x", ret);
3679 int camera_attr_set_af_area(camera_h camera, int x, int y)
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;
3686 camera_cli_s *pc = (camera_cli_s *)camera;
3687 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_AF_AREA;
3688 int sock_fd = pc->cb_info->fd;
3689 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3690 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, x, INT, y);
3691 LOGD("ret : 0x%x", ret);
3696 int camera_attr_clear_af_area(camera_h camera)
3698 if (camera == NULL) {
3699 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3700 return CAMERA_ERROR_INVALID_PARAMETER;
3702 int ret = CAMERA_ERROR_NONE;
3704 camera_cli_s *pc = (camera_cli_s *)camera;
3705 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_CLEAR_AF_AREA;
3707 if (pc->cb_info == NULL) {
3708 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3709 return CAMERA_ERROR_INVALID_PARAMETER;
3711 sock_fd = pc->cb_info->fd;
3712 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3713 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
3714 LOGD("ret : 0x%x", ret);
3719 int camera_attr_set_exposure_mode(camera_h camera, camera_attr_exposure_mode_e mode)
3721 if (camera == NULL) {
3722 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3723 return CAMERA_ERROR_INVALID_PARAMETER;
3726 if (mode < CAMERA_ATTR_EXPOSURE_MODE_OFF || mode > CAMERA_ATTR_EXPOSURE_MODE_CUSTOM) {
3727 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3728 return CAMERA_ERROR_INVALID_PARAMETER;
3731 int ret = CAMERA_ERROR_NONE;
3732 camera_cli_s *pc = (camera_cli_s *)camera;
3733 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EXPOSURE_MODE;
3734 int set_mode = (int)mode;
3736 if (pc->cb_info == NULL) {
3737 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3738 return CAMERA_ERROR_INVALID_PARAMETER;
3740 sock_fd = pc->cb_info->fd;
3741 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3742 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3743 LOGD("ret : 0x%x", ret);
3748 int camera_attr_set_exposure(camera_h camera, int value)
3750 if (camera == NULL) {
3751 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3752 return CAMERA_ERROR_INVALID_PARAMETER;
3754 int ret = CAMERA_ERROR_NONE;
3756 camera_cli_s *pc = (camera_cli_s *)camera;
3757 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EXPOSURE;
3759 if (pc->cb_info == NULL) {
3760 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3761 return CAMERA_ERROR_INVALID_PARAMETER;
3763 sock_fd = pc->cb_info->fd;
3765 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3766 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, value);
3767 LOGD("ret : 0x%x", ret);
3772 int camera_attr_set_iso(camera_h camera, camera_attr_iso_e iso)
3774 if (camera == NULL) {
3775 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3776 return CAMERA_ERROR_INVALID_PARAMETER;
3778 int ret = CAMERA_ERROR_NONE;
3780 camera_cli_s *pc = (camera_cli_s *)camera;
3781 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_ISO;
3783 if (pc->cb_info == NULL) {
3784 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3785 return CAMERA_ERROR_INVALID_PARAMETER;
3787 sock_fd = pc->cb_info->fd;
3788 int set_iso = (int)iso;
3789 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3790 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_iso);
3791 LOGD("ret : 0x%x", ret);
3796 int camera_attr_set_brightness(camera_h camera, int level)
3798 if (camera == NULL) {
3799 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3800 return CAMERA_ERROR_INVALID_PARAMETER;
3802 int ret = CAMERA_ERROR_NONE;
3804 camera_cli_s *pc = (camera_cli_s *)camera;
3805 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_BRIGHTNESS;
3807 if (pc->cb_info == NULL) {
3808 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3809 return CAMERA_ERROR_INVALID_PARAMETER;
3811 sock_fd = pc->cb_info->fd;
3813 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3814 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, level);
3815 LOGD("ret : 0x%x", ret);
3820 int camera_attr_set_contrast(camera_h camera, int level)
3822 if (camera == NULL) {
3823 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3824 return CAMERA_ERROR_INVALID_PARAMETER;
3826 int ret = CAMERA_ERROR_NONE;
3828 camera_cli_s *pc = (camera_cli_s *)camera;
3829 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_CONTRAST;
3831 if (pc->cb_info == NULL) {
3832 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3833 return CAMERA_ERROR_INVALID_PARAMETER;
3835 sock_fd = pc->cb_info->fd;
3837 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3838 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, level);
3839 LOGD("ret : 0x%x", ret);
3844 int camera_attr_set_whitebalance(camera_h camera, camera_attr_whitebalance_e wb)
3846 if (camera == NULL) {
3847 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3848 return CAMERA_ERROR_INVALID_PARAMETER;
3851 if (wb < CAMERA_ATTR_WHITE_BALANCE_NONE || wb > CAMERA_ATTR_WHITE_BALANCE_CUSTOM) {
3852 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_NOT_SUPPORTED);
3853 return CAMERA_ERROR_NOT_SUPPORTED;
3856 int ret = CAMERA_ERROR_NONE;
3858 camera_cli_s *pc = (camera_cli_s *)camera;
3859 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_WHITEBALANCE;
3861 if (pc->cb_info == NULL) {
3862 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3863 return CAMERA_ERROR_INVALID_PARAMETER;
3865 sock_fd = pc->cb_info->fd;
3866 int set_whitebalance = (int)wb;
3867 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3868 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_whitebalance);
3869 LOGD("ret : 0x%x", ret);
3874 int camera_attr_set_effect(camera_h camera, camera_attr_effect_mode_e effect)
3876 if (camera == NULL) {
3877 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3878 return CAMERA_ERROR_INVALID_PARAMETER;
3880 int ret = CAMERA_ERROR_NONE;
3882 camera_cli_s *pc = (camera_cli_s *)camera;
3883 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_EFFECT;
3885 if (pc->cb_info == NULL) {
3886 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3887 return CAMERA_ERROR_INVALID_PARAMETER;
3889 sock_fd = pc->cb_info->fd;
3890 int set_effect = (int)effect;
3891 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3892 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_effect);
3893 LOGD("ret : 0x%x", ret);
3898 int camera_attr_set_scene_mode(camera_h camera, camera_attr_scene_mode_e mode)
3900 if (camera == NULL) {
3901 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3902 return CAMERA_ERROR_INVALID_PARAMETER;
3904 int ret = CAMERA_ERROR_NONE;
3906 camera_cli_s *pc = (camera_cli_s *)camera;
3907 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_SCENE_MODE;
3909 if (pc->cb_info == NULL) {
3910 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3911 return CAMERA_ERROR_INVALID_PARAMETER;
3913 sock_fd = pc->cb_info->fd;
3914 int set_mode = (int)mode;
3915 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3916 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
3917 LOGD("ret : 0x%x", ret);
3922 int camera_attr_enable_tag(camera_h camera, bool enable)
3924 if (camera == NULL) {
3925 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3926 return CAMERA_ERROR_INVALID_PARAMETER;
3928 int ret = CAMERA_ERROR_NONE;
3929 camera_cli_s *pc = (camera_cli_s *)camera;
3930 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_TAG;
3932 if (pc->cb_info == NULL) {
3933 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3934 return CAMERA_ERROR_INVALID_PARAMETER;
3936 sock_fd = pc->cb_info->fd;
3937 int set_enable = (int)enable;
3939 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3940 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
3941 LOGD("ret : 0x%x", ret);
3946 int camera_attr_set_tag_image_description(camera_h camera, const char *description)
3948 if (camera == NULL) {
3949 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3950 return CAMERA_ERROR_INVALID_PARAMETER;
3952 if (description == NULL) {
3953 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3954 return CAMERA_ERROR_INVALID_PARAMETER;
3956 int ret = CAMERA_ERROR_NONE;
3957 camera_cli_s *pc = (camera_cli_s *)camera;
3958 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_TAG_IMAGE_DESCRIPTION;
3960 if (pc->cb_info == NULL) {
3961 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3962 return CAMERA_ERROR_INVALID_PARAMETER;
3964 sock_fd = pc->cb_info->fd;
3965 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3966 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, STRING, description);
3967 LOGD("ret : 0x%x", ret);
3972 int camera_attr_set_tag_orientation(camera_h camera, camera_attr_tag_orientation_e orientation)
3974 if (camera == NULL) {
3975 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3976 return CAMERA_ERROR_INVALID_PARAMETER;
3978 int ret = CAMERA_ERROR_NONE;
3979 camera_cli_s *pc = (camera_cli_s *)camera;
3980 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_TAG_ORIENTATION;
3982 if (pc->cb_info == NULL) {
3983 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
3984 return CAMERA_ERROR_INVALID_PARAMETER;
3986 sock_fd = pc->cb_info->fd;
3987 int set_orientation = (int)orientation;
3989 LOGD("Enter, remote_handle : %x", pc->remote_handle);
3990 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_orientation);
3991 LOGD("ret : 0x%x", ret);
3996 int camera_attr_set_tag_software(camera_h camera, const char *software)
3998 if (camera == NULL) {
3999 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4000 return CAMERA_ERROR_INVALID_PARAMETER;
4002 if (software == 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_TAG_SOFTWARE;
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 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4016 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, STRING, software);
4017 LOGD("ret : 0x%x", ret);
4022 int camera_attr_set_geotag(camera_h camera, double latitude , double longitude, double altitude)
4024 if (camera == NULL) {
4025 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4026 return CAMERA_ERROR_INVALID_PARAMETER;
4028 int ret = CAMERA_ERROR_NONE;
4029 camera_cli_s *pc = (camera_cli_s *)camera;
4030 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_GEOTAG;
4032 if (pc->cb_info == NULL) {
4033 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4034 return CAMERA_ERROR_INVALID_PARAMETER;
4036 sock_fd = pc->cb_info->fd;
4037 double set_geotag[3] = { latitude, longitude, altitude };
4039 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4040 muse_camera_msg_send_array(api, sock_fd, pc->cb_info, ret,
4041 set_geotag, sizeof(set_geotag), sizeof(double));
4042 LOGD("ret : 0x%x", ret);
4047 int camera_attr_remove_geotag(camera_h camera)
4049 if (camera == NULL) {
4050 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4051 return CAMERA_ERROR_INVALID_PARAMETER;
4053 int ret = CAMERA_ERROR_NONE;
4054 camera_cli_s *pc = (camera_cli_s *)camera;
4055 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_REMOVE_GEOTAG;
4057 if (pc->cb_info == NULL) {
4058 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4059 return CAMERA_ERROR_INVALID_PARAMETER;
4061 sock_fd = pc->cb_info->fd;
4062 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4063 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4064 LOGD("ret : 0x%x", ret);
4069 int camera_attr_set_flash_mode(camera_h camera, camera_attr_flash_mode_e mode)
4071 if (camera == NULL) {
4072 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4073 return CAMERA_ERROR_INVALID_PARAMETER;
4075 int ret = CAMERA_ERROR_NONE;
4076 camera_cli_s *pc = (camera_cli_s *)camera;
4077 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_FLASH_MODE;
4079 if (pc->cb_info == NULL) {
4080 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4081 return CAMERA_ERROR_INVALID_PARAMETER;
4083 sock_fd = pc->cb_info->fd;
4084 int set_mode = (int)mode;
4086 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4087 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
4088 LOGD("ret : 0x%x", ret);
4093 int camera_attr_get_zoom(camera_h camera, int *zoom)
4095 if (camera == NULL || zoom == NULL) {
4096 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4097 return CAMERA_ERROR_INVALID_PARAMETER;
4099 int ret = CAMERA_ERROR_NONE;
4101 camera_cli_s *pc = (camera_cli_s *)camera;
4102 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ZOOM;
4105 if (pc->cb_info == NULL) {
4106 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4107 return CAMERA_ERROR_INVALID_PARAMETER;
4109 sock_fd = pc->cb_info->fd;
4111 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4112 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4114 if (ret == CAMERA_ERROR_NONE) {
4115 muse_camera_msg_get(get_zoom, pc->cb_info->recv_msg);
4118 LOGD("ret : 0x%x", ret);
4123 int camera_attr_get_zoom_range(camera_h camera, int *min, int *max)
4125 if (camera == NULL || min == NULL || max == NULL) {
4126 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4127 return CAMERA_ERROR_INVALID_PARAMETER;
4129 int ret = CAMERA_ERROR_NONE;
4130 camera_cli_s *pc = (camera_cli_s *)camera;
4132 if (pc->cb_info == NULL) {
4133 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4134 return CAMERA_ERROR_INVALID_PARAMETER;
4136 sock_fd = pc->cb_info->fd;
4137 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ZOOM_RANGE;
4141 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4142 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4144 if (ret == CAMERA_ERROR_NONE) {
4145 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4146 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4150 LOGD("ret : 0x%x", ret);
4155 int camera_attr_get_af_mode(camera_h camera, camera_attr_af_mode_e *mode)
4157 if (camera == NULL || mode == NULL) {
4158 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4159 return CAMERA_ERROR_INVALID_PARAMETER;
4161 int ret = CAMERA_ERROR_NONE;
4162 camera_cli_s *pc = (camera_cli_s *)camera;
4164 if (pc->cb_info == NULL) {
4165 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4166 return CAMERA_ERROR_INVALID_PARAMETER;
4168 sock_fd = pc->cb_info->fd;
4169 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_AF_MODE;
4172 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4173 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4175 if (ret == CAMERA_ERROR_NONE) {
4176 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4177 *mode = (camera_attr_af_mode_e)get_mode;
4179 LOGD("ret : 0x%x", ret);
4184 int camera_attr_get_exposure_mode(camera_h camera, camera_attr_exposure_mode_e *mode)
4186 if (camera == NULL || mode == NULL) {
4187 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4188 return CAMERA_ERROR_INVALID_PARAMETER;
4190 int ret = CAMERA_ERROR_NONE;
4191 camera_cli_s *pc = (camera_cli_s *)camera;
4193 if (pc->cb_info == NULL) {
4194 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4195 return CAMERA_ERROR_INVALID_PARAMETER;
4197 sock_fd = pc->cb_info->fd;
4198 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXPOSURE_MODE;
4201 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4202 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4204 if (ret == CAMERA_ERROR_NONE) {
4205 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4206 *mode = (camera_attr_exposure_mode_e)get_mode;
4208 LOGD("ret : 0x%x", ret);
4212 int camera_attr_get_exposure(camera_h camera, int *value)
4214 if (camera == NULL || value == NULL) {
4215 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4216 return CAMERA_ERROR_INVALID_PARAMETER;
4218 int ret = CAMERA_ERROR_NONE;
4219 camera_cli_s *pc = (camera_cli_s *)camera;
4221 if (pc->cb_info == NULL) {
4222 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4223 return CAMERA_ERROR_INVALID_PARAMETER;
4225 sock_fd = pc->cb_info->fd;
4226 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXPOSURE;
4229 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4230 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4232 if (ret == CAMERA_ERROR_NONE) {
4233 muse_camera_msg_get(get_value, pc->cb_info->recv_msg);
4236 LOGD("ret : 0x%x", ret);
4241 int camera_attr_get_exposure_range(camera_h camera, int *min, int *max)
4243 if (camera == NULL || min == NULL || max == NULL) {
4244 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4245 return CAMERA_ERROR_INVALID_PARAMETER;
4247 int ret = CAMERA_ERROR_NONE;
4248 camera_cli_s *pc = (camera_cli_s *)camera;
4250 if (pc->cb_info == NULL) {
4251 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4252 return CAMERA_ERROR_INVALID_PARAMETER;
4254 sock_fd = pc->cb_info->fd;
4255 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EXPOSURE_RANGE;
4259 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4260 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4262 if (ret == CAMERA_ERROR_NONE) {
4263 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4264 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4268 LOGD("ret : 0x%x", ret);
4273 int camera_attr_get_iso(camera_h camera, camera_attr_iso_e *iso)
4275 if (camera == NULL || iso == NULL) {
4276 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4277 return CAMERA_ERROR_INVALID_PARAMETER;
4279 int ret = CAMERA_ERROR_NONE;
4280 camera_cli_s *pc = (camera_cli_s *)camera;
4282 if (pc->cb_info == NULL) {
4283 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4284 return CAMERA_ERROR_INVALID_PARAMETER;
4286 sock_fd = pc->cb_info->fd;
4287 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_ISO;
4290 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4291 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4293 if (ret == CAMERA_ERROR_NONE) {
4294 muse_camera_msg_get(get_iso, pc->cb_info->recv_msg);
4295 *iso = (camera_attr_iso_e)get_iso;
4297 LOGD("ret : 0x%x", ret);
4302 int camera_attr_get_brightness(camera_h camera, int *level)
4304 if (camera == NULL || level == NULL) {
4305 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4306 return CAMERA_ERROR_INVALID_PARAMETER;
4308 int ret = CAMERA_ERROR_NONE;
4309 camera_cli_s *pc = (camera_cli_s *)camera;
4311 if (pc->cb_info == NULL) {
4312 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4313 return CAMERA_ERROR_INVALID_PARAMETER;
4315 sock_fd = pc->cb_info->fd;
4316 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_BRIGHTNESS;
4319 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4320 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4322 if (ret == CAMERA_ERROR_NONE) {
4323 muse_camera_msg_get(get_level, pc->cb_info->recv_msg);
4326 LOGD("ret : 0x%x", ret);
4331 int camera_attr_get_brightness_range(camera_h camera, int *min, int *max)
4333 if (camera == NULL || min == NULL || max == NULL) {
4334 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4335 return CAMERA_ERROR_INVALID_PARAMETER;
4337 int ret = CAMERA_ERROR_NONE;
4338 camera_cli_s *pc = (camera_cli_s *)camera;
4340 if (pc->cb_info == NULL) {
4341 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4342 return CAMERA_ERROR_INVALID_PARAMETER;
4344 sock_fd = pc->cb_info->fd;
4345 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_BRIGHTNESS_RANGE;
4349 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4350 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4352 if (ret == CAMERA_ERROR_NONE) {
4353 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4354 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4358 LOGD("ret : 0x%x", ret);
4363 int camera_attr_get_contrast(camera_h camera, int *level)
4365 if (camera == NULL || level == NULL) {
4366 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4367 return CAMERA_ERROR_INVALID_PARAMETER;
4369 int ret = CAMERA_ERROR_NONE;
4370 camera_cli_s *pc = (camera_cli_s *)camera;
4371 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_CONTRAST;
4373 if (pc->cb_info == NULL) {
4374 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4375 return CAMERA_ERROR_INVALID_PARAMETER;
4377 sock_fd = pc->cb_info->fd;
4380 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4381 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4383 if (ret == CAMERA_ERROR_NONE) {
4384 muse_camera_msg_get(get_level, pc->cb_info->recv_msg);
4387 LOGD("ret : 0x%x", ret);
4392 int camera_attr_get_contrast_range(camera_h camera, int *min , int *max)
4394 if (camera == NULL || min == NULL || max == NULL) {
4395 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4396 return CAMERA_ERROR_INVALID_PARAMETER;
4398 int ret = CAMERA_ERROR_NONE;
4399 camera_cli_s *pc = (camera_cli_s *)camera;
4400 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_CONTRAST_RANGE;
4402 if (pc->cb_info == NULL) {
4403 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4404 return CAMERA_ERROR_INVALID_PARAMETER;
4406 sock_fd = pc->cb_info->fd;
4410 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4411 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4413 if (ret == CAMERA_ERROR_NONE) {
4414 muse_camera_msg_get(get_min, pc->cb_info->recv_msg);
4415 muse_camera_msg_get(get_max, pc->cb_info->recv_msg);
4419 LOGD("ret : 0x%x", ret);
4424 int camera_attr_get_whitebalance(camera_h camera, camera_attr_whitebalance_e *wb)
4426 if (camera == NULL || wb == NULL) {
4427 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4428 return CAMERA_ERROR_INVALID_PARAMETER;
4430 int ret = CAMERA_ERROR_NONE;
4431 camera_cli_s *pc = (camera_cli_s *)camera;
4432 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_WHITEBALANCE;
4434 if (pc->cb_info == NULL) {
4435 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4436 return CAMERA_ERROR_INVALID_PARAMETER;
4438 sock_fd = pc->cb_info->fd;
4441 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4442 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4444 if (ret == CAMERA_ERROR_NONE) {
4445 muse_camera_msg_get(get_wb, pc->cb_info->recv_msg);
4446 *wb = (camera_attr_whitebalance_e)get_wb;
4448 LOGD("ret : 0x%x", ret);
4453 int camera_attr_get_effect(camera_h camera, camera_attr_effect_mode_e *effect)
4455 if (camera == NULL || effect == NULL) {
4456 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4457 return CAMERA_ERROR_INVALID_PARAMETER;
4460 int ret = CAMERA_ERROR_NONE;
4461 camera_cli_s *pc = (camera_cli_s *)camera;
4462 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_EFFECT;
4464 if (pc->cb_info == NULL) {
4465 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4466 return CAMERA_ERROR_INVALID_PARAMETER;
4468 sock_fd = pc->cb_info->fd;
4471 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4472 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4474 if (ret == CAMERA_ERROR_NONE) {
4475 muse_camera_msg_get(get_effect, pc->cb_info->recv_msg);
4476 *effect = (camera_attr_effect_mode_e)get_effect;
4478 LOGD("ret : 0x%x", ret);
4483 int camera_attr_get_scene_mode(camera_h camera, camera_attr_scene_mode_e *mode)
4485 if (camera == NULL || mode == NULL) {
4486 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4487 return CAMERA_ERROR_INVALID_PARAMETER;
4490 int ret = CAMERA_ERROR_NONE;
4491 camera_cli_s *pc = (camera_cli_s *)camera;
4492 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_SCENE_MODE;
4494 if (pc->cb_info == NULL) {
4495 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4496 return CAMERA_ERROR_INVALID_PARAMETER;
4498 sock_fd = pc->cb_info->fd;
4501 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4502 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4504 if (ret == CAMERA_ERROR_NONE) {
4505 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4506 *mode = (camera_attr_scene_mode_e)get_mode;
4508 LOGD("ret : 0x%x", ret);
4513 int camera_attr_is_enabled_tag(camera_h camera, bool *enable)
4515 if (camera == NULL || enable == NULL) {
4516 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4517 return CAMERA_ERROR_INVALID_PARAMETER;
4520 int ret = CAMERA_ERROR_NONE;
4521 camera_cli_s *pc = (camera_cli_s *)camera;
4522 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_TAG;
4524 if (pc->cb_info == NULL) {
4525 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4526 return CAMERA_ERROR_INVALID_PARAMETER;
4528 sock_fd = pc->cb_info->fd;
4531 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4532 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4534 if (ret == CAMERA_ERROR_NONE) {
4535 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
4536 *enable = (bool)get_enabled;
4538 LOGD("ret : 0x%x", ret);
4543 int camera_attr_get_tag_image_description(camera_h camera, char **description)
4545 if (camera == NULL || description == NULL) {
4546 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4547 return CAMERA_ERROR_INVALID_PARAMETER;
4550 int ret = CAMERA_ERROR_NONE;
4551 camera_cli_s *pc = (camera_cli_s *)camera;
4552 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_TAG_IMAGE_DESCRIPTION;
4554 if (pc->cb_info == NULL) {
4555 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4556 return CAMERA_ERROR_INVALID_PARAMETER;
4558 sock_fd = pc->cb_info->fd;
4559 char get_description[MUSE_CAMERA_MSG_MAX_LENGTH] = {0,};
4561 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4562 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4564 if (ret == CAMERA_ERROR_NONE) {
4565 muse_camera_msg_get_string(get_description, pc->cb_info->recv_msg);
4566 *description = strdup(get_description);
4568 LOGD("ret : 0x%x", ret);
4573 int camera_attr_get_tag_orientation(camera_h camera, camera_attr_tag_orientation_e *orientation)
4575 if (camera == NULL || orientation == NULL) {
4576 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4577 return CAMERA_ERROR_INVALID_PARAMETER;
4580 int ret = CAMERA_ERROR_NONE;
4581 camera_cli_s *pc = (camera_cli_s *)camera;
4582 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_TAG_ORIENTATION;
4584 if (pc->cb_info == NULL) {
4585 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4586 return CAMERA_ERROR_INVALID_PARAMETER;
4588 sock_fd = pc->cb_info->fd;
4589 int get_orientation;
4591 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4592 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4594 if (ret == CAMERA_ERROR_NONE) {
4595 muse_camera_msg_get(get_orientation, pc->cb_info->recv_msg);
4596 *orientation = (camera_attr_tag_orientation_e)get_orientation;
4597 LOGD("success, orientation : %d", *orientation);
4599 LOGD("ret : 0x%x", ret);
4604 int camera_attr_get_tag_software(camera_h camera, char **software)
4606 if (camera == NULL || software == NULL) {
4607 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4608 return CAMERA_ERROR_INVALID_PARAMETER;
4611 int ret = CAMERA_ERROR_NONE;
4612 camera_cli_s *pc = (camera_cli_s *)camera;
4613 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_TAG_SOFTWARE;
4615 if (pc->cb_info == NULL) {
4616 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4617 return CAMERA_ERROR_INVALID_PARAMETER;
4619 sock_fd = pc->cb_info->fd;
4620 char get_software[MUSE_CAMERA_MSG_MAX_LENGTH] = {0,};
4622 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4623 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4625 if (ret == CAMERA_ERROR_NONE) {
4626 muse_camera_msg_get_string(get_software, pc->cb_info->recv_msg);
4627 *software = strdup(get_software);
4629 LOGD("ret : 0x%x", ret);
4634 int camera_attr_get_geotag(camera_h camera, double *latitude , double *longitude, double *altitude)
4636 if (camera == NULL || latitude == NULL || longitude == NULL || altitude == NULL) {
4637 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4638 return CAMERA_ERROR_INVALID_PARAMETER;
4641 int ret = CAMERA_ERROR_NONE;
4642 camera_cli_s *pc = (camera_cli_s *)camera;
4643 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_GEOTAG;
4644 double get_geotag[3] = {0,};
4646 if (pc->cb_info == NULL) {
4647 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4648 return CAMERA_ERROR_INVALID_PARAMETER;
4650 sock_fd = pc->cb_info->fd;
4652 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4653 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4655 if (ret == CAMERA_ERROR_NONE) {
4656 muse_camera_msg_get_array(get_geotag, pc->cb_info->recv_msg);
4657 *latitude = get_geotag[0];
4658 *longitude = get_geotag[1];
4659 *altitude = get_geotag[2];
4661 LOGE("Returned value is not valid : 0x%x", valid);
4664 LOGD("ret : 0x%x", ret);
4670 int camera_attr_get_flash_mode(camera_h camera, camera_attr_flash_mode_e *mode)
4672 if (camera == NULL || mode == NULL) {
4673 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4674 return CAMERA_ERROR_INVALID_PARAMETER;
4677 int ret = CAMERA_ERROR_NONE;
4678 camera_cli_s *pc = (camera_cli_s *)camera;
4679 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_FLASH_MODE;
4681 if (pc->cb_info == NULL) {
4682 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4683 return CAMERA_ERROR_INVALID_PARAMETER;
4685 sock_fd = pc->cb_info->fd;
4688 LOGD("Enter, remote_handle : %x", pc->remote_handle);
4689 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4691 if (ret == CAMERA_ERROR_NONE) {
4692 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
4693 *mode = (camera_attr_flash_mode_e)get_mode;
4695 LOGD("ret : 0x%x", ret);
4700 int camera_attr_foreach_supported_af_mode(camera_h camera, camera_attr_supported_af_mode_cb foreach_cb, void *user_data)
4702 if (camera == NULL || foreach_cb == NULL) {
4703 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4704 return CAMERA_ERROR_INVALID_PARAMETER;
4706 int ret = CAMERA_ERROR_NONE;
4708 camera_cli_s *pc = (camera_cli_s *)camera;
4709 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_AF_MODE;
4711 LOGD("Enter, handle :%x", pc->remote_handle);
4714 if (pc->cb_info == NULL) {
4715 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4716 return CAMERA_ERROR_INVALID_PARAMETER;
4718 sock_fd = pc->cb_info->fd;
4719 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_AF_MODE] = foreach_cb;
4720 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_AF_MODE] = user_data;
4722 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4723 LOGD("ret : 0x%x", ret);
4728 int camera_attr_foreach_supported_exposure_mode(camera_h camera, camera_attr_supported_exposure_mode_cb foreach_cb , void *user_data)
4730 if (camera == NULL || foreach_cb == NULL) {
4731 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4732 return CAMERA_ERROR_INVALID_PARAMETER;
4734 int ret = CAMERA_ERROR_NONE;
4736 camera_cli_s *pc = (camera_cli_s *)camera;
4737 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EXPOSURE_MODE;
4739 LOGD("Enter, handle :%x", pc->remote_handle);
4742 if (pc->cb_info == NULL) {
4743 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4744 return CAMERA_ERROR_INVALID_PARAMETER;
4746 sock_fd = pc->cb_info->fd;
4747 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EXPOSURE_MODE] = foreach_cb;
4748 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EXPOSURE_MODE] = user_data;
4750 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4751 LOGD("ret : 0x%x", ret);
4756 int camera_attr_foreach_supported_iso(camera_h camera, camera_attr_supported_iso_cb foreach_cb, void *user_data)
4758 if (camera == NULL || foreach_cb == NULL) {
4759 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4760 return CAMERA_ERROR_INVALID_PARAMETER;
4762 int ret = CAMERA_ERROR_NONE;
4764 camera_cli_s *pc = (camera_cli_s *)camera;
4765 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_ISO;
4767 LOGD("Enter, handle :%x", pc->remote_handle);
4770 if (pc->cb_info == NULL) {
4771 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4772 return CAMERA_ERROR_INVALID_PARAMETER;
4774 sock_fd = pc->cb_info->fd;
4775 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_ISO] = foreach_cb;
4776 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_ISO] = user_data;
4778 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4779 LOGD("ret : 0x%x", ret);
4784 int camera_attr_foreach_supported_whitebalance(camera_h camera, camera_attr_supported_whitebalance_cb foreach_cb , void *user_data)
4786 if (camera == NULL || foreach_cb == NULL) {
4787 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4788 return CAMERA_ERROR_INVALID_PARAMETER;
4790 int ret = CAMERA_ERROR_NONE;
4792 camera_cli_s *pc = (camera_cli_s *)camera;
4793 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_WHITEBALANCE;
4795 LOGD("Enter, handle :%x", pc->remote_handle);
4798 if (pc->cb_info == NULL) {
4799 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4800 return CAMERA_ERROR_INVALID_PARAMETER;
4802 sock_fd = pc->cb_info->fd;
4803 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_WHITEBALANCE] = foreach_cb;
4804 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_WHITEBALANCE] = user_data;
4806 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4807 LOGD("ret : 0x%x", ret);
4812 int camera_attr_foreach_supported_effect(camera_h camera, camera_attr_supported_effect_cb foreach_cb , void *user_data)
4814 if (camera == NULL || foreach_cb == NULL) {
4815 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4816 return CAMERA_ERROR_INVALID_PARAMETER;
4818 int ret = CAMERA_ERROR_NONE;
4820 camera_cli_s *pc = (camera_cli_s *)camera;
4821 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_EFFECT;
4823 LOGD("Enter, handle :%x", pc->remote_handle);
4826 if (pc->cb_info == NULL) {
4827 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4828 return CAMERA_ERROR_INVALID_PARAMETER;
4830 sock_fd = pc->cb_info->fd;
4831 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EFFECT] = foreach_cb;
4832 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_EFFECT] = user_data;
4834 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4835 LOGD("ret : 0x%x", ret);
4840 int camera_attr_foreach_supported_scene_mode(camera_h camera, camera_attr_supported_scene_mode_cb foreach_cb , void *user_data)
4842 if (camera == NULL || foreach_cb == NULL) {
4843 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4844 return CAMERA_ERROR_INVALID_PARAMETER;
4846 int ret = CAMERA_ERROR_NONE;
4848 camera_cli_s *pc = (camera_cli_s *)camera;
4849 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_SCENE_MODE;
4851 LOGD("Enter, handle :%x", pc->remote_handle);
4854 if (pc->cb_info == NULL) {
4855 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4856 return CAMERA_ERROR_INVALID_PARAMETER;
4858 sock_fd = pc->cb_info->fd;
4859 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_SCENE_MODE] = foreach_cb;
4860 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_SCENE_MODE] = user_data;
4862 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4863 LOGD("ret : 0x%x", ret);
4868 int camera_attr_foreach_supported_flash_mode(camera_h camera, camera_attr_supported_flash_mode_cb foreach_cb , void *user_data)
4870 if (camera == NULL || foreach_cb == NULL) {
4871 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4872 return CAMERA_ERROR_INVALID_PARAMETER;
4874 int ret = CAMERA_ERROR_NONE;
4876 camera_cli_s *pc = (camera_cli_s *)camera;
4877 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FLASH_MODE;
4879 LOGD("Enter, handle :%x", pc->remote_handle);
4882 if (pc->cb_info == NULL) {
4883 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4884 return CAMERA_ERROR_INVALID_PARAMETER;
4886 sock_fd = pc->cb_info->fd;
4887 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FLASH_MODE] = foreach_cb;
4888 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FLASH_MODE] = user_data;
4890 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4891 LOGD("ret : 0x%x", ret);
4896 int camera_attr_foreach_supported_fps(camera_h camera, camera_attr_supported_fps_cb foreach_cb , void *user_data)
4898 if (camera == NULL || foreach_cb == NULL) {
4899 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4900 return CAMERA_ERROR_INVALID_PARAMETER;
4902 int ret = CAMERA_ERROR_NONE;
4904 camera_cli_s *pc = (camera_cli_s *)camera;
4905 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FPS;
4907 if (pc->cb_info == NULL) {
4908 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4909 return CAMERA_ERROR_INVALID_PARAMETER;
4911 sock_fd = pc->cb_info->fd;
4912 LOGD("Enter, handle :%x", pc->remote_handle);
4913 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS] = foreach_cb;
4914 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS] = user_data;
4916 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4917 LOGD("Enter, handle :%x", pc->remote_handle);
4921 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)
4923 if (camera == NULL || foreach_cb == NULL) {
4924 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4925 return CAMERA_ERROR_INVALID_PARAMETER;
4927 int ret = CAMERA_ERROR_NONE;
4929 camera_cli_s *pc = (camera_cli_s *)camera;
4930 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_FPS_BY_RESOLUTION;
4932 if (pc->cb_info == NULL) {
4933 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4934 return CAMERA_ERROR_INVALID_PARAMETER;
4936 sock_fd = pc->cb_info->fd;
4937 LOGD("Enter, handle :%x", pc->remote_handle);
4938 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS_BY_RESOLUTION] = foreach_cb;
4939 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_FPS_BY_RESOLUTION] = user_data;
4941 muse_camera_msg_send2(api, sock_fd, pc->cb_info, ret, INT, width, INT, height);
4942 LOGD("ret : 0x%x", ret);
4946 int camera_attr_foreach_supported_stream_flip(camera_h camera, camera_attr_supported_stream_flip_cb foreach_cb, void *user_data)
4948 if (camera == NULL || foreach_cb == NULL) {
4949 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4950 return CAMERA_ERROR_INVALID_PARAMETER;
4952 int ret = CAMERA_ERROR_NONE;
4954 camera_cli_s *pc = (camera_cli_s *)camera;
4955 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_FLIP;
4957 if (pc->cb_info == NULL) {
4958 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4959 return CAMERA_ERROR_INVALID_PARAMETER;
4961 sock_fd = pc->cb_info->fd;
4962 LOGD("Enter, handle :%x", pc->remote_handle);
4963 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_FLIP] = foreach_cb;
4964 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_FLIP] = user_data;
4966 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4967 LOGD("ret : 0x%x", ret);
4972 int camera_attr_foreach_supported_stream_rotation(camera_h camera, camera_attr_supported_stream_rotation_cb foreach_cb, void *user_data)
4974 if (camera == NULL || foreach_cb == NULL) {
4975 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4976 return CAMERA_ERROR_INVALID_PARAMETER;
4978 int ret = CAMERA_ERROR_NONE;
4980 camera_cli_s *pc = (camera_cli_s *)camera;
4981 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_FOREACH_SUPPORTED_STREAM_ROTATION;
4983 if (pc->cb_info == NULL) {
4984 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
4985 return CAMERA_ERROR_INVALID_PARAMETER;
4987 sock_fd = pc->cb_info->fd;
4988 LOGD("Enter, handle :%x", pc->remote_handle);
4989 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_ROTATION] = foreach_cb;
4990 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_FOREACH_SUPPORTED_STREAM_ROTATION] = user_data;
4992 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
4993 LOGD("ret : 0x%x", ret);
4998 int camera_attr_set_stream_rotation(camera_h camera , camera_rotation_e rotation)
5000 if (camera == NULL) {
5001 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5002 return CAMERA_ERROR_INVALID_PARAMETER;
5005 int ret = CAMERA_ERROR_NONE;
5006 camera_cli_s *pc = (camera_cli_s *)camera;
5007 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_STREAM_ROTATION;
5009 if (pc->cb_info == NULL) {
5010 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5011 return CAMERA_ERROR_INVALID_PARAMETER;
5013 sock_fd = pc->cb_info->fd;
5014 int set_rotation = (int)rotation;
5016 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5017 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_rotation);
5018 LOGD("ret : 0x%x", ret);
5023 int camera_attr_get_stream_rotation(camera_h camera , camera_rotation_e *rotation)
5025 if (camera == NULL || rotation == NULL) {
5026 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5027 return CAMERA_ERROR_INVALID_PARAMETER;
5030 int ret = CAMERA_ERROR_NONE;
5031 camera_cli_s *pc = (camera_cli_s *)camera;
5032 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_STREAM_ROTATION;
5034 if (pc->cb_info == NULL) {
5035 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5036 return CAMERA_ERROR_INVALID_PARAMETER;
5038 sock_fd = pc->cb_info->fd;
5041 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5042 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5044 if (ret == CAMERA_ERROR_NONE) {
5045 muse_camera_msg_get(get_rotation, pc->cb_info->recv_msg);
5046 *rotation = (camera_rotation_e)get_rotation;
5048 LOGD("ret : 0x%x", ret);
5053 int camera_attr_set_stream_flip(camera_h camera , camera_flip_e flip)
5055 if (camera == NULL) {
5056 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5057 return CAMERA_ERROR_INVALID_PARAMETER;
5060 int ret = CAMERA_ERROR_NONE;
5061 camera_cli_s *pc = (camera_cli_s *)camera;
5062 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_STREAM_FLIP;
5064 if (pc->cb_info == NULL) {
5065 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5066 return CAMERA_ERROR_INVALID_PARAMETER;
5068 sock_fd = pc->cb_info->fd;
5069 int set_flip = (int)flip;
5071 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5072 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_flip);
5073 LOGD("ret : 0x%x", ret);
5078 int camera_attr_get_stream_flip(camera_h camera , camera_flip_e *flip)
5080 if (camera == NULL || flip == NULL) {
5081 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5082 return CAMERA_ERROR_INVALID_PARAMETER;
5085 int ret = CAMERA_ERROR_NONE;
5086 camera_cli_s *pc = (camera_cli_s *)camera;
5087 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_STREAM_FLIP;
5089 if (pc->cb_info == NULL) {
5090 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5091 return CAMERA_ERROR_INVALID_PARAMETER;
5093 sock_fd = pc->cb_info->fd;
5096 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5097 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5099 if (ret == CAMERA_ERROR_NONE) {
5100 muse_camera_msg_get(get_flip, pc->cb_info->recv_msg);
5101 *flip = (camera_flip_e)get_flip;
5103 LOGD("ret : 0x%x", ret);
5107 int camera_attr_set_hdr_mode(camera_h camera, camera_attr_hdr_mode_e mode)
5109 if (camera == NULL) {
5110 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5111 return CAMERA_ERROR_INVALID_PARAMETER;
5114 int ret = CAMERA_ERROR_NONE;
5115 camera_cli_s *pc = (camera_cli_s *)camera;
5116 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_HDR_MODE;
5118 if (pc->cb_info == NULL) {
5119 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5120 return CAMERA_ERROR_INVALID_PARAMETER;
5122 sock_fd = pc->cb_info->fd;
5123 int set_mode = (int)mode;
5125 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5126 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_mode);
5127 LOGD("ret : 0x%x", ret);
5132 int camera_attr_get_hdr_mode(camera_h camera, camera_attr_hdr_mode_e *mode)
5134 if (camera == NULL) {
5135 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5136 return CAMERA_ERROR_INVALID_PARAMETER;
5139 LOGE("CAMERA_ERROR_NOT_SUPPORTED(0x%08x) - mode", CAMERA_ERROR_NOT_SUPPORTED);
5140 return CAMERA_ERROR_NOT_SUPPORTED;
5142 int ret = CAMERA_ERROR_NONE;
5143 camera_cli_s *pc = (camera_cli_s *)camera;
5144 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_GET_HDR_MODE;
5146 if (pc->cb_info == NULL) {
5147 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5148 return CAMERA_ERROR_INVALID_PARAMETER;
5150 sock_fd = pc->cb_info->fd;
5153 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5154 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5156 if (ret == CAMERA_ERROR_NONE) {
5157 muse_camera_msg_get(get_mode, pc->cb_info->recv_msg);
5158 *mode = (camera_attr_hdr_mode_e)get_mode;
5160 LOGD("ret : 0x%x", ret);
5165 bool camera_attr_is_supported_hdr_capture(camera_h camera)
5167 if (camera == NULL) {
5168 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5172 int ret = CAMERA_ERROR_NONE;
5173 camera_cli_s *pc = (camera_cli_s *)camera;
5174 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_HDR_CAPTURE;
5176 if (pc->cb_info == NULL) {
5177 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5178 return CAMERA_ERROR_INVALID_PARAMETER;
5180 sock_fd = pc->cb_info->fd;
5181 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5182 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5183 LOGD("ret : 0x%x", ret);
5188 int camera_attr_set_hdr_capture_progress_cb(camera_h camera, camera_attr_hdr_progress_cb callback, void* user_data)
5190 if (camera == NULL) {
5191 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5192 return CAMERA_ERROR_INVALID_PARAMETER;
5194 if (callback == NULL) {
5195 LOGE("CAMERA_ERROR_NOT_SUPPORTED(0x%08x) - callback", CAMERA_ERROR_NOT_SUPPORTED);
5196 return CAMERA_ERROR_NOT_SUPPORTED;
5198 int ret = CAMERA_ERROR_NONE;
5200 camera_cli_s *pc = (camera_cli_s *)camera;
5201 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_SET_HDR_CAPTURE_PROGRESS_CB;
5203 if (pc->cb_info == NULL) {
5204 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5205 return CAMERA_ERROR_INVALID_PARAMETER;
5207 sock_fd = pc->cb_info->fd;
5208 LOGD("Enter, handle :%x", pc->remote_handle);
5210 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = callback;
5211 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = user_data;
5213 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5214 LOGD("ret : 0x%x", ret);
5219 int camera_attr_unset_hdr_capture_progress_cb(camera_h camera)
5221 if (camera == NULL) {
5222 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5223 return CAMERA_ERROR_INVALID_PARAMETER;
5226 int ret = CAMERA_ERROR_NONE;
5228 camera_cli_s *pc = (camera_cli_s *)camera;
5229 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_UNSET_HDR_CAPTURE_PROGRESS_CB;
5231 if (pc->cb_info == NULL) {
5232 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5233 return CAMERA_ERROR_INVALID_PARAMETER;
5235 sock_fd = pc->cb_info->fd;
5236 LOGD("Enter, handle :%x", pc->remote_handle);
5238 pc->cb_info->user_cb[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = (void *)NULL;
5239 pc->cb_info->user_data[MUSE_CAMERA_EVENT_TYPE_HDR_PROGRESS] = (void *)NULL;
5241 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5242 LOGD("ret : 0x%x", ret);
5247 int camera_attr_enable_anti_shake(camera_h camera, bool enable)
5249 if (camera == NULL) {
5250 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5251 return CAMERA_ERROR_INVALID_PARAMETER;
5254 int ret = CAMERA_ERROR_NONE;
5255 camera_cli_s *pc = (camera_cli_s *)camera;
5256 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_ANTI_SHAKE;
5258 if (pc->cb_info == NULL) {
5259 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5260 return CAMERA_ERROR_INVALID_PARAMETER;
5262 sock_fd = pc->cb_info->fd;
5263 int set_enable = (int)enable;
5265 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5266 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
5267 LOGD("ret : 0x%x", ret);
5272 int camera_attr_is_enabled_anti_shake(camera_h camera , bool *enabled)
5274 if (camera == NULL) {
5275 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5276 return CAMERA_ERROR_INVALID_PARAMETER;
5278 if (enabled == NULL) {
5279 LOGE("INVALID_PARAMETER(0x%08x) - enabled", CAMERA_ERROR_INVALID_PARAMETER);
5280 return CAMERA_ERROR_NOT_SUPPORTED;
5282 int ret = CAMERA_ERROR_NONE;
5283 camera_cli_s *pc = (camera_cli_s *)camera;
5284 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_ANTI_SHAKE;
5286 if (pc->cb_info == NULL) {
5287 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5288 return CAMERA_ERROR_INVALID_PARAMETER;
5290 sock_fd = pc->cb_info->fd;
5293 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5294 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5296 if (ret == CAMERA_ERROR_NONE) {
5297 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
5298 *enabled = (bool)get_enabled;
5300 LOGD("ret : 0x%x", ret);
5305 bool camera_attr_is_supported_anti_shake(camera_h camera)
5308 if (camera == NULL) {
5309 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5313 int ret = CAMERA_ERROR_NONE;
5314 camera_cli_s *pc = (camera_cli_s *)camera;
5315 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_ANTI_SHAKE;
5317 if (pc->cb_info == NULL) {
5318 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5319 return CAMERA_ERROR_INVALID_PARAMETER;
5321 sock_fd = pc->cb_info->fd;
5322 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5323 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5324 LOGD("ret : 0x%x", ret);
5329 int camera_attr_enable_video_stabilization(camera_h camera, bool enable)
5331 if (camera == NULL) {
5332 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5333 return CAMERA_ERROR_INVALID_PARAMETER;
5336 int ret = CAMERA_ERROR_NONE;
5337 camera_cli_s *pc = (camera_cli_s *)camera;
5338 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_VIDEO_STABILIZATION;
5340 if (pc->cb_info == NULL) {
5341 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5342 return CAMERA_ERROR_INVALID_PARAMETER;
5344 sock_fd = pc->cb_info->fd;
5345 int set_enable = (int)enable;
5347 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5348 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
5349 LOGD("ret : 0x%x", ret);
5354 int camera_attr_is_enabled_video_stabilization(camera_h camera, bool *enabled)
5356 if (camera == NULL) {
5357 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5358 return CAMERA_ERROR_INVALID_PARAMETER;
5360 if (enabled == NULL) {
5361 LOGE("INVALID_PARAMETER(0x%08x) - enabled", CAMERA_ERROR_INVALID_PARAMETER);
5362 return CAMERA_ERROR_NOT_SUPPORTED;
5364 int ret = CAMERA_ERROR_NONE;
5365 camera_cli_s *pc = (camera_cli_s *)camera;
5366 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_VIDEO_STABILIZATION;
5368 if (pc->cb_info == NULL) {
5369 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5370 return CAMERA_ERROR_INVALID_PARAMETER;
5372 sock_fd = pc->cb_info->fd;
5375 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5376 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5378 if (ret == CAMERA_ERROR_NONE) {
5379 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
5380 *enabled = (bool)get_enabled;
5382 LOGD("ret : 0x%x", ret);
5387 bool camera_attr_is_supported_video_stabilization(camera_h camera)
5389 if (camera == NULL) {
5390 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5394 int ret = CAMERA_ERROR_NONE;
5395 camera_cli_s *pc = (camera_cli_s *)camera;
5396 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_VIDEO_STABILIZATION;
5398 if (pc->cb_info == NULL) {
5399 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5400 return CAMERA_ERROR_INVALID_PARAMETER;
5402 sock_fd = pc->cb_info->fd;
5403 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5404 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5405 LOGD("ret : 0x%x", ret);
5410 int camera_attr_enable_auto_contrast(camera_h camera, bool enable)
5412 if (camera == NULL) {
5413 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5414 return CAMERA_ERROR_INVALID_PARAMETER;
5417 int ret = CAMERA_ERROR_NONE;
5418 camera_cli_s *pc = (camera_cli_s *)camera;
5419 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_ENABLE_AUTO_CONTRAST;
5421 if (pc->cb_info == NULL) {
5422 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5423 return CAMERA_ERROR_INVALID_PARAMETER;
5425 sock_fd = pc->cb_info->fd;
5426 int set_enable = (int)enable;
5428 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5429 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_enable);
5430 LOGD("ret : 0x%x", ret);
5435 int camera_attr_is_enabled_auto_contrast(camera_h camera, bool *enabled)
5437 if (camera == NULL) {
5438 LOGE("INVALID_PARAMETER(0x%08x) - handle", CAMERA_ERROR_INVALID_PARAMETER);
5439 return CAMERA_ERROR_INVALID_PARAMETER;
5441 if (enabled == NULL) {
5442 LOGE("INVALID_PARAMETER(0x%08x) - enabled", CAMERA_ERROR_INVALID_PARAMETER);
5443 return CAMERA_ERROR_INVALID_PARAMETER;
5445 int ret = CAMERA_ERROR_NONE;
5446 camera_cli_s *pc = (camera_cli_s *)camera;
5447 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_ENABLED_AUTO_CONTRAST;
5449 if (pc->cb_info == NULL) {
5450 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5451 return CAMERA_ERROR_INVALID_PARAMETER;
5453 sock_fd = pc->cb_info->fd;
5456 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5457 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5459 if (ret == CAMERA_ERROR_NONE) {
5460 muse_camera_msg_get(get_enabled, pc->cb_info->recv_msg);
5461 *enabled = (bool)get_enabled;
5463 LOGD("ret : 0x%x", ret);
5468 bool camera_attr_is_supported_auto_contrast(camera_h camera)
5470 if (camera == NULL) {
5471 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5475 int ret = CAMERA_ERROR_NONE;
5476 camera_cli_s *pc = (camera_cli_s *)camera;
5477 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_IS_SUPPORTED_AUTO_CONTRAST;
5479 if (pc->cb_info == NULL) {
5480 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5481 return CAMERA_ERROR_INVALID_PARAMETER;
5483 sock_fd = pc->cb_info->fd;
5484 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5485 muse_camera_msg_send(api, sock_fd, pc->cb_info, ret);
5486 LOGD("ret : 0x%x", ret);
5491 int camera_attr_disable_shutter_sound(camera_h camera, bool disable)
5493 if (camera == NULL) {
5494 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5495 return CAMERA_ERROR_INVALID_PARAMETER;
5498 int ret = CAMERA_ERROR_NONE;
5499 camera_cli_s *pc = (camera_cli_s *)camera;
5500 muse_camera_api_e api = MUSE_CAMERA_API_ATTR_DISABLE_SHUTTER_SOUND;
5502 if (pc->cb_info == NULL) {
5503 LOGE("INVALID_PARAMETER(0x%08x)", CAMERA_ERROR_INVALID_PARAMETER);
5504 return CAMERA_ERROR_INVALID_PARAMETER;
5506 sock_fd = pc->cb_info->fd;
5507 int set_disable = (int)disable;
5509 LOGD("Enter, remote_handle : %x", pc->remote_handle);
5510 muse_camera_msg_send1(api, sock_fd, pc->cb_info, ret, INT, set_disable);
5511 LOGD("ret : 0x%x", ret);