Support network camera 53/246753/2 accepted/tizen/unified/20201109.123506 submit/tizen/20201106.064606
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 4 Nov 2020 01:58:26 +0000 (10:58 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 4 Nov 2020 03:24:42 +0000 (12:24 +0900)
[Version] 0.3.38
[Issue Type] Update

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

index 4cf9c2a..19b6bbe 100644 (file)
@@ -69,6 +69,23 @@ void legacy_camera_emit_signal(camera_h camera, const char *object_name,
  */
 int legacy_camera_set_gdbus_connection(camera_h camera, void *gdbud_connection);
 
+/**
+ * @brief Creates a new camera handle for controlling a network camera.
+ * @remarks A @a camera must be released using legacy_camera_destroy().
+ * @param[in]  device The network camera to access
+ * @param[out] camera A newly returned handle to the camera
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
+ * @retval #CAMERA_ERROR_NOT_SUPPORTED The feature is not supported
+ * @post If it succeeds, the camera state will be #CAMERA_STATE_CREATED.
+ *
+ * @see legacy_camera_destroy()
+ */
+int legacy_camera_create_network(camera_device_e device, camera_h *camera);
+
 
 #ifdef __cplusplus
 }
index d5111f1..71244f1 100644 (file)
@@ -101,6 +101,7 @@ int _camera_set_relay_mm_message_callback(camera_h camera, MMMessageCallback cal
 int __camera_start_continuous_focusing(camera_h camera);
 int _camera_set_use(camera_h camera, bool used);
 int __convert_camera_error_code(const char* func, int code);
+int _camera_create_private(camera_device_e device, bool is_network, camera_h *camera);
 
 #ifdef __cplusplus
 }
index 3182bd1..0fd7e80 100644 (file)
@@ -559,7 +559,8 @@ static gboolean __capture_completed_event_cb(void *data)
        return FALSE;
 }
 
-int legacy_camera_create(camera_device_e device, camera_h *camera)
+
+int _camera_create_private(camera_device_e device, bool is_network, camera_h *camera)
 {
        int ret = MM_ERROR_NONE;
        int preview_format = MM_PIXEL_FORMAT_NV12;
@@ -570,9 +571,10 @@ int legacy_camera_create(camera_device_e device, camera_h *camera)
 
        camera_return_val_if_fail(camera, CAMERA_ERROR_INVALID_PARAMETER);
 
-       CAM_LOG_INFO("device[%d]", device);
+       CAM_LOG_INFO("device[%d], is_network[%d]", device, is_network);
 
        info.videodev_type = device;
+       info.reserved[0] = (int)is_network;
 
        handle = (camera_s *)g_malloc0(sizeof(camera_s));
 
@@ -658,6 +660,12 @@ int legacy_camera_create(camera_device_e device, camera_h *camera)
 }
 
 
+int legacy_camera_create(camera_device_e device, camera_h *camera)
+{
+       return _camera_create_private(device, false, camera);
+}
+
+
 int legacy_camera_change_device(camera_h *camera, camera_device_e device, bool is_evas)
 {
        int ret = MM_ERROR_NONE;
index 2c91e27..3ac13a7 100644 (file)
@@ -81,3 +81,9 @@ int legacy_camera_set_gdbus_connection(camera_h camera, void *gdbus_connection)
 
        return __convert_camera_error_code(__func__, ret);
 }
+
+
+int legacy_camera_create_network(camera_device_e device, camera_h *camera)
+{
+       return _camera_create_private(device, true, camera);
+}
index b459e61..7aea81c 100644 (file)
@@ -1328,6 +1328,7 @@ int camera_dispatcher_create(muse_module_h module)
 {
        int ret = CAMERA_ERROR_NONE;
        int device_type = 0;
+       int is_network = 0;
        int preview_format = CAMERA_PIXEL_FORMAT_INVALID;
        int user_buffer_supported = 0;
        int pid = 0;
@@ -1339,9 +1340,12 @@ int camera_dispatcher_create(muse_module_h module)
        muse_camera_api_class_e class = MUSE_CAMERA_API_CLASS_IMMEDIATE;
 
        muse_camera_msg_get(device_type, muse_server_module_get_msg(module));
+       muse_camera_msg_get(is_network, muse_server_module_get_msg(module));
+
        pid = muse_server_ipc_get_client_pid(module);
 
-       CAM_LOG_INFO("device type[%d], client pid[%d]", device_type, pid);
+       CAM_LOG_INFO("device type[%d], client pid[%d], is_network[%d]",
+               device_type, pid, is_network);
 
        /* init handle */
        muse_camera = (muse_camera_handle_s *)malloc(sizeof(muse_camera_handle_s));
@@ -1367,7 +1371,11 @@ int camera_dispatcher_create(muse_module_h module)
                return MUSE_CAMERA_ERROR_INVALID;
        }
 
-       ret = legacy_camera_create((camera_device_e)device_type, &muse_camera->camera_handle);
+       if (is_network)
+               ret = legacy_camera_create_network((camera_device_e)device_type, &muse_camera->camera_handle);
+       else
+               ret = legacy_camera_create((camera_device_e)device_type, &muse_camera->camera_handle);
+
        if (ret != CAMERA_ERROR_NONE) {
                free(muse_camera);
                muse_camera = NULL;
@@ -5158,7 +5166,7 @@ static tbm_bo __camera_normal_buffer_bo_new(MMCamcorderVideoStreamDataType *stre
 
        buf_pos = (unsigned char *)data_bo_handle.ptr;
 
-       CAM_LOG_INFO("type[%d], data[%p:%d,%p:%d,%p:%d], bo[%p:%d]",
+       CAM_LOG_DEBUG("type[%d], data[%p:%d,%p:%d,%p:%d], bo[%p:%d]",
                stream->data_type,
                data[0], data_size[0], data[1], data_size[1], data[2], data_size[2],
                data_bo, tbm_bo_size(data_bo));
index 3d95ed2..3d2937e 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-camera
 Summary:    A Camera module for muse server
-Version:    0.3.37
+Version:    0.3.38
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0