| Message ID | 20260212151238.3736234-2-laurent.pinchart@ideasonboard.com |
|---|---|
| State | Accepted |
| Headers | show |
| Series |
|
| Related | show |
2026. 02. 12. 16:12 keltezéssel, Laurent Pinchart írta: > 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 > --- While looking at some of the changes, I noticed that `Request::reuse()` is not converted (probably because it uses `pair` as the name). Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > 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(-) > > diff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h > index 927f5c4c7337..61bada52f691 100644 > --- a/include/libcamera/internal/ipa_data_serializer.h > +++ b/include/libcamera/internal/ipa_data_serializer.h > @@ -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()); > diff --git a/src/apps/common/options.cpp b/src/apps/common/options.cpp > index b4ea1afe2136..b95f95afadf3 100644 > --- a/src/apps/common/options.cpp > +++ b/src/apps/common/options.cpp > @@ -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) { > diff --git a/src/gstreamer/gstlibcamera-controls.cpp.in b/src/gstreamer/gstlibcamera-controls.cpp.in > index 6faf3ee7a6c3..c3f0695f9b90 100644 > --- a/src/gstreamer/gstlibcamera-controls.cpp.in > +++ b/src/gstreamer/gstlibcamera-controls.cpp.in > @@ -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); > > diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp > index 7c0e93ff483f..f724a1be5e3d 100644 > --- a/src/libcamera/camera.cpp > +++ b/src/libcamera/camera.cpp > @@ -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; > diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp > index 37377ab24952..4427a37c6fc0 100644 > --- a/src/libcamera/converter/converter_v4l2_m2m.cpp > +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp > @@ -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(); > } > > /** > diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp > index 6f9c055f4d12..b6fe84fe70cc 100644 > --- a/src/libcamera/pipeline/ipu3/cio2.cpp > +++ b/src/libcamera/pipeline/ipu3/cio2.cpp > @@ -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; > } > > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp > index 0190f677e679..bac6f1c2ef40 100644 > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp > @@ -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); > } > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp > index fb8e466f6e3b..de43603ddf69 100644 > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp > @@ -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; > > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp > index 4a03c149a617..08b1007528f2 100644 > --- a/src/libcamera/pipeline/vimc/vimc.cpp > +++ b/src/libcamera/pipeline/vimc/vimc.cpp > @@ -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); > } > diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp > index 39c34200b0ff..6a683821f219 100644 > --- a/src/libcamera/sensor/camera_sensor_legacy.cpp > +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp > @@ -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>(); > diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp > index 81d8985ee134..10eba0331fe8 100644 > --- a/src/libcamera/sensor/camera_sensor_raw.cpp > +++ b/src/libcamera/sensor/camera_sensor_raw.cpp > @@ -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>(); > diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp > index a83986b787b7..167aaa0441c9 100644 > --- a/src/libcamera/software_isp/software_isp.cpp > +++ b/src/libcamera/software_isp/software_isp.cpp > @@ -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); > } > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp > index f091487c9353..8df70dbfd10b 100644 > --- a/src/libcamera/stream.cpp > +++ b/src/libcamera/stream.cpp > @@ -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; > } > diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp > index 25b61d049a0e..61a4551c63c5 100644 > --- a/src/libcamera/v4l2_videodevice.cpp > +++ b/src/libcamera/v4l2_videodevice.cpp > @@ -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); > }
On Fri, Feb 13, 2026 at 10:16:06AM +0100, Barnabás Pőcze wrote: > 2026. 02. 12. 16:12 keltezéssel, Laurent Pinchart írta: > > 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 > > --- > > While looking at some of the changes, I noticed that `Request::reuse()` > is not converted (probably because it uses `pair` as the name). Good catch. I'll fix it in v3. > Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > > > 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(-) > > > > diff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h > > index 927f5c4c7337..61bada52f691 100644 > > --- a/include/libcamera/internal/ipa_data_serializer.h > > +++ b/include/libcamera/internal/ipa_data_serializer.h > > @@ -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()); > > diff --git a/src/apps/common/options.cpp b/src/apps/common/options.cpp > > index b4ea1afe2136..b95f95afadf3 100644 > > --- a/src/apps/common/options.cpp > > +++ b/src/apps/common/options.cpp > > @@ -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) { > > diff --git a/src/gstreamer/gstlibcamera-controls.cpp.in b/src/gstreamer/gstlibcamera-controls.cpp.in > > index 6faf3ee7a6c3..c3f0695f9b90 100644 > > --- a/src/gstreamer/gstlibcamera-controls.cpp.in > > +++ b/src/gstreamer/gstlibcamera-controls.cpp.in > > @@ -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); > > > > diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp > > index 7c0e93ff483f..f724a1be5e3d 100644 > > --- a/src/libcamera/camera.cpp > > +++ b/src/libcamera/camera.cpp > > @@ -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; > > diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp > > index 37377ab24952..4427a37c6fc0 100644 > > --- a/src/libcamera/converter/converter_v4l2_m2m.cpp > > +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp > > @@ -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(); > > } > > > > /** > > diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp > > index 6f9c055f4d12..b6fe84fe70cc 100644 > > --- a/src/libcamera/pipeline/ipu3/cio2.cpp > > +++ b/src/libcamera/pipeline/ipu3/cio2.cpp > > @@ -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; > > } > > > > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp > > index 0190f677e679..bac6f1c2ef40 100644 > > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp > > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp > > @@ -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); > > } > > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp > > index fb8e466f6e3b..de43603ddf69 100644 > > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp > > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp > > @@ -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; > > > > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp > > index 4a03c149a617..08b1007528f2 100644 > > --- a/src/libcamera/pipeline/vimc/vimc.cpp > > +++ b/src/libcamera/pipeline/vimc/vimc.cpp > > @@ -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); > > } > > diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp > > index 39c34200b0ff..6a683821f219 100644 > > --- a/src/libcamera/sensor/camera_sensor_legacy.cpp > > +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp > > @@ -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>(); > > diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp > > index 81d8985ee134..10eba0331fe8 100644 > > --- a/src/libcamera/sensor/camera_sensor_raw.cpp > > +++ b/src/libcamera/sensor/camera_sensor_raw.cpp > > @@ -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>(); > > diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp > > index a83986b787b7..167aaa0441c9 100644 > > --- a/src/libcamera/software_isp/software_isp.cpp > > +++ b/src/libcamera/software_isp/software_isp.cpp > > @@ -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); > > } > > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp > > index f091487c9353..8df70dbfd10b 100644 > > --- a/src/libcamera/stream.cpp > > +++ b/src/libcamera/stream.cpp > > @@ -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; > > } > > diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp > > index 25b61d049a0e..61a4551c63c5 100644 > > --- a/src/libcamera/v4l2_videodevice.cpp > > +++ b/src/libcamera/v4l2_videodevice.cpp > > @@ -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); > > }
diff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h index 927f5c4c7337..61bada52f691 100644 --- a/include/libcamera/internal/ipa_data_serializer.h +++ b/include/libcamera/internal/ipa_data_serializer.h @@ -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()); diff --git a/src/apps/common/options.cpp b/src/apps/common/options.cpp index b4ea1afe2136..b95f95afadf3 100644 --- a/src/apps/common/options.cpp +++ b/src/apps/common/options.cpp @@ -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) { diff --git a/src/gstreamer/gstlibcamera-controls.cpp.in b/src/gstreamer/gstlibcamera-controls.cpp.in index 6faf3ee7a6c3..c3f0695f9b90 100644 --- a/src/gstreamer/gstlibcamera-controls.cpp.in +++ b/src/gstreamer/gstlibcamera-controls.cpp.in @@ -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); diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp index 7c0e93ff483f..f724a1be5e3d 100644 --- a/src/libcamera/camera.cpp +++ b/src/libcamera/camera.cpp @@ -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; diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp index 37377ab24952..4427a37c6fc0 100644 --- a/src/libcamera/converter/converter_v4l2_m2m.cpp +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp @@ -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(); } /** diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp index 6f9c055f4d12..b6fe84fe70cc 100644 --- a/src/libcamera/pipeline/ipu3/cio2.cpp +++ b/src/libcamera/pipeline/ipu3/cio2.cpp @@ -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; } diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 0190f677e679..bac6f1c2ef40 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -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); } diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp index fb8e466f6e3b..de43603ddf69 100644 --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp @@ -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; diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 4a03c149a617..08b1007528f2 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -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); } diff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp index 39c34200b0ff..6a683821f219 100644 --- a/src/libcamera/sensor/camera_sensor_legacy.cpp +++ b/src/libcamera/sensor/camera_sensor_legacy.cpp @@ -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>(); diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp index 81d8985ee134..10eba0331fe8 100644 --- a/src/libcamera/sensor/camera_sensor_raw.cpp +++ b/src/libcamera/sensor/camera_sensor_raw.cpp @@ -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>(); diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp index a83986b787b7..167aaa0441c9 100644 --- a/src/libcamera/software_isp/software_isp.cpp +++ b/src/libcamera/software_isp/software_isp.cpp @@ -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); } diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp index f091487c9353..8df70dbfd10b 100644 --- a/src/libcamera/stream.cpp +++ b/src/libcamera/stream.cpp @@ -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; } diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp index 25b61d049a0e..61a4551c63c5 100644 --- a/src/libcamera/v4l2_videodevice.cpp +++ b/src/libcamera/v4l2_videodevice.cpp @@ -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(-)