Support extra preview stream format functions for test 66/259966/2 accepted/tizen/unified/20210621.123224 submit/tizen/20210618.081505
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 17 Jun 2021 05:27:59 +0000 (14:27 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 17 Jun 2021 08:02:32 +0000 (17:02 +0900)
[Version] 0.1.4
[Issue Type] New feature

Change-Id: I63d3d68a734e8516d11c2714734f879f8b002ca9
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 bde3403..67deda2 100644 (file)
@@ -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
index 92a3c19..54f6a1b 100644 (file)
@@ -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;
 
index 8c0761d..3e7f5fc 100644 (file)
@@ -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;