From 5ad18f456778674969b54743620552debf90bbc7 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Thu, 18 Jul 2024 20:01:36 +0900 Subject: [PATCH] Add new API for device capability - 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 --- include/hal-camera-interface-1.h | 43 ++++++++++++++++++++++++++++++++ include/hal-camera.h | 13 ++++++++++ packaging/hal-api-camera.spec | 2 +- src/hal-api-camera.c | 12 +++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/include/hal-camera-interface-1.h b/include/hal-camera-interface-1.h index 91be795..17555ad 100644 --- a/include/hal-camera-interface-1.h +++ b/include/hal-camera-interface-1.h @@ -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; /** diff --git a/include/hal-camera.h b/include/hal-camera.h index e6cd800..2210190 100644 --- a/include/hal-camera.h +++ b/include/hal-camera.h @@ -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); + /** * @} */ diff --git a/packaging/hal-api-camera.spec b/packaging/hal-api-camera.spec index 136692b..6db07a0 100644 --- a/packaging/hal-api-camera.spec +++ b/packaging/hal-api-camera.spec @@ -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 diff --git a/src/hal-api-camera.c b/src/hal-api-camera.c index 122daed..a9b0899 100644 --- a/src/hal-api-camera.c +++ b/src/hal-api-camera.c @@ -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); +} -- 2.34.1