libcamera: raspberrypi: Remove StaggeredCtrl

There are no users left, remove it.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
This commit is contained in:
Niklas Söderlund 2020-10-27 01:37:10 +01:00
parent 85f2a5c134
commit 82eb3f7e6d
3 changed files with 0 additions and 271 deletions

View file

@ -4,5 +4,4 @@ libcamera_sources += files([
'dma_heaps.cpp',
'raspberrypi.cpp',
'rpi_stream.cpp',
'staggered_ctrl.cpp',
])

View file

@ -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 */

View file

@ -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__ */