diff options
author | Hirokazu Honda <hiroh@chromium.org> | 2021-08-26 20:25:39 +0900 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-08-30 18:59:10 +0300 |
commit | 887dbdb43978ecae4407d1a916075757bbaaa51d (patch) | |
tree | b7bd77b2b572d56001f179aadad2906787a047aa | |
parent | dde91916f16e7836d28ad4c394678f82c86dcc4b (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.h | 13 | ||||
-rw-r--r-- | src/libcamera/framebuffer.cpp | 5 |
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 */ |