Support new internal APIs for extra preview stream format 23/259923/1 accepted/tizen/unified/20210621.123130 submit/tizen/20210618.081505
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 16 Jun 2021 12:53:51 +0000 (21:53 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 16 Jun 2021 12:53:51 +0000 (21:53 +0900)
[Version] 0.3.45
[Issue Type] New feature

Change-Id: I6bc37b2a07ad8c3a7dbe08f390da6a85a563ff70
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
legacy/include/legacy_camera.h
legacy/src/legacy_camera.c
muse/include/muse_camera.h
muse/src/muse_camera_dispatcher.c
packaging/mmsvc-camera.spec

index 52dd4ad..2079c43 100644 (file)
@@ -3914,6 +3914,8 @@ void legacy_camera_send_signal(camera_h camera);
 int legacy_camera_get_platform_privilege(camera_h camera, const char **platform_privilege);
 int legacy_camera_get_log_level(void);
 int legacy_camera_enable_extra_preview(camera_h camera, bool enable);
+int legacy_camera_set_extra_preview_stream_format(camera_h camera, int stream_id, camera_pixel_format_e pixel_format, int width, int height, int fps);
+int legacy_camera_get_extra_preview_stream_format(camera_h camera, int stream_id, camera_pixel_format_e *pixel_format, int *width, int *height, int *fps);
 
 
 #define CAM_LOG_CRITICAL(format, args...) \
index ea13b5e..5194b07 100644 (file)
@@ -4246,6 +4246,39 @@ int legacy_camera_enable_extra_preview(camera_h camera, bool enable)
 }
 
 
+int legacy_camera_set_extra_preview_stream_format(camera_h camera, int stream_id, camera_pixel_format_e pixel_format, int width, int height, int fps)
+{
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       camera_return_val_if_fail(handle, CAMERA_ERROR_INVALID_PARAMETER);
+
+       CAM_LOG_INFO("set format[%d], res[%dx%d], fps[%d]", pixel_format, width, height, fps);
+
+       ret = mm_camcorder_set_extra_preview_stream_format(handle->mm_handle,
+               stream_id, pixel_format, width, height, fps);
+
+       return __convert_camera_error_code(__func__, ret);
+}
+
+
+int legacy_camera_get_extra_preview_stream_format(camera_h camera, int stream_id, camera_pixel_format_e *pixel_format, int *width, int *height, int *fps)
+{
+       int ret = MM_ERROR_NONE;
+       camera_s *handle = (camera_s *)camera;
+
+       camera_return_val_if_fail(handle, CAMERA_ERROR_INVALID_PARAMETER);
+       camera_return_val_if_fail(pixel_format && width && height && fps, CAMERA_ERROR_INVALID_PARAMETER);
+
+       ret = mm_camcorder_get_extra_preview_stream_format(handle->mm_handle,
+               stream_id, pixel_format, width, height, fps);
+
+       CAM_LOG_INFO("get format[%d], res[%dx%d], fps[%d]", *pixel_format, *width, *height, *fps);
+
+       return __convert_camera_error_code(__func__, ret);
+}
+
+
 int legacy_camera_attr_set_focus_level(camera_h camera, int level)
 {
        int ret = MM_ERROR_NONE;
index 988c796..dcf0fdf 100644 (file)
@@ -200,6 +200,8 @@ typedef enum {
        MUSE_CAMERA_API_ATTR_SET_FOCUS_LEVEL,
        MUSE_CAMERA_API_ATTR_GET_FOCUS_LEVEL,
        MUSE_CAMERA_API_ATTR_GET_FOCUS_LEVEL_RANGE,
+       MUSE_CAMERA_API_SET_EXTRA_PREVIEW_STREAM_FORMAT,    /* 165 */
+       MUSE_CAMERA_API_GET_EXTRA_PREVIEW_STREAM_FORMAT,
        MUSE_CAMERA_API_MAX
 } muse_camera_api_e;
 
index 5704207..7727e0c 100644 (file)
@@ -5350,6 +5350,69 @@ int camera_dispatcher_unset_extra_preview_cb(muse_module_h module)
 }
 
 
+int camera_dispatcher_set_extra_preview_stream_format(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       int stream_id = 0;
+       int stream_format[4] = {0,};
+       muse_camera_handle_s *muse_camera = NULL;
+       muse_camera_api_e api = MUSE_CAMERA_API_SET_EXTRA_PREVIEW_STREAM_FORMAT;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+
+       muse_camera = (muse_camera_handle_s *)muse_server_ipc_get_handle(module);
+
+       muse_camera_msg_get(stream_id, muse_server_module_get_msg(module));
+       muse_camera_msg_get_array(stream_format, muse_server_module_get_msg(module));
+
+       CAM_LOG_INFO("handle[%p], [stream_id:%d][%d,%d,%d,%d]", muse_camera,
+               stream_id, stream_format[0], stream_format[1], stream_format[2], stream_format[3]);
+
+       ret = legacy_camera_set_extra_preview_stream_format(muse_camera->camera_handle,
+               stream_id, (camera_pixel_format_e)stream_format[0], stream_format[1], stream_format[2], stream_format[3]);
+
+       CAM_LOG_INFO("ret[0x%x]", ret);
+
+       muse_camera_msg_return(api, class, ret, module);
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
+
+int camera_dispatcher_get_extra_preview_stream_format(muse_module_h module)
+{
+       int ret = CAMERA_ERROR_NONE;
+       int stream_id = 0;
+       int get_value[4] = {0,};
+       muse_camera_handle_s *muse_camera = NULL;
+       muse_camera_api_e api = MUSE_CAMERA_API_GET_EXTRA_PREVIEW_STREAM_FORMAT;
+       muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
+       char *send_msg = NULL;
+
+       muse_camera = (muse_camera_handle_s *)muse_server_ipc_get_handle(module);
+
+       muse_camera_msg_get(stream_id, muse_server_module_get_msg(module));
+
+       CAM_LOG_INFO("handle[%p], [stream_id:%d]", muse_camera, stream_id);
+
+       ret = legacy_camera_get_extra_preview_stream_format(muse_camera->camera_handle,
+               stream_id, (camera_pixel_format_e *)&get_value[0], &get_value[1], &get_value[2], &get_value[3]);
+       if (ret == CAMERA_ERROR_NONE) {
+               send_msg = muse_core_msg_new(api,
+                       MUSE_TYPE_INT, PARAM_API_CLASS, class,
+                       MUSE_TYPE_INT, PARAM_RET, ret,
+                       MUSE_TYPE_INT, PARAM_GET_TYPE, MUSE_CAMERA_GET_TYPE_ARRAY,
+                       MUSE_TYPE_ARRAY, "get_value", 4, get_value,
+                       0);
+
+               __camera_dispatcher_send_msg(module, send_msg, NULL);
+       } else {
+               muse_camera_msg_return(api, class, ret, module);
+       }
+
+       return MUSE_CAMERA_ERROR_NONE;
+}
+
+
 int camera_dispatcher_attr_set_focus_level(muse_module_h module)
 {
        int ret = CAMERA_ERROR_NONE;
@@ -5373,6 +5436,7 @@ int camera_dispatcher_attr_set_focus_level(muse_module_h module)
        return MUSE_CAMERA_ERROR_NONE;
 }
 
+
 int camera_dispatcher_attr_get_focus_level(muse_module_h module)
 {
        int ret = CAMERA_ERROR_NONE;
@@ -5770,7 +5834,9 @@ int (*dispatcher[MUSE_CAMERA_API_MAX]) (muse_module_h module) = {
        camera_dispatcher_unset_extra_preview_cb, /* MUSE_CAMERA_API_UNSET_EXTRA_PREVIEW_CB, */
        camera_dispatcher_attr_set_focus_level, /* MUSE_CAMERA_API_ATTR_SET_FOCUS_LEVEL */
        camera_dispatcher_attr_get_focus_level, /* MUSE_CAMERA_API_ATTR_GET_FOCUS_LEVEL */
-       camera_dispatcher_attr_get_focus_level_range /* MUSE_CAMERA_API_ATTR_GET_FOCUS_LEVEL_RANGE */
+       camera_dispatcher_attr_get_focus_level_range, /* MUSE_CAMERA_API_ATTR_GET_FOCUS_LEVEL_RANGE */
+       camera_dispatcher_set_extra_preview_stream_format, /* MUSE_CAMERA_API_SET_EXTRA_PREVIEW_STREAM_FORMAT */
+       camera_dispatcher_get_extra_preview_stream_format /* MUSE_CAMERA_API_GET_EXTRA_PREVIEW_STREAM_FORMAT */
 };
 
 
index 2b9f802..be3a7d1 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-camera
 Summary:    A Camera module for muse server
-Version:    0.3.44
+Version:    0.3.45
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0