[{"id":34503,"web_url":"https://patchwork.libcamera.org/comment/34503/","msgid":"<20250616234515.GH28664@pendragon.ideasonboard.com>","date":"2025-06-16T23:45:15","subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Milan,\n\nThank you for the patch.\n\nOn Mon, Jun 16, 2025 at 10:47:23AM +0200, Milan Zamazal wrote:\n> Let's introduce a configuration option for rpi configuration file path.\n> It may be arguable whether pipeline specific configurations belong to\n> the global configuration file.  But:\n> \n> - Having a single configuration file is generally easier for the user.\n> - The original configuration via environment variables can be already\n>   considered global.\n> - This option points to other configuration files and it makes little\n>   sense to add another configuration file to the chain.\n\nI'm not sure to follow you here. With this patch we'll have two\nconfiguration files, a global one, and one for the rpi pipeline handler.\nIsn't that exactly \"adding another configuration file to the chain\" ?\n\nHave you considered including the pipeline-specific configuration to the\nglobal configuration file ? CC'ing Naush and David for feedback.\n\n> The configuration snippet:\n> \n>   configuration:\n>     pipeline:\n>       rpi:\n>         config_file: FILENAME\n> \n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> ---\n>  src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 8 +++++++-\n>  1 file changed, 7 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> index d8c7ca935..850a5e31b 100644\n> --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> @@ -20,6 +20,7 @@\n>  #include <libcamera/property_ids.h>\n>  \n>  #include \"libcamera/internal/camera_lens.h\"\n> +#include \"libcamera/internal/global_configuration.h\"\n>  #include \"libcamera/internal/ipa_manager.h\"\n>  #include \"libcamera/internal/v4l2_subdevice.h\"\n>  \n> @@ -1084,7 +1085,12 @@ int CameraData::loadPipelineConfiguration()\n>  \t/* Initial configuration of the platform, in case no config file is present */\n>  \tplatformPipelineConfigure({});\n>  \n> -\tchar const *configFromEnv = utils::secure_getenv(\"LIBCAMERA_RPI_CONFIG_FILE\");\n> +\tconst GlobalConfiguration &config = pipe()->cameraManager()->_d()->configuration();\n> +\tstd::optional<std::string> configFile =\n> +\t\tconfig.envOption(\"LIBCAMERA_RPI_CONFIG_FILE\", \"pipelines.rpi.config_file\");\n> +\tif (!configFile.has_value())\n> +\t\treturn 0;\n> +\tchar const *configFromEnv = configFile.value().c_str();\n>  \tif (!configFromEnv || *configFromEnv == '\\0')\n>  \t\treturn 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 6040AC3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Jun 2025 23:45:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3E7A061548;\n\tTue, 17 Jun 2025 01:45:33 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 660AC614E2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 01:45:31 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2EDDFA57;\n\tTue, 17 Jun 2025 01:45:19 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"rg5XXmOy\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1750117519;\n\tbh=3Kw5ALOZw2NvBfHyuk+TGOjYssw2LXhXR+fWE0VCSr4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=rg5XXmOyvps8kTHcL9BnOPvDIoIBKQTtKjL2AuUTcZv9LnJ5N1dtPSVKdmJTiT25g\n\tV/UmlAnoxaGeFxQ8i+1eBqc+qc/jdC3ajBdetWsqO2RJ9UqqH6/E86EGwvIaVqjEvo\n\tUlxhZ7+FW2uUuScpF0rIWlyEs+plvUQm3yM4saXc=","Date":"Tue, 17 Jun 2025 02:45:15 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Milan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<pobrn@protonmail.com>,  Naushir Patuck <naush@raspberrypi.com>,\n\tDavid Plowman <david.plowman@raspberrypi.com>","Subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","Message-ID":"<20250616234515.GH28664@pendragon.ideasonboard.com>","References":"<20250616084733.18707-1-mzamazal@redhat.com>\n\t<20250616084733.18707-6-mzamazal@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20250616084733.18707-6-mzamazal@redhat.com>","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":34591,"web_url":"https://patchwork.libcamera.org/comment/34591/","msgid":"<85sejudrfq.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-06-20T21:38:33","subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Laurent,\n\nLaurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n\n> Hi Milan,\n>\n> Thank you for the patch.\n>\n> On Mon, Jun 16, 2025 at 10:47:23AM +0200, Milan Zamazal wrote:\n>> Let's introduce a configuration option for rpi configuration file path.\n>> It may be arguable whether pipeline specific configurations belong to\n>> the global configuration file.  But:\n>> \n>> - Having a single configuration file is generally easier for the user.\n>> - The original configuration via environment variables can be already\n>>   considered global.\n>> - This option points to other configuration files and it makes little\n>>   sense to add another configuration file to the chain.\n>\n> I'm not sure to follow you here. With this patch we'll have two\n> configuration files, a global one, and one for the rpi pipeline handler.\n> Isn't that exactly \"adding another configuration file to the chain\" ?\n\nIt is.  IIRC my explanation above was sort of response to some offline\ndiscussion regarding keeping or not keeping pipeline configurations\nseparate, while being conservative about contingent changes at the given moment.\n\n> Have you considered including the pipeline-specific configuration to the\n> global configuration file ? \n\nReading my words above, I think so :-).  And \"Allow enabling software\nISP in runtime\" patch is such a case after all.\n\n> CC'ing Naush and David for feedback.\n\nLet's discuss what's preferable.\n\n>> The configuration snippet:\n>> \n>>   configuration:\n>>     pipeline:\n>>       rpi:\n>>         config_file: FILENAME\n>> \n>> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n>> ---\n>>  src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 8 +++++++-\n>>  1 file changed, 7 insertions(+), 1 deletion(-)\n>> \n>> diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n>> index d8c7ca935..850a5e31b 100644\n>> --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n>> +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n>> @@ -20,6 +20,7 @@\n>>  #include <libcamera/property_ids.h>\n>>  \n>>  #include \"libcamera/internal/camera_lens.h\"\n>> +#include \"libcamera/internal/global_configuration.h\"\n>>  #include \"libcamera/internal/ipa_manager.h\"\n>>  #include \"libcamera/internal/v4l2_subdevice.h\"\n>>  \n>> @@ -1084,7 +1085,12 @@ int CameraData::loadPipelineConfiguration()\n>>  \t/* Initial configuration of the platform, in case no config file is present */\n>>  \tplatformPipelineConfigure({});\n>>  \n>> -\tchar const *configFromEnv = utils::secure_getenv(\"LIBCAMERA_RPI_CONFIG_FILE\");\n>> +\tconst GlobalConfiguration &config = pipe()->cameraManager()->_d()->configuration();\n>> +\tstd::optional<std::string> configFile =\n>> +\t\tconfig.envOption(\"LIBCAMERA_RPI_CONFIG_FILE\", \"pipelines.rpi.config_file\");\n>> +\tif (!configFile.has_value())\n>> +\t\treturn 0;\n>> +\tchar const *configFromEnv = configFile.value().c_str();\n>>  \tif (!configFromEnv || *configFromEnv == '\\0')\n>>  \t\treturn 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 4C6F5BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jun 2025 21:38:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 606E068DE2;\n\tFri, 20 Jun 2025 23:38:40 +0200 (CEST)","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 A977261538\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jun 2025 23:38:38 +0200 (CEST)","from mail-wr1-f70.google.com (mail-wr1-f70.google.com\n\t[209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-316-8Uto_BLaNAi6mGEpZPsQvw-1; Fri, 20 Jun 2025 17:38:36 -0400","by mail-wr1-f70.google.com with SMTP id\n\tffacd0b85a97d-3a4eeed54c2so1572986f8f.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jun 2025 14:38:36 -0700 (PDT)","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\t5b1f17b1804b1-45361461375sm53282805e9.14.2025.06.20.14.38.33\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 20 Jun 2025 14:38:34 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"SORAdTXY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1750455517;\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=8sI/dOYLNyJwAdnj+kFQJ5eLX6i6Ak/YV/bsHnggdEs=;\n\tb=SORAdTXYj1STDwqqRgNfyburu2XsSfFopbsSeSduzTdfyWdeqOWALGByHX5qNi77Q3Z58+\n\tehqDjBxm5g+ISATEOnNgUOJUsNPMiDQrU/+eQjyyDuQm6pvBkigk0NZrKhmgoBnCaDsY/0\n\tUxzR2leo+J7ipWIRsMiFVAP0j7fYt04=","X-MC-Unique":"8Uto_BLaNAi6mGEpZPsQvw-1","X-Mimecast-MFC-AGG-ID":"8Uto_BLaNAi6mGEpZPsQvw_1750455515","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750455515; x=1751060315;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=8sI/dOYLNyJwAdnj+kFQJ5eLX6i6Ak/YV/bsHnggdEs=;\n\tb=xLHWQMDP53qOMcxpWcawuUA3CHxtNCQRRHvoZ7Wb/OaaSYOI6Qe5MJwPkHkGm4fE6/\n\tTNUPGI3K+f2DHJftWsTLaacab8OF+xusQbCVqqmqf8QGMl4jZDSRewsZcHEEjvQdztCq\n\tPBrI41UTawOUDY90hi6fUoaMvvISa00KJBhdfbsn19rodcEuPRixH4HGppdqJaeZhfam\n\t/dPi4GS/pdQwzDrsWvaDTNlFmT88eLkGOBDlWoubZs6R1L+VDOH7nyeNOA02YMO0Sc2b\n\tb0zoyM8Qpg8CyBbjATsUY5q/4xBYQFXJVqCiMw7NPSA2s27XnATsoCQL2vHfmWzIdlkW\n\tcp7w==","X-Gm-Message-State":"AOJu0Yw08e3FpPQ1GMbIy5CFERuTXoZ+Rqhz6aGuAyrYA0E2bYxDIB1t\n\tT7+lTWo3zzNz9Jyu0ymLIaD66n5Tubu0DlgHtGh3QvUVBpc7Cs7QZHeo9Ff7Ssv+ckKS9yY7xG2\n\tm7n1ZVSNNPhfD46Gba4/gO2jZIyGC3nZMlRv8zfaOJVOF2gKA4orZ4ztoqUOe8Uzrf7Fm7lSTZW\n\tc=","X-Gm-Gg":"ASbGncsPP3TEG7AJsldI3gjmApbllefQvX7NyX4P/8Tk4KmWa/s3FbB4K3Jz+sxZirf\n\tYDDtRHt4aJ9W2g56qF9AmAH8IwHYIx17/hErDwtbl/ShVtHT2ZZhqedUm9RZR1rZuwWmpDlRy5e\n\thSWizeAPdGrIMkmVfx1KnuUnO1nbpuK5O3h67NECiPJLsEAArerL7Fs9N1Z31S9Ctc8QwfGj28d\n\t70wPMms7JymFXNVlGTOzBI/t9aKXJLQ1rss4eVpNeNE3X3MndbCXDX1DYmsZzIDFycW24SIcxw+\n\tav3APDV0YQ6EzukRPZq3lS2WhAX+D0SEqKj0RmK6inGuoCuK88eX2+t4EXUKNMHzQuOsZCxueNI\n\t=","X-Received":["by 2002:a05:6000:41d2:b0:3a4:d994:be4b with SMTP id\n\tffacd0b85a97d-3a6d12c4551mr3429226f8f.1.1750455515098; \n\tFri, 20 Jun 2025 14:38:35 -0700 (PDT)","by 2002:a05:6000:41d2:b0:3a4:d994:be4b with SMTP id\n\tffacd0b85a97d-3a6d12c4551mr3429212f8f.1.1750455514679; \n\tFri, 20 Jun 2025 14:38:34 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IEHK63kSZqVpijmaXG3HXhtldGU/dcLnbYHfEqarFcnspHkQ3SzDV9brQnnJheBCjnqyRPH6g==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab?=\n\t=?utf-8?b?w6FzIFDFkWN6ZQ==?=  <pobrn@protonmail.com>,\n\tNaushir Patuck <naush@raspberrypi.com>, David Plowman\n\t<david.plowman@raspberrypi.com>","Subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","In-Reply-To":"<20250616234515.GH28664@pendragon.ideasonboard.com> (Laurent\n\tPinchart's message of \"Tue, 17 Jun 2025 02:45:15 +0300\")","References":"<20250616084733.18707-1-mzamazal@redhat.com>\n\t<20250616084733.18707-6-mzamazal@redhat.com>\n\t<20250616234515.GH28664@pendragon.ideasonboard.com>","Date":"Fri, 20 Jun 2025 23:38:33 +0200","Message-ID":"<85sejudrfq.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":"wwigvm7F50BQ21Fwm7ERveLeJX7AGAw35p5B1nyR9r4_1750455515","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>"}},{"id":34594,"web_url":"https://patchwork.libcamera.org/comment/34594/","msgid":"<CAEmqJPoRfMafV6nw_5mQbm_wLFtyf5b3VG4P1XQaN701xs9BnA@mail.gmail.com>","date":"2025-06-23T08:00:37","subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi all,\n\nOn Fri, 20 Jun 2025 at 22:38, Milan Zamazal <mzamazal@redhat.com> wrote:\n>\n> Hi Laurent,\n>\n> Laurent Pinchart <laurent.pinchart@ideasonboard.com> writes:\n>\n> > Hi Milan,\n> >\n> > Thank you for the patch.\n> >\n> > On Mon, Jun 16, 2025 at 10:47:23AM +0200, Milan Zamazal wrote:\n> >> Let's introduce a configuration option for rpi configuration file path.\n> >> It may be arguable whether pipeline specific configurations belong to\n> >> the global configuration file.  But:\n> >>\n> >> - Having a single configuration file is generally easier for the user.\n> >> - The original configuration via environment variables can be already\n> >>   considered global.\n> >> - This option points to other configuration files and it makes little\n> >>   sense to add another configuration file to the chain.\n> >\n> > I'm not sure to follow you here. With this patch we'll have two\n> > configuration files, a global one, and one for the rpi pipeline handler.\n> > Isn't that exactly \"adding another configuration file to the chain\" ?\n>\n> It is.  IIRC my explanation above was sort of response to some offline\n> discussion regarding keeping or not keeping pipeline configurations\n> separate, while being conservative about contingent changes at the given moment.\n>\n> > Have you considered including the pipeline-specific configuration to the\n> > global configuration file ?\n>\n> Reading my words above, I think so :-).  And \"Allow enabling software\n> ISP in runtime\" patch is such a case after all.\n>\n> > CC'ing Naush and David for feedback.\n>\n> Let's discuss what's preferable.\n\nI would be happy to add the RPi pipeline specific configuration\nparameters directly to the global configuration file as an end goal.\nIf there needs to be an interim step where we add the rpi config file\nto the global config file, that's ok with me.\n\nNaush\n\n\n>\n> >> The configuration snippet:\n> >>\n> >>   configuration:\n> >>     pipeline:\n> >>       rpi:\n> >>         config_file: FILENAME\n> >>\n> >> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> >> ---\n> >>  src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 8 +++++++-\n> >>  1 file changed, 7 insertions(+), 1 deletion(-)\n> >>\n> >> diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> >> index d8c7ca935..850a5e31b 100644\n> >> --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> >> +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n> >> @@ -20,6 +20,7 @@\n> >>  #include <libcamera/property_ids.h>\n> >>\n> >>  #include \"libcamera/internal/camera_lens.h\"\n> >> +#include \"libcamera/internal/global_configuration.h\"\n> >>  #include \"libcamera/internal/ipa_manager.h\"\n> >>  #include \"libcamera/internal/v4l2_subdevice.h\"\n> >>\n> >> @@ -1084,7 +1085,12 @@ int CameraData::loadPipelineConfiguration()\n> >>      /* Initial configuration of the platform, in case no config file is present */\n> >>      platformPipelineConfigure({});\n> >>\n> >> -    char const *configFromEnv = utils::secure_getenv(\"LIBCAMERA_RPI_CONFIG_FILE\");\n> >> +    const GlobalConfiguration &config = pipe()->cameraManager()->_d()->configuration();\n> >> +    std::optional<std::string> configFile =\n> >> +            config.envOption(\"LIBCAMERA_RPI_CONFIG_FILE\", \"pipelines.rpi.config_file\");\n> >> +    if (!configFile.has_value())\n> >> +            return 0;\n> >> +    char const *configFromEnv = configFile.value().c_str();\n> >>      if (!configFromEnv || *configFromEnv == '\\0')\n> >>              return 0;\n> >>\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 8CDA9C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 23 Jun 2025 08:01:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AC58F68DE3;\n\tMon, 23 Jun 2025 10:01:12 +0200 (CEST)","from mail-vs1-xe2a.google.com (mail-vs1-xe2a.google.com\n\t[IPv6:2607:f8b0:4864:20::e2a])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D3E4861533\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 23 Jun 2025 10:01:09 +0200 (CEST)","by mail-vs1-xe2a.google.com with SMTP id\n\tada2fe7eead31-4e775b06188so123322137.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 23 Jun 2025 01:01:09 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"QLB+t2CW\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1750665668; x=1751270468;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=po+9LFwj3BG20jLMHFZtOYEltIENY2tyt8x1bPgt4gE=;\n\tb=QLB+t2CWWNedtgv0MdQr4w5KsTbw5xMNlVLH4u57l9r9OmtGIsY5tJepuWxSIRWIh/\n\ts1/BxtFlbUU3crknegALBc2yuOHkQd79WC+GmrwEjZyZj5bL8/fpZRk6xAyKK+vUY8Gg\n\tcKimsKHZvMBPvb+3UCBYOk0F/Exlx6/AdFqzvoQ7UUTbzucyVZEib6bTpK2t2aQ2LO5i\n\tYuIMZvvVhcWhVAw0uZxXN6xKztEQ0SuaiW2GaiUwizKahi5io1jnTlPmL2LyqlrzvDw+\n\tapOVuqnluFYvt9R0gCAB+xNj+xWnB7q+xwNPoESgR260OJ74MrGco2v7/y0cVbewXe6D\n\tlZyQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750665668; x=1751270468;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=po+9LFwj3BG20jLMHFZtOYEltIENY2tyt8x1bPgt4gE=;\n\tb=uX5bg8oqIhz45Djm55jIbTz8dDuKWv9GTr4MORto08bDEFDl1Ase992hb9hhWO/r3F\n\tG5Cy0acvo2jTLPvttAt7EfKvBL6cnBluEhle4ksoMy1Ww+vn7un2qWoTbJWZfyBtplQD\n\t7yNm6Wi5vICN73wq/jlZMbKrueHg5eaJl3BjVoI0MKiwpiatG1fL1N5mwhh2rybO/K54\n\tBsZCSXPdrXhYRT4KmVSzEh0LXSyWAOfwNWgDg/pYXGodwdXyvkLq+JdEtlXHkyS2YBsu\n\t15r5svanCvdkxSzbSKCt//yircUGdWmDpIZoa5Vz9IXtDEyu0ughjZu5IuNy7vJ9mGJ/\n\tHPPA==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCXMONNY4c9z9QKdvi5vlhQYr9cYyheihdQaJBR/LEVqVTx5upJcMCk8pUpig7t6q+SsCdhtbdvFBP54gpENndI=@lists.libcamera.org","X-Gm-Message-State":"AOJu0Yy7WCyujrAE0OYXZ47fp1xdaOCS1ghSF2QCjXaLqY5e3XrJm7iu\n\tZaDtegSu0x6zlMBT2jvpHJCLPVk7XHjnJRb1t1mA/V9fvvvtbMKn9o+wgpaa8OV8NMolhr46DhZ\n\tbKQz/YVrj49VwJCki29sNB0zbXoQs+Vn+Y0O70kT1qg==","X-Gm-Gg":"ASbGncs9unyFIEDX9WAt86NGyXK8f+LSR0pHNZu0MvxR0pjrGSTQvTLLseOOfWLxpop\n\t04SnWNBHgxw/bRPXDsEDOUiwghccV3wiQYXaNnbzN+MCtvlJme13VC9JDeRSkMqRzIqiIsD9l6a\n\tZm3POtHSIy7zTwvCqkNea/DKUIdJ59ze9+bXiKmkWdl9FP0hSrDjCCao+ONRIYgYzjKuP5KU/IY\n\tzE=","X-Google-Smtp-Source":"AGHT+IG09/+SOyWvMZSTrLyJO9xySFo0hK6Qm76+abbjsNZBP6tE9ykhNyCJHl5sih+5ENoj5c16jEuk0WJeeAanbp4=","X-Received":"by 2002:a05:6102:2d02:b0:4df:934e:46a7 with SMTP id\n\tada2fe7eead31-4e9c2475a93mr2112258137.0.1750665668315;\n\tMon, 23 Jun 2025 01:01:08 -0700 (PDT)","MIME-Version":"1.0","References":"<20250616084733.18707-1-mzamazal@redhat.com>\n\t<20250616084733.18707-6-mzamazal@redhat.com>\n\t<20250616234515.GH28664@pendragon.ideasonboard.com>\n\t<85sejudrfq.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","In-Reply-To":"<85sejudrfq.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Mon, 23 Jun 2025 09:00:37 +0100","X-Gm-Features":"Ac12FXxfcz9i0oW55Vo0D50uM0wdCTwL2j7E8Jnj6Oq-23naDq1wONYBuuk7g3s","Message-ID":"<CAEmqJPoRfMafV6nw_5mQbm_wLFtyf5b3VG4P1XQaN701xs9BnA@mail.gmail.com>","Subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","To":"Milan Zamazal <mzamazal@redhat.com>","Cc":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<pobrn@protonmail.com>,  David Plowman <david.plowman@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","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":34621,"web_url":"https://patchwork.libcamera.org/comment/34621/","msgid":"<85zfdxcz1b.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-06-24T08:41:04","subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Naush,\n\nNaushir Patuck <naush@raspberrypi.com> writes:\n\n> I would be happy to add the RPi pipeline specific configuration\n> parameters directly to the global configuration file as an end goal.\n> If there needs to be an interim step where we add the rpi config file\n> to the global config file, that's ok with me.\n\nThank you for your opinion.  Rather than making an interim step, I\nput the rpi configuration to the global configuration file directly in\nv11 (LIBCAMERA_RPI_CONFIG_FILE still works unchanged).  Not sure about\nthe exact structure there, but let's discuss that in review.\n\nRegards,\nMilan","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 05B0BBDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Jun 2025 08:41:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5D11268DE5;\n\tTue, 24 Jun 2025 10:41:12 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9BC2E61534\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Jun 2025 10:41:10 +0200 (CEST)","from mail-wm1-f72.google.com (mail-wm1-f72.google.com\n\t[209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-683-P-1qyIZZPAu-mvH-sQ-6iw-1; Tue, 24 Jun 2025 04:41:07 -0400","by mail-wm1-f72.google.com with SMTP id\n\t5b1f17b1804b1-450d290d542so1184255e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Jun 2025 01:41:07 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb ([85.93.96.130])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-45369eae840sm107832525e9.38.2025.06.24.01.41.04\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 24 Jun 2025 01:41:05 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"dyLlEjeF\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1750754469;\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=SCEeGcIQjoLKB1I0A0RdQ92WPU2UgYl0j9amwEzMzmU=;\n\tb=dyLlEjeF9FdyuRL6nRZYYYOkRTPBtMsLFGyrwGbF7T38lTpVgXugoaH9FsvYZUMyyDCVFP\n\tejc5N5InFxQ0Grin1vykCLtG8PTyagc0OvhgeMqrSMsZuURouRSlrBqRmz2GWpQeRz2v1N\n\t/1P8NFCaOM+qF2tc7nscD0QXv2kDb7s=","X-MC-Unique":"P-1qyIZZPAu-mvH-sQ-6iw-1","X-Mimecast-MFC-AGG-ID":"P-1qyIZZPAu-mvH-sQ-6iw_1750754466","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750754466; x=1751359266;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=SCEeGcIQjoLKB1I0A0RdQ92WPU2UgYl0j9amwEzMzmU=;\n\tb=rDinM1FFHgVC6xhiV25Tb3FTJ529joUjVaN4qq3wMUFNJp/xKDkjBh1b/ooAjc07ht\n\tGYskB0o+UJcfcVML1KftrSANKRpVwwdbbzoD+R/c07SGqeQvqfA3A6yKc256yhmMCe06\n\ts/2VVRyZdyqXH99GaMoBaoiQUPGkM49V1KbnjIFvEVFiwV4Q8INAl7P0jHP+9gPC8U3E\n\t2iB7rHHgxzVW5O0g6ByySAurx1oSDYWReD+rcu2D2js/i9wzQk4+rls5TmpNBwvrjgFM\n\tE3TBnuT5vnkZ6kyNdzGotbVAHxcDrI6ov6L6Nxm2ZLT7Ebd0GTBa4cqjizwCcY5I832n\n\t2RgQ==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCWWLZW4CCXrwXp6eT+/bAA2DCXFpKJXtq/sf2I69FNnWRA/kbtKw2c9AVjj8XvVbbDB4Td7lVV4kMV6Cin0nJo=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YxWJwf+bdSkYfGjkWIrnApsqmFac+2gWBF6KXvl2qDKzBFrhN3e\n\t4I6v/WrJuH9qjTNBvWEvMFIkNsGKbWKpKC0dNggIR/MlY4dwbtvVcERsg5Mvlt7Mbwh+FbMxqvs\n\t5IxEm7Z6J04ubPaQwZvRt0brcg9HOH5XzXcaBdzecIf8njGTClKDaJVr3oxd4Eo7gYNCMi3d5X4\n\t8=","X-Gm-Gg":"ASbGncuU5GxNUfVHxlfJBZk9QqwFNg1gSotNf2KwF5d1CH/jZLZAQL1Jvm8tCfFvmDh\n\twAFwE76bKBTjfOwKuf5TOSoPOEhYBBMeQhZw49MbL5vv03Wm8IfE4cUpJM6vzR0WI8sExXvV2hh\n\trJcCZj6hjVDKqUwpKp3RM8nSX5ey6Ma6c9tBo31qSjGaFZjSIKp5t/oLYppZtEc7HOyZ6Drdymy\n\t4JhvDZDXI63EY8egEYSbUXuOtlDZ/ivQs2mTmAWyP0up7NvhQOUpasSrjXO2fHjAQvFJQxsg/XL\n\t12zKFM9vCH85Gpju7ycbp+7Ka1oZw51z92dx7FULCslA3Mw=","X-Received":["by 2002:a05:600c:1e8a:b0:450:cac5:45e7 with SMTP id\n\t5b1f17b1804b1-45365391bd6mr139130305e9.1.1750754466148; \n\tTue, 24 Jun 2025 01:41:06 -0700 (PDT)","by 2002:a05:600c:1e8a:b0:450:cac5:45e7 with SMTP id\n\t5b1f17b1804b1-45365391bd6mr139130005e9.1.1750754465792; \n\tTue, 24 Jun 2025 01:41:05 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IE1RYy7vpmAMjg4fi9GID/8KnLMyxrzi7U4KmZuBwbTBvjND1fqqBS6Qa9kia/cKuucFdd+Xg==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab?=\n\t=?utf-8?b?w6FzIFDFkWN6ZQ==?= <pobrn@protonmail.com>, David Plowman\n\t<david.plowman@raspberrypi.com>","Subject":"Re: [PATCH v10 05/13] config: Look up rpi config path in\n\tconfiguration file","In-Reply-To":"<CAEmqJPoRfMafV6nw_5mQbm_wLFtyf5b3VG4P1XQaN701xs9BnA@mail.gmail.com>\n\t(Naushir Patuck's message of \"Mon, 23 Jun 2025 09:00:37 +0100\")","References":"<20250616084733.18707-1-mzamazal@redhat.com>\n\t<20250616084733.18707-6-mzamazal@redhat.com>\n\t<20250616234515.GH28664@pendragon.ideasonboard.com>\n\t<85sejudrfq.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<CAEmqJPoRfMafV6nw_5mQbm_wLFtyf5b3VG4P1XQaN701xs9BnA@mail.gmail.com>","Date":"Tue, 24 Jun 2025 10:41:04 +0200","Message-ID":"<85zfdxcz1b.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":"YwKQGdri3HL2sSIrtI8c2FiC_brYxiisbm_BNcdo7P0_1750754466","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>"}}]