From b62657fec0a369f8bbea2e4101f21ebcb1b4e48a Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Wed, 15 Sep 2021 20:57:40 +0900 Subject: [PATCH] Support extra preview GOP interval functions for test [Version] 0.1.8 [Issue Type] New feature Change-Id: I16c67cfa54fccbf99a8aedadf3abd3283ad40eca Signed-off-by: Jeongmo Yang --- packaging/camera-hal-v4l2.spec | 2 +- src/hal_camera_v4l2.c | 46 ++++++++++++++++++++++++++++++++++++++++++ src/hal_camera_v4l2_private.h | 1 + 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/packaging/camera-hal-v4l2.spec b/packaging/camera-hal-v4l2.spec index 0bcd5f2..980d1f6 100644 --- a/packaging/camera-hal-v4l2.spec +++ b/packaging/camera-hal-v4l2.spec @@ -2,7 +2,7 @@ Name: camera-hal-v4l2 Summary: Tizen Camera Hal for V4L2 -Version: 0.1.7 +Version: 0.1.8 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/hal_camera_v4l2.c b/src/hal_camera_v4l2.c index 3167f4f..08b79a8 100644 --- a/src/hal_camera_v4l2.c +++ b/src/hal_camera_v4l2.c @@ -2121,6 +2121,50 @@ int camera_v4l2_get_extra_preview_bitrate(void *camera_handle, int stream_id, in } +int camera_v4l2_set_extra_preview_gop_interval(void *camera_handle, int stream_id, int interval) +{ + 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("set GOP interval[%d] for stream_id[%d]", interval, stream_id); + + handle->extra_preview_gop_interval[stream_id] = interval; + + return CAMERA_ERROR_NONE; +} + + +int camera_v4l2_get_extra_preview_gop_interval(void *camera_handle, int stream_id, int *interval) +{ + hal_camera_handle *handle = (hal_camera_handle *)camera_handle; + + if (!handle || !interval) { + LOGE("NULL param[%p,%p]", handle, interval); + 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; + } + + *interval = (int)handle->extra_preview_gop_interval[stream_id]; + + LOGI("get GOP interval[%d] for stream_id[%d]", *interval, stream_id); + + return CAMERA_ERROR_NONE; +} + + static int __set_command(hal_camera_handle *handle, int64_t command, void *value) { int cid = 0; @@ -2457,6 +2501,8 @@ static int camera_v4l2_backend_init(void **data) funcs->get_extra_preview_stream_format = camera_v4l2_get_extra_preview_stream_format; funcs->set_extra_preview_bitrate = camera_v4l2_set_extra_preview_bitrate; funcs->get_extra_preview_bitrate = camera_v4l2_get_extra_preview_bitrate; + funcs->set_extra_preview_gop_interval = camera_v4l2_set_extra_preview_gop_interval; + funcs->get_extra_preview_gop_interval = camera_v4l2_get_extra_preview_gop_interval; *data = (void *)funcs; diff --git a/src/hal_camera_v4l2_private.h b/src/hal_camera_v4l2_private.h index 65478d9..1046da6 100644 --- a/src/hal_camera_v4l2_private.h +++ b/src/hal_camera_v4l2_private.h @@ -76,6 +76,7 @@ typedef struct _camera_hal_handle { gpointer extra_preview_cb_data; GMutex extra_preview_lock; camera_format_s extra_preview_format[EXTRA_PREVIEW_STREAM_MAX]; + gint32 extra_preview_gop_interval[EXTRA_PREVIEW_STREAM_MAX]; /* capture */ hal_camera_capture_cb capture_cb; -- 2.7.4