Add new internal APIs for extra preview stream format
[platform/core/api/camera.git] / src / camera.c
index 258101e..bf560b0 100644 (file)
@@ -172,7 +172,7 @@ static void __camera_release_preview_buffer(camera_h camera)
 }
 
 
-static void __camera_update_api_waiting(camera_cb_info_s *cb_info, int api, int value)
+void _camera_update_api_waiting(camera_cb_info_s *cb_info, int api, int value)
 {
        if (!cb_info ||
                api < 0 || api >= MUSE_CAMERA_API_MAX) {
@@ -645,7 +645,8 @@ static void __camera_release_imported_bo(tbm_bo *bo)
        *bo = NULL;
 }
 
-static int __camera_client_wait_for_cb_return(muse_camera_api_e api, camera_cb_info_s *cb_info, int time_out)
+
+int _camera_client_wait_for_cb_return(muse_camera_api_e api, camera_cb_info_s *cb_info, int time_out)
 {
        int ret = CAMERA_ERROR_NONE;
        gint64 end_time;
@@ -716,7 +717,7 @@ void _camera_msg_send(int api, int *fds, camera_cb_info_s *cb_info,
        CAM_LOG_DEBUG("send msg[%s]", msg);
 
        if (cb_info->is_server_connected) {
-               __camera_update_api_waiting(cb_info, api, 1);
+               _camera_update_api_waiting(cb_info, api, 1);
 
                g_mutex_lock(&cb_info->fd_lock);
                send_ret = muse_core_msg_send_fd(cb_info->fd, fds, msg);
@@ -729,10 +730,10 @@ void _camera_msg_send(int api, int *fds, camera_cb_info_s *cb_info,
                        *ret = CAMERA_ERROR_INVALID_OPERATION;
        } else {
                if (ret)
-                       *ret = __camera_client_wait_for_cb_return(api, cb_info, timeout);
+                       *ret = _camera_client_wait_for_cb_return(api, cb_info, timeout);
        }
 
-       __camera_update_api_waiting(cb_info, api, -1);
+       _camera_update_api_waiting(cb_info, api, -1);
 
        muse_core_msg_free(msg);
 }
@@ -792,7 +793,7 @@ void _camera_msg_send_param1(int api, camera_cb_info_s *cb_info,
        CAM_LOG_DEBUG("send msg[%s]", msg);
 
        if (cb_info->is_server_connected) {
-               __camera_update_api_waiting(cb_info, api, 1);
+               _camera_update_api_waiting(cb_info, api, 1);
 
                g_mutex_lock(&cb_info->fd_lock);
                send_ret = muse_core_msg_send(cb_info->fd, msg);
@@ -806,10 +807,10 @@ void _camera_msg_send_param1(int api, camera_cb_info_s *cb_info,
                        *ret = CAMERA_ERROR_INVALID_OPERATION;
        } else {
                if (ret)
-                       *ret = __camera_client_wait_for_cb_return(api, cb_info, timeout);
+                       *ret = _camera_client_wait_for_cb_return(api, cb_info, timeout);
        }
 
-       __camera_update_api_waiting(cb_info, api, -1);
+       _camera_update_api_waiting(cb_info, api, -1);
 
        muse_core_msg_free(msg);
 }
@@ -847,7 +848,7 @@ void _camera_msg_send_param2_int(int api, camera_cb_info_s *cb_info,
        CAM_LOG_DEBUG("send msg[%s]", msg);
 
        if (cb_info->is_server_connected) {
-               __camera_update_api_waiting(cb_info, api, 1);
+               _camera_update_api_waiting(cb_info, api, 1);
 
                g_mutex_lock(&cb_info->fd_lock);
                send_ret = muse_core_msg_send(cb_info->fd, msg);
@@ -859,10 +860,10 @@ void _camera_msg_send_param2_int(int api, camera_cb_info_s *cb_info,
 
                func_ret = CAMERA_ERROR_INVALID_OPERATION;
        } else {
-               func_ret = __camera_client_wait_for_cb_return(api, cb_info, timeout);
+               func_ret = _camera_client_wait_for_cb_return(api, cb_info, timeout);
        }
 
-       __camera_update_api_waiting(cb_info, api, -1);
+       _camera_update_api_waiting(cb_info, api, -1);
 
        muse_core_msg_free(msg);
 
@@ -1879,7 +1880,8 @@ static void __camera_process_msg(camera_cb_info_s *cb_info, char *msg, int *tfd)
                                        muse_core_msg_deserialize("get_value1", msg, NULL, NULL, MUSE_TYPE_INT, &cb_info->get_int_pair[get_index][1]);
                                        break;
                                case MUSE_CAMERA_GET_TYPE_ARRAY:
-                                       if (api == MUSE_CAMERA_API_GET_DISPLAY_ROI_AREA) {
+                                       switch (api) {
+                                       case MUSE_CAMERA_API_GET_DISPLAY_ROI_AREA:
                                                muse_core_msg_deserialize("get_value",
                                                        msg, NULL, NULL, MUSE_TYPE_ARRAY, cb_info->get_display_roi_area);
                                                CAM_LOG_INFO("get display roi %d,%d,%dx%d",
@@ -1887,11 +1889,25 @@ static void __camera_process_msg(camera_cb_info_s *cb_info, char *msg, int *tfd)
                                                        cb_info->get_display_roi_area[1],
                                                        cb_info->get_display_roi_area[2],
                                                        cb_info->get_display_roi_area[3]);
-                                       } else {
+                                               break;
+                                       case MUSE_CAMERA_API_ATTR_GET_GEOTAG:
                                                muse_core_msg_deserialize("get_value",
                                                        msg, NULL, NULL, MUSE_TYPE_ARRAY, cb_info->get_geotag);
                                                CAM_LOG_INFO("get geotag %lf, %lf, %lf",
                                                        cb_info->get_geotag[0], cb_info->get_geotag[1], cb_info->get_geotag[2]);
+                                               break;
+                                       case MUSE_CAMERA_API_GET_EXTRA_PREVIEW_STREAM_FORMAT:
+                                               muse_core_msg_deserialize("get_value",
+                                                       msg, NULL, NULL, MUSE_TYPE_ARRAY, cb_info->get_extra_preview_stream_format);
+                                               CAM_LOG_INFO("get extra preview stream format %d,%dx%d,%d",
+                                                       cb_info->get_extra_preview_stream_format[0],
+                                                       cb_info->get_extra_preview_stream_format[1],
+                                                       cb_info->get_extra_preview_stream_format[2],
+                                                       cb_info->get_extra_preview_stream_format[3]);
+                                               break;
+                                       default:
+                                               CAM_LOG_WARNING("unknown api[%d]", api);
+                                               break;
                                        }
                                        break;
                                case MUSE_CAMERA_GET_TYPE_STRING:
@@ -2439,7 +2455,7 @@ int _camera_create_private(camera_device_e device, bool is_network, camera_h *ca
 
        CAM_LOG_INFO("cb info : %d", pc->cb_info->fd);
 
-       ret = __camera_client_wait_for_cb_return(api, pc->cb_info, CAMERA_CB_TIMEOUT);
+       ret = _camera_client_wait_for_cb_return(api, pc->cb_info, CAMERA_CB_TIMEOUT);
 
        pc->cb_info->api_waiting[MUSE_CAMERA_API_CREATE] = 0;
 
@@ -4907,7 +4923,7 @@ int camera_attr_set_geotag(camera_h camera, double latitude, double longitude, d
        }
 
        if (pc->cb_info->is_server_connected) {
-               __camera_update_api_waiting(pc->cb_info, api, 1);
+               _camera_update_api_waiting(pc->cb_info, api, 1);
 
                g_mutex_lock(&pc->cb_info->fd_lock);
                send_ret = muse_core_msg_send(pc->cb_info->fd, msg);
@@ -4918,10 +4934,10 @@ int camera_attr_set_geotag(camera_h camera, double latitude, double longitude, d
                CAM_LOG_ERROR("message send failed");
                ret = CAMERA_ERROR_INVALID_OPERATION;
        } else {
-               ret = __camera_client_wait_for_cb_return(api, pc->cb_info, CAMERA_CB_TIMEOUT);
+               ret = _camera_client_wait_for_cb_return(api, pc->cb_info, CAMERA_CB_TIMEOUT);
        }
 
-       __camera_update_api_waiting(pc->cb_info, api, -1);
+       _camera_update_api_waiting(pc->cb_info, api, -1);
 
        muse_core_msg_free(msg);
 
@@ -6545,7 +6561,7 @@ int camera_attr_set_display_roi_area(camera_h camera, int x, int y, int width, i
        }
 
        if (pc->cb_info->is_server_connected) {
-               __camera_update_api_waiting(pc->cb_info, api, 1);
+               _camera_update_api_waiting(pc->cb_info, api, 1);
 
                g_mutex_lock(&pc->cb_info->fd_lock);
                send_ret = muse_core_msg_send(pc->cb_info->fd, msg);
@@ -6556,10 +6572,10 @@ int camera_attr_set_display_roi_area(camera_h camera, int x, int y, int width, i
                CAM_LOG_ERROR("message send failed");
                ret = CAMERA_ERROR_INVALID_OPERATION;
        } else {
-               ret = __camera_client_wait_for_cb_return(api, pc->cb_info, CAMERA_CB_TIMEOUT);
+               ret = _camera_client_wait_for_cb_return(api, pc->cb_info, CAMERA_CB_TIMEOUT);
        }
 
-       __camera_update_api_waiting(pc->cb_info, api, -1);
+       _camera_update_api_waiting(pc->cb_info, api, -1);
 
        muse_core_msg_free(msg);