@@ -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);
}
@@ -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>();
@@ -330,8 +330,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);
}
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> --- Changes since v1: - Standardize on 'const auto &' - Replace more iterators --- include/libcamera/internal/ipa_data_serializer.h | 6 +++--- src/apps/common/options.cpp | 6 ++---- src/gstreamer/gstlibcamera-controls.cpp.in | 7 +------ src/libcamera/camera.cpp | 4 +--- src/libcamera/converter/converter_v4l2_m2m.cpp | 8 ++++---- src/libcamera/pipeline/ipu3/cio2.cpp | 6 +++--- src/libcamera/pipeline/ipu3/ipu3.cpp | 11 +++-------- src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 5 ++--- src/libcamera/pipeline/vimc/vimc.cpp | 10 ++++------ src/libcamera/sensor/camera_sensor_legacy.cpp | 4 ++-- src/libcamera/sensor/camera_sensor_raw.cpp | 4 ++-- src/libcamera/software_isp/software_isp.cpp | 3 +-- src/libcamera/stream.cpp | 4 ++-- src/libcamera/v4l2_videodevice.cpp | 6 ++---- 14 files changed, 32 insertions(+), 52 deletions(-)