diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2019-07-10 12:07:19 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-14 16:01:03 +0300 |
commit | f1199a1011a22f00e863473ae241c781f4bd999d (patch) | |
tree | 1201339db3d65fcd5d8ad9718c063b3abea5910e /include | |
parent | 99e1e786b475f3d6f4f8d9f5cd21db6c524ba60f (diff) |
libcamera: buffer: Add dmabuf file descriptors
In addition to referencing buffer memory by index, add support to
referencing it using dmabuf file descriptors. This will be used to
reference buffer memory allocated outside of libcamera and import it.
The dmabuf file descriptors are stored in an array in the Buffer class,
and a new Stream::createBuffer() overload is added to construct a buffer
from dmabuf file descriptor.
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/buffer.h | 3 | ||||
-rw-r--r-- | include/libcamera/stream.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/include/libcamera/buffer.h b/include/libcamera/buffer.h index f5ba6207..f8569a6b 100644 --- a/include/libcamera/buffer.h +++ b/include/libcamera/buffer.h @@ -7,6 +7,7 @@ #ifndef __LIBCAMERA_BUFFER_H__ #define __LIBCAMERA_BUFFER_H__ +#include <array> #include <stdint.h> #include <vector> @@ -75,6 +76,7 @@ public: Buffer &operator=(const Buffer &) = delete; unsigned int index() const { return index_; } + const std::array<int, 3> &dmabufs() const { return dmabuf_; } unsigned int bytesused() const { return bytesused_; } uint64_t timestamp() const { return timestamp_; } @@ -95,6 +97,7 @@ private: void setRequest(Request *request) { request_ = request; } unsigned int index_; + std::array<int, 3> dmabuf_; unsigned int bytesused_; uint64_t timestamp_; diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h index 08eb8cc7..1883d9e9 100644 --- a/include/libcamera/stream.h +++ b/include/libcamera/stream.h @@ -75,6 +75,7 @@ public: Stream(); std::unique_ptr<Buffer> createBuffer(unsigned int index); + std::unique_ptr<Buffer> createBuffer(const std::array<int, 3> &fds); BufferPool &bufferPool() { return bufferPool_; } std::vector<BufferMemory> &buffers() { return bufferPool_.buffers(); } |