[{"id":38200,"web_url":"https://patchwork.libcamera.org/comment/38200/","msgid":"<177116648538.1941913.4317798377051630227@ping.linuxembedded.co.uk>","date":"2026-02-15T14:41:25","subject":"Re: [PATCH v2 2/2] software_isp: benchmark: Print what is being\n\tbenchmarked","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Hans de Goede (2026-02-15 09:44:18)\n> With the GPU accelerated softISP 2 separate benchmark results are printed,\n> 1 for the generation of the output images on the GPU and a separate one\n> for generating the statistics on the CPU.\n> \n> Add a new name argument to the Benchmark class descriptor and print this\n> out when printing the benchmark result.\n> \n> Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>\n\nI'd really like to get this data into completion metadata sometime, so\nit's easy to plot and graph in camshark while the stream is running for\ninstance.\n\nBut I think we'd need easier to extend string controls, or perhaps we'd\nhave to make a softisp/gpuisp control namespace for these specifically.\nNot sure what would fit better, but that's all only things that would be\n'on top' here anyway so:\n\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> ---\n> Changes in v2:\n> - Add include <string> to benchmark.h\n> - Use \": name_(name)\" in the Benchmark constructor to init name\n> ---\n>  include/libcamera/internal/software_isp/benchmark.h | 4 +++-\n>  src/libcamera/software_isp/benchmark.cpp            | 5 +++--\n>  src/libcamera/software_isp/debayer.cpp              | 3 ++-\n>  src/libcamera/software_isp/swstats_cpu.cpp          | 2 +-\n>  4 files changed, 9 insertions(+), 5 deletions(-)\n> \n> diff --git a/include/libcamera/internal/software_isp/benchmark.h b/include/libcamera/internal/software_isp/benchmark.h\n> index 46bdb86d..5526abc5 100644\n> --- a/include/libcamera/internal/software_isp/benchmark.h\n> +++ b/include/libcamera/internal/software_isp/benchmark.h\n> @@ -11,6 +11,7 @@\n>  #pragma once\n>  \n>  #include <stdint.h>\n> +#include <string>\n>  #include <time.h>\n>  #include <libcamera/base/log.h>\n>  #include \"libcamera/internal/global_configuration.h\"\n> @@ -20,13 +21,14 @@ namespace libcamera {\n>  class Benchmark\n>  {\n>  public:\n> -       Benchmark(const GlobalConfiguration &configuration);\n> +       Benchmark(const GlobalConfiguration &configuration, const std::string &name);\n>         ~Benchmark();\n>  \n>         void startFrame(void);\n>         void finishFrame(void);\n>  \n>  private:\n> +       std::string name_;\n>         timespec frameStartTime_;\n>         bool measure_;\n>         /* Skip 30 frames for things to stabilize then measure 30 frames */\n> diff --git a/src/libcamera/software_isp/benchmark.cpp b/src/libcamera/software_isp/benchmark.cpp\n> index 4ffb6773..36c49770 100644\n> --- a/src/libcamera/software_isp/benchmark.cpp\n> +++ b/src/libcamera/software_isp/benchmark.cpp\n> @@ -26,7 +26,8 @@ LOG_DEFINE_CATEGORY(Benchmark)\n>  /**\n>   * \\brief Constructs a Benchmark object\n>   */\n> -Benchmark::Benchmark(const GlobalConfiguration &configuration)\n> +Benchmark::Benchmark(const GlobalConfiguration &configuration, const std::string &name)\n> +       : name_(name)\n>  {\n>         skipBeforeMeasure_ = configuration.option<unsigned int>(\n>                                                 { \"software_isp\", \"measure\", \"skip\" })\n> @@ -81,7 +82,7 @@ void Benchmark::finishFrame(void)\n>                 frameProcessTime_ += timeDiff(frameEndTime, frameStartTime_);\n>                 if (encounteredFrames_ == skipBeforeMeasure_ + framesToMeasure_) {\n>                         LOG(Benchmark, Info)\n> -                               << \"Processed \" << framesToMeasure_\n> +                               << name_ << \" processed \" << framesToMeasure_\n>                                 << \" frames in \" << frameProcessTime_ / 1000 << \"us, \"\n>                                 << frameProcessTime_ / (1000 * framesToMeasure_)\n>                                 << \" us/frame\";\n> diff --git a/src/libcamera/software_isp/debayer.cpp b/src/libcamera/software_isp/debayer.cpp\n> index dccdd86b..a6bceb58 100644\n> --- a/src/libcamera/software_isp/debayer.cpp\n> +++ b/src/libcamera/software_isp/debayer.cpp\n> @@ -58,7 +58,8 @@ namespace libcamera {\n>  \n>  LOG_DEFINE_CATEGORY(Debayer)\n>  \n> -Debayer::Debayer(const GlobalConfiguration &configuration) : bench_(configuration)\n> +Debayer::Debayer(const GlobalConfiguration &configuration)\n> +       : bench_(configuration, \"Debayer\")\n>  {\n>  }\n>  \n> diff --git a/src/libcamera/software_isp/swstats_cpu.cpp b/src/libcamera/software_isp/swstats_cpu.cpp\n> index 5c3011a7..1cedcfbc 100644\n> --- a/src/libcamera/software_isp/swstats_cpu.cpp\n> +++ b/src/libcamera/software_isp/swstats_cpu.cpp\n> @@ -155,7 +155,7 @@ namespace libcamera {\n>  LOG_DEFINE_CATEGORY(SwStatsCpu)\n>  \n>  SwStatsCpu::SwStatsCpu(const GlobalConfiguration &configuration)\n> -       : sharedStats_(\"softIsp_stats\"), bench_(configuration)\n> +       : sharedStats_(\"softIsp_stats\"), bench_(configuration, \"CPU stats\")\n>  {\n>         if (!sharedStats_)\n>                 LOG(SwStatsCpu, Error)\n> -- \n> 2.52.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id AE98AC31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 15 Feb 2026 14:41:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CC5EB621F1;\n\tSun, 15 Feb 2026 15:41:29 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 28347621CE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 15 Feb 2026 15:41:28 +0100 (CET)","from monstersaurus.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DEE9DFE;\n\tSun, 15 Feb 2026 15:40:37 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"sC8eaDYi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1771166438;\n\tbh=v/fe/t4FTYn2/47HNmy3XenvC33iTMZ2sFS/IJOJOZo=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=sC8eaDYigCmsJ04drqNRyhfaAr9/PIXPnnj+rhYmHSD+tuuu+dhFRMwEbyebr/An2\n\trUmIDlqrVOXf9ExkXYJ/l5xOqRMaxRlM5Mr+akg3CROAbZ93VGuprgjj3Poi7kqvs4\n\tsMtdaoBIMVioN6cYf+q+/ptv+LSz+ebf1cmBa8Wk=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260215094418.18642-2-johannes.goede@oss.qualcomm.com>","References":"<20260215094418.18642-1-johannes.goede@oss.qualcomm.com>\n\t<20260215094418.18642-2-johannes.goede@oss.qualcomm.com>","Subject":"Re: [PATCH v2 2/2] software_isp: benchmark: Print what is being\n\tbenchmarked","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Hans de Goede <johannes.goede@oss.qualcomm.com>","To":"Hans de Goede <johannes.goede@oss.qualcomm.com>,\n\tMilan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","Date":"Sun, 15 Feb 2026 14:41:25 +0000","Message-ID":"<177116648538.1941913.4317798377051630227@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":38201,"web_url":"https://patchwork.libcamera.org/comment/38201/","msgid":"<85ecmlt5l3.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2026-02-16T09:12:24","subject":"Re: [PATCH v2 2/2] software_isp: benchmark: Print what is being\n\tbenchmarked","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Hans,\n\nHans de Goede <johannes.goede@oss.qualcomm.com> writes:\n\n> With the GPU accelerated softISP 2 separate benchmark results are printed,\n> 1 for the generation of the output images on the GPU and a separate one\n> for generating the statistics on the CPU.\n>\n> Add a new name argument to the Benchmark class descriptor and print this\n> out when printing the benchmark result.\n\nThis was missing, good to see it added.\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\n\n> Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>\n> ---\n> Changes in v2:\n> - Add include <string> to benchmark.h\n> - Use \": name_(name)\" in the Benchmark constructor to init name\n> ---\n>  include/libcamera/internal/software_isp/benchmark.h | 4 +++-\n>  src/libcamera/software_isp/benchmark.cpp            | 5 +++--\n>  src/libcamera/software_isp/debayer.cpp              | 3 ++-\n>  src/libcamera/software_isp/swstats_cpu.cpp          | 2 +-\n>  4 files changed, 9 insertions(+), 5 deletions(-)\n>\n> diff --git a/include/libcamera/internal/software_isp/benchmark.h b/include/libcamera/internal/software_isp/benchmark.h\n> index 46bdb86d..5526abc5 100644\n> --- a/include/libcamera/internal/software_isp/benchmark.h\n> +++ b/include/libcamera/internal/software_isp/benchmark.h\n> @@ -11,6 +11,7 @@\n>  #pragma once\n>  \n>  #include <stdint.h>\n> +#include <string>\n>  #include <time.h>\n>  #include <libcamera/base/log.h>\n>  #include \"libcamera/internal/global_configuration.h\"\n> @@ -20,13 +21,14 @@ namespace libcamera {\n>  class Benchmark\n>  {\n>  public:\n> -\tBenchmark(const GlobalConfiguration &configuration);\n> +\tBenchmark(const GlobalConfiguration &configuration, const std::string &name);\n>  \t~Benchmark();\n>  \n>  \tvoid startFrame(void);\n>  \tvoid finishFrame(void);\n>  \n>  private:\n> +\tstd::string name_;\n>  \ttimespec frameStartTime_;\n>  \tbool measure_;\n>  \t/* Skip 30 frames for things to stabilize then measure 30 frames */\n> diff --git a/src/libcamera/software_isp/benchmark.cpp b/src/libcamera/software_isp/benchmark.cpp\n> index 4ffb6773..36c49770 100644\n> --- a/src/libcamera/software_isp/benchmark.cpp\n> +++ b/src/libcamera/software_isp/benchmark.cpp\n> @@ -26,7 +26,8 @@ LOG_DEFINE_CATEGORY(Benchmark)\n>  /**\n>   * \\brief Constructs a Benchmark object\n>   */\n> -Benchmark::Benchmark(const GlobalConfiguration &configuration)\n> +Benchmark::Benchmark(const GlobalConfiguration &configuration, const std::string &name)\n> +\t: name_(name)\n>  {\n>  \tskipBeforeMeasure_ = configuration.option<unsigned int>(\n>  \t\t\t\t\t\t{ \"software_isp\", \"measure\", \"skip\" })\n> @@ -81,7 +82,7 @@ void Benchmark::finishFrame(void)\n>  \t\tframeProcessTime_ += timeDiff(frameEndTime, frameStartTime_);\n>  \t\tif (encounteredFrames_ == skipBeforeMeasure_ + framesToMeasure_) {\n>  \t\t\tLOG(Benchmark, Info)\n> -\t\t\t\t<< \"Processed \" << framesToMeasure_\n> +\t\t\t\t<< name_ << \" processed \" << framesToMeasure_\n>  \t\t\t\t<< \" frames in \" << frameProcessTime_ / 1000 << \"us, \"\n>  \t\t\t\t<< frameProcessTime_ / (1000 * framesToMeasure_)\n>  \t\t\t\t<< \" us/frame\";\n> diff --git a/src/libcamera/software_isp/debayer.cpp b/src/libcamera/software_isp/debayer.cpp\n> index dccdd86b..a6bceb58 100644\n> --- a/src/libcamera/software_isp/debayer.cpp\n> +++ b/src/libcamera/software_isp/debayer.cpp\n> @@ -58,7 +58,8 @@ namespace libcamera {\n>  \n>  LOG_DEFINE_CATEGORY(Debayer)\n>  \n> -Debayer::Debayer(const GlobalConfiguration &configuration) : bench_(configuration)\n> +Debayer::Debayer(const GlobalConfiguration &configuration)\n> +\t: bench_(configuration, \"Debayer\")\n>  {\n>  }\n>  \n> diff --git a/src/libcamera/software_isp/swstats_cpu.cpp b/src/libcamera/software_isp/swstats_cpu.cpp\n> index 5c3011a7..1cedcfbc 100644\n> --- a/src/libcamera/software_isp/swstats_cpu.cpp\n> +++ b/src/libcamera/software_isp/swstats_cpu.cpp\n> @@ -155,7 +155,7 @@ namespace libcamera {\n>  LOG_DEFINE_CATEGORY(SwStatsCpu)\n>  \n>  SwStatsCpu::SwStatsCpu(const GlobalConfiguration &configuration)\n> -\t: sharedStats_(\"softIsp_stats\"), bench_(configuration)\n> +\t: sharedStats_(\"softIsp_stats\"), bench_(configuration, \"CPU stats\")\n>  {\n>  \tif (!sharedStats_)\n>  \t\tLOG(SwStatsCpu, Error)","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id EB16CC31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Feb 2026 09:12:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E0393621F4;\n\tMon, 16 Feb 2026 10:12:33 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9B18B620FA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Feb 2026 10:12:31 +0100 (CET)","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n\t[209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-16-GS9Eihs0NuOXm1QMi99rRw-1; Mon, 16 Feb 2026 04:12:28 -0500","by mail-wr1-f72.google.com with SMTP id\n\tffacd0b85a97d-437159d3ff2so3402918f8f.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Feb 2026 01:12:28 -0800 (PST)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-43796a5d156sm28132996f8f.5.2026.02.16.01.12.25\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 16 Feb 2026 01:12:25 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"JOMm2JXL\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1771233150;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=IRTcJHMYVKTfuvcuVHVyzcTbIaEaqcnnU0T+7u42n3s=;\n\tb=JOMm2JXLixKmX4DouJnYLD82OVWTWyWGBeYV6Z2iBfB/krxRavd8/2AGMlk9AmBzGqKDTn\n\tRJbUismQ0vuxd4nNBY6UPizPeePa66jxUpB038WTQ3iYhpCYFpbWD2GUXkMhOeDqEVp+FL\n\t/07hYli1UhJMWIB97GyyYAC77W0MWAA=","X-MC-Unique":"GS9Eihs0NuOXm1QMi99rRw-1","X-Mimecast-MFC-AGG-ID":"GS9Eihs0NuOXm1QMi99rRw_1771233147","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1771233147; x=1771837947;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=IRTcJHMYVKTfuvcuVHVyzcTbIaEaqcnnU0T+7u42n3s=;\n\tb=UsVQyP+b/BcwAYyksGqaCT7hsVCn1zhK00vPhLWybT3hzZ5IHf1OR2u1Lrn1WOPHPN\n\tka3ytKkMZAgNyvEB0mJmL/AyJ7OYqyiq+7KpEC93FXdOFfG9GswBg3GvhYFbwICMZyXs\n\tFLciYIyLrNVIUVDncheazCP6b8VLhBOvcp09lIMWKkhcMJc6tdo4zbMGUfp5md6BpbCK\n\tAhxT0dbKHboHWwXDiFcSNNLEGZMoOEzr27dRPfC1O5w3v8rPXljogMs2z8Yh8qW1AnV/\n\tkj+avQG8JsLUF9sLNVdPkwiqoZpSoKyrvH2DRAOFwMmFCt1kPJlfst0d8jf4nUtf18c0\n\tGvQA==","X-Gm-Message-State":"AOJu0Yzg8hXgkT2UJcl+KfJhAC+sg2iwDRZNbe/eW8l60exeuDEjM5Ip\n\tAMBisFWMEq/oz6Fja7BrNWnTyw7r/gacYP7fEAv3K68bkK5t9SbLS/4UYYnZ0Efxr6ugiCEOw5O\n\tI5x/OCu/1DRn4IYm+5AzHI06I0jD6LK4haMT96i8HBCwMwyOlB5ekZUIsXUGi7RAjJZ9bsqM/hK\n\tzgmHsbiaA4Nl8JaDreSLjDTyNd36Jh2b427ra0Zfun6uH3ksDAmfDS5YiC9Ag=","X-Gm-Gg":"AZuq6aIYlKMu5QFQdONWDxi5bEgOD599pCk5aglfll0EgPRS/UadzSbh3ZoxtbrwZVm\n\tteTrnFWaLmeM/BSEbsbFUA30VmlVPOeH6YDf9ryjJ0stMLgM8zrDgWAPJZXe0EJD7DgEkQpHsdy\n\towOnfXFBEnZykkLxhIMikV7VpvOZEyyVznLTdmyaKK+Tvhno2upAKMI65vcR3uPOiO/rOMdO7sk\n\tBWeS80UFrda4PkZ5X199yOS7NHIAr0JZl7769l/qQl3Bmy5+OFGS4U7VT0ia2zX2q8+7Dq5UYdd\n\trXnjswIWbMLoZxeDYjsFjDujpcr2rvXZTLpmpPlEX+/PFJB/AjilXBAvvpjiV3bah/wnIiXIa6+\n\tmosBlSb3DXHzTdEH9E80X5WAeAilTbW2XrZljgR9z16ld9HdwbC9zfY+UWBhU3aZCMKbKSo1mtx\n\tw=","X-Received":["by 2002:a05:6000:400c:b0:436:1116:fea0 with SMTP id\n\tffacd0b85a97d-43796b05be5mr15481349f8f.59.1771233146965; \n\tMon, 16 Feb 2026 01:12:26 -0800 (PST)","by 2002:a05:6000:400c:b0:436:1116:fea0 with SMTP id\n\tffacd0b85a97d-43796b05be5mr15481299f8f.59.1771233146457; \n\tMon, 16 Feb 2026 01:12:26 -0800 (PST)"],"From":"Milan Zamazal <mzamazal@redhat.com>","To":"Hans de Goede <johannes.goede@oss.qualcomm.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH v2 2/2] software_isp: benchmark: Print what is being\n\tbenchmarked","In-Reply-To":"<20260215094418.18642-2-johannes.goede@oss.qualcomm.com> (Hans\n\tde Goede's message of \"Sun, 15 Feb 2026 10:44:18 +0100\")","References":"<20260215094418.18642-1-johannes.goede@oss.qualcomm.com>\n\t<20260215094418.18642-2-johannes.goede@oss.qualcomm.com>","Date":"Mon, 16 Feb 2026 10:12:24 +0100","Message-ID":"<85ecmlt5l3.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"NtVy0pUDWm5S1aAjLC0Ul2XCkpxx86QfPzpLf3HpAus_1771233147","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]