Add new API for device capability 50/315450/1 accepted/tizen_unified_dev accepted/tizen/unified/20240819.150134 accepted/tizen/unified/dev/20240821.053501 accepted/tizen/unified/x/20240820.013142
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 18 Jul 2024 11:01:36 +0000 (20:01 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 1 Aug 2024 02:18:06 +0000 (11:18 +0900)
- Previously, "camera_device_info_s" is existed,
  but, it can not describe resolution list per each format.
- New structure
 : camera_device_capability_list_s
 : camera_device_capability_s
 : camera_device_capability_format_s
 : camera_device_capability_resolution_s
- It supports format, resolution and fps list now.

[Version] 1.1.0
[Issue Type] New feature

Change-Id: I64efecd6e815abe4ec2e6923b159c4f7333d4994
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
include/hal-camera-interface-1.h
include/hal-camera.h
packaging/hal-api-camera.spec
src/hal-api-camera.c

index 91be7957322d0ee7018548e2886b39bddec44d83..17555ad4101505fddd3ffcff2d348a8fd8760b02 100644 (file)
@@ -558,6 +558,48 @@ typedef struct camera_device_info_list {
        camera_device_info_s device_info[DEVICE_COUNT_MAX];
 } camera_device_info_list_s;
 
+/**
+ * @brief The structure type of the camera device capability resolution.
+ * @since_tizen 9.0
+ */
+typedef struct camera_device_capability_resolution {
+       uint32_t width;
+       uint32_t height;
+       int default_fps_index;
+       camera_fps_list_s fps_list;
+} camera_device_capability_resolution_s;
+
+/**
+ * @brief The structure type of the camera device capability format.
+ * @since_tizen 9.0
+ */
+typedef struct camera_device_capability_format {
+       camera_pixel_format_e pixel_format;
+       uint32_t resolution_count;
+       int default_resolution_index;
+       camera_device_capability_resolution_s *resolution[RESOLUTION_COUNT_MAX];
+} camera_device_capability_format_s;
+
+/**
+ * @brief The structure type of the camera device capability.
+ * @since_tizen 9.0
+ */
+typedef struct camera_device_capability {
+       int device_index;
+       uint32_t format_count;
+       int default_format_index;
+       camera_device_capability_format_s *format[CAMERA_PIXEL_FORMAT_MAX];
+} camera_device_capability_s;
+
+/**
+ * @brief The structure type of the camera device capability list.
+ * @since_tizen 9.0
+ */
+typedef struct camera_device_capability_list {
+       uint32_t device_count;
+       camera_device_capability_s *capability[DEVICE_COUNT_MAX];
+} camera_device_capability_list_s;
+
 /**
  * @brief Enumeration for the camera message type.
  * @since_tizen 6.5
@@ -685,6 +727,7 @@ typedef struct _hal_backend_media_camera_funcs {
        int (*get_extra_preview_bitrate)(void *camera_handle, int stream_id, int *bitrate);
        int (*set_extra_preview_gop_interval)(void *camera_handle, int stream_id, int interval);
        int (*get_extra_preview_gop_interval)(void *camera_handle, int stream_id, int *interval);
+       int (*get_device_capability_list)(camera_device_capability_list_s *device_capability_list);
 } hal_backend_camera_funcs;
 
 /**
index e6cd800352ca1b2a30c444a650a48c2ddc46f367..221019022afabfbb94c5b211aee3d81571f05839 100644 (file)
@@ -645,6 +645,19 @@ int hal_camera_get_command(void *camera_handle, int64_t command, void **value);
  */
 int hal_camera_set_batch_command(void *camera_handle, camera_batch_command_control_s *batch_command, int64_t *error_command);
 
+/**
+ * @brief Gets the device capability list of camera.
+ * @since_tizen 9.0
+ * @param[in]  camera_handle The handle to the camera HAL
+ * @param[out] device_capability_list The list of the camera device capability
+ * @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_NOT_IMPLEMENTED The feature is not implemented
+ */
+int hal_camera_get_device_capability_list(void *camera_handle, camera_device_capability_list_s *device_capability_list);
+
 /**
  * @}
  */
index 136692ba9aa9a56b85a54efb3d5cdf2637d61710..6db07a0d2d306a466273df1b8403bef5e9ce2a18 100644 (file)
@@ -4,7 +4,7 @@
 ### main package #########
 Name:       %{name}
 Summary:    %{name} interface
-Version:    1.0.0
+Version:    1.1.0
 Release:    0
 Group:      Development/Libraries
 License:    Apache-2.0
index 122daedb7f0891910af6131d4188a587f8722ed3..a9b0899c7f68d8a7c2700abe0851709bcf16761b 100644 (file)
@@ -571,3 +571,15 @@ int hal_camera_set_batch_command(void *camera_handle, camera_batch_command_contr
 
        return handle->funcs->set_batch_command(handle->backend, batch_command, error_command);
 }
+
+
+int hal_camera_get_device_capability_list(void *camera_handle, camera_device_capability_list_s *device_capability_list)
+{
+       hal_camera_s *handle = (hal_camera_s *)camera_handle;
+
+       HAL_CAMERA_RETURN_IF_FAILED(handle, CAMERA_ERROR_INVALID_PARAMETER);
+       HAL_CAMERA_RETURN_IF_FAILED(handle->funcs, CAMERA_ERROR_INVALID_PARAMETER);
+       HAL_CAMERA_RETURN_IF_FAILED(handle->funcs->get_device_capability_list, CAMERA_ERROR_NOT_IMPLEMENTED);
+
+       return handle->funcs->get_device_capability_list(device_capability_list);
+}