summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHirokazu Honda <hiroh@chromium.org>2021-08-26 20:25:39 +0900
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-08-30 18:59:10 +0300
commit887dbdb43978ecae4407d1a916075757bbaaa51d (patch)
treeb7bd77b2b572d56001f179aadad2906787a047aa
parentdde91916f16e7836d28ad4c394678f82c86dcc4b (diff)
libcamera: framebuffer: Add assertion to detect offset is unfilled
The offset variable is introduced to FrameBuffer::Plane. In order to detect that the plane is used while the offset is not set, this adds the assertion to FrameBuffer::planes(). It should be removed in the future. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--include/libcamera/framebuffer.h13
-rw-r--r--src/libcamera/framebuffer.cpp5
2 files changed, 16 insertions, 2 deletions
diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h
index 5de3c744..d5aeff00 100644
--- a/include/libcamera/framebuffer.h
+++ b/include/libcamera/framebuffer.h
@@ -7,6 +7,8 @@
#ifndef __LIBCAMERA_FRAMEBUFFER_H__
#define __LIBCAMERA_FRAMEBUFFER_H__
+#include <assert.h>
+#include <limits>
#include <stdint.h>
#include <vector>
@@ -41,14 +43,21 @@ class FrameBuffer final : public Extensible
public:
struct Plane {
+ static constexpr unsigned int kInvalidOffset = std::numeric_limits<unsigned int>::max();
FileDescriptor fd;
- unsigned int offset;
+ unsigned int offset = kInvalidOffset;
unsigned int length;
};
FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie = 0);
- const std::vector<Plane> &planes() const { return planes_; }
+ const std::vector<Plane> &planes() const
+ {
+ /* \todo Remove the assertions after sufficient testing */
+ for (const auto &plane : planes_)
+ assert(plane.offset != Plane::kInvalidOffset);
+ return planes_;
+ }
Request *request() const;
const FrameMetadata &metadata() const { return metadata_; }
diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp
index bf7a52ad..c99f5b15 100644
--- a/src/libcamera/framebuffer.cpp
+++ b/src/libcamera/framebuffer.cpp
@@ -171,6 +171,11 @@ FrameBuffer::Private::Private()
*/
/**
+ * \var FrameBuffer::Plane::kInvalidOffset
+ * \brief Invalid offset value, to identify uninitialized planes
+ */
+
+/**
* \var FrameBuffer::Plane::fd
* \brief The dmabuf file descriptor
*/