summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2022-11-15 09:07:50 +0000
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-11-29 17:15:55 +0200
commitc7524b10e0a07623b8fbb2c4becfd01ca9cb936a (patch)
tree6126b6a94471a13b9544c8ca396e4f9b5c318453
parentdd0a75401f0cf3578ec2d02070dad0df863462d9 (diff)
pipeline: raspberrypi: delayed_controls: Template the ControlRingBuffer class
Convert ControlRingBuffer to a templated class to allow arbitrary ring buffer array types to be defined. Rename ControlRingBuffer to RingBuffer to indicate this. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/libcamera/pipeline/raspberrypi/delayed_controls.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/libcamera/pipeline/raspberrypi/delayed_controls.h b/src/libcamera/pipeline/raspberrypi/delayed_controls.h
index f7f24648..238b86ab 100644
--- a/src/libcamera/pipeline/raspberrypi/delayed_controls.h
+++ b/src/libcamera/pipeline/raspberrypi/delayed_controls.h
@@ -56,17 +56,18 @@ private:
};
static constexpr int listSize = 16;
- class ControlRingBuffer : public std::array<Info, listSize>
+ template<typename T>
+ class RingBuffer : 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);
}
};
@@ -76,7 +77,7 @@ private:
uint32_t queueCount_;
uint32_t writeCount_;
- std::unordered_map<const ControlId *, ControlRingBuffer> values_;
+ std::unordered_map<const ControlId *, RingBuffer<Info>> values_;
};
} /* namespace RPi */