Support extra preview GOP interval functions for test 85/264285/1 accepted/tizen/6.5/unified/20211028.093437 accepted/tizen/unified/20210916.014317 submit/tizen/20210915.115302 submit/tizen_6.5/20211028.161401 tizen_6.5.m2_release
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 15 Sep 2021 11:57:40 +0000 (20:57 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 15 Sep 2021 11:57:40 +0000 (20:57 +0900)
[Version] 0.1.8
[Issue Type] New feature

Change-Id: I16c67cfa54fccbf99a8aedadf3abd3283ad40eca
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/camera-hal-v4l2.spec
src/hal_camera_v4l2.c
src/hal_camera_v4l2_private.h

index 0bcd5f2..980d1f6 100644 (file)
@@ -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
index 3167f4f..08b79a8 100644 (file)
@@ -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;
 
index 65478d9..1046da6 100644 (file)
@@ -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;