From patchwork Thu Feb 12 15:12:35 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 26137 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 720CBBD78E for ; Thu, 12 Feb 2026 15:12:45 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 061D3621D7; Thu, 12 Feb 2026 16:12:43 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="SN1FIDfg"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 6A02062181 for ; Thu, 12 Feb 2026 16:12:41 +0100 (CET) Received: from killaraus.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 5EEFD492 for ; Thu, 12 Feb 2026 16:11:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1770909113; bh=0YoYr555kLE2sbHXfYUIU5Iy3OLe/YpAr+bY/jGzJZc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=SN1FIDfgAFaNnOI3gENkBd9BgpC+7lHsbLZiX8/vC4Motw3zl5fRbwsd+dHzvscD4 Jn91hHsXn7AQbe70AK53GDfVpWVA/Cp8BK6lS1R0+ybroVkaMu/OEjVpTD7WLUhKpX ZeERB4DqZq7+qTRZVXWEjz9MhRBcnbHx8cKl694s= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [PATCH v2 1/4] libcamera: Replace iterators with structured bindings Date: Thu, 12 Feb 2026 17:12:35 +0200 Message-ID: <20260212151238.3736234-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> References: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Use structured bindings when iterating over a map in range-based for loops. This improves readability. Signed-off-by: Laurent Pinchart --- 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(-) 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(dataVec, mapLen); /* Serialize the members. */ - for (auto const &it : data) { + for (const auto &[key, value] : data) { std::vector dvec; std::vector fvec; std::tie(dvec, fvec) = - IPADataSerializer::serialize(it.first, cs); + IPADataSerializer::serialize(key, cs); appendPOD(dataVec, dvec.size()); appendPOD(dataVec, fvec.size()); @@ -225,7 +225,7 @@ public: fdsVec.insert(fdsVec.end(), fvec.begin(), fvec.end()); std::tie(dvec, fvec) = - IPADataSerializer::serialize(it.second, cs); + IPADataSerializer::serialize(value, cs); appendPOD(dataVec, dvec.size()); appendPOD(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 &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 CIO2Device::sizes(const PixelFormat &format) const return {}; std::vector 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(req.width) / req.height; double fmtAr = static_cast(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() * 128 + offset); - controls.set(cid, std::clamp(value, 0, 255)); + int32_t v4l2Value = std::lround(value.get() * 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 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(); 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 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(); 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 StreamFormats::pixelformats() const { std::vector 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); } From patchwork Thu Feb 12 15:12:36 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 26138 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C7597C3292 for ; Thu, 12 Feb 2026 15:12:46 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C21C0621D4; Thu, 12 Feb 2026 16:12:44 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="N53vYzML"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DBB5C61FBF for ; Thu, 12 Feb 2026 16:12:42 +0100 (CET) Received: from killaraus.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 9F57D492 for ; Thu, 12 Feb 2026 16:11:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1770909114; bh=pLIahHSoKgx89GFUUhzUm0U6fkVG3MnV+qhO77A/azY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=N53vYzMLzxLTqBSo5H/pgk5O42kfPFz/49w5wyV2FlG04rRjQogWMBS9Iok9sR4ub gMrYkr5rUyEerzlpvmoA1KlHchLP60cqizoQiKVEZcnYsGvrT/rGjoKLSq/rBfV4ej gwDGKtodvX/HVECBM+n68DIdzngylLp2gFF110DE= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [PATCH v2 2/4] libcamera: Replace iterators with range-based for loops Date: Thu, 12 Feb 2026 17:12:36 +0200 Message-ID: <20260212151238.3736234-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> References: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Use range-based for loops instead of iterators when iterating over a container. This improves readability. Signed-off-by: Laurent Pinchart --- include/libcamera/base/utils.h | 8 ++--- src/gstreamer/gstlibcamera-utils.cpp | 50 +++++++++++----------------- src/ipa/rpi/controller/rpi/agc.cpp | 4 +-- 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/include/libcamera/base/utils.h b/include/libcamera/base/utils.h index 4373bc20d42e..37f0d065f82f 100644 --- a/include/libcamera/base/utils.h +++ b/include/libcamera/base/utils.h @@ -110,13 +110,13 @@ std::string join(const Container &items, const std::string &sep, UnaryOp op) std::ostringstream ss; bool first = true; - for (auto it = std::begin(items); it != std::end(items); ++it) { + for (const auto &item : items) { if (!first) ss << sep; else first = false; - ss << op(*it); + ss << op(item); } return ss.str(); @@ -128,13 +128,13 @@ std::string join(const Container &items, const std::string &sep) std::ostringstream ss; bool first = true; - for (auto it = std::begin(items); it != std::end(items); ++it) { + for (const auto &item : items) { if (!first) ss << sep; else first = false; - ss << *it; + ss << item; } return ss.str(); diff --git a/src/gstreamer/gstlibcamera-utils.cpp b/src/gstreamer/gstlibcamera-utils.cpp index bfb094c94641..6541d478c83d 100644 --- a/src/gstreamer/gstlibcamera-utils.cpp +++ b/src/gstreamer/gstlibcamera-utils.cpp @@ -749,10 +749,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * switch (value.type()) { case ControlTypeBool: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_boolean(&x, *it); + g_value_set_boolean(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -762,10 +761,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeByte: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_uint(&x, *it); + g_value_set_uint(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -775,10 +773,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeUnsigned16: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_uint(&x, *it); + g_value_set_uint(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -788,10 +785,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeUnsigned32: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_uint(&x, *it); + g_value_set_uint(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -801,10 +797,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeInteger32: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_int(&x, *it); + g_value_set_int(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -827,10 +822,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeInteger64: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_int64(&x, *it); + g_value_set_int64(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -840,10 +834,9 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeFloat: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) { + for (const auto &item : value.get>()) { g_value_init(&x, type); - g_value_set_float(&x, *it); + g_value_set_float(&x, item); gst_value_array_append_and_take_value(&v, &x); } } else { @@ -862,27 +855,24 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId * break; case ControlTypeSize: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) - gst_libcamera_gvalue_set_size(&v, *it); + for (const auto &item : value.get>()) + gst_libcamera_gvalue_set_size(&v, item); } else { gst_libcamera_gvalue_set_size(&v, value.get()); } break; case ControlTypePoint: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) - gst_libcamera_gvalue_set_point(&v, *it); + for (const auto &item : value.get>()) + gst_libcamera_gvalue_set_point(&v, item); } else { gst_libcamera_gvalue_set_point(&v, value.get()); } break; case ControlTypeRectangle: if (is_array) { - Span data = value.get>(); - for (auto it = data.begin(); it != data.end(); ++it) - gst_libcamera_gvalue_set_rectangle(&v, *it); + for (const auto &item : value.get>()) + gst_libcamera_gvalue_set_rectangle(&v, item); } else { gst_libcamera_gvalue_set_rectangle(&v, value.get()); } diff --git a/src/ipa/rpi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp index afda2e364f64..a8d91f43df29 100644 --- a/src/ipa/rpi/controller/rpi/agc.cpp +++ b/src/ipa/rpi/controller/rpi/agc.cpp @@ -45,10 +45,10 @@ int Agc::read(const libcamera::YamlObject ¶ms) } const auto &channels = params["channels"].asList(); - for (auto ch = channels.begin(); ch != channels.end(); ch++) { + for (const auto &ch : channels) { LOG(RPiAgc, Debug) << "Read AGC channel"; channelData_.emplace_back(); - int ret = channelData_.back().channel.read(*ch, getHardwareConfig()); + int ret = channelData_.back().channel.read(ch, getHardwareConfig()); if (ret) return ret; } From patchwork Thu Feb 12 15:12:37 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 26139 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id D255AC32EA for ; Thu, 12 Feb 2026 15:12:47 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 572D361FBF; Thu, 12 Feb 2026 16:12:47 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="cPOrMGY2"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id EA7A0621CC for ; Thu, 12 Feb 2026 16:12:43 +0100 (CET) Received: from killaraus.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id DBA2D492 for ; Thu, 12 Feb 2026 16:11:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1770909116; bh=l+01Hbanx+4e9pwhpj6nDti2Vnjhyi23IyAa1Ba30No=; h=From:To:Subject:Date:In-Reply-To:References:From; b=cPOrMGY2mMHrxsA74LIJF7g/ZrF9r0sBXhXCqwlXhOUxaJxxz6Q6aOk2RDj2wjNGA aF4Fn+PmkerTPJB3okD0DjhxT0u3lxpm5CP1YmwOaj5NXJ9zxRpDGES2DTHgmVsAa0 rgS3vONQFdXdz2PXAsYH8RiwpNZF/g0ReuZCyRFY= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [PATCH v2 3/4] libcamera: Use `it` variable name for iterators only Date: Thu, 12 Feb 2026 17:12:37 +0200 Message-ID: <20260212151238.3736234-4-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> References: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Using the name `it` for a variable that is not an iterator is confusing. Give the variable a more explanatory name. Signed-off-by: Laurent Pinchart --- include/libcamera/internal/ipa_data_serializer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h index 61bada52f691..0dda76d5b1d1 100644 --- a/include/libcamera/internal/ipa_data_serializer.h +++ b/include/libcamera/internal/ipa_data_serializer.h @@ -114,12 +114,12 @@ public: appendPOD(dataVec, vecLen); /* Serialize the members. */ - for (auto const &it : data) { + for (const auto &value : data) { std::vector dvec; std::vector fvec; std::tie(dvec, fvec) = - IPADataSerializer::serialize(it, cs); + IPADataSerializer::serialize(value, cs); appendPOD(dataVec, dvec.size()); appendPOD(dataVec, fvec.size()); From patchwork Thu Feb 12 15:12:38 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 26140 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 74558BD78E for ; Thu, 12 Feb 2026 15:12:48 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id ECBB3621DA; Thu, 12 Feb 2026 16:12:47 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="mj4CzMAT"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 3C83D621CC for ; Thu, 12 Feb 2026 16:12:45 +0100 (CET) Received: from killaraus.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 2950611EB for ; Thu, 12 Feb 2026 16:11:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1770909117; bh=RWU4+ax/7Hd21GYl4lk7oADEjsAkvWNhBTefYE0iQCk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=mj4CzMATnFMmwV6hBbcrG0EaL6yTRYkTGl64/m8+Lxm7qhyzYRx6zpdAP086Avptl E7PYSRFnUxK2w9W6XsvsomqP1RmbF4Sbyy7MOpbFKcLJhsijnY1k9MKcNEYYm+r07L qsusqs2THwPk33PZ693r4Q40tSIiR1zMe+AkpFkc= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [PATCH v2 4/4] libcamera: Standardize on 'const auto' Date: Thu, 12 Feb 2026 17:12:38 +0200 Message-ID: <20260212151238.3736234-5-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> References: <20260212151238.3736234-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 'const auto' and 'auto const' are interchanggeable in C++. There are 446 occurrences of the former in the code base, and 67 occurrences of the latter. Standardize on the winner. Signed-off-by: Laurent Pinchart --- .../guides/application-developer.rst | 2 +- include/libcamera/base/utils.h | 2 +- src/apps/common/stream_options.cpp | 4 ++-- src/ipa/ipu3/ipu3.cpp | 8 +++---- src/ipa/mali-c55/mali-c55.cpp | 8 +++---- src/ipa/rkisp1/rkisp1.cpp | 8 +++---- src/ipa/rpi/common/ipa_base.cpp | 4 ++-- src/ipa/rpi/controller/controller.cpp | 6 ++--- src/ipa/rpi/controller/rpi/agc_channel.cpp | 2 +- src/ipa/rpi/controller/rpi/lux.cpp | 2 +- src/ipa/rpi/pisp/pisp.cpp | 2 +- src/ipa/rpi/vc4/vc4.cpp | 2 +- src/ipa/simple/soft_simple.cpp | 8 +++---- src/libcamera/delayed_controls.cpp | 4 ++-- src/libcamera/media_device.cpp | 2 +- src/libcamera/pipeline/mali-c55/mali-c55.cpp | 2 +- .../pipeline/rpi/common/delayed_controls.cpp | 4 ++-- .../pipeline/rpi/common/pipeline_base.cpp | 24 +++++++++---------- .../pipeline/rpi/common/rpi_stream.cpp | 8 +++---- src/libcamera/pipeline/rpi/pisp/pisp.cpp | 6 ++--- src/libcamera/pipeline/rpi/vc4/vc4.cpp | 2 +- src/libcamera/pipeline/virtual/virtual.cpp | 2 +- src/libcamera/stream.cpp | 4 ++-- src/libcamera/v4l2_videodevice.cpp | 2 +- test/media_device/media_device_print_test.cpp | 10 ++++---- test/v4l2_videodevice/buffer_cache.cpp | 2 +- 26 files changed, 65 insertions(+), 65 deletions(-) diff --git a/Documentation/guides/application-developer.rst b/Documentation/guides/application-developer.rst index 06c07d1e9449..918077af1d22 100644 --- a/Documentation/guides/application-developer.rst +++ b/Documentation/guides/application-developer.rst @@ -82,7 +82,7 @@ cameras in the system: .. code:: cpp - for (auto const &camera : cm->cameras()) + for (const auto &camera : cm->cameras()) std::cout << camera->id() << std::endl; Printing the camera id lists the machine-readable unique identifiers, so for diff --git a/include/libcamera/base/utils.h b/include/libcamera/base/utils.h index 37f0d065f82f..7083b7ce9ce9 100644 --- a/include/libcamera/base/utils.h +++ b/include/libcamera/base/utils.h @@ -340,7 +340,7 @@ public: template double get() const { - auto const c = std::chrono::duration_cast>(*this); + const auto c = std::chrono::duration_cast>(*this); return c.count(); } diff --git a/src/apps/common/stream_options.cpp b/src/apps/common/stream_options.cpp index 288f86530351..54e00737cb65 100644 --- a/src/apps/common/stream_options.cpp +++ b/src/apps/common/stream_options.cpp @@ -48,7 +48,7 @@ std::vector StreamKeyValueParser::roles(const OptionValue &values) const std::vector &streamParameters = values.toArray(); std::vector roles; - for (auto const &value : streamParameters) { + for (const auto &value : streamParameters) { /* If a role is invalid default it to viewfinder. */ roles.push_back(parseRole(value.toKeyValues()).value_or(StreamRole::Viewfinder)); } @@ -81,7 +81,7 @@ int StreamKeyValueParser::updateConfiguration(CameraConfiguration *config, } unsigned int i = 0; - for (auto const &value : streamParameters) { + for (const auto &value : streamParameters) { KeyValueParser::Options opts = value.toKeyValues(); StreamConfiguration &cfg = config->at(i++); diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index 03d873f2c74f..92f5bd072134 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -493,7 +493,7 @@ int IPAIPU3::configure(const IPAConfigInfo &configInfo, /* Update the IPASessionConfiguration using the sensor settings. */ updateSessionConfiguration(sensorCtrls_); - for (auto const &algo : algorithms()) { + for (const auto &algo : algorithms()) { int ret = algo->configure(context_, configInfo); if (ret) return ret; @@ -563,7 +563,7 @@ void IPAIPU3::computeParams(const uint32_t frame, const uint32_t bufferId) IPAFrameContext &frameContext = context_.frameContexts.get(frame); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->prepare(context_, frame, frameContext, params); paramsComputed.emit(frame); @@ -601,7 +601,7 @@ void IPAIPU3::processStats(const uint32_t frame, ControlList metadata(controls::controls); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->process(context_, frame, frameContext, stats, metadata); setControls(frame); @@ -629,7 +629,7 @@ void IPAIPU3::queueRequest(const uint32_t frame, const ControlList &controls) { IPAFrameContext &frameContext = context_.frameContexts.alloc(frame); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->queueRequest(context_, frame, frameContext, controls); } diff --git a/src/ipa/mali-c55/mali-c55.cpp b/src/ipa/mali-c55/mali-c55.cpp index c626e246643b..fd5c9563d6c3 100644 --- a/src/ipa/mali-c55/mali-c55.cpp +++ b/src/ipa/mali-c55/mali-c55.cpp @@ -285,7 +285,7 @@ int IPAMaliC55::configure(const IPAConfigInfo &ipaConfig, uint8_t bayerOrder, static_cast(bayerOrder)); updateControls(info, ipaConfig.sensorControls, ipaControls); - for (auto const &a : algorithms()) { + for (const auto &a : algorithms()) { Algorithm *algo = static_cast(a.get()); int ret = algo->configure(context_, info); @@ -324,7 +324,7 @@ void IPAMaliC55::queueRequest(const uint32_t request, const ControlList &control { IPAFrameContext &frameContext = context_.frameContexts.alloc(request); - for (auto const &a : algorithms()) { + for (const auto &a : algorithms()) { Algorithm *algo = static_cast(a.get()); algo->queueRequest(context_, request, frameContext, controls); @@ -337,7 +337,7 @@ void IPAMaliC55::fillParams(unsigned int request, IPAFrameContext &frameContext = context_.frameContexts.get(request); MaliC55Params params(buffers_.at(bufferId).planes()[0]); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->prepare(context_, request, frameContext, ¶ms); paramsComputed.emit(request, params.bytesused()); @@ -359,7 +359,7 @@ void IPAMaliC55::processStats(unsigned int request, unsigned int bufferId, ControlList metadata(controls::controls); - for (auto const &a : algorithms()) { + for (const auto &a : algorithms()) { Algorithm *algo = static_cast(a.get()); algo->process(context_, request, frameContext, stats, metadata); diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp index fbcc39103d4b..373a343bddd0 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -280,7 +280,7 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig, return format.colourEncoding == PixelFormatInfo::ColourEncodingRAW; }); - for (auto const &a : algorithms()) { + for (const auto &a : algorithms()) { Algorithm *algo = static_cast(a.get()); /* Disable algorithms that don't support raw formats. */ @@ -331,7 +331,7 @@ void IPARkISP1::queueRequest(const uint32_t frame, const ControlList &controls) IPAFrameContext &frameContext = context_.frameContexts.alloc(frame); context_.debugMetadata.enableByControl(controls); - for (auto const &a : algorithms()) { + for (const auto &a : algorithms()) { Algorithm *algo = static_cast(a.get()); if (algo->disabled_) continue; @@ -346,7 +346,7 @@ void IPARkISP1::computeParams(const uint32_t frame, const uint32_t bufferId) RkISP1Params params(context_.configuration.paramFormat, mappedBuffers_.at(bufferId).planes()[0]); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->prepare(context_, frame, frameContext, ¶ms); paramsComputed.emit(frame, params.bytesused()); @@ -373,7 +373,7 @@ void IPARkISP1::processStats(const uint32_t frame, const uint32_t bufferId, ControlList metadata(controls::controls); - for (auto const &a : algorithms()) { + for (const auto &a : algorithms()) { Algorithm *algo = static_cast(a.get()); if (algo->disabled_) continue; diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp index 7072b38c765e..17f6850f247e 100644 --- a/src/ipa/rpi/common/ipa_base.cpp +++ b/src/ipa/rpi/common/ipa_base.cpp @@ -924,7 +924,7 @@ void IpaBase::applyControls(const ControlList &controls) } while (false); /* Iterate over controls */ - for (auto const &ctrl : controls) { + for (const auto &ctrl : controls) { LOG(IPARPI, Debug) << "Request ctrl: " << controls::controls.at(ctrl.first)->name() << " = " << ctrl.second.toString(); @@ -1627,7 +1627,7 @@ void IpaBase::reportMetadata(unsigned int ipaContext) const HdrStatus &hdrStatus = agcStatus ? agcStatus->hdr : hdrStatus_; if (!hdrStatus.mode.empty() && hdrStatus.mode != "Off") { int32_t hdrMode = controls::HdrModeOff; - for (auto const &[mode, name] : HdrModeTable) { + for (const auto &[mode, name] : HdrModeTable) { if (hdrStatus.mode == name) { hdrMode = mode; break; diff --git a/src/ipa/rpi/controller/controller.cpp b/src/ipa/rpi/controller/controller.cpp index 88de6f3655a8..138f6cb29141 100644 --- a/src/ipa/rpi/controller/controller.cpp +++ b/src/ipa/rpi/controller/controller.cpp @@ -114,7 +114,7 @@ int Controller::read(char const *filename) << "This format of the tuning file will be deprecated soon!" << " Please use the convert_tuning.py utility to update to version 2.0."; - for (auto const &[key, value] : root->asDict()) { + for (const auto &[key, value] : root->asDict()) { int ret = createAlgorithm(key, value); if (ret) return ret; @@ -127,8 +127,8 @@ int Controller::read(char const *filename) return -EINVAL; } - for (auto const &rootAlgo : (*root)["algorithms"].asList()) - for (auto const &[key, value] : rootAlgo.asDict()) { + for (const auto &rootAlgo : (*root)["algorithms"].asList()) + for (const auto &[key, value] : rootAlgo.asDict()) { int ret = createAlgorithm(key, value); if (ret) return ret; diff --git a/src/ipa/rpi/controller/rpi/agc_channel.cpp b/src/ipa/rpi/controller/rpi/agc_channel.cpp index 154551dfacc2..010de81a0e35 100644 --- a/src/ipa/rpi/controller/rpi/agc_channel.cpp +++ b/src/ipa/rpi/controller/rpi/agc_channel.cpp @@ -298,7 +298,7 @@ int AgcChannel::read(const libcamera::YamlObject ¶ms, return ret; const Size &size = hardwareConfig.agcZoneWeights; - for (auto const &modes : config_.meteringModes) { + for (const auto &modes : config_.meteringModes) { if (modes.second.weights.size() != size.width * size.height) { LOG(RPiAgc, Error) << "AgcMeteringMode: Incorrect number of weights"; return -EINVAL; diff --git a/src/ipa/rpi/controller/rpi/lux.cpp b/src/ipa/rpi/controller/rpi/lux.cpp index 7dab27cc0a90..efc2c511dbdc 100644 --- a/src/ipa/rpi/controller/rpi/lux.cpp +++ b/src/ipa/rpi/controller/rpi/lux.cpp @@ -90,7 +90,7 @@ void Lux::process(StatisticsPtr &stats, Metadata *imageMetadata) * is a better choice than the Y-histogram, for example, because it's invariant * to the metering mode (and cheaper to evaluate). */ - auto const &fullImageStats = stats->agcRegions.getFloating(0); + const auto &fullImageStats = stats->agcRegions.getFloating(0); double currentY = static_cast(fullImageStats.val.ySum) / fullImageStats.counted; double currentGain = deviceStatus.analogueGain; diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp index ec7593ffc940..63935985ce5b 100644 --- a/src/ipa/rpi/pisp/pisp.cpp +++ b/src/ipa/rpi/pisp/pisp.cpp @@ -553,7 +553,7 @@ RPiController::StatisticsPtr IpaPiSP::platformProcessStats(Span mem) void IpaPiSP::handleControls(const ControlList &controls) { - for (auto const &ctrl : controls) { + for (const auto &ctrl : controls) { switch (ctrl.first) { case controls::HDR_MODE: case controls::AE_METERING_MODE: diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp index 2b205b2861bd..b6ca44e7a0a0 100644 --- a/src/ipa/rpi/vc4/vc4.cpp +++ b/src/ipa/rpi/vc4/vc4.cpp @@ -300,7 +300,7 @@ void IpaVc4::handleControls(const ControlList &controls) { controls::draft::NoiseReductionModeZSL, RPiController::DenoiseMode::ColourHighQuality }, }; - for (auto const &ctrl : controls) { + for (const auto &ctrl : controls) { switch (ctrl.first) { case controls::draft::NOISE_REDUCTION_MODE: { RPiController::DenoiseAlgorithm *sdn = dynamic_cast( diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp index 6bef597c8ace..c35277cfe06e 100644 --- a/src/ipa/simple/soft_simple.cpp +++ b/src/ipa/simple/soft_simple.cpp @@ -249,7 +249,7 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo) context_.configuration.agc.againMinStep = 1.0; } - for (auto const &algo : algorithms()) { + for (const auto &algo : algorithms()) { int ret = algo->configure(context_, configInfo); if (ret) return ret; @@ -279,7 +279,7 @@ void IPASoftSimple::queueRequest(const uint32_t frame, const ControlList &contro { IPAFrameContext &frameContext = context_.frameContexts.alloc(frame); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->queueRequest(context_, frame, frameContext, controls); } @@ -288,7 +288,7 @@ void IPASoftSimple::computeParams(const uint32_t frame) context_.activeState.combinedMatrix = Matrix::identity(); IPAFrameContext &frameContext = context_.frameContexts.get(frame); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->prepare(context_, frame, frameContext, params_); params_->combinedMatrix = context_.activeState.combinedMatrix; @@ -307,7 +307,7 @@ void IPASoftSimple::processStats(const uint32_t frame, frameContext.sensor.gain = camHelper_ ? camHelper_->gain(again) : again; ControlList metadata(controls::controls); - for (auto const &algo : algorithms()) + for (const auto &algo : algorithms()) algo->process(context_, frame, frameContext, stats_, metadata); metadataReady.emit(frame, metadata); diff --git a/src/libcamera/delayed_controls.cpp b/src/libcamera/delayed_controls.cpp index 94d0a575b01b..5b3ced4e711d 100644 --- a/src/libcamera/delayed_controls.cpp +++ b/src/libcamera/delayed_controls.cpp @@ -81,7 +81,7 @@ DelayedControls::DelayedControls(V4L2Device *device, * Create a map of control ids to delays for controls exposed by the * device. */ - for (auto const ¶m : controlParams) { + for (const auto ¶m : controlParams) { auto it = controls.find(param.first); if (it == controls.end()) { LOG(DelayedControls, Error) @@ -120,7 +120,7 @@ void DelayedControls::reset() /* Retrieve control as reported by the device. */ std::vector ids; - for (auto const ¶m : controlParams_) + for (const auto ¶m : controlParams_) ids.push_back(param.first->id()); ControlList controls = device_->getControls(ids); diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp index 8c82a2b1488b..3f974eaabd67 100644 --- a/src/libcamera/media_device.cpp +++ b/src/libcamera/media_device.cpp @@ -589,7 +589,7 @@ bool MediaDevice::addObject(MediaObject *object) */ void MediaDevice::clear() { - for (auto const &o : objects_) + for (const auto &o : objects_) delete o.second; objects_.clear(); diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp index 77f251416f71..c209b0b070b1 100644 --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp @@ -318,7 +318,7 @@ void MaliC55CameraData::updateControls(const ControlInfoMap &ipaControls) ControlInfo(ispMinCrop, sensorInfo.analogCrop, sensorInfo.analogCrop); - for (auto const &c : ipaControls) + for (const auto &c : ipaControls) controls.emplace(c.first, c.second); controlInfo_ = ControlInfoMap(std::move(controls), controls::controls); diff --git a/src/libcamera/pipeline/rpi/common/delayed_controls.cpp b/src/libcamera/pipeline/rpi/common/delayed_controls.cpp index ad50a7c8bb08..19c719460349 100644 --- a/src/libcamera/pipeline/rpi/common/delayed_controls.cpp +++ b/src/libcamera/pipeline/rpi/common/delayed_controls.cpp @@ -85,7 +85,7 @@ DelayedControls::DelayedControls(V4L2Device *device, * Create a map of control ids to delays for controls exposed by the * device. */ - for (auto const ¶m : controlParams) { + for (const auto ¶m : controlParams) { auto it = controls.find(param.first); if (it == controls.end()) { LOG(RPiDelayedControls, Error) @@ -125,7 +125,7 @@ void DelayedControls::reset(unsigned int cookie) /* Retrieve control as reported by the device. */ std::vector ids; - for (auto const ¶m : controlParams_) + for (const auto ¶m : controlParams_) ids.push_back(param.first->id()); ControlList controls = device_->getControls(ids); diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp index de43603ddf69..c507b44b27d0 100644 --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp @@ -508,7 +508,7 @@ int PipelineHandlerBase::configure(Camera *camera, CameraConfiguration *config) /* Start by freeing all buffers and reset the stream states. */ data->freeBuffers(); - for (auto const stream : data->streams_) + for (const auto stream : data->streams_) stream->clearFlags(StreamFlag::External); /* @@ -561,7 +561,7 @@ int PipelineHandlerBase::configure(Camera *camera, CameraConfiguration *config) /* Update the controls that the Raspberry Pi IPA can handle. */ ControlInfoMap::Map ctrlMap; - for (auto const &c : result.controlInfo) + for (const auto &c : result.controlInfo) ctrlMap.emplace(c.first, c.second); const auto cropParamsIt = data->cropParams_.find(0); @@ -663,7 +663,7 @@ int PipelineHandlerBase::start(Camera *camera, const ControlList *controls) data->startupFrameCount_ = result.startupFrameCount; data->invalidFrameCount_ = result.invalidFrameCount; - for (auto const stream : data->streams_) + for (const auto stream : data->streams_) stream->resetBuffers(); if (!data->buffersAllocated_) { @@ -701,7 +701,7 @@ int PipelineHandlerBase::start(Camera *camera, const ControlList *controls) data->platformStart(); /* Start all streams. */ - for (auto const stream : data->streams_) { + for (const auto stream : data->streams_) { ret = stream->dev()->streamOn(); if (ret) { stop(camera); @@ -719,7 +719,7 @@ void PipelineHandlerBase::stopDevice(Camera *camera) data->state_ = CameraData::State::Stopped; data->platformStop(); - for (auto const stream : data->streams_) { + for (const auto stream : data->streams_) { stream->dev()->streamOff(); stream->dev()->releaseBuffers(); } @@ -801,7 +801,7 @@ int PipelineHandlerBase::registerCamera(std::unique_ptr &camera return -EINVAL; /* Populate the map of sensor supported formats and sizes. */ - for (auto const mbusCode : data->sensor_->mbusCodes()) + for (const auto mbusCode : data->sensor_->mbusCodes()) data->sensorFormats_.emplace(mbusCode, data->sensor_->sizes(mbusCode)); @@ -886,7 +886,7 @@ void PipelineHandlerBase::mapBuffers(Camera *camera, const BufferMap &buffers, u * This will allow us to identify buffers passed between the pipeline * handler and the IPA. */ - for (auto const &[id, buffer] : buffers) { + for (const auto &[id, buffer] : buffers) { Span planes = buffer.buffer->planes(); bufferIds.emplace_back(mask | id, @@ -902,7 +902,7 @@ int PipelineHandlerBase::queueAllBuffers(Camera *camera) CameraData *data = cameraData(camera); int ret; - for (auto const stream : data->streams_) { + for (const auto stream : data->streams_) { ret = stream->dev()->importBuffers(VIDEO_MAX_FRAME); if (ret < 0) return ret; @@ -987,7 +987,7 @@ void CameraData::freeBuffers() bufferIds_.clear(); } - for (auto const stream : streams_) + for (const auto stream : streams_) stream->releaseBuffers(); platformFreeBuffers(); @@ -1322,7 +1322,7 @@ void CameraData::applyScalerCrop(const ControlList &controls) scalerCrops.push_back(*scalerCropCore); } - for (auto const &[i, scalerCrop] : utils::enumerate(scalerCrops)) { + for (const auto &[i, scalerCrop] : utils::enumerate(scalerCrops)) { Rectangle nativeCrop = scalerCrop; if (!nativeCrop.width || !nativeCrop.height) @@ -1364,7 +1364,7 @@ void CameraData::cameraTimeout() * stop all devices streaming, and return any outstanding requests as * incomplete and cancelled. */ - for (auto const stream : streams_) + for (const auto stream : streams_) stream->dev()->streamOff(); clearIncompleteRequests(); @@ -1504,7 +1504,7 @@ void CameraData::fillRequestMetadata(const ControlList &bufferControls, Request if (cropParams_.size()) { std::vector crops; - for (auto const &[k, v] : cropParams_) + for (const auto &[k, v] : cropParams_) crops.push_back(scaleIspCrop(v.ispCrop)); request->_d()->metadata().set(controls::ScalerCrop, crops[0]); diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp index f420400dfe18..db452a15c988 100644 --- a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp +++ b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp @@ -68,13 +68,13 @@ void Stream::resetBuffers() { /* Add all internal buffers to the queue of usable buffers. */ availableBuffers_ = {}; - for (auto const &buffer : internalBuffers_) + for (const auto &buffer : internalBuffers_) availableBuffers_.push(buffer.get()); } void Stream::setExportedBuffers(std::vector> *buffers) { - for (auto const &buffer : *buffers) + for (const auto &buffer : *buffers) bufferEmplace(++id_, buffer.get()); } @@ -90,7 +90,7 @@ unsigned int Stream::getBufferId(FrameBuffer *buffer) const /* Find the buffer in the map, and return the buffer id. */ auto it = std::find_if(bufferMap_.begin(), bufferMap_.end(), - [&buffer](auto const &p) { return p.second.buffer == buffer; }); + [&buffer](const auto &p) { return p.second.buffer == buffer; }); if (it == bufferMap_.end()) return 0; @@ -201,7 +201,7 @@ void Stream::returnBuffer(FrameBuffer *buffer) const BufferObject &Stream::getBuffer(unsigned int id) { - auto const &it = bufferMap_.find(id); + const auto &it = bufferMap_.find(id); if (it == bufferMap_.end()) return errorBufferObject; diff --git a/src/libcamera/pipeline/rpi/pisp/pisp.cpp b/src/libcamera/pipeline/rpi/pisp/pisp.cpp index 7bcba32b9b58..dff73a79bb3f 100644 --- a/src/libcamera/pipeline/rpi/pisp/pisp.cpp +++ b/src/libcamera/pipeline/rpi/pisp/pisp.cpp @@ -972,7 +972,7 @@ int PipelineHandlerPiSP::allocateBuffers(Camera *camera) } /* Decide how many internal buffers to allocate. */ - for (auto const stream : data->streams_) { + for (const auto stream : data->streams_) { unsigned int numBuffers; /* * For CFE, allocate a minimum of 4 buffers as we want @@ -1036,12 +1036,12 @@ int PipelineHandlerPiSP::allocateBuffers(Camera *camera) pisp_image_format_config tdn; data->be_->GetTdnOutputFormat(tdn); unsigned int size = tdn.stride * tdn.height; - for (auto const &buffer : data->isp_[Isp::TdnOutput].getBuffers()) { + for (const auto &buffer : data->isp_[Isp::TdnOutput].getBuffers()) { FrameBuffer *b = buffer.second.buffer; b->_d()->metadata().planes()[0].bytesused = size; data->tdnBuffers_.push_back(b); } - for (auto const &buffer : data->isp_[Isp::StitchOutput].getBuffers()) { + for (const auto &buffer : data->isp_[Isp::StitchOutput].getBuffers()) { FrameBuffer *b = buffer.second.buffer; b->_d()->metadata().planes()[0].bytesused = size; data->stitchBuffers_.push_back(b); diff --git a/src/libcamera/pipeline/rpi/vc4/vc4.cpp b/src/libcamera/pipeline/rpi/vc4/vc4.cpp index 8a80439e9082..b734889dd016 100644 --- a/src/libcamera/pipeline/rpi/vc4/vc4.cpp +++ b/src/libcamera/pipeline/rpi/vc4/vc4.cpp @@ -233,7 +233,7 @@ int PipelineHandlerVc4::allocateBuffers(Camera *camera) } /* Decide how many internal buffers to allocate. */ - for (auto const stream : data->streams_) { + for (const auto stream : data->streams_) { unsigned int numBuffers; /* * For Unicam, allocate a minimum number of buffers for internal diff --git a/src/libcamera/pipeline/virtual/virtual.cpp b/src/libcamera/pipeline/virtual/virtual.cpp index 40c35264c568..efd800ebe3d6 100644 --- a/src/libcamera/pipeline/virtual/virtual.cpp +++ b/src/libcamera/pipeline/virtual/virtual.cpp @@ -136,7 +136,7 @@ VirtualCameraData::VirtualCameraData(PipelineHandler *pipe, void VirtualCameraData::processRequest(Request *request) { - for (auto const &[stream, buffer] : request->buffers()) { + for (const auto &[stream, buffer] : request->buffers()) { bool found = false; /* map buffer and fill test patterns */ for (auto &streamConfig : streamConfigs_) { diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp index 8df70dbfd10b..be0c80cbcfc2 100644 --- a/src/libcamera/stream.cpp +++ b/src/libcamera/stream.cpp @@ -194,7 +194,7 @@ std::vector StreamFormats::sizes(const PixelFormat &pixelformat) const std::vector sizes; /* Make sure pixel format exists. */ - auto const &it = formats_.find(pixelformat); + const auto &it = formats_.find(pixelformat); if (it == formats_.end()) return {}; @@ -243,7 +243,7 @@ std::vector StreamFormats::sizes(const PixelFormat &pixelformat) const */ SizeRange StreamFormats::range(const PixelFormat &pixelformat) const { - auto const it = formats_.find(pixelformat); + const auto it = formats_.find(pixelformat); if (it == formats_.end()) return {}; diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp index 61a4551c63c5..d877df29ee6e 100644 --- a/src/libcamera/v4l2_videodevice.cpp +++ b/src/libcamera/v4l2_videodevice.cpp @@ -206,7 +206,7 @@ V4L2BufferCache::~V4L2BufferCache() */ bool V4L2BufferCache::isEmpty() const { - for (auto const &entry : cache_) { + for (const auto &entry : cache_) { if (!entry.free_) return false; } diff --git a/test/media_device/media_device_print_test.cpp b/test/media_device/media_device_print_test.cpp index 63aeed48fff6..d4dc1f515069 100644 --- a/test/media_device/media_device_print_test.cpp +++ b/test/media_device/media_device_print_test.cpp @@ -66,15 +66,15 @@ void MediaDevicePrintTest::printMediaGraph(const MediaDevice &media, ostream &os { os << "\n" << media.driver() << " - " << media.deviceNode() << "\n\n"; - for (auto const &entity : media.entities()) { + for (const auto &entity : media.entities()) { os << "\"" << entity->name() << "\"\n"; - for (auto const &sink : entity->pads()) { + for (const auto &sink : entity->pads()) { if (!(sink->flags() & MEDIA_PAD_FL_SINK)) continue; os << " [" << sink->index() << "]" << ": Sink\n"; - for (auto const &link : sink->links()) { + for (const auto &link : sink->links()) { os << "\t"; printNode(sink, os); os << " <- "; @@ -84,12 +84,12 @@ void MediaDevicePrintTest::printMediaGraph(const MediaDevice &media, ostream &os os << "\n"; } - for (auto const &source : entity->pads()) { + for (const auto &source : entity->pads()) { if (!(source->flags() & MEDIA_PAD_FL_SOURCE)) continue; os << " [" << source->index() << "]" << ": Source\n"; - for (auto const &link : source->links()) { + for (const auto &link : source->links()) { os << "\t"; printNode(source, os); os << " -> "; diff --git a/test/v4l2_videodevice/buffer_cache.cpp b/test/v4l2_videodevice/buffer_cache.cpp index 5a9aa2199c50..613e0d7ce9d2 100644 --- a/test/v4l2_videodevice/buffer_cache.cpp +++ b/test/v4l2_videodevice/buffer_cache.cpp @@ -133,7 +133,7 @@ public: if (!cache.isEmpty()) return TestFail; - for (auto const &buffer : buffers) { + for (const auto &buffer : buffers) { FrameBuffer &b = *buffer.get(); cache.get(b); }