From: Jeongmo Yang Date: Thu, 17 Jun 2021 05:27:59 +0000 (+0900) Subject: Support extra preview stream format functions for test X-Git-Tag: accepted/tizen/unified/20210621.123224^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=19aa28f1098ef465594d9e674449df6944c6a5f7;p=platform%2Fadaptation%2Fcamera-hal-v4l2.git Support extra preview stream format functions for test [Version] 0.1.4 [Issue Type] New feature Change-Id: I63d3d68a734e8516d11c2714734f879f8b002ca9 Signed-off-by: Jeongmo Yang --- diff --git a/packaging/camera-hal-v4l2.spec b/packaging/camera-hal-v4l2.spec index bde3403..67deda2 100644 --- a/packaging/camera-hal-v4l2.spec +++ b/packaging/camera-hal-v4l2.spec @@ -1,6 +1,6 @@ Name: camera-hal-v4l2 Summary: Tizen Camera Hal for V4L2 -Version: 0.1.3 +Version: 0.1.4 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/hal_camera_v4l2.c b/src/hal_camera_v4l2.c index 92a3c19..54f6a1b 100644 --- a/src/hal_camera_v4l2.c +++ b/src/hal_camera_v4l2.c @@ -1948,6 +1948,56 @@ int camera_v4l2_release_extra_preview_buffer(void *camera_handle, int stream_id, } +int camera_v4l2_set_extra_preview_stream_format(void *camera_handle, int stream_id, camera_format_s *format) +{ + hal_camera_handle *handle = (hal_camera_handle *)camera_handle; + + if (!handle) { + LOGE("NULL handle"); + return CAMERA_ERROR_INVALID_PARAMETER; + } + + if (stream_id < 0 || stream_id >= EXTRA_PREVIEW_STREAM_MAX) { + LOGE("invalid stream_id[%d]", stream_id); + return CAMERA_ERROR_INVALID_PARAMETER; + } + + LOGI("stream_id[%d], [%d,%dx%d,%d]", + stream_id, format->stream_format, + format->stream_resolution.width, format->stream_resolution.height, + format->stream_fps); + + memcpy(&handle->extra_preview_format[stream_id], format, sizeof(camera_format_s)); + + return CAMERA_ERROR_NONE; +} + + +int camera_v4l2_get_extra_preview_stream_format(void *camera_handle, int stream_id, camera_format_s *format) +{ + hal_camera_handle *handle = (hal_camera_handle *)camera_handle; + + if (!handle || !format) { + LOGE("NULL param[%p,%p]", handle, format); + return CAMERA_ERROR_INVALID_PARAMETER; + } + + if (stream_id < 0 || stream_id >= EXTRA_PREVIEW_STREAM_MAX) { + LOGE("invalid stream_id[%d]", stream_id); + return CAMERA_ERROR_INVALID_PARAMETER; + } + + memcpy(format, &handle->extra_preview_format[stream_id], sizeof(camera_format_s)); + + LOGI("stream_id[%d], [%d,%dx%d,%d]", + stream_id, format->stream_format, + format->stream_resolution.width, format->stream_resolution.height, + format->stream_fps); + + return CAMERA_ERROR_NONE; +} + + static int __set_command(hal_camera_handle *handle, int64_t command, void *value) { int cid = 0; @@ -2280,6 +2330,8 @@ static int camera_v4l2_backend_init(void **data) funcs->set_extra_preview_frame_cb = camera_v4l2_set_extra_preview_frame_cb; funcs->unset_extra_preview_frame_cb = camera_v4l2_unset_extra_preview_frame_cb; funcs->release_extra_preview_buffer = camera_v4l2_release_extra_preview_buffer; + funcs->set_extra_preview_stream_format = camera_v4l2_set_extra_preview_stream_format; + funcs->get_extra_preview_stream_format = camera_v4l2_get_extra_preview_stream_format; *data = (void *)funcs; diff --git a/src/hal_camera_v4l2_private.h b/src/hal_camera_v4l2_private.h index 8c0761d..3e7f5fc 100644 --- a/src/hal_camera_v4l2_private.h +++ b/src/hal_camera_v4l2_private.h @@ -31,6 +31,7 @@ #define MESSAGE_CALLBACK_MAX 10 #define BUFFER_MAX 4 #define V4L2_PLANES_MAX 4 +#define EXTRA_PREVIEW_STREAM_MAX 10 typedef struct _set_batch_table_s { int64_t command; @@ -62,6 +63,7 @@ typedef struct _camera_hal_handle { hal_camera_extra_preview_frame_cb extra_preview_cb; gpointer extra_preview_cb_data; GMutex extra_preview_lock; + camera_format_s extra_preview_format[EXTRA_PREVIEW_STREAM_MAX]; /* capture */ hal_camera_capture_cb capture_cb;