From 0997d944e2dadbfcd603da0fe84e38860955f447 Mon Sep 17 00:00:00 2001 From: Kwanghoon Son Date: Mon, 18 Jul 2022 20:31:17 -0400 Subject: [PATCH] Add new pixel types and ini file [Issue type] new enum type Change-Id: Ic89d990eff83d763ab9bd87ec3dcb4f852c3722e Signed-off-by: Kwanghoon Son --- include/vision_source.h | 32 ++--- include/vision_source_interface.h | 276 +++++++++++++++++++------------------- packaging/vision-source.spec | 2 +- vision_source.ini | 9 +- 4 files changed, 166 insertions(+), 153 deletions(-) diff --git a/include/vision_source.h b/include/vision_source.h index 6053c36..231282d 100644 --- a/include/vision_source.h +++ b/include/vision_source.h @@ -24,22 +24,22 @@ extern "C" { #endif - int vision_source_init(vision_source_h *handle); - int vision_source_exit(vision_source_h handle); - int vision_source_open_device(vision_source_h handle, int device_index); - int vision_source_close_device(vision_source_h handle); - int vision_source_start_stream(vision_source_h handle, stream_cb callback, - void *user_data); - int vision_source_stop_stream(vision_source_h handle); - int vision_source_enumerate_devices( - vision_source_h handle, - vision_source_device_info_list_s *info_list); - int vision_source_set_stream_format(vision_source_h handle, - vision_source_format_s *format); - int vision_source_get_capture_frame(vision_source_h handle, - vision_source_buffer_s *buffer); - int vision_source_release_capture_frame(vision_source_h handle, - int buffer_index); +int vision_source_init(vision_source_h *handle); +int vision_source_exit(vision_source_h handle); +int vision_source_open_device(vision_source_h handle, int device_index); +int vision_source_close_device(vision_source_h handle); +int vision_source_start_stream(vision_source_h handle, stream_cb callback, + void *user_data); +int vision_source_stop_stream(vision_source_h handle); +int vision_source_enumerate_devices( + vision_source_h handle, + vision_source_device_info_list_s *info_list); +int vision_source_set_stream_format(vision_source_h handle, + vision_source_format_s *format); +int vision_source_get_capture_frame(vision_source_h handle, + vision_source_buffer_s *buffer); +int vision_source_release_capture_frame(vision_source_h handle, + int buffer_index); #ifdef __cplusplus } diff --git a/include/vision_source_interface.h b/include/vision_source_interface.h index 24510e5..f8716db 100644 --- a/include/vision_source_interface.h +++ b/include/vision_source_interface.h @@ -31,141 +31,147 @@ extern "C" { #endif - typedef struct vision_source_resolution - { - uint32_t width; - uint32_t height; - } vision_source_resolution_s; - - typedef enum vision_source_pixel_format - { - VISION_SOURCE_PIXEL_FORMAT_RGB24 = 0x0000, - VISION_SOURCE_PIXEL_FORMAT_MAX - } vision_source_pixel_format_e; - - typedef struct vision_source_pixel_format_list - { - uint32_t count; - vision_source_pixel_format_e - pixel_formats[VISION_SOURCE_PIXEL_FORMAT_MAX]; - } vision_source_pixel_format_list_s; - - typedef struct vision_source_resolution_list - { - uint32_t count; - vision_source_resolution_s resolutions[RESOLUTION_COUNT_MAX]; - } vision_source_resolution_list_s; - - typedef struct vision_source_fps_list - { - uint32_t count; - int fps[FPS_COUNT_MAX]; - } vision_source_fps_list_s; - - typedef struct vision_source_resolution_match_fps - { - vision_source_resolution_s resolution; - vision_source_fps_list_s fps_list; - } vision_source_resolution_match_fps_s; - - typedef struct vision_source_resolution_match_fps_list - { - uint32_t count; - vision_source_resolution_match_fps_s resolutions[RESOLUTION_COUNT_MAX]; - } vision_source_resolution_match_fps_list_s; - - typedef struct vision_source_pixel_match_resolution - { - vision_source_pixel_format_e pixel_format; - vision_source_resolution_match_fps_list_s resolution_list; - } vision_source_pixel_match_resolution_s; - - typedef struct vision_source_pixel_match_resolution_list - { - uint32_t count; - vision_source_pixel_match_resolution_s - pixels[VISION_SOURCE_PIXEL_FORMAT_MAX]; - } vision_source_pixel_match_resolution_list_s; - - typedef struct vision_source_device_info - { - uint32_t index; - char name[DEVICE_NAME_LENGTH_MAX]; - char node_path[DEVICE_NODE_PATH_LENGTH_MAX]; - vision_source_pixel_match_resolution_list_s pixel_list; - } vision_source_device_info_s; - - typedef struct vision_source_device_info_list - { - uint32_t count; - vision_source_device_info_s device_info[DEVICE_COUNT_MAX]; - } vision_source_device_info_list_s; - - typedef struct vision_source_plane - { - unsigned char *data; - uint32_t align_width; - uint32_t align_height; - uint32_t size; - uint32_t used_size; - } vision_source_plane_s; - - typedef struct vision_source_format - { - vision_source_pixel_format_e pixel_format; - vision_source_resolution_s resolution; - uint32_t fps; - uint32_t quality; - uint32_t bitrate; - } vision_source_format_s; - - typedef struct vision_source_buffer - { - int index; - vision_source_pixel_format_e pixel_format; - vision_source_resolution_s resolution; - uint32_t total_size; - uint32_t num_planes; - vision_source_plane_s planes[BUFFER_PLANE_MAX]; - // uint32_t num_bos; - // void *bos[BUFFER_PLANE_MAX]; - } vision_source_buffer_s; - - typedef enum vision_source_error - { - VISION_SOURCE_ERROR_NONE = 0, - VISION_SOURCE_ERROR_INVALID_PARAMETER, - VISION_SOURCE_ERROR_INTERNAL, - VISION_SOURCE_ERROR_NOT_IMPLEMENTED, - VISION_SOURCE_ERROR_UNKNOWN - } vision_source_error_e; - - typedef void *vision_source_h; - - typedef int (*stream_cb)(vision_source_buffer_s *buffer, void *user_data); - - typedef struct vision_source_func - { - int (*init)(vision_source_h *handle); - int (*exit)(vision_source_h handle); - int (*open_device)(vision_source_h handle, int device_index); - int (*close_device)(vision_source_h handle); - - int (*enumerate_devices)(vision_source_h handle, - vision_source_device_info_list_s *info_list); - int (*set_stream_format)(vision_source_h handle, - vision_source_format_s *format); - - int (*start_stream)(vision_source_h handle, stream_cb callback, - void *user_data); - int (*stop_stream)(vision_source_h handle); - - int (*get_capture_frame)(vision_source_h handle, - vision_source_buffer_s *buffer); - int (*release_capture_frame)(vision_source_h handle, int buffer_index); - } vision_source_func_s; - - void attach_backend(vision_source_func_s *funcp); +typedef struct vision_source_resolution +{ + uint32_t width; + uint32_t height; +} vision_source_resolution_s; + +typedef enum vision_source_pixel_format +{ + VISION_SOURCE_PIXEL_FORMAT_RGB24 = 0x0000, + VISION_SOURCE_PIXEL_FORMAT_GREY, + VISION_SOURCE_PIXEL_FORMAT_Y10, + VISION_SOURCE_PIXEL_FORMAT_NV12, + VISION_SOURCE_PIXEL_FORMAT_NV21, + VISION_SOURCE_PIXEL_FORMAT_YVU420, //YV12 + VISION_SOURCE_PIXEL_FORMAT_YUV420, //I420 + VISION_SOURCE_PIXEL_FORMAT_MAX +} vision_source_pixel_format_e; + +typedef struct vision_source_pixel_format_list +{ + uint32_t count; + vision_source_pixel_format_e + pixel_formats[VISION_SOURCE_PIXEL_FORMAT_MAX]; +} vision_source_pixel_format_list_s; + +typedef struct vision_source_resolution_list +{ + uint32_t count; + vision_source_resolution_s resolutions[RESOLUTION_COUNT_MAX]; +} vision_source_resolution_list_s; + +typedef struct vision_source_fps_list +{ + uint32_t count; + int fps[FPS_COUNT_MAX]; +} vision_source_fps_list_s; + +typedef struct vision_source_resolution_match_fps +{ + vision_source_resolution_s resolution; + vision_source_fps_list_s fps_list; +} vision_source_resolution_match_fps_s; + +typedef struct vision_source_resolution_match_fps_list +{ + uint32_t count; + vision_source_resolution_match_fps_s resolutions[RESOLUTION_COUNT_MAX]; +} vision_source_resolution_match_fps_list_s; + +typedef struct vision_source_pixel_match_resolution +{ + vision_source_pixel_format_e pixel_format; + vision_source_resolution_match_fps_list_s resolution_list; +} vision_source_pixel_match_resolution_s; + +typedef struct vision_source_pixel_match_resolution_list +{ + uint32_t count; + vision_source_pixel_match_resolution_s + pixels[VISION_SOURCE_PIXEL_FORMAT_MAX]; +} vision_source_pixel_match_resolution_list_s; + +typedef struct vision_source_device_info +{ + uint32_t index; + char name[DEVICE_NAME_LENGTH_MAX]; + char node_path[DEVICE_NODE_PATH_LENGTH_MAX]; + vision_source_pixel_match_resolution_list_s pixel_list; +} vision_source_device_info_s; + +typedef struct vision_source_device_info_list +{ + uint32_t count; + vision_source_device_info_s device_info[DEVICE_COUNT_MAX]; +} vision_source_device_info_list_s; + +typedef struct vision_source_plane +{ + unsigned char *data; + uint32_t align_width; + uint32_t align_height; + uint32_t size; + uint32_t used_size; +} vision_source_plane_s; + +typedef struct vision_source_format +{ + vision_source_pixel_format_e pixel_format; + vision_source_resolution_s resolution; + uint32_t fps; + uint32_t quality; + uint32_t bitrate; +} vision_source_format_s; + +typedef struct vision_source_buffer +{ + int index; + vision_source_pixel_format_e pixel_format; + vision_source_resolution_s resolution; + uint32_t total_size; + uint32_t num_planes; + vision_source_plane_s planes[BUFFER_PLANE_MAX]; + // uint32_t num_bos; + // void *bos[BUFFER_PLANE_MAX]; +} vision_source_buffer_s; + +typedef enum vision_source_error +{ + VISION_SOURCE_ERROR_NONE = 0, + VISION_SOURCE_ERROR_INVALID_PARAMETER, + VISION_SOURCE_ERROR_INTERNAL, + VISION_SOURCE_ERROR_NOT_IMPLEMENTED, + VISION_SOURCE_ERROR_UNKNOWN +} vision_source_error_e; + +typedef void *vision_source_h; + +typedef int (*stream_cb)(vision_source_buffer_s *buffer, void *user_data); + +typedef struct vision_source_func +{ + int (*init)(vision_source_h *handle); + int (*exit)(vision_source_h handle); + int (*open_device)(vision_source_h handle, int device_index); + int (*close_device)(vision_source_h handle); + + int (*enumerate_devices)(vision_source_h handle, + vision_source_device_info_list_s *info_list); + int (*set_stream_format)(vision_source_h handle, + vision_source_format_s *format); + + int (*start_stream)(vision_source_h handle, stream_cb callback, + void *user_data); + int (*stop_stream)(vision_source_h handle); + + int (*get_capture_frame)(vision_source_h handle, + vision_source_buffer_s *buffer); + int (*release_capture_frame)(vision_source_h handle, int buffer_index); +} vision_source_func_s; + +void attach_backend(vision_source_func_s *funcp); #ifdef __cplusplus } diff --git a/packaging/vision-source.spec b/packaging/vision-source.spec index 9c5c86e..d7735d9 100644 --- a/packaging/vision-source.spec +++ b/packaging/vision-source.spec @@ -1,6 +1,6 @@ Name: vision-source Summary: vision source -Version: 0.0.5 +Version: 0.0.6 Release: 0 Group: Multimedia/Framework License: Apache-2.0 diff --git a/vision_source.ini b/vision_source.ini index 7c34e1b..9ebb04d 100644 --- a/vision_source.ini +++ b/vision_source.ini @@ -1,2 +1,9 @@ [Common] -name = "v4l2"; \ No newline at end of file +name = "v4l2"; + +[Stream] +dev_id = 0; +width = 640; +height = 480; +fps = 30; +pixel_format = 0; \ No newline at end of file -- 2.7.4