[{"id":36269,"web_url":"https://patchwork.libcamera.org/comment/36269/","msgid":"<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>","date":"2025-10-15T22:23:46","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Bryan O'Donoghue (2025-10-15 02:22:27)\n> EGL is not thread-safe and in fact associates invisible handles with the\n> threadid of the calling context.\n> \n> As a result we need to make Deabyer::configure() and Debayer::process() in SoftISP execute on\n\ns/Deabyer/Debayer/\n\n> the same thread.\n> \n> When we call Debayer::configure() in the egl class this will setup and egl context\n> for us which is associated with the calling thread context. Hence when\n> Debayer::process(); runs it must run in the same thread as\n> Debayer::configure() or the hidden Gegl context handles will not point\n\nGegl? or egl ?\n\n> to the same place.\n> \n> Move start thread into configure() as a first step towards this.\n> \n> Co-developed-by: Robert Mader <robert.mader@collabora.com>\n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> ---\n>  src/libcamera/software_isp/software_isp.cpp | 3 ++-\n>  1 file changed, 2 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\n> index 6f1f88fe..500858ab 100644\n> --- a/src/libcamera/software_isp/software_isp.cpp\n> +++ b/src/libcamera/software_isp/software_isp.cpp\n> @@ -264,6 +264,8 @@ int SoftwareIsp::configure(const StreamConfiguration &inputCfg,\n>         if (ret < 0)\n>                 return ret;\n>  \n> +       ispWorkerThread_.start();\n> +\n\nI don't yet know when ispWorkerThread is stopped ... but I'm not sure if\nthis is a good place to call start().\n\nI might assume SoftwareIsp::stop() is calling ispWorkerThread_stop() ...\nbut we can generally assume that a camera pipeline could have the\nfollowing call pattern:\n\n  Camera() // construct new camera\n  Camera->Configure(A) /// Yeah make it like this.\n  Camera->Configure(B) /// Sorry I changed my mind.\n  Camera->Start();\n  Camera->Stop();\n\nSo I think if you're moving something out of start it would have to go\ninto the constructor and be alive for the 'lifetime' of the object ?\n\nBut I haven't looked at anything else around this so all the above is\npurely comments based on seeing a thread operation moving from start to\nconfigure.\n\n--\nKieran\n\n\n>         return debayer_->configure(inputCfg, outputCfgs, ccmEnabled_);\n>  }\n>  \n> @@ -345,7 +347,6 @@ int SoftwareIsp::start()\n>         if (ret)\n>                 return ret;\n>  \n> -       ispWorkerThread_.start();\n>         return 0;\n>  }\n>  \n> -- \n> 2.51.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 C1BD4BE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Oct 2025 22:23:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D77B260635;\n\tThu, 16 Oct 2025 00:23:50 +0200 (CEST)","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 A73846062E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Oct 2025 00:23:49 +0200 (CEST)","from pendragon.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 F2C64558;\n\tThu, 16 Oct 2025 00:22:09 +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=\"Jic9Z2h5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1760566930;\n\tbh=eZTzundyIQmhb0lzELyR1OdgYbN8BSOG3sh1q9F/sBA=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=Jic9Z2h5ViNcP5wk33v7nbv3JPP9haUEDe56KYpMiCA+W1GCRUheZIrhnWoJRCQxc\n\tKw5XfYpL5/4poU/fG9U2s0/oSUCRb3zCpvno+AgqcO+KLM4rRg7BiYJD9iP5HWB/Vl\n\tAth+VStB/s0Tnq1DOJz4iouI5UBclr3hDCQTcBR4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20251015012251.17508-16-bryan.odonoghue@linaro.org>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"hdegoede@redhat.com, mzamazal@redhat.com, bryan.odonoghue@linaro.org,\n\tbod.linux@nxsw.ie, Robert Mader <robert.mader@collabora.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 15 Oct 2025 23:23:46 +0100","Message-ID":"<176056702628.162040.4287290476213557203@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":36272,"web_url":"https://patchwork.libcamera.org/comment/36272/","msgid":"<bf1f1a2b-3fde-4bab-9d0e-2960bada4292@linaro.org>","date":"2025-10-15T22:29:48","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 15/10/2025 23:23, Kieran Bingham wrote:\n> Gegl? or egl ?\n\nYes I'm noticing I didn't follow my _own_ feedback from a previous \nreview cycle.\n\neGL to match the class name in the commit log.\n\n---\nbod","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 C8781C3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Oct 2025 22:29:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7DA0660638;\n\tThu, 16 Oct 2025 00:29:51 +0200 (CEST)","from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com\n\t[IPv6:2a00:1450:4864:20::32e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 97602605F3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Oct 2025 00:29:50 +0200 (CEST)","by mail-wm1-x32e.google.com with SMTP id\n\t5b1f17b1804b1-46e384dfde0so853555e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Oct 2025 15:29:50 -0700 (PDT)","from [192.168.0.19] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-47101c03644sm55179075e9.8.2025.10.15.15.29.48\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tWed, 15 Oct 2025 15:29:49 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"KD7FBQAu\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1760567390; x=1761172190;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=UgGXv0/kA+QCDrJYSzxSPodD4EEXQqe10Lzrv511JCo=;\n\tb=KD7FBQAugGx8yNWsvzESpwlHI1bT2V2jPruNWUPJtXtiqT6v+C/k3Td8JerBVjViQw\n\t4KZtxrAGLcejDqBj5nETHwL9o2c0Aey+lKkIGiefzw4qMBuKF+zdOV1m5XiJRouavMk5\n\tz3NLcahs4dTBNnEDL9U6jmS/62vrLFYWz2/jXFnGbdzHzRBh5vDPsLN1Jb4Ms4wUHtas\n\tlURkCrJD3Ix9xF9loD7K4nHF81cN6RLsVGhMp4C2zduL1y3sQ9JXStZOu6Z2rfo6EvpH\n\tNzeIZLJjSvYZp+ieXhNZ8UHYYwtQXA3YyqRi7/VEQdL4Z2oYGDqvj80F/8TnW4rbImcJ\n\tbSYw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1760567390; x=1761172190;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=UgGXv0/kA+QCDrJYSzxSPodD4EEXQqe10Lzrv511JCo=;\n\tb=Oo6PvwpDgQPmi+6v8/eM1hMMaARtLLmkfkYIjMRe8m0Jv7KzFwH/Cn/hTFiDFNWfsB\n\tc/w+qs/ecc6eWKT4xM3bVcvgeSRfeenlHkDTxfKFwFQDcCrRTFDDUQUPV/bkUMSTmbxj\n\taopWJK6LCV/vTXef8taiKyD1eWBycxi5R/kuxRoAHjD2txBOCrlKCgdpZUNLarhL8jgg\n\td/DhSw1PYqZ17nvC9jBfKpZMXoFWUAs/RiZldOq7IhLkNCDNOE7GyRAMsZr/+s2SjP5e\n\t1dir/h2htAJS8Ed2vg04WCfSp39WZgWuxO1dkENHkxiZW8mgCmVsqVTpgtSKHZqY6qmr\n\thFyQ==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCWWKgXwzICo7k+w4De1njHVCkCsP6WZw/xR87kEut5J0h4NtSkQ8nBeZE/tH4f0uSF5YeScSTVcEAallLBJ8Zs=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YxS/r8Q7E5mXmFxC7SuoMGXyBHcPTzkJnFZyC1SDKWw+yx3znjq\n\trAG12UpVBzb/sdwlZND9pO3THZDF4UrpIM9X6TEFLhhdbRJJ5Ns73SbyQnCRR8V6Sg0=","X-Gm-Gg":"ASbGncuzdKEWfLEce6Zg7DC0MEw64rn7+TQq/JZeFsalkkse3FqH4c+dhImeIBCHv60\n\tJvlK9Ic6TNER/13jJq2ae5LXjy7y27z3aQLp2ZvL74pKv6oc/uyKSzH9hQv4TxiE9VSt8EMRX5V\n\tUHw7q5TgiRrNcnqPVliE2+iuTDrOp+y0YODAv69zc8gRl7zzbwcA5xiyb8uPNgZiXajubtdiogc\n\tiHZzS6gNT06WbwpMQwsSOpLod1hOi41tXgz2G8oDUOKEOKiPiK1Cj86tRKTlD7lG8w/h1v1iDp/\n\txd0czOilkNFq7p+rQ/Zt+OxdiekmOGBk0tiyTkdfv0Pcq8+bvcVuoI10PKtR1F2ppOWZ5S/azRY\n\toFCsec4DK37SQJ7/M+lhMcy7cAGAxUR0mkfUGIYTvQE7VDGD7WuO4XzBDGJj56AMZ82i6qTKSKm\n\tUq8v4EcCU5B61S6t46B0YZ2Vtds5BgT5Ao2tTxd+OL8fZf3A==","X-Google-Smtp-Source":"AGHT+IEE2XiF94yjnQAL3fdRnNXd2631+XA9pIHyLlG0pRYVuDkp7ldeGY6B0DAd7rZBaGFkWSXraA==","X-Received":"by 2002:a05:600c:37cd:b0:46e:59dd:1b55 with SMTP id\n\t5b1f17b1804b1-46fa9a8b3e3mr231366875e9.2.1760567390145; \n\tWed, 15 Oct 2025 15:29:50 -0700 (PDT)","Message-ID":"<bf1f1a2b-3fde-4bab-9d0e-2960bada4292@linaro.org>","Date":"Wed, 15 Oct 2025 23:29:48 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"hdegoede@redhat.com, mzamazal@redhat.com, bod.linux@nxsw.ie,\n\tRobert Mader <robert.mader@collabora.com>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":37184,"web_url":"https://patchwork.libcamera.org/comment/37184/","msgid":"<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-12-03T14:09:20","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Kieran Bingham <kieran.bingham@ideasonboard.com> writes:\n\n> Quoting Bryan O'Donoghue (2025-10-15 02:22:27)\n>> EGL is not thread-safe and in fact associates invisible handles with the\n>> threadid of the calling context.\n>> \n>> As a result we need to make Deabyer::configure() and Debayer::process() in SoftISP execute on\n>\n> s/Deabyer/Debayer/\n>\n>> the same thread.\n>> \n>> When we call Debayer::configure() in the egl class this will setup and egl context\n>> for us which is associated with the calling thread context. Hence when\n>> Debayer::process(); runs it must run in the same thread as\n>> Debayer::configure() or the hidden Gegl context handles will not point\n>\n> Gegl? or egl ?\n>\n>> to the same place.\n>> \n>> Move start thread into configure() as a first step towards this.\n>> \n>> Co-developed-by: Robert Mader <robert.mader@collabora.com>\n>> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n>> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n>> ---\n>>  src/libcamera/software_isp/software_isp.cpp | 3 ++-\n>>  1 file changed, 2 insertions(+), 1 deletion(-)\n>> \n>> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\n>> index 6f1f88fe..500858ab 100644\n>> --- a/src/libcamera/software_isp/software_isp.cpp\n>> +++ b/src/libcamera/software_isp/software_isp.cpp\n>> @@ -264,6 +264,8 @@ int SoftwareIsp::configure(const StreamConfiguration &inputCfg,\n>>         if (ret < 0)\n>>                 return ret;\n>>  \n>> +       ispWorkerThread_.start();\n>> +\n>\n> I don't yet know when ispWorkerThread is stopped ... but I'm not sure if\n> this is a good place to call start().\n>\n> I might assume SoftwareIsp::stop() is calling ispWorkerThread_stop() ...\n> but we can generally assume that a camera pipeline could have the\n> following call pattern:\n>\n>   Camera() // construct new camera\n>   Camera->Configure(A) /// Yeah make it like this.\n>   Camera->Configure(B) /// Sorry I changed my mind.\n>   Camera->Start();\n>   Camera->Stop();\n>\n> So I think if you're moving something out of start it would have to go\n> into the constructor and be alive for the 'lifetime' of the object ?\n>\n> But I haven't looked at anything else around this so all the above is\n> purely comments based on seeing a thread operation moving from start to\n> configure.\n\nI can't find answers to this comment.  Also, what if\n\n  Camera->start();\n\nis called again, without calling configure()?  Then the thread wouldn't\nbe running.\n\n> --\n> Kieran\n>\n>\n>>         return debayer_->configure(inputCfg, outputCfgs, ccmEnabled_);\n>>  }\n>>  \n>> @@ -345,7 +347,6 @@ int SoftwareIsp::start()\n>>         if (ret)\n>>                 return ret;\n>>  \n>> -       ispWorkerThread_.start();\n>>         return 0;\n>>  }\n>>  \n>> -- \n>> 2.51.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 41794BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 14:09:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7DD9360F2D;\n\tWed,  3 Dec 2025 15:09:28 +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 A5E4F609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 15:09:26 +0100 (CET)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-632-HrhakkaRPrOppSxt4-Gk1A-1; Wed, 03 Dec 2025 09:09:24 -0500","by mail-wm1-f69.google.com with SMTP id\n\t5b1f17b1804b1-47910af0c8bso46552595e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 03 Dec 2025 06:09:23 -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-42e1c5c3041sm36855673f8f.6.2025.12.03.06.09.21\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 03 Dec 2025 06:09:21 -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=\"bUXSMVpA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1764770965;\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=Z+fxRCZg8gmQof399Sz/L/bejZFAOaYDaCKj6RrHRA4=;\n\tb=bUXSMVpA7SIxXL8gBxyRVWz0Gr52KVTPnETs1qxTO7/Enuw866aW+K0Ipc0ZwoMAtoFcQV\n\tyfEfwyHFKjGrCRUNgBQES8gAUo3+yhmN9bLe4zEHDnbka4IUWmbBxa2ot8L4QyNPxFPWCq\n\tMyQpEErqLqoGKHRIuyyV1qpgZ7nR0Nw=","X-MC-Unique":"HrhakkaRPrOppSxt4-Gk1A-1","X-Mimecast-MFC-AGG-ID":"HrhakkaRPrOppSxt4-Gk1A_1764770963","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764770962; x=1765375762;\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=Z+fxRCZg8gmQof399Sz/L/bejZFAOaYDaCKj6RrHRA4=;\n\tb=GRTDssFknqseelGAuo8QKPi0tp6KF2nPfzoqZllTgKWnobUyWZhdJDLkqZm+cuY94t\n\teisqyRZFsdyaP8DNEmCxFloy4Z5+cyzVC8Tl7hC2MSp9nle3S5typ2UWb7VyKnlhdWWr\n\tOkyXOUsaJQ/JgGuPM8vGHGpN1a22k6VLHj4a99103p/2AaA1hT95Di0bNETjEMmODLRI\n\tTBzq/DO8ScSxPKt0WpxXDzdNXxObEL49HczdeElhvtEIcxhh7t4Gmq9fPSZoZiy/9oYZ\n\tPkLK+hqgzyZB33WWbqYePigtdw3MkeQhgZy5/1uB2VrnOVZJSIKttVQ4MZbIUCxxseYv\n\t0raw==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCW2ey5LZa/LpyOH65jNs/+/zmcXpU4C49NN3noLyVirkLQOLjTk+l4ATv98uPvIDwd8/tbUgW7215SOQEAV/qY=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YyVwrWQIxYaGsRDBXjzXx31p3AmoYEZh8cdrVE+apGo7sxNv1zH\n\tR+s8QGDkwTzRrvhQX69E2jVcrCRSvPZboVAeZDuuAuHqQf+UjbQ690ARYMx1vmaNbyOf97qyR0a\n\tCwAB6swFZEMqBsNUh2lr2bdirLZYjJJWykQetZUjaOrO9K8LKJ1PiIMjepyxVYbWP3TC6R86wJr\n\tA=","X-Gm-Gg":"ASbGncuK9BeZrE9pH34q9ELj9sIOAD0uKjgKEd6OqogifbhFW/UX1CnToi0jo8dONl0\n\trZ06t+mceXbvuF4SG7yAFGW1aFfmaMwwCpJJgbxQzW6UBdTwm2hywaL9m3HtnoGWGTKCIQhr9VH\n\tHp+XsTpsu4TYLaivcgV2rJT0DejDs1QIyPTfXUfrWnt2kBA+YKptH9ah8XqQ8weWHPOIyNXBNqw\n\t5rCdcjOQQxI1s2qWmq6sik6P1hqgflNHcN7+fiYDCrmpJ4CzfX4u8sTlVLEg6hV5Bv43y3UM249\n\teCgSqp1hfCvQGCYBylSBomc6kPtBFFxtRxE+THI7rfTDcs3e3tp17zxNgpi6/9e60byFc8/SWdR\n\tr4RhtGz8XdlXRLJ2LcNVTTie+qNZlVtK2hHz5M42OF9OJrWpKO+o9BgqrCjWHWKo=","X-Received":["by 2002:a05:600c:c491:b0:475:e09c:960e with SMTP id\n\t5b1f17b1804b1-4792af49130mr25488255e9.32.1764770962485; \n\tWed, 03 Dec 2025 06:09:22 -0800 (PST)","by 2002:a05:600c:c491:b0:475:e09c:960e with SMTP id\n\t5b1f17b1804b1-4792af49130mr25487905e9.32.1764770962015; \n\tWed, 03 Dec 2025 06:09:22 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IGlTpfjSkIHOcV0TDotuJ45ByR6H+0kAzEJWdfnPpP2ebLRmB8Vbh3sgMyJHzCpdECX7HA6SQ==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org,  hdegoede@redhat.com,\n\tbod.linux@nxsw.ie,  Robert Mader <robert.mader@collabora.com>","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","In-Reply-To":"<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>\n\t(Kieran Bingham's message of \"Wed, 15 Oct 2025 23:23:46 +0100\")","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>","Date":"Wed, 03 Dec 2025 15:09:20 +0100","Message-ID":"<855xan4pyn.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":"b8aISmo412t6L3eC50Z1QLTAA_C99qioYfYuIKVpzb8_1764770963","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":37189,"web_url":"https://patchwork.libcamera.org/comment/37189/","msgid":"<176477353428.890597.3500723038257771469@ping.linuxembedded.co.uk>","date":"2025-12-03T14:52:14","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Milan Zamazal (2025-12-03 14:09:20)\n> Kieran Bingham <kieran.bingham@ideasonboard.com> writes:\n> \n> > Quoting Bryan O'Donoghue (2025-10-15 02:22:27)\n> >> EGL is not thread-safe and in fact associates invisible handles with the\n> >> threadid of the calling context.\n> >> \n> >> As a result we need to make Deabyer::configure() and Debayer::process() in SoftISP execute on\n> >\n> > s/Deabyer/Debayer/\n> >\n> >> the same thread.\n> >> \n> >> When we call Debayer::configure() in the egl class this will setup and egl context\n> >> for us which is associated with the calling thread context. Hence when\n> >> Debayer::process(); runs it must run in the same thread as\n> >> Debayer::configure() or the hidden Gegl context handles will not point\n> >\n> > Gegl? or egl ?\n> >\n> >> to the same place.\n> >> \n> >> Move start thread into configure() as a first step towards this.\n> >> \n> >> Co-developed-by: Robert Mader <robert.mader@collabora.com>\n> >> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> >> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> >> ---\n> >>  src/libcamera/software_isp/software_isp.cpp | 3 ++-\n> >>  1 file changed, 2 insertions(+), 1 deletion(-)\n> >> \n> >> diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\n> >> index 6f1f88fe..500858ab 100644\n> >> --- a/src/libcamera/software_isp/software_isp.cpp\n> >> +++ b/src/libcamera/software_isp/software_isp.cpp\n> >> @@ -264,6 +264,8 @@ int SoftwareIsp::configure(const StreamConfiguration &inputCfg,\n> >>         if (ret < 0)\n> >>                 return ret;\n> >>  \n> >> +       ispWorkerThread_.start();\n> >> +\n> >\n> > I don't yet know when ispWorkerThread is stopped ... but I'm not sure if\n> > this is a good place to call start().\n> >\n> > I might assume SoftwareIsp::stop() is calling ispWorkerThread_stop() ...\n> > but we can generally assume that a camera pipeline could have the\n> > following call pattern:\n> >\n> >   Camera() // construct new camera\n> >   Camera->Configure(A) /// Yeah make it like this.\n> >   Camera->Configure(B) /// Sorry I changed my mind.\n> >   Camera->Start();\n> >   Camera->Stop();\n> >\n> > So I think if you're moving something out of start it would have to go\n> > into the constructor and be alive for the 'lifetime' of the object ?\n> >\n> > But I haven't looked at anything else around this so all the above is\n> > purely comments based on seeing a thread operation moving from start to\n> > configure.\n> \n> I can't find answers to this comment.  Also, what if\n> \n>   Camera->start();\n> \n> is called again, without calling configure()?  Then the thread wouldn't\n> be running.\n> \n\nIndeed, a\n\n\tCamera()\n\tCamera->Configure()\n\tCamera->Start()\n\tCamera->Stop()\n\tCamera->Start()\n\tCamera->Stop()\n\nis a perfectly valid use of the API, so it's got to have it's resources\nafter a stop / restart cycle.\n\n--\nKiran\n\n\n\n> > --\n> > Kieran\n> >\n> >\n> >>         return debayer_->configure(inputCfg, outputCfgs, ccmEnabled_);\n> >>  }\n> >>  \n> >> @@ -345,7 +347,6 @@ int SoftwareIsp::start()\n> >>         if (ret)\n> >>                 return ret;\n> >>  \n> >> -       ispWorkerThread_.start();\n> >>         return 0;\n> >>  }\n> >>  \n> >> -- \n> >> 2.51.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 C9BCEC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 14:52:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EE7DC60F4A;\n\tWed,  3 Dec 2025 15:52:19 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 39494609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 15:52:18 +0100 (CET)","from pendragon.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 F3C661574;\n\tWed,  3 Dec 2025 15:50:02 +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=\"HSFFURg2\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1764773403;\n\tbh=Eee9y/SatdSJ6tbwsghaTbglIHJ4TwUl5JtpZC/p9Vg=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=HSFFURg2Rk9E2sM6yBS7xEC3f2CdkGTcO/ywAbqchqknoO+29gRDqt14FT9qUKCZT\n\tqtUW52Bd2ce1BdeKARdtpDKlawpu9t1XOidhPQGuhG/3YDOaMc1IBf+Rx8uZbDqzr6\n\tV0QqYXmqNF7rz0p6XlgiCcCAGDm1gzbgsuRS8T28=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>\n\t<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org, hdegoede@redhat.com,\n\tbod.linux@nxsw.ie, Robert Mader <robert.mader@collabora.com>","To":"Milan Zamazal <mzamazal@redhat.com>","Date":"Wed, 03 Dec 2025 14:52:14 +0000","Message-ID":"<176477353428.890597.3500723038257771469@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":37190,"web_url":"https://patchwork.libcamera.org/comment/37190/","msgid":"<4d82ea4b-f407-4420-a958-965e2516977c@linaro.org>","date":"2025-12-03T15:00:58","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 03/12/2025 14:52, Kieran Bingham wrote:\n>> is called again, without calling configure()?  Then the thread wouldn't\n>> be running.\n>>\n> Indeed, a\n> \n> \tCamera()\n> \tCamera->Configure()\n> \tCamera->Start()\n> \tCamera->Stop()\n> \tCamera->Start()\n> \tCamera->Stop()\n> \n> is a perfectly valid use of the API, so it's got to have it's resources\n> after a stop / restart cycle.\n> \n> --\n> Kiran\n\nOK.\n\nLet me see if the thread start/stop can be moved to the \nconstructor/destructor.\n\nI think we discussed this before but, I forget if it was tried and \ndidn't work or more likely discussed and forgotten about.\n\n---\nbod","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 F105EBD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 15:01:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2D75960F4C;\n\tWed,  3 Dec 2025 16:01:04 +0100 (CET)","from mail-wr1-x429.google.com (mail-wr1-x429.google.com\n\t[IPv6:2a00:1450:4864:20::429])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 60B92609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 16:01:02 +0100 (CET)","by mail-wr1-x429.google.com with SMTP id\n\tffacd0b85a97d-42e2b90ad22so1852861f8f.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 03 Dec 2025 07:01:02 -0800 (PST)","from [192.168.0.27] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-42e1c5d614asm39652481f8f.12.2025.12.03.07.00.59\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tWed, 03 Dec 2025 07:00:59 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"bz+uMFw+\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764774062; x=1765378862;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=JKfnAjWubnIo3T0QOrxmYpAzlRNJX+Da8U9nqFdHLsg=;\n\tb=bz+uMFw+I0IDyRU2Xdd0K46H4UJt+4zBg2UkuFbTiNrIPe84UWty3UFKyKR5raIZBM\n\ttEeMLrTo8qoC25yzA5GRQgTOH59uNxFQ6CCVziztEzvnaK2lshLutCTmogh0XtRhMqZD\n\tqA0qpR1ZfoWi1SmsAasw3TM6ydrPPEUXsYoDlK3BdtNgTSNku5fIEKkxx9g4mRGWKnYZ\n\tY3SQJY52p2ekbcoL4hoMbHnTf0Msu5PK01CgSo4ZNHSAf7z0/zqbR35aCPJ+4O5WxNDK\n\tpRcfmNbBB9/NAy3UIDG0bsNCo/VgCqENo2tv5gHKn4vLQVxwAJEjkxE90/FcesFrDmF6\n\tTyQw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764774062; x=1765378862;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=JKfnAjWubnIo3T0QOrxmYpAzlRNJX+Da8U9nqFdHLsg=;\n\tb=lEdtWvWFX8+30t5Sqq5QnYhg9xuqU4SOnOsed+k8UbMX2WXM7L4OqFjrTR4E4OiUVb\n\tTDPUi/DsRSjyuBXRwkN+IlCUY7awtMEj9N/LEWA6fXsPSZtv8qUr1rsJCYzmnxOuC7ez\n\tdS57t01l479qSl73oKyJf9Tp8OpdAc0ZmEADZuYua3lujBjNcMJ/53z22uz/CwDPslrw\n\t0Fc2PzsIJx5k5CTmoMxVRyTBC/cMY95c9yVx3SlQ7ywJv3qqZb7zHWa7p/nNiSlqcrsT\n\tXaRmj8q/TKNEMIqa5sIA3YD0LYF9X9nU/rymnbbiuO/DW7yevaOvk43cfjT2Q6dRGzVr\n\t6GKw==","X-Gm-Message-State":"AOJu0YzX5RX42psQpm0LwgsBC3veAwKKVnYc92/vMb7XutpXvo0W5tKk\n\tVDFyxzP7j9x39FvMTNbTaAJ47FHRmxGUP2OraJtF4JPKMU/MVERJgbtag0H53qFVwL4=","X-Gm-Gg":"ASbGncvAE9lEbMoBX1aBNzvTLIRgaDshPZfCyByFWUyNlGy2PRqn6647RLLzNJiA5lU\n\t3O1N32md1D/aB/AdmCl+7eeGfiXiNBU9b0cisPgbvLA2ctyQ1xfmzGLpcm5qz23XSPyCNdzmfwo\n\tEfukAxjDIwSJD068b3tdeDtMaLpOutlOq20+HlolAQDWF1oYNye59++BSAjx05asawzBenUzAgS\n\t8C4u435RB8YlWHpydcgqBJdDv3ovDVoVeXlCRjoOZDDidrGPMQV8BGewy8oIHjtAwEhl9kQP94x\n\tGQ9SHJCjNr4zFBsYAzS77FCU0NmSEnN+m5F1Tv271mg2AHAl+VSY6+E7nDG3rjubyXn2zS5AHw9\n\tqGD/sYsM/s1GNPGHWSGO3NSY6QT9S1Ua2yHF4XAVXV+UDEbUMgyOcjvbaDTAwFH4p/Vw1j5vRwy\n\tVBKb1KhjiW6wmeqG/sn1kh88OMEMu/Ye/03c6Z5e+IO9pBoGlrpAbE","X-Google-Smtp-Source":"AGHT+IEJZnyfqGSx6Ni4jPZDPyRREaEkJ4gSulyGEN3LIET9l4d3bRGJjtK6JqpmiRky3nx4dQru5A==","X-Received":"by 2002:a5d:588d:0:b0:42b:3bfc:d5cd with SMTP id\n\tffacd0b85a97d-42f73173fd1mr2938612f8f.1.1764774060231; \n\tWed, 03 Dec 2025 07:01:00 -0800 (PST)","Message-ID":"<4d82ea4b-f407-4420-a958-965e2516977c@linaro.org>","Date":"Wed, 3 Dec 2025 15:00:58 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tMilan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org, hdegoede@redhat.com,\n\tbod.linux@nxsw.ie, Robert Mader <robert.mader@collabora.com>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>\n\t<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<176477353428.890597.3500723038257771469@ping.linuxembedded.co.uk>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<176477353428.890597.3500723038257771469@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":37191,"web_url":"https://patchwork.libcamera.org/comment/37191/","msgid":"<20251203151207.GA12121@pendragon.ideasonboard.com>","date":"2025-12-03T15:12:07","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Wed, Dec 03, 2025 at 03:00:58PM +0000, Bryan O'Donoghue wrote:\n> On 03/12/2025 14:52, Kieran Bingham wrote:\n> >> is called again, without calling configure()?  Then the thread wouldn't\n> >> be running.\n> >>\n> > Indeed, a\n> > \n> > \tCamera()\n> > \tCamera->Configure()\n> > \tCamera->Start()\n> > \tCamera->Stop()\n> > \tCamera->Start()\n> > \tCamera->Stop()\n> > \n> > is a perfectly valid use of the API, so it's got to have it's resources\n> > after a stop / restart cycle.\n> > \n> > --\n> > Kiran\n> \n> OK.\n> \n> Let me see if the thread start/stop can be moved to the \n> constructor/destructor.\n> \n> I think we discussed this before but, I forget if it was tried and \n> didn't work or more likely discussed and forgotten about.\n\nInstead of starting the thread earlier, can we move EGL code from\nDebayer::configure() to start ?","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 390B0C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 15:12:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 83D9C60F4E;\n\tWed,  3 Dec 2025 16:12:32 +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 A974C609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 16:12:30 +0100 (CET)","from pendragon.ideasonboard.com\n\t(p9411226-ipngn12302marunouchi.tokyo.ocn.ne.jp [153.160.235.226])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 531E3A98;\n\tWed,  3 Dec 2025 16:10:14 +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=\"mGJGVK9Y\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1764774615;\n\tbh=oUn6z3Zx3v7TV1CzzlmicFDtb8bR7gNqmPjeMoSxd9c=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=mGJGVK9YQMtTXl6Ge9G90LRbC9aE93Iqr1KzCndpqrPqM4BqcfxlkxKG04+xb3j4X\n\tl6MW5+cyr2RI00CDz7cq1iHhPDy9eEAR4nqYljVMfWEz+Yga7L1CGPfCAU+dzEs5yt\n\t059lm1GVgn8JzQZtmzKXYBuL1wVBy9Ged0BFeGnM=","Date":"Thu, 4 Dec 2025 00:12:07 +0900","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tMilan Zamazal <mzamazal@redhat.com>,\n\tlibcamera-devel@lists.libcamera.org, hdegoede@redhat.com,\n\tbod.linux@nxsw.ie, Robert Mader <robert.mader@collabora.com>","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","Message-ID":"<20251203151207.GA12121@pendragon.ideasonboard.com>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>\n\t<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<176477353428.890597.3500723038257771469@ping.linuxembedded.co.uk>\n\t<4d82ea4b-f407-4420-a958-965e2516977c@linaro.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<4d82ea4b-f407-4420-a958-965e2516977c@linaro.org>","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":37192,"web_url":"https://patchwork.libcamera.org/comment/37192/","msgid":"<2a13871c-c5fb-40bf-9797-4ee33593ba03@linaro.org>","date":"2025-12-03T15:33:03","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 03/12/2025 15:12, Laurent Pinchart wrote:\n> On Wed, Dec 03, 2025 at 03:00:58PM +0000, Bryan O'Donoghue wrote:\n>> On 03/12/2025 14:52, Kieran Bingham wrote:\n>>>> is called again, without calling configure()?  Then the thread wouldn't\n>>>> be running.\n>>>>\n>>> Indeed, a\n>>>\n>>> \tCamera()\n>>> \tCamera->Configure()\n>>> \tCamera->Start()\n>>> \tCamera->Stop()\n>>> \tCamera->Start()\n>>> \tCamera->Stop()\n>>>\n>>> is a perfectly valid use of the API, so it's got to have it's resources\n>>> after a stop / restart cycle.\n>>>\n>>> --\n>>> Kiran\n>>\n>> OK.\n>>\n>> Let me see if the thread start/stop can be moved to the\n>> constructor/destructor.\n>>\n>> I think we discussed this before but, I forget if it was tried and\n>> didn't work or more likely discussed and forgotten about.\n> \n> Instead of starting the thread earlier, can we move EGL code from\n> Debayer::configure() to start ?\n> \n\nI believe it should be possible to add a start/stop method to the \ndebayer base class - there is already a stop() introduced as part of \nthis series.\n\nSo.\n\nSoftwareISP::start() {\n\tipa->start();\n\tinvokemethod(&Debayer::start(); // instantiate egl context here\n};\n\n\nfor i = 0 i < some_num; i++) {\n\tSoftwareISP::configure() {\n\t\tinvokeMethod(&Deabyer::configure();\n\t};\n\n\tSoftwareISP::configure() {\n\t\tinvokeMethod(&Deabyer::configure();\n\t};\n}\n\nSoftwareISP::process() {\n\tinvokeMethod(&Debayer::process..);\n}\n\nSoftwareISP::start() {\n\tipa->start();\n\tinvokemethod(&Debayer::stop(); // instantiate egl context here\n};\n\nLooking at the code we have now, I _believe_ the egl context init could \nbe moved to start.\n\nActually since configure() should be re-entrant, we will need to clean \nup eglImageBayerIn_ and eglBayerOut_.\n\nYes... I think this can be done and besides the egl object has some \nstrict checking to make sure member functions are only called from the \ncontext which created the object to begin with.\n\nYes.. probably, I think this can be done.\n\n\n---\nbod","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 AE8DABD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 15:33:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A388960F7C;\n\tWed,  3 Dec 2025 16:33:07 +0100 (CET)","from mail-wm1-x330.google.com (mail-wm1-x330.google.com\n\t[IPv6:2a00:1450:4864:20::330])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F0BAB609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 16:33:05 +0100 (CET)","by mail-wm1-x330.google.com with SMTP id\n\t5b1f17b1804b1-47775fb6cb4so50552775e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 03 Dec 2025 07:33:05 -0800 (PST)","from [192.168.0.27] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4792b12411fsm22361145e9.3.2025.12.03.07.33.03\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tWed, 03 Dec 2025 07:33:04 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"mFffocuz\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764775985; x=1765380785;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=sDvCarI9a4nYIdKvqtMH6BtBPN3JJS4rLOccFjJ7Bb4=;\n\tb=mFffocuzhatOTiaXezDKeCWSTfCHLt91I1H6Ejw18s3F4PAyHm42sjyb2aYYJsjbNh\n\toWwyd+B4WgLo8PdjGIQPTZX/c42OR3lF5ERemGUcs2PbyxjOEO+7MxZdaiCa1qtKcNKQ\n\tRgednzaKbAZnwqCGFO1Vf73S7XyAOg5donopVLUyxIkhJdDk9utKmOt0YNz7gjZAQhNg\n\tdmx3LPJC10oKIc3gX2ug8Zlz9XGAIpxistEtIJVmblzxcohnNIUxTOjWdCxZ5kS/xP/h\n\tvA6V7vcjO0X5R8YLasBX32KQrYt/Y35gaM/4cQJdbeksRvG6N9F14/mosBA7F2Uw9Ggy\n\tjOSw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764775985; x=1765380785;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=sDvCarI9a4nYIdKvqtMH6BtBPN3JJS4rLOccFjJ7Bb4=;\n\tb=S99Zy6siammTDgYVu7RFYMqgTZGTxzmZzM2cS1rQj70Hj6VHuVYvpn7X33rdj833sw\n\tW92NGcZ2uSqX2q6xMAkeD8loiWp4tvGLF09WkUvEyYV5pRKGu1UUrYE7uc/XVK5CXI7H\n\tY4AwF/Szn8Y9bV6+OedsdI/v1xhSlD0QJrIQLGMulOYZucwBdNDWKPeAjJxY/oQ9G9Iu\n\tkl14KPyNcoy7MrO0MKhjdUCPz+mYk4ete26GmVHsK4+dm+PQAi4ddrvui0iUeQxLFGlh\n\twTiGw0i5IhzXE3tfLdPeVXFL1iXmjaEyU70QSfDUFlTNz1NJbUEnkZ3kTFMZTBPmwd0E\n\tgZ3A==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCUA5uVD43AtWfg6SsZJMu8hjoZg2w5IAjhdr0rGr6MF7SIOsIoaOiZxMJTwV5cQRPBBW7/AGgIFEb6qBc4ZMkc=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YyPXTtKcuYCM0yJSjh3uZSFnGnwDgQ5k33BN4aJwVZvsqySGtFo\n\t17BC7nDA6d1PTrZsV3zIQnVM8jyilE5V7X/Zy9TELV/WSW8DXFwQLhkw4RH6qRBNvrfwk8IKtx5\n\t5L0Ri","X-Gm-Gg":"ASbGncshLcIPbPN7JOGTERxPFWroii+SdwKU36S24q9Q/cirxZTaYaWY9uoyxypzVzi\n\tnhM4L0omIs3legRiTWJLouLBw+JnaRxy7zGp2B3smxwkqjVLOg/LBSwAXo0MMbRKVwcGR7E4SYc\n\tFqW8BDkxN0jARit960NRFqoYGSq9pazIo0t1vv1mi/Fyt0p37Fg6HO6yXmDA0vyS44a2e0DB808\n\tK4xXAwqQyOPvoOYuy4VPAPiyiAHbHJjYWFgKzdwEcCLoMvBtR5fpyGXEVhNmJz5od0e7DNiYcbz\n\tI4sL4C8IvHLAPvaL0dfXWC8L+ouOeJAd9oYxOmEuNIPPjznI9QXpRzWlMs2rQVwWuOnqSdoXXak\n\tgU3Rz2z6qeZ7SHrjCEX+TVHGXXMgL+a7firiei+2shSFaCeDnW+sY4OnGPCz7Ryr1Np1pUTfT1e\n\tRjq5ytOiqb0sYIdnyPjUJBu1wsdUVw1K2vVyBKUrj5coC5fHN7+fRw5qBAmM2quWc=","X-Google-Smtp-Source":"AGHT+IE++k8qNFzN+QKusNvERz7KNnfrcM8FSPSP14UdFvJVFrN4UJb7ykaJpJk643Wp198/SPQICQ==","X-Received":"by 2002:a05:600c:4f54:b0:475:de14:db1e with SMTP id\n\t5b1f17b1804b1-4792af34a2emr30580735e9.24.1764775985315; \n\tWed, 03 Dec 2025 07:33:05 -0800 (PST)","Message-ID":"<2a13871c-c5fb-40bf-9797-4ee33593ba03@linaro.org>","Date":"Wed, 3 Dec 2025 15:33:03 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tMilan Zamazal <mzamazal@redhat.com>,\n\tlibcamera-devel@lists.libcamera.org, \n\thdegoede@redhat.com, bod.linux@nxsw.ie,\n\tRobert Mader <robert.mader@collabora.com>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>\n\t<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<176477353428.890597.3500723038257771469@ping.linuxembedded.co.uk>\n\t<4d82ea4b-f407-4420-a958-965e2516977c@linaro.org>\n\t<20251203151207.GA12121@pendragon.ideasonboard.com>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<20251203151207.GA12121@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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":37194,"web_url":"https://patchwork.libcamera.org/comment/37194/","msgid":"<5d014517-adf7-46ae-aa7b-9a6a7c9cbbd4@nxsw.ie>","date":"2025-12-03T15:54:23","subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","submitter":{"id":226,"url":"https://patchwork.libcamera.org/api/people/226/","name":"Bryan O'Donoghue","email":"bod.linux@nxsw.ie"},"content":"On 03/12/2025 15:33, Bryan O'Donoghue wrote:\n> SoftwareISP::start() {\n> \tipa->start();\n> \tinvokemethod(&Debayer::stop(); // instantiate egl context here\n> };\n\ng:/start/s//stop/g\n\n---\nbod","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 D5CDAC3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 15:54:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0C27F61009;\n\tWed,  3 Dec 2025 16:54:30 +0100 (CET)","from sea.source.kernel.org (sea.source.kernel.org\n\t[IPv6:2600:3c0a:e001:78e:0:1991:8:25])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 60080609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 16:54:29 +0100 (CET)","from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby sea.source.kernel.org (Postfix) with ESMTP id A0FC641978;\n\tWed,  3 Dec 2025 15:54:27 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 708A4C2BCB5;\n\tWed,  3 Dec 2025 15:54:25 +0000 (UTC)"],"Message-ID":"<5d014517-adf7-46ae-aa7b-9a6a7c9cbbd4@nxsw.ie>","Date":"Wed, 3 Dec 2025 15:54:23 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 15/39] libcamera: software_isp: Start the ISP thread\n\tin configure","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tMilan Zamazal <mzamazal@redhat.com>,\n\tlibcamera-devel@lists.libcamera.org, \n\thdegoede@redhat.com, Robert Mader <robert.mader@collabora.com>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-16-bryan.odonoghue@linaro.org>\n\t<176056702628.162040.4287290476213557203@ping.linuxembedded.co.uk>\n\t<855xan4pyn.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<176477353428.890597.3500723038257771469@ping.linuxembedded.co.uk>\n\t<4d82ea4b-f407-4420-a958-965e2516977c@linaro.org>\n\t<20251203151207.GA12121@pendragon.ideasonboard.com>\n\t<Cv8DxrKLdfoBUP0ciJQ-dVwtwbmgQjmnCdtHN_mgsSFjQvgtCPFWkMFzMQ7iDsTgwoyvFiXDLsZyMPVVG6wShg==@protonmail.internalid>\n\t<2a13871c-c5fb-40bf-9797-4ee33593ba03@linaro.org>","From":"Bryan O'Donoghue <bod.linux@nxsw.ie>","Content-Language":"en-US","In-Reply-To":"<2a13871c-c5fb-40bf-9797-4ee33593ba03@linaro.org>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}}]