diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-12 22:32:01 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-14 16:01:07 +0300 |
commit | 689e8916caf11942286a1f1264e55dcb709d3939 (patch) | |
tree | a82d5d6e858c2a0e3cd1b939198fa87ba5efa3f2 /src/cam | |
parent | f1199a1011a22f00e863473ae241c781f4bd999d (diff) |
libcamera: buffer: Add an accessor to the BufferMemory
Buffer instances reference memory, which is modelled internally by a
BufferMemory instance. Store a pointer to the BufferMemory in the Buffer
class, and populate it when the buffer is queued to the camera through a
request. This is useful for applications to access the buffer memory in
the buffer or request completion handler.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/cam')
-rw-r--r-- | src/cam/buffer_writer.cpp | 4 | ||||
-rw-r--r-- | src/cam/buffer_writer.h | 3 | ||||
-rw-r--r-- | src/cam/capture.cpp | 3 |
3 files changed, 4 insertions, 6 deletions
diff --git a/src/cam/buffer_writer.cpp b/src/cam/buffer_writer.cpp index b7f2ed4f..1c044b06 100644 --- a/src/cam/buffer_writer.cpp +++ b/src/cam/buffer_writer.cpp @@ -19,8 +19,7 @@ BufferWriter::BufferWriter(const std::string &pattern) { } -int BufferWriter::write(libcamera::Buffer *buffer, libcamera::BufferMemory *mem, - const std::string &streamName) +int BufferWriter::write(libcamera::Buffer *buffer, const std::string &streamName) { std::string filename; size_t pos; @@ -41,6 +40,7 @@ int BufferWriter::write(libcamera::Buffer *buffer, libcamera::BufferMemory *mem, if (fd == -1) return -errno; + libcamera::BufferMemory *mem = buffer->mem(); for (libcamera::Plane &plane : mem->planes()) { void *data = plane.mem(); unsigned int length = plane.length(); diff --git a/src/cam/buffer_writer.h b/src/cam/buffer_writer.h index 9bea205f..7bf785d1 100644 --- a/src/cam/buffer_writer.h +++ b/src/cam/buffer_writer.h @@ -16,8 +16,7 @@ class BufferWriter public: BufferWriter(const std::string &pattern = "frame-#.bin"); - int write(libcamera::Buffer *buffer, libcamera::BufferMemory *mem, - const std::string &streamName); + int write(libcamera::Buffer *buffer, const std::string &streamName); private: std::string pattern_; diff --git a/src/cam/capture.cpp b/src/cam/capture.cpp index 5ffa4ae2..df9602de 100644 --- a/src/cam/capture.cpp +++ b/src/cam/capture.cpp @@ -154,7 +154,6 @@ void Capture::requestComplete(Request *request, const std::map<Stream *, Buffer for (auto it = buffers.begin(); it != buffers.end(); ++it) { Stream *stream = it->first; Buffer *buffer = it->second; - BufferMemory *mem = &stream->buffers()[buffer->index()]; const std::string &name = streamName_[stream]; info << " " << name @@ -163,7 +162,7 @@ void Capture::requestComplete(Request *request, const std::map<Stream *, Buffer << " bytesused: " << buffer->bytesused(); if (writer_) - writer_->write(buffer, mem, name); + writer_->write(buffer, name); } std::cout << info.str() << std::endl; |