From afd7ad5f9dbef7f31162b9a49b9f85c0a309a3a0 Mon Sep 17 00:00:00 2001 From: Daniel Scally Date: Fri, 13 Jan 2023 16:27:10 +0000 Subject: lib/video-source: Add video_source_import_buffers We need to be able to place encoded data into the sink device's bufs. To facilitate that add a video_source operation that allows the source to import buffers from the sink. Add a .import_buffers() callback so that the libcamera-source can access a sink's buffers. Reviewed-by: Kieran Bingham Signed-off-by: Daniel Scally --- lib/libcamera-source.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/libcamera-source.cpp') diff --git a/lib/libcamera-source.cpp b/lib/libcamera-source.cpp index 7b4e212..4e22688 100644 --- a/lib/libcamera-source.cpp +++ b/lib/libcamera-source.cpp @@ -227,6 +227,17 @@ static int libcamera_source_export_buffers(struct video_source *s, return 0; } +static int libcamera_source_import_buffers(struct video_source *s, + struct video_buffer_set *buffers) +{ + struct libcamera_source *src = to_libcamera_source(s); + + for (unsigned int i = 0; i < buffers->nbufs; i++) + src->buffers.buffers[i].mem = buffers->buffers[i].mem; + + return 0; +} + static int libcamera_source_free_buffers(struct video_source *s) { struct libcamera_source *src = to_libcamera_source(s); @@ -328,6 +339,7 @@ static const struct video_source_ops libcamera_source_ops = { .set_frame_rate = libcamera_source_set_frame_rate, .alloc_buffers = libcamera_source_alloc_buffers, .export_buffers = libcamera_source_export_buffers, + .import_buffers = libcamera_source_import_buffers, .free_buffers = libcamera_source_free_buffers, .stream_on = libcamera_source_stream_on, .stream_off = libcamera_source_stream_off, -- cgit v1.2.3