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:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user