[libcamera-devel] [RFC PATCH v1 05/12] libcamera: framebuffer: Move planes check to constructor
Kieran Bingham
kieran.bingham at ideasonboard.com
Thu Sep 2 11:27:51 CEST 2021
On 02/09/2021 05:22, Laurent Pinchart wrote:
> The FrameBuffer::planes() function checks that planes are correctly
> initialized with an offset. This can be done at construction time
> instead, as the planes are constant. The runtime overhead is reduced,
> and the backtrace generated by the assertion will show where the faulty
> frame buffer is created instead of where it is used, easing debugging.
That sounds very enticing...
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> include/libcamera/framebuffer.h | 9 +--------
> src/libcamera/framebuffer.cpp | 3 +++
> 2 files changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h
> index d5aeff00387b..fd68ed0a139d 100644
> --- a/include/libcamera/framebuffer.h
> +++ b/include/libcamera/framebuffer.h
> @@ -51,14 +51,7 @@ public:
>
> FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie = 0);
>
> - 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_;
> - }
> -
> + const std::vector<Plane> &planes() const { return planes_; }
> Request *request() const;
> const FrameMetadata &metadata() const { return metadata_; }
>
> diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp
> index c99f5b15e6ff..53ef89bf458f 100644
> --- a/src/libcamera/framebuffer.cpp
> +++ b/src/libcamera/framebuffer.cpp
> @@ -199,6 +199,9 @@ FrameBuffer::FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie)
> : Extensible(std::make_unique<Private>()), planes_(planes),
> cookie_(cookie)
> {
> + /* \todo Remove the assertions after sufficient testing */
As a construction time validation event, which is compiled/optimised out
in release builds anyway, I'm tempted to remove the todo here and keep
the ASSERT ...
But either way,
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> + for (const auto &plane : planes_)
> + ASSERT(plane.offset != Plane::kInvalidOffset);
> }
>
> /**
>
More information about the libcamera-devel
mailing list