From: Jeongmo Yang Date: Thu, 10 Apr 2025 05:51:53 +0000 (+0900) Subject: Replace device_info by device_capability when set stream format X-Git-Tag: accepted/tizen/unified/20250610.081755^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Faccepted%2Ftizen_unified;p=platform%2Fhal%2Fbackend%2Fcamera-v4l2.git Replace device_info by device_capability when set stream format [Version] 1.4.1 [Issue Type] Update Change-Id: Ife77f22b19aac31b784b14b7c861c0d5d9f7c7d0 Signed-off-by: Jeongmo Yang --- diff --git a/packaging/hal-backend-camera-v4l2.spec b/packaging/hal-backend-camera-v4l2.spec index 0117619..e09b0d9 100644 --- a/packaging/hal-backend-camera-v4l2.spec +++ b/packaging/hal-backend-camera-v4l2.spec @@ -2,7 +2,7 @@ Name: hal-backend-camera-v4l2 Summary: Tizen Camera Hal using generic V4L2 interface -Version: 1.4.0 +Version: 1.4.1 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/hal_backend_camera_v4l2.c b/src/hal_backend_camera_v4l2.c index 8fce0b9..fa6bbd2 100644 --- a/src/hal_backend_camera_v4l2.c +++ b/src/hal_backend_camera_v4l2.c @@ -1052,7 +1052,7 @@ static int __camera_get_device_info_list(void) if (ret == CAMERA_ERROR_NONE && device_capability_list->capability[device_count]) { g_device_caps[device_count] = device_caps; - LOGI("device[%02d] device caps [0x%08x]", device_count, device_caps); + LOGI("device[%d] device caps [0x%08x]", device_count, device_caps); device_count++; } } @@ -2099,20 +2099,24 @@ int camera_v4l2_remove_message_callback(void *camera_handle, uint32_t cb_id) int camera_v4l2_set_preview_stream_format(void *camera_handle, camera_format_s *format) { - int i = 0; - int j = 0; int ret = CAMERA_ERROR_NONE; + uint32_t i = 0; + uint32_t j = 0; gboolean capability_check = FALSE; hal_camera_handle *handle = (hal_camera_handle *)camera_handle; - camera_device_info_s *device_info = NULL; + camera_device_capability_s *device_capability = NULL; + camera_device_capability_format_s *capability_format = NULL; + camera_device_capability_resolution_s *capability_resolution = NULL; if (!handle || !format) { LOGE("NULL param %p %p", handle, format); return CAMERA_ERROR_INVALID_PARAMETER; } - if (!g_device_info_list) { - LOGE("no device info list"); + if (!g_device_capability_list || + !g_device_capability_list->capability[handle->device_index]) { + LOGE("no device capability list[%p] for device[%d]", + g_device_capability_list, handle->device_index); return CAMERA_ERROR_INTERNAL; } @@ -2126,32 +2130,34 @@ int camera_v4l2_set_preview_stream_format(void *camera_handle, camera_format_s * } /* check capability */ - device_info = &g_device_info_list->device_info[handle->device_index]; + device_capability = g_device_capability_list->capability[handle->device_index]; /* format */ - for (i = 0 ; i < device_info->format_list.count ; i++) { - if (format->stream_format == device_info->format_list.formats[i]) { - LOGD("format matched %d, check resolution.", format->stream_format); - - /* resolution */ - for (j = 0 ; j < device_info->preview_list.count ; j++) { - if (format->stream_resolution.width == device_info->preview_list.resolutions[j].width && - format->stream_resolution.height == device_info->preview_list.resolutions[j].height) { - LOGD("resolution matched %dx%d", - format->stream_resolution.width, - format->stream_resolution.height); - capability_check = TRUE; - break; - } - } + for (i = 0 ; i < device_capability->format_count && device_capability->format[i] ; i++) { + capability_format = device_capability->format[i]; + if (format->stream_format != capability_format->pixel_format) + continue; + for (j = 0 ; j < capability_format->resolution_count && capability_format->resolution[j] ; j++) { + capability_resolution = capability_format->resolution[j]; + if (format->stream_resolution.width != capability_resolution->width || + format->stream_resolution.height != capability_resolution->height) + continue; + + LOGI("device[%u]: format[%d], resolution[%dx%d] matched", + handle->device_index, format->stream_format, + format->stream_resolution.width, format->stream_resolution.height); + + capability_check = TRUE; break; } + + break; } if (!capability_check) { - LOGE("capability failed - %d, %dx%d", - format->stream_format, + LOGE("capability failed, device[%u]: format[%d], resolution[%dx%d]", + handle->device_index, format->stream_format, format->stream_resolution.width, format->stream_resolution.height); g_mutex_unlock(&handle->lock);