summaryrefslogtreecommitdiff
path: root/lib/stream.c
diff options
context:
space:
mode:
authorDaniel Scally <dan.scally@ideasonboard.com>2023-01-10 11:58:04 +0000
committerDaniel Scally <dan.scally@ideasonboard.com>2023-01-16 13:10:16 +0000
commit4d9897c5aa5376f89e0d5ed1534536f680939e0d (patch)
tree9d2f1ecb449d218849831279f776121e987bd755 /lib/stream.c
parent3f6aee6a13233e9ffcbb133ab9490aead7e2ced3 (diff)
lib: Add video_source_type enumeration
Add an enum to struct video_source that details the type of source we're dealing with. This will be used to make decisions about buffer allocation and handling in a more explicit way. Use the video_source_type associated with a video_source to decide on the appropriate allocation function and buffer handler at stream on time. This is a more explicit method than relying on the presence of the .alloc_buffers op and allows more flexibility. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
Diffstat (limited to 'lib/stream.c')
-rw-r--r--lib/stream.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/stream.c b/lib/stream.c
index 63ccb1b..4a562a5 100644
--- a/lib/stream.c
+++ b/lib/stream.c
@@ -7,6 +7,7 @@
* Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
*/
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -183,10 +184,19 @@ static int uvc_stream_start(struct uvc_stream *stream)
{
printf("Starting video stream.\n");
- if (stream->src->ops->alloc_buffers)
+ switch (stream->src->type) {
+ case VIDEO_SOURCE_DMABUF:
+ video_source_set_buffer_handler(stream->src, uvc_stream_source_process,
+ stream);
return uvc_stream_start_alloc(stream);
- else
+ case VIDEO_SOURCE_STATIC:
return uvc_stream_start_no_alloc(stream);
+ default:
+ fprintf(stderr, "invalid video source type\n");
+ break;
+ }
+
+ return -EINVAL;
}
static int uvc_stream_stop(struct uvc_stream *stream)
@@ -288,8 +298,4 @@ void uvc_stream_set_video_source(struct uvc_stream *stream,
struct video_source *src)
{
stream->src = src;
-
- if (stream->src->ops->alloc_buffers)
- video_source_set_buffer_handler(src, uvc_stream_source_process,
- stream);
}