gstreamer: Pass Stream to RequestWrap::addBuffer()

For symmetry with RequestWrap::removeBuffer(), pass the Stream pointer
to addBuffer(). This handles streams at the GstPad level instead of the
GstBuffer level, which allows making the GstLibcameraPool API a bit
cleaner by removing the gst_libcamera_buffer_get_stream() helper
function.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
Laurent Pinchart
2022-05-11 01:30:23 +03:00
parent 44d14d8245
commit 674c2bf1f1
3 changed files with 4 additions and 13 deletions
-7
View File
@@ -134,13 +134,6 @@ gst_libcamera_pool_get_stream(GstLibcameraPool *self)
return self->stream;
}
Stream *
gst_libcamera_buffer_get_stream(GstBuffer *buffer)
{
auto *self = (GstLibcameraPool *)buffer->pool;
return self->stream;
}
FrameBuffer *
gst_libcamera_buffer_get_frame_buffer(GstBuffer *buffer)
{
-2
View File
@@ -25,6 +25,4 @@ GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
libcamera::Stream *gst_libcamera_pool_get_stream(GstLibcameraPool *self);
libcamera::Stream *gst_libcamera_buffer_get_stream(GstBuffer *buffer);
libcamera::FrameBuffer *gst_libcamera_buffer_get_frame_buffer(GstBuffer *buffer);
+4 -4
View File
@@ -51,7 +51,7 @@ struct RequestWrap {
RequestWrap(std::unique_ptr<Request> request);
~RequestWrap();
void attachBuffer(GstBuffer *buffer);
void attachBuffer(Stream *stream, GstBuffer *buffer);
GstBuffer *detachBuffer(Stream *stream);
std::unique_ptr<Request> request_;
@@ -71,10 +71,9 @@ RequestWrap::~RequestWrap()
}
}
void RequestWrap::attachBuffer(GstBuffer *buffer)
void RequestWrap::attachBuffer(Stream *stream, GstBuffer *buffer)
{
FrameBuffer *fb = gst_libcamera_buffer_get_frame_buffer(buffer);
Stream *stream = gst_libcamera_buffer_get_stream(buffer);
request_->addBuffer(stream, fb);
@@ -275,6 +274,7 @@ gst_libcamera_src_task_run(gpointer user_data)
std::make_unique<RequestWrap>(std::move(request));
for (GstPad *srcpad : state->srcpads_) {
Stream *stream = gst_libcamera_pad_get_stream(srcpad);
GstLibcameraPool *pool = gst_libcamera_pad_get_pool(srcpad);
GstBuffer *buffer;
GstFlowReturn ret;
@@ -290,7 +290,7 @@ gst_libcamera_src_task_run(gpointer user_data)
break;
}
wrap->attachBuffer(buffer);
wrap->attachBuffer(stream, buffer);
}
if (wrap) {