summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJacopo Mondi <jacopo@jmondi.org>2019-06-28 09:13:34 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-07-14 16:01:02 +0300
commit99e1e786b475f3d6f4f8d9f5cd21db6c524ba60f (patch)
tree00992fa3519e69c1e01d02b1746be0762b5de4af /include
parentbe3e3ebc92d8ffba8a03483f05e7956e33726c4e (diff)
libcamera: stream: Add Stream memory type
Define the memory type a Stream uses and allow application to set it through the associated StreamConfiguration. A Stream can use either internal or external memory allocation methods, depending on where the data produced by the stream is actually saved. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r--include/libcamera/stream.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h
index bc14fb60..08eb8cc7 100644
--- a/include/libcamera/stream.h
+++ b/include/libcamera/stream.h
@@ -35,6 +35,11 @@ private:
std::map<unsigned int, std::vector<SizeRange>> formats_;
};
+enum MemoryType {
+ InternalMemory,
+ ExternalMemory,
+};
+
struct StreamConfiguration {
StreamConfiguration();
StreamConfiguration(const StreamFormats &formats);
@@ -42,6 +47,7 @@ struct StreamConfiguration {
unsigned int pixelFormat;
Size size;
+ MemoryType memoryType;
unsigned int bufferCount;
Stream *stream() const { return stream_; }
@@ -73,15 +79,17 @@ public:
BufferPool &bufferPool() { return bufferPool_; }
std::vector<BufferMemory> &buffers() { return bufferPool_.buffers(); }
const StreamConfiguration &configuration() const { return configuration_; }
+ MemoryType memoryType() const { return memoryType_; }
protected:
friend class Camera;
- void createBuffers(unsigned int count);
+ void createBuffers(MemoryType memory, unsigned int count);
void destroyBuffers();
BufferPool bufferPool_;
StreamConfiguration configuration_;
+ MemoryType memoryType_;
};
} /* namespace libcamera */