[libcamera-devel] [PATCH v4 4/8] libcamera: raspberrypi: Remove StaggeredCtrl

Naushir Patuck naush at raspberrypi.com
Fri Jan 8 16:38:01 CET 2021


Hi Niklas,

Thank you for your patch.


On Tue, 15 Dec 2020 at 00:48, Niklas Söderlund <
niklas.soderlund at ragnatech.se> wrote:

> There are no users left, remove it.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>

Reviewed-by: Naushir Patuck <naush at raspberrypi.com>


> ---
>  .../pipeline/raspberrypi/meson.build          |   1 -
>  .../pipeline/raspberrypi/staggered_ctrl.cpp   | 174 ------------------
>  .../pipeline/raspberrypi/staggered_ctrl.h     |  96 ----------
>  3 files changed, 271 deletions(-)
>  delete mode 100644 src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
>  delete mode 100644 src/libcamera/pipeline/raspberrypi/staggered_ctrl.h
>
> diff --git a/src/libcamera/pipeline/raspberrypi/meson.build
> b/src/libcamera/pipeline/raspberrypi/meson.build
> index 7c5b6ff73741c968..f1a2f5ee72c2a0dd 100644
> --- a/src/libcamera/pipeline/raspberrypi/meson.build
> +++ b/src/libcamera/pipeline/raspberrypi/meson.build
> @@ -4,5 +4,4 @@ libcamera_sources += files([
>      'dma_heaps.cpp',
>      'raspberrypi.cpp',
>      'rpi_stream.cpp',
> -    'staggered_ctrl.cpp',
>  ])
> diff --git a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
> b/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
> deleted file mode 100644
> index 62605c0fceee7d11..0000000000000000
> --- a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
> +++ /dev/null
> @@ -1,174 +0,0 @@
> -/* SPDX-License-Identifier: LGPL-2.1-or-later */
> -/*
> - * Copyright (C) 2020, Raspberry Pi (Trading) Ltd.
> - *
> - * staggered_ctrl.cpp - Helper for writing staggered ctrls to a V4L2
> device.
> - */
> -
> -#include "staggered_ctrl.h"
> -
> -#include <algorithm>
> -
> -#include <libcamera/controls.h>
> -
> -#include "libcamera/internal/log.h"
> -#include "libcamera/internal/utils.h"
> -#include "libcamera/internal/v4l2_videodevice.h"
> -
> -namespace libcamera {
> -
> -LOG_DEFINE_CATEGORY(RPI_S_W)
> -
> -namespace RPi {
> -
> -void StaggeredCtrl::init(V4L2VideoDevice *dev,
> -         std::initializer_list<std::pair<const uint32_t, uint8_t>>
> delayList)
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -
> -       dev_ = dev;
> -       delay_ = delayList;
> -       ctrl_.clear();
> -
> -       /* Find the largest delay across all controls. */
> -       maxDelay_ = 0;
> -       for (auto const &p : delay_) {
> -               LOG(RPI_S_W, Info) << "Init ctrl "
> -                                  << utils::hex(p.first) << " with delay "
> -                                  << static_cast<int>(p.second);
> -               maxDelay_ = std::max(maxDelay_, p.second);
> -       }
> -
> -       init_ = true;
> -}
> -
> -void StaggeredCtrl::reset()
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -
> -       int lastSetCount = setCount_;
> -       std::unordered_map<uint32_t, int32_t> lastVal;
> -
> -       /* Reset the counters. */
> -       setCount_ = getCount_ = 0;
> -
> -       /* Look for the last set values. */
> -       for (auto const &c : ctrl_)
> -               lastVal[c.first] = c.second[lastSetCount].value;
> -
> -       /* Apply the last set values as the next to be applied. */
> -       ctrl_.clear();
> -       for (auto &c : lastVal)
> -               ctrl_[c.first][setCount_] = CtrlInfo(c.second);
> -}
> -
> -bool StaggeredCtrl::set(uint32_t ctrl, int32_t value)
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -
> -       /* Can we find this ctrl as one that is registered? */
> -       if (delay_.find(ctrl) == delay_.end())
> -               return false;
> -
> -       ctrl_[ctrl][setCount_].value = value;
> -       ctrl_[ctrl][setCount_].updated = true;
> -
> -       return true;
> -}
> -
> -bool StaggeredCtrl::set(std::initializer_list<std::pair<const uint32_t,
> int32_t>> ctrlList)
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -
> -       for (auto const &p : ctrlList) {
> -               /* Can we find this ctrl? */
> -               if (delay_.find(p.first) == delay_.end())
> -                       return false;
> -
> -               ctrl_[p.first][setCount_] = CtrlInfo(p.second);
> -       }
> -
> -       return true;
> -}
> -
> -bool StaggeredCtrl::set(const ControlList &controls)
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -
> -       for (auto const &p : controls) {
> -               /* Can we find this ctrl? */
> -               if (delay_.find(p.first) == delay_.end())
> -                       return false;
> -
> -               ctrl_[p.first][setCount_] =
> CtrlInfo(p.second.get<int32_t>());
> -               LOG(RPI_S_W, Debug) << "Setting ctrl "
> -                                   << utils::hex(p.first) << " to "
> -                                   << ctrl_[p.first][setCount_].value
> -                                   << " at index "
> -                                   << setCount_;
> -       }
> -
> -       return true;
> -}
> -
> -int StaggeredCtrl::write()
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -       ControlList controls(dev_->controls());
> -
> -       for (auto &p : ctrl_) {
> -               int delayDiff = maxDelay_ - delay_[p.first];
> -               int index = std::max<int>(0, setCount_ - delayDiff);
> -
> -               if (p.second[index].updated) {
> -                       /* We need to write this value out. */
> -                       controls.set(p.first, p.second[index].value);
> -                       p.second[index].updated = false;
> -                       LOG(RPI_S_W, Debug) << "Writing ctrl "
> -                                           << utils::hex(p.first) << " to
> "
> -                                           << p.second[index].value
> -                                           << " at index "
> -                                           << index;
> -               }
> -       }
> -
> -       nextFrame();
> -       return dev_->setControls(&controls);
> -}
> -
> -void StaggeredCtrl::get(std::unordered_map<uint32_t, int32_t> &ctrl,
> uint8_t offset)
> -{
> -       std::lock_guard<std::mutex> lock(lock_);
> -
> -       /* Account for the offset to reset the getCounter. */
> -       getCount_ += offset + 1;
> -
> -       ctrl.clear();
> -       for (auto &p : ctrl_) {
> -               int index = std::max<int>(0, getCount_ - maxDelay_);
> -               ctrl[p.first] = p.second[index].value;
> -               LOG(RPI_S_W, Debug) << "Getting ctrl "
> -                                   << utils::hex(p.first) << " to "
> -                                   << p.second[index].value
> -                                   << " at index "
> -                                   << index;
> -       }
> -}
> -
> -void StaggeredCtrl::nextFrame()
> -{
> -       /* Advance the control history to the next frame */
> -       int prevCount = setCount_;
> -       setCount_++;
> -
> -       LOG(RPI_S_W, Debug) << "Next frame, set index is " << setCount_;
> -
> -       for (auto &p : ctrl_) {
> -               p.second[setCount_].value = p.second[prevCount].value;
> -               p.second[setCount_].updated = false;
> -       }
> -}
> -
> -} /* namespace RPi */
> -
> -} /* namespace libcamera */
> diff --git a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.h
> b/src/libcamera/pipeline/raspberrypi/staggered_ctrl.h
> deleted file mode 100644
> index 382fa31a685357f2..0000000000000000
> --- a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.h
> +++ /dev/null
> @@ -1,96 +0,0 @@
> -/* SPDX-License-Identifier: LGPL-2.1-or-later */
> -/*
> - * Copyright (C) 2020, Raspberry Pi (Trading) Ltd.
> - *
> - * staggered_ctrl.h - Helper for writing staggered ctrls to a V4L2 device.
> - */
> -#ifndef __LIBCAMERA_PIPELINE_RASPBERRYPI_STAGGERED_CTRL_H__
> -#define __LIBCAMERA_PIPELINE_RASPBERRYPI_STAGGERED_CTRL_H__
> -
> -#include <array>
> -#include <initializer_list>
> -#include <mutex>
> -#include <unordered_map>
> -#include <utility>
> -
> -namespace libcamera {
> -
> -class ControlList;
> -class V4L2VideoDevice;
> -
> -namespace RPi {
> -
> -class StaggeredCtrl
> -{
> -public:
> -       StaggeredCtrl()
> -               : init_(false), setCount_(0), getCount_(0), maxDelay_(0)
> -       {
> -       }
> -
> -       operator bool() const
> -       {
> -               return init_;
> -       }
> -
> -       void init(V4L2VideoDevice *dev,
> -                 std::initializer_list<std::pair<const uint32_t,
> uint8_t>> delayList);
> -       void reset();
> -
> -       void get(std::unordered_map<uint32_t, int32_t> &ctrl, uint8_t
> offset = 0);
> -
> -       bool set(uint32_t ctrl, int32_t value);
> -       bool set(std::initializer_list<std::pair<const uint32_t, int32_t>>
> ctrlList);
> -       bool set(const ControlList &controls);
> -
> -       int write();
> -
> -private:
> -       void nextFrame();
> -
> -       /* listSize must be a power of 2. */
> -       static constexpr int listSize = (1 << 4);
> -       struct CtrlInfo {
> -               CtrlInfo()
> -                       : value(0), updated(false)
> -               {
> -               }
> -
> -               CtrlInfo(int32_t value_)
> -                       : value(value_), updated(true)
> -               {
> -               }
> -
> -               int32_t value;
> -               bool updated;
> -       };
> -
> -       class CircularArray : public std::array<CtrlInfo, listSize>
> -       {
> -       public:
> -               CtrlInfo &operator[](int index)
> -               {
> -                       return std::array<CtrlInfo,
> listSize>::operator[](index & (listSize - 1));
> -               }
> -
> -               const CtrlInfo &operator[](int index) const
> -               {
> -                       return std::array<CtrlInfo,
> listSize>::operator[](index & (listSize - 1));
> -               }
> -       };
> -
> -       bool init_;
> -       uint32_t setCount_;
> -       uint32_t getCount_;
> -       uint8_t maxDelay_;
> -       V4L2VideoDevice *dev_;
> -       std::unordered_map<uint32_t, uint8_t> delay_;
> -       std::unordered_map<uint32_t, CircularArray> ctrl_;
> -       std::mutex lock_;
> -};
> -
> -} /* namespace RPi */
> -
> -} /* namespace libcamera */
> -
> -#endif /* __LIBCAMERA_PIPELINE_RASPBERRYPI_STAGGERED_CTRL_H__ */
> --
> 2.29.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20210108/a92a4176/attachment-0001.htm>


More information about the libcamera-devel mailing list