mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-15 00:19:44 +03:00
gst: Add getters for Stream and FrameBuffer
This adds getters on pad/pool/allocator so that we can retrieve the Stream or FrameBuffer. Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
6d0cf98bb1
commit
db50b1072a
6 changed files with 50 additions and 0 deletions
|
@ -243,3 +243,11 @@ gst_libcamera_allocator_get_pool_size(GstLibcameraAllocator *self,
|
||||||
|
|
||||||
return pool->length;
|
return pool->length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FrameBuffer *
|
||||||
|
gst_libcamera_memory_get_frame_buffer(GstMemory *mem)
|
||||||
|
{
|
||||||
|
auto *frame = reinterpret_cast<FrameWrap *>(gst_mini_object_get_qdata(GST_MINI_OBJECT_CAST(mem),
|
||||||
|
FrameWrap::getQuark()));
|
||||||
|
return frame->buffer_;
|
||||||
|
}
|
||||||
|
|
|
@ -27,4 +27,6 @@ bool gst_libcamera_allocator_prepare_buffer(GstLibcameraAllocator *self,
|
||||||
gsize gst_libcamera_allocator_get_pool_size(GstLibcameraAllocator *allocator,
|
gsize gst_libcamera_allocator_get_pool_size(GstLibcameraAllocator *allocator,
|
||||||
libcamera::Stream *stream);
|
libcamera::Stream *stream);
|
||||||
|
|
||||||
|
libcamera::FrameBuffer *gst_libcamera_memory_get_frame_buffer(GstMemory *mem);
|
||||||
|
|
||||||
#endif /* __GST_LIBCAMERA_ALLOCATOR_H__ */
|
#endif /* __GST_LIBCAMERA_ALLOCATOR_H__ */
|
||||||
|
|
|
@ -126,3 +126,14 @@ gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool)
|
||||||
g_object_unref(self->pool);
|
g_object_unref(self->pool);
|
||||||
self->pool = pool;
|
self->pool = pool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Stream *
|
||||||
|
gst_libcamera_pad_get_stream(GstPad *pad)
|
||||||
|
{
|
||||||
|
auto *self = GST_LIBCAMERA_PAD(pad);
|
||||||
|
|
||||||
|
if (self->pool)
|
||||||
|
return gst_libcamera_pool_get_stream(self->pool);
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
|
@ -24,4 +24,6 @@ GstLibcameraPool *gst_libcamera_pad_get_pool(GstPad *pad);
|
||||||
|
|
||||||
void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);
|
void gst_libcamera_pad_set_pool(GstPad *pad, GstLibcameraPool *pool);
|
||||||
|
|
||||||
|
libcamera::Stream *gst_libcamera_pad_get_stream(GstPad *pad);
|
||||||
|
|
||||||
#endif /* __GST_LIBCAMERA_PAD_H__ */
|
#endif /* __GST_LIBCAMERA_PAD_H__ */
|
||||||
|
|
|
@ -108,3 +108,23 @@ gst_libcamera_pool_new(GstLibcameraAllocator *allocator, Stream *stream)
|
||||||
|
|
||||||
return pool;
|
return pool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Stream *
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
GstMemory *mem = gst_buffer_peek_memory(buffer, 0);
|
||||||
|
return gst_libcamera_memory_get_frame_buffer(mem);
|
||||||
|
}
|
||||||
|
|
|
@ -24,4 +24,11 @@ G_DECLARE_FINAL_TYPE(GstLibcameraPool, gst_libcamera_pool, GST_LIBCAMERA, POOL,
|
||||||
GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
|
GstLibcameraPool *gst_libcamera_pool_new(GstLibcameraAllocator *allocator,
|
||||||
libcamera::Stream *stream);
|
libcamera::Stream *stream);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GST_LIBCAMERA_POOL_H__ */
|
#endif /* __GST_LIBCAMERA_POOL_H__ */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue