libcamera: Replace iterators with structured bindings
Use structured bindings when iterating over a map in range-based for loops. This improves readability. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
This commit is contained in:
@@ -211,12 +211,12 @@ public:
|
||||
appendPOD<uint32_t>(dataVec, mapLen);
|
||||
|
||||
/* Serialize the members. */
|
||||
for (auto const &it : data) {
|
||||
for (const auto &[key, value] : data) {
|
||||
std::vector<uint8_t> dvec;
|
||||
std::vector<SharedFD> fvec;
|
||||
|
||||
std::tie(dvec, fvec) =
|
||||
IPADataSerializer<K>::serialize(it.first, cs);
|
||||
IPADataSerializer<K>::serialize(key, cs);
|
||||
|
||||
appendPOD<uint32_t>(dataVec, dvec.size());
|
||||
appendPOD<uint32_t>(dataVec, fvec.size());
|
||||
@@ -225,7 +225,7 @@ public:
|
||||
fdsVec.insert(fdsVec.end(), fvec.begin(), fvec.end());
|
||||
|
||||
std::tie(dvec, fvec) =
|
||||
IPADataSerializer<V>::serialize(it.second, cs);
|
||||
IPADataSerializer<V>::serialize(value, cs);
|
||||
|
||||
appendPOD<uint32_t>(dataVec, dvec.size());
|
||||
appendPOD<uint32_t>(dataVec, fvec.size());
|
||||
|
||||
@@ -423,8 +423,7 @@ unsigned int KeyValueParser::maxOptionLength() const
|
||||
{
|
||||
unsigned int maxLength = 0;
|
||||
|
||||
for (auto const &iter : optionsMap_) {
|
||||
const Option &option = iter.second;
|
||||
for (const auto &[name, option] : optionsMap_) {
|
||||
unsigned int length = 10 + strlen(option.name);
|
||||
if (option.argument != ArgumentNone)
|
||||
length += 1 + strlen(option.typeName());
|
||||
@@ -440,8 +439,7 @@ unsigned int KeyValueParser::maxOptionLength() const
|
||||
|
||||
void KeyValueParser::usage(int indent)
|
||||
{
|
||||
for (auto const &iter : optionsMap_) {
|
||||
const Option &option = iter.second;
|
||||
for (const auto &[name, option] : optionsMap_) {
|
||||
std::string argument = std::string(" ") + option.name;
|
||||
|
||||
if (option.argument != ArgumentNone) {
|
||||
|
||||
@@ -252,12 +252,7 @@ void GstCameraControls::setCamera(const std::shared_ptr<libcamera::Camera> &cam)
|
||||
* the pipeline has started and thus before the camera was known.
|
||||
*/
|
||||
ControlList new_controls;
|
||||
for (auto control = controls_acc_.begin();
|
||||
control != controls_acc_.end();
|
||||
++control) {
|
||||
unsigned int id = control->first;
|
||||
ControlValue value = control->second;
|
||||
|
||||
for (const auto &[id, value] : controls_acc_) {
|
||||
const ControlId *cid = capabilities_.idmap().at(id);
|
||||
auto info = capabilities_.find(cid);
|
||||
|
||||
|
||||
@@ -1362,9 +1362,7 @@ int Camera::queueRequest(Request *request)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (auto const &it : request->buffers()) {
|
||||
const Stream *stream = it.first;
|
||||
|
||||
for (const auto &[stream, buffer] : request->buffers()) {
|
||||
if (d->activeStreams_.find(stream) == d->activeStreams_.end()) {
|
||||
LOG(Camera, Error) << "Invalid request";
|
||||
return -EINVAL;
|
||||
|
||||
@@ -646,8 +646,8 @@ int V4L2M2MConverter::start()
|
||||
{
|
||||
int ret;
|
||||
|
||||
for (auto &iter : streams_) {
|
||||
ret = iter.second->start();
|
||||
for (auto &[stream, m2mStream] : streams_) {
|
||||
ret = m2mStream->start();
|
||||
if (ret < 0) {
|
||||
stop();
|
||||
return ret;
|
||||
@@ -662,8 +662,8 @@ int V4L2M2MConverter::start()
|
||||
*/
|
||||
void V4L2M2MConverter::stop()
|
||||
{
|
||||
for (auto &iter : streams_)
|
||||
iter.second->stop();
|
||||
for (auto &[stream, m2mStream] : streams_)
|
||||
m2mStream->stop();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -82,11 +82,11 @@ std::vector<SizeRange> CIO2Device::sizes(const PixelFormat &format) const
|
||||
return {};
|
||||
|
||||
std::vector<SizeRange> sizes;
|
||||
for (const auto &iter : mbusCodesToPixelFormat) {
|
||||
if (iter.second != format)
|
||||
for (const auto &[code, pixelFormat] : mbusCodesToPixelFormat) {
|
||||
if (pixelFormat != format)
|
||||
continue;
|
||||
|
||||
mbusCode = iter.first;
|
||||
mbusCode = code;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -791,8 +791,7 @@ void IPU3CameraData::cancelPendingRequests()
|
||||
while (!pendingRequests_.empty()) {
|
||||
Request *request = pendingRequests_.front();
|
||||
|
||||
for (auto it : request->buffers()) {
|
||||
FrameBuffer *buffer = it.second;
|
||||
for (const auto &[stream, buffer] : request->buffers()) {
|
||||
buffer->_d()->cancel();
|
||||
pipe()->completeBuffer(request, buffer);
|
||||
}
|
||||
@@ -1225,10 +1224,7 @@ void IPU3CameraData::paramsComputed(unsigned int id)
|
||||
return;
|
||||
|
||||
/* Queue all buffers from the request aimed for the ImgU. */
|
||||
for (auto it : info->request->buffers()) {
|
||||
const Stream *stream = it.first;
|
||||
FrameBuffer *outbuffer = it.second;
|
||||
|
||||
for (const auto &[stream, outbuffer] : info->request->buffers()) {
|
||||
if (stream == &outStream_)
|
||||
imgu_->output_->queueBuffer(outbuffer);
|
||||
else if (stream == &vfStream_)
|
||||
@@ -1304,8 +1300,7 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
|
||||
|
||||
/* If the buffer is cancelled force a complete of the whole request. */
|
||||
if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
|
||||
for (auto it : request->buffers()) {
|
||||
FrameBuffer *b = it.second;
|
||||
for (const auto &[stream, b] : request->buffers()) {
|
||||
b->_d()->cancel();
|
||||
pipe()->completeBuffer(request, b);
|
||||
}
|
||||
|
||||
@@ -941,13 +941,12 @@ V4L2SubdeviceFormat CameraData::findBestFormat(const Size &req, unsigned int bit
|
||||
constexpr float penaltyBitDepth = 500.0;
|
||||
|
||||
/* Calculate the closest/best mode from the user requested size. */
|
||||
for (const auto &iter : sensorFormats_) {
|
||||
const unsigned int mbusCode = iter.first;
|
||||
for (const auto &[mbusCode, sizes] : sensorFormats_) {
|
||||
const PixelFormat format = mbusCodeToPixelFormat(mbusCode,
|
||||
BayerFormat::Packing::None);
|
||||
const PixelFormatInfo &info = PixelFormatInfo::info(format);
|
||||
|
||||
for (const Size &size : iter.second) {
|
||||
for (const Size &size : sizes) {
|
||||
double reqAr = static_cast<double>(req.width) / req.height;
|
||||
double fmtAr = static_cast<double>(size.width) / size.height;
|
||||
|
||||
|
||||
@@ -405,8 +405,7 @@ int PipelineHandlerVimc::processControls(VimcCameraData *data, Request *request)
|
||||
{
|
||||
ControlList controls(data->sensor_->controls());
|
||||
|
||||
for (const auto &it : request->controls()) {
|
||||
unsigned int id = it.first;
|
||||
for (const auto &[id, value] : request->controls()) {
|
||||
unsigned int offset;
|
||||
uint32_t cid;
|
||||
|
||||
@@ -423,8 +422,8 @@ int PipelineHandlerVimc::processControls(VimcCameraData *data, Request *request)
|
||||
continue;
|
||||
}
|
||||
|
||||
int32_t value = std::lround(it.second.get<float>() * 128 + offset);
|
||||
controls.set(cid, std::clamp(value, 0, 255));
|
||||
int32_t v4l2Value = std::lround(value.get<float>() * 128 + offset);
|
||||
controls.set(cid, std::clamp(v4l2Value, 0, 255));
|
||||
}
|
||||
|
||||
for (const auto &ctrl : controls)
|
||||
@@ -607,8 +606,7 @@ void VimcCameraData::imageBufferReady(FrameBuffer *buffer)
|
||||
|
||||
/* If the buffer is cancelled force a complete of the whole request. */
|
||||
if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
|
||||
for (auto it : request->buffers()) {
|
||||
FrameBuffer *b = it.second;
|
||||
for (const auto &[stream, b] : request->buffers()) {
|
||||
b->_d()->cancel();
|
||||
pipe->completeBuffer(request, b);
|
||||
}
|
||||
|
||||
@@ -392,8 +392,7 @@ void Request::reuse(ReuseFlag flags)
|
||||
_d()->reset();
|
||||
|
||||
if (flags & ReuseBuffers) {
|
||||
for (auto pair : bufferMap_) {
|
||||
FrameBuffer *buffer = pair.second;
|
||||
for (const auto &[stream, buffer] : bufferMap_) {
|
||||
buffer->_d()->setRequest(this);
|
||||
_d()->pending_.insert(buffer);
|
||||
}
|
||||
|
||||
@@ -536,8 +536,8 @@ void CameraSensorLegacy::initTestPatternModes()
|
||||
* list of supported test patterns.
|
||||
*/
|
||||
std::map<int32_t, controls::draft::TestPatternModeEnum> indexToTestPatternMode;
|
||||
for (const auto &it : testPatternModes)
|
||||
indexToTestPatternMode[it.second] = it.first;
|
||||
for (const auto &[mode, index] : testPatternModes)
|
||||
indexToTestPatternMode[index] = mode;
|
||||
|
||||
for (const ControlValue &value : v4l2TestPattern->second.values()) {
|
||||
const int32_t index = value.get<int32_t>();
|
||||
|
||||
@@ -720,8 +720,8 @@ void CameraSensorRaw::initTestPatternModes()
|
||||
* list of supported test patterns.
|
||||
*/
|
||||
std::map<int32_t, controls::draft::TestPatternModeEnum> indexToTestPatternMode;
|
||||
for (const auto &it : testPatternModes)
|
||||
indexToTestPatternMode[it.second] = it.first;
|
||||
for (const auto &[mode, index] : testPatternModes)
|
||||
indexToTestPatternMode[index] = mode;
|
||||
|
||||
for (const ControlValue &value : v4l2TestPattern->second.values()) {
|
||||
const int32_t index = value.get<int32_t>();
|
||||
|
||||
@@ -332,8 +332,7 @@ int SoftwareIsp::queueBuffers(uint32_t frame, FrameBuffer *input,
|
||||
|
||||
queuedInputBuffers_.push_back(input);
|
||||
|
||||
for (auto iter = outputs.begin(); iter != outputs.end(); iter++) {
|
||||
FrameBuffer *const buffer = iter->second;
|
||||
for (const auto &[stream, buffer] : outputs) {
|
||||
queuedOutputBuffers_.push_back(buffer);
|
||||
process(frame, input, buffer);
|
||||
}
|
||||
|
||||
@@ -108,8 +108,8 @@ std::vector<PixelFormat> StreamFormats::pixelformats() const
|
||||
{
|
||||
std::vector<PixelFormat> formats;
|
||||
|
||||
for (auto const &it : formats_)
|
||||
formats.push_back(it.first);
|
||||
for (const auto &[format, sizes] : formats_)
|
||||
formats.push_back(format);
|
||||
|
||||
return formats;
|
||||
}
|
||||
|
||||
@@ -2042,10 +2042,8 @@ int V4L2VideoDevice::streamOff()
|
||||
state_ = State::Stopping;
|
||||
|
||||
/* Send back all queued buffers. */
|
||||
for (auto it : queuedBuffers_) {
|
||||
FrameBuffer *buffer = it.second;
|
||||
|
||||
cache_->put(it.first);
|
||||
for (const auto &[id, buffer] : queuedBuffers_) {
|
||||
cache_->put(id);
|
||||
buffer->_d()->cancel();
|
||||
bufferReady.emit(buffer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user