summaryrefslogtreecommitdiff
path: root/src/gstreamer/gstlibcameraallocator.h
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2020-01-25 17:47:17 -0500
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-07 01:58:07 +0200
commitbde275408c7f614ccf6e440bdd747f7b663fafe6 (patch)
treef02635a9338550ba454583678636020793e25bc7 /src/gstreamer/gstlibcameraallocator.h
parentd343326d28dd03877dd3d602c5494b5887ac34e5 (diff)
gst: Add a pool and an allocator implementation
This is needed to track the lifetime of the FrameBufferAllocator in relation to the GstBuffer/GstMemory objects travelling inside GStreamer. 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>
Diffstat (limited to 'src/gstreamer/gstlibcameraallocator.h')
-rw-r--r--src/gstreamer/gstlibcameraallocator.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/gstreamer/gstlibcameraallocator.h b/src/gstreamer/gstlibcameraallocator.h
new file mode 100644
index 00000000..b3f7f367
--- /dev/null
+++ b/src/gstreamer/gstlibcameraallocator.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2020, Collabora Ltd.
+ * Author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * gstlibcameraallocator.h - GStreamer Custom Allocator
+ */
+
+#ifndef __GST_LIBCAMERA_ALLOCATOR_H__
+#define __GST_LIBCAMERA_ALLOCATOR_H__
+
+#include <gst/gst.h>
+#include <gst/allocators/allocators.h>
+
+#include <libcamera/stream.h>
+
+#define GST_TYPE_LIBCAMERA_ALLOCATOR gst_libcamera_allocator_get_type()
+G_DECLARE_FINAL_TYPE(GstLibcameraAllocator, gst_libcamera_allocator,
+ GST_LIBCAMERA, ALLOCATOR, GstDmaBufAllocator)
+
+GstLibcameraAllocator *gst_libcamera_allocator_new(std::shared_ptr<libcamera::Camera> camera);
+
+bool gst_libcamera_allocator_prepare_buffer(GstLibcameraAllocator *self,
+ libcamera::Stream *stream,
+ GstBuffer *buffer);
+
+gsize gst_libcamera_allocator_get_pool_size(GstLibcameraAllocator *allocator,
+ libcamera::Stream *stream);
+
+#endif /* __GST_LIBCAMERA_ALLOCATOR_H__ */