[v2,1/4] libcamera: Replace iterators with structured bindings
diff mbox series

Message ID 20260212151238.3736234-2-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • libcamera: Clean up iterators
Related show

Commit Message

Laurent Pinchart Feb. 12, 2026, 3:12 p.m. UTC
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(-)

Comments

Barnabás Pőcze Feb. 13, 2026, 9:16 a.m. UTC | #1
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);
>   	}
Laurent Pinchart Feb. 19, 2026, 2:36 p.m. UTC | #2
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);
> >   	}

Patch
diff mbox series

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);
 	}