[libcamera-devel] [PATCH v2 1/7] delayed_controls: Template the ControlRingBuffer class

David Plowman david.plowman at raspberrypi.com
Fri Sep 23 11:19:24 CEST 2022


Hi Naush

Thanks for the patch!

On Mon, 5 Sept 2022 at 08:40, Naushir Patuck via libcamera-devel
<libcamera-devel at lists.libcamera.org> wrote:
>
> Convert ControlRingBuffer to a templated class to allow arbitrary ring buffer
> array types to be defined.
>
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>

Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
Tested-by: David Plowman <david.plowman at raspberrypi.com>

Only tested on the Raspberry Pi, of course!

Thanks
David

> ---
>  include/libcamera/internal/delayed_controls.h | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/include/libcamera/internal/delayed_controls.h b/include/libcamera/internal/delayed_controls.h
> index aef37077103c..f6e622f1dfba 100644
> --- a/include/libcamera/internal/delayed_controls.h
> +++ b/include/libcamera/internal/delayed_controls.h
> @@ -53,17 +53,18 @@ private:
>
>         /* \todo Make the listSize configurable at instance creation time. */
>         static constexpr int listSize = 16;
> -       class ControlRingBuffer : public std::array<Info, listSize>
> +       template<typename T>
> +       class ControlRingBuffer : public std::array<T, listSize>
>         {
>         public:
> -               Info &operator[](unsigned int index)
> +               T &operator[](unsigned int index)
>                 {
> -                       return std::array<Info, listSize>::operator[](index % listSize);
> +                       return std::array<T, listSize>::operator[](index % listSize);
>                 }
>
> -               const Info &operator[](unsigned int index) const
> +               const T &operator[](unsigned int index) const
>                 {
> -                       return std::array<Info, listSize>::operator[](index % listSize);
> +                       return std::array<T, listSize>::operator[](index % listSize);
>                 }
>         };
>
> @@ -75,7 +76,7 @@ private:
>         uint32_t queueCount_;
>         uint32_t writeCount_;
>         /* \todo Evaluate if we should index on ControlId * or unsigned int */
> -       std::unordered_map<const ControlId *, ControlRingBuffer> values_;
> +       std::unordered_map<const ControlId *, ControlRingBuffer<Info>> values_;
>  };
>
>  } /* namespace libcamera */
> --
> 2.25.1
>


More information about the libcamera-devel mailing list