[{"id":31147,"web_url":"https://patchwork.libcamera.org/comment/31147/","msgid":"<172592013462.2319503.14550135178770675048@ping.linuxembedded.co.uk>","date":"2024-09-09T22:15:34","subject":"Re: [PATCH v6 00/18] Software ISP refactoring","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Milan Zamazal (2024-09-06 13:09:09)\n> The purpose of this patch series is to bring software ISP code\n> structuring closer to the hardware pipelines.  Most notably, the API\n> around algorithm.h is used now.  This should make software ISP easier to\n> understand, extend, maintain, and code-share with the other pipelines.\n> \n> What is omitted in the patch series:\n> \n> - Any bigger or unrelated functional changes.  The purpose of this\n>   series is code restructuring, which is enough already.\n\nAgreed, and I think trying to land this as soon as possible is helpful\n\n> - Stats and params buffers are still used in the original way.  Making\n>   their handling closer to the hardware pipelines will be a subject of\n>   followup patches.  This series is a preparation step for that.\n\nIndeed, though I do wonder if this will use 'parameter buffers' in the\nsame way. But I guess a defined structure interface will be much the\nsame as a parameter buffer so probably good to keep the naming\nconsistent.\n\n> - Any IPA code sharing with hardware pipelines.  If there is an\n>   opportunity for this, it can be addressed in followup patches.\n\nAgreed\n\n> \n> Available in git at\n> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/pdm-algorithm\n> \n> Pending, more input from reviewers needed (see v3 review discussions):\n> - Should `frame' argument name be kept for consistency with other\n>   pipelines for now or already renamed to something like\n>   `sequenceNumber'?\n\nI'm fine keeping it as 'frame' for now - but I'm constantly worried\nabout the different 'clock domains' of sequences between the sensor and\nthe requests.\n\nWe'll be tackling this as part of per-frame control 'soon' so I think\nkeeping it now is easiest.\n\n> - Should black level be stored as a 0..1 number or a pixel value\n>   number?\n\nWe store Black levels as pixel numbers, I think that's what you're doing\nalready so I'd keep it that way.\n\nToying around to test this branch earlier - we took a couple of\nscreenshots/captures running through camshark which now detects macbeth\ncharts and details the delta-e for each colour as a live overlay\n(awesome work from Stefan!)\n\nhttps://cloud.ideasonboard.com/apps/photos/public/ewHIg37E78qmqGPOwh6uCHAuM1svX3Jx\n\nThe reds seem to be a bit lost - I think that's where we'll see benefits\nfrom starting to add some CCM support.  But that will be into sensor\nspecific tunings.\n\n\n\n> Changes in v6:\n> \n> - Use data->swIsp_ only if it is defined.\n> - IPASoftSimple::prepare renamed to IPASoftSimple::fillParamsBuffer.\n> - soft_ipa_interface.h include moved to the right patch.\n> - Unneeded includes in algorithm *.h files dropped.\n> - Duplicate kGammaLookupSize constant removed and gammaTable.size() used\n>   instead.\n> - Gamma algorithm merged to Lut algorithm.\n> - Duplicate logging of AWB gains removed.\n> - Miscellaneous formatting and cosmetic changes suggested by Laurent.\n> \n> Changes in v5:\n> - Construction of color lookup tables moved to a separate algorithm.\n> \n> Changes in v4:\n> - Removed the mistakenly included patches by Umang.\n> - IPASoftInterface::prepare() is async now.\n> - IPAConfigInfo definition moved to an earlier patch to avoid\n>   unnecessary confusion.\n> - colors.cpp/h split to gamma and awb.\n> - Using the right black level variable in Agc::process.\n> - Documentation of the newly introduced SwStatsCpu::finishFrame\n>   arguments added.\n> - Formatting changes as requested.\n> - A forgotten obsolete source code comment removed.\n> - Improvements to some commit messages.\n> \n> Changes in v3:\n> - SoftwareIsp::queueRequest changed to async.\n> - IPAActiveState docstring reworded.\n> - Minor formatting fixes.\n> \n> Changes in v2:\n> - Several cosmetic changes and patch arrangement problems pointed out by\n>   Umang applied.\n> - Added ipa_context.cpp, as a documentation file for ipa_context.h.\n> - Added a clarification source comment why SoftwareIsp::queueBuffers needs\n>   to get the frame number as a separate argument.\n> - core_ipa_interface.h no longer included in module.h.\n> - The context used by \"14/19 Move black level to an algorithm module\"\n>   was changed and the black level changes tracking was put closer to the\n>   pre-refactoring version, which makes more sense.\n> \n> Milan Zamazal (18):\n>   libcamera: software_isp: Remove superfluous includes\n>   libcamera: software_isp: Move BlackLevel to libcamera::ipa::soft\n>   libcamera: software_isp: Define skeletons for IPA refactoring\n>   libcamera: software_isp: Let IPASoftSimple inherit Module\n>   libcamera: software_isp: Make stats frame and buffer aware\n>   libcamera: software_isp: Remove final dots in debayer.cpp docstrings\n>   libcamera: software_isp: Track and pass frame ids\n>   libcamera: software_isp: Create algorithms\n>   libcamera: software_isp: Call Algorithm::configure\n>   libcamera: software_isp: Call Algorithm::queueRequest\n>   libcamera: software_isp: Call Algorithm::prepare\n>   libcamera: software_isp: Call Algorithm::process\n>   libcamera: software_isp: Move black level to an algorithm module\n>   libcamera: software_isp: Move color handling to an algorithm module\n>   libcamera: software_isp: Use floating point for color parameters\n>   libcamera: software_isp: Use DelayedControls\n>   libcamera: software_isp: Move exposure+gain to an algorithm module\n>   libcamera: software_isp: Update black level only on exposure changes\n> \n>  .../internal/software_isp/software_isp.h      |  15 +-\n>  include/libcamera/ipa/soft.mojom              |  12 +-\n>  src/ipa/simple/algorithms/agc.cpp             | 139 +++++++++\n>  src/ipa/simple/algorithms/agc.h               |  33 ++\n>  src/ipa/simple/algorithms/algorithm.h         |  22 ++\n>  src/ipa/simple/algorithms/awb.cpp             |  69 +++++\n>  src/ipa/simple/algorithms/awb.h               |  32 ++\n>  src/ipa/simple/algorithms/blc.cpp             |  78 +++++\n>  src/ipa/simple/algorithms/blc.h               |  36 +++\n>  src/ipa/simple/algorithms/lut.cpp             |  81 +++++\n>  src/ipa/simple/algorithms/lut.h               |  35 +++\n>  src/ipa/simple/algorithms/meson.build         |   8 +\n>  src/ipa/simple/black_level.cpp                |  88 ------\n>  src/ipa/simple/black_level.h                  |  29 --\n>  src/ipa/simple/data/uncalibrated.yaml         |   5 +\n>  src/ipa/simple/ipa_context.cpp                | 102 +++++++\n>  src/ipa/simple/ipa_context.h                  |  69 +++++\n>  src/ipa/simple/meson.build                    |   9 +-\n>  src/ipa/simple/module.h                       |  30 ++\n>  src/ipa/simple/soft_simple.cpp                | 283 ++++++------------\n>  src/libcamera/pipeline/simple/simple.cpp      |  48 ++-\n>  src/libcamera/software_isp/TODO               |  39 ---\n>  src/libcamera/software_isp/debayer.cpp        |  51 ++--\n>  src/libcamera/software_isp/debayer.h          |   2 +-\n>  src/libcamera/software_isp/debayer_cpu.cpp    |   9 +-\n>  src/libcamera/software_isp/debayer_cpu.h      |   2 +-\n>  src/libcamera/software_isp/software_isp.cpp   |  43 ++-\n>  src/libcamera/software_isp/swstats_cpu.cpp    |   6 +-\n>  src/libcamera/software_isp/swstats_cpu.h      |   4 +-\n>  29 files changed, 955 insertions(+), 424 deletions(-)\n>  create mode 100644 src/ipa/simple/algorithms/agc.cpp\n>  create mode 100644 src/ipa/simple/algorithms/agc.h\n>  create mode 100644 src/ipa/simple/algorithms/algorithm.h\n>  create mode 100644 src/ipa/simple/algorithms/awb.cpp\n>  create mode 100644 src/ipa/simple/algorithms/awb.h\n>  create mode 100644 src/ipa/simple/algorithms/blc.cpp\n>  create mode 100644 src/ipa/simple/algorithms/blc.h\n>  create mode 100644 src/ipa/simple/algorithms/lut.cpp\n>  create mode 100644 src/ipa/simple/algorithms/lut.h\n>  create mode 100644 src/ipa/simple/algorithms/meson.build\n>  delete mode 100644 src/ipa/simple/black_level.cpp\n>  delete mode 100644 src/ipa/simple/black_level.h\n>  create mode 100644 src/ipa/simple/ipa_context.cpp\n>  create mode 100644 src/ipa/simple/ipa_context.h\n>  create mode 100644 src/ipa/simple/module.h\n> \n> -- \n> 2.44.1\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 D7C0DC324C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  9 Sep 2024 22:15:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C28E4634F7;\n\tTue, 10 Sep 2024 00:15:39 +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 C3484618F7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 10 Sep 2024 00:15:37 +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 1F87C5B3;\n\tTue, 10 Sep 2024 00:14:21 +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=\"RPeoShxu\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1725920061;\n\tbh=AbfaaXn8y+tKOxApFZjyK8V7Vr2LvK5vyTX+EAhxt2U=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=RPeoShxuyrzBZ7JelY1dVZkCNTU5F7z+ezwI4W5PKR4zId93pbUdxHnDRM8lKdkx8\n\t73obmHoDzCI9ls1Ikl/97zCZ2GNj2LZVEH7Wv8DHlGbrGPEimWmCI738Qt3ASRU1+j\n\tDu/W3hpBcLnc41dKW+lB151Cq8soeYw/jCNN1RfM=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20240906120927.4071508-1-mzamazal@redhat.com>","References":"<20240906120927.4071508-1-mzamazal@redhat.com>","Subject":"Re: [PATCH v6 00/18] Software ISP refactoring","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Milan Zamazal <mzamazal@redhat.com>,\n\tUmang Jain <umang.jain@ideasonboard.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tDaniel Scally <dan.scally@ideasonboard.com>","To":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","Date":"Mon, 09 Sep 2024 23:15:34 +0100","Message-ID":"<172592013462.2319503.14550135178770675048@ping.linuxembedded.co.uk>","User-Agent":"alot/0.10","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":31281,"web_url":"https://patchwork.libcamera.org/comment/31281/","msgid":"<87ed5flbbn.fsf@redhat.com>","date":"2024-09-19T18:58:52","subject":"Re: [PATCH v6 00/18] Software ISP refactoring","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Kieran,\n\nthank you for reviews.\n\nKieran Bingham <kieran.bingham@ideasonboard.com> writes:\n\n> Quoting Milan Zamazal (2024-09-06 13:09:09)\n>> The purpose of this patch series is to bring software ISP code\n>> structuring closer to the hardware pipelines.  Most notably, the API\n>\n>> around algorithm.h is used now.  This should make software ISP easier to\n>> understand, extend, maintain, and code-share with the other pipelines.\n>> \n>> What is omitted in the patch series:\n>> \n>> - Any bigger or unrelated functional changes.  The purpose of this\n>>   series is code restructuring, which is enough already.\n>\n> Agreed, and I think trying to land this as soon as possible is helpful\n>\n>> - Stats and params buffers are still used in the original way.  Making\n>>   their handling closer to the hardware pipelines will be a subject of\n>>   followup patches.  This series is a preparation step for that.\n>\n> Indeed, though I do wonder if this will use 'parameter buffers' in the\n> same way. But I guess a defined structure interface will be much the\n> same as a parameter buffer so probably good to keep the naming\n> consistent.\n\nYes.  The idea of parameter buffers is expressed in the following TODO,\nwhich I handle in the followup patch series (I'll rebase, adjust and\nrepost it once this refactoring is finished):\n\n  5. Store ISP parameters in per-frame buffers\n\n  > /**\n  >  * \\fn void Debayer::process(FrameBuffer *input, FrameBuffer *output, DebayerParams params)\n  >  * \\brief Process the bayer data into the requested format.\n  >  * \\param[in] input The input buffer.\n  >  * \\param[in] output The output buffer.\n  >  * \\param[in] params The parameters to be used in debayering.\n  >  *\n  >  * \\note DebayerParams is passed by value deliberately so that a copy is passed\n  >  * when this is run in another thread by invokeMethod().\n  >  */\n\n  Possibly something to address later, by storing ISP parameters in\n  per-frame buffers like we do for hardware ISPs.\n\n>> - Any IPA code sharing with hardware pipelines.  If there is an\n>>   opportunity for this, it can be addressed in followup patches.\n>\n> Agreed\n>\n>> \n>> Available in git at\n>> https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/pdm-algorithm\n>> \n>> Pending, more input from reviewers needed (see v3 review discussions):\n>> - Should `frame' argument name be kept for consistency with other\n>>   pipelines for now or already renamed to something like\n>>   `sequenceNumber'?\n>\n> I'm fine keeping it as 'frame' for now - but I'm constantly worried\n> about the different 'clock domains' of sequences between the sensor and\n> the requests.\n>\n> We'll be tackling this as part of per-frame control 'soon' so I think\n> keeping it now is easiest.\n>\n>> - Should black level be stored as a 0..1 number or a pixel value\n>>   number?\n>\n> We store Black levels as pixel numbers, I think that's what you're doing\n> already so I'd keep it that way.\n\nOK.\n\n> Toying around to test this branch earlier - we took a couple of\n> screenshots/captures running through camshark which now detects macbeth\n> charts and details the delta-e for each colour as a live overlay\n> (awesome work from Stefan!)\n>\n> https://cloud.ideasonboard.com/apps/photos/public/ewHIg37E78qmqGPOwh6uCHAuM1svX3Jx\n\nOh, cool!\n\n> The reds seem to be a bit lost - I think that's where we'll see benefits\n> from starting to add some CCM support.  But that will be into sensor\n> specific tunings.\n\nI'm sure we have a lot of things to improve. :-)\n\n>> Changes in v6:\n>> \n>> - Use data->swIsp_ only if it is defined.\n>> - IPASoftSimple::prepare renamed to IPASoftSimple::fillParamsBuffer.\n>> - soft_ipa_interface.h include moved to the right patch.\n>> - Unneeded includes in algorithm *.h files dropped.\n>> - Duplicate kGammaLookupSize constant removed and gammaTable.size() used\n>>   instead.\n>> - Gamma algorithm merged to Lut algorithm.\n>> - Duplicate logging of AWB gains removed.\n>> - Miscellaneous formatting and cosmetic changes suggested by Laurent.\n>> \n>> Changes in v5:\n>> - Construction of color lookup tables moved to a separate algorithm.\n>> \n>> Changes in v4:\n>> - Removed the mistakenly included patches by Umang.\n>> - IPASoftInterface::prepare() is async now.\n>> - IPAConfigInfo definition moved to an earlier patch to avoid\n>>   unnecessary confusion.\n>> - colors.cpp/h split to gamma and awb.\n>> - Using the right black level variable in Agc::process.\n>> - Documentation of the newly introduced SwStatsCpu::finishFrame\n>>   arguments added.\n>> - Formatting changes as requested.\n>> - A forgotten obsolete source code comment removed.\n>> - Improvements to some commit messages.\n>> \n>> Changes in v3:\n>> - SoftwareIsp::queueRequest changed to async.\n>> - IPAActiveState docstring reworded.\n>> - Minor formatting fixes.\n>> \n>> Changes in v2:\n>> - Several cosmetic changes and patch arrangement problems pointed out by\n>>   Umang applied.\n>> - Added ipa_context.cpp, as a documentation file for ipa_context.h.\n>> - Added a clarification source comment why SoftwareIsp::queueBuffers needs\n>>   to get the frame number as a separate argument.\n>> - core_ipa_interface.h no longer included in module.h.\n>> - The context used by \"14/19 Move black level to an algorithm module\"\n>>   was changed and the black level changes tracking was put closer to the\n>>   pre-refactoring version, which makes more sense.\n>> \n>> Milan Zamazal (18):\n>>   libcamera: software_isp: Remove superfluous includes\n>>   libcamera: software_isp: Move BlackLevel to libcamera::ipa::soft\n>>   libcamera: software_isp: Define skeletons for IPA refactoring\n>>   libcamera: software_isp: Let IPASoftSimple inherit Module\n>>   libcamera: software_isp: Make stats frame and buffer aware\n>>   libcamera: software_isp: Remove final dots in debayer.cpp docstrings\n>>   libcamera: software_isp: Track and pass frame ids\n>>   libcamera: software_isp: Create algorithms\n>>   libcamera: software_isp: Call Algorithm::configure\n>>   libcamera: software_isp: Call Algorithm::queueRequest\n>>   libcamera: software_isp: Call Algorithm::prepare\n>>   libcamera: software_isp: Call Algorithm::process\n>>   libcamera: software_isp: Move black level to an algorithm module\n>>   libcamera: software_isp: Move color handling to an algorithm module\n>>   libcamera: software_isp: Use floating point for color parameters\n>>   libcamera: software_isp: Use DelayedControls\n>>   libcamera: software_isp: Move exposure+gain to an algorithm module\n>>   libcamera: software_isp: Update black level only on exposure changes\n>> \n>>  .../internal/software_isp/software_isp.h      |  15 +-\n>>  include/libcamera/ipa/soft.mojom              |  12 +-\n>>  src/ipa/simple/algorithms/agc.cpp             | 139 +++++++++\n>>  src/ipa/simple/algorithms/agc.h               |  33 ++\n>>  src/ipa/simple/algorithms/algorithm.h         |  22 ++\n>>  src/ipa/simple/algorithms/awb.cpp             |  69 +++++\n>>  src/ipa/simple/algorithms/awb.h               |  32 ++\n>>  src/ipa/simple/algorithms/blc.cpp             |  78 +++++\n>>  src/ipa/simple/algorithms/blc.h               |  36 +++\n>>  src/ipa/simple/algorithms/lut.cpp             |  81 +++++\n>>  src/ipa/simple/algorithms/lut.h               |  35 +++\n>>  src/ipa/simple/algorithms/meson.build         |   8 +\n>>  src/ipa/simple/black_level.cpp                |  88 ------\n>>  src/ipa/simple/black_level.h                  |  29 --\n>>  src/ipa/simple/data/uncalibrated.yaml         |   5 +\n>>  src/ipa/simple/ipa_context.cpp                | 102 +++++++\n>>  src/ipa/simple/ipa_context.h                  |  69 +++++\n>>  src/ipa/simple/meson.build                    |   9 +-\n>>  src/ipa/simple/module.h                       |  30 ++\n>>  src/ipa/simple/soft_simple.cpp                | 283 ++++++------------\n>>  src/libcamera/pipeline/simple/simple.cpp      |  48 ++-\n>>  src/libcamera/software_isp/TODO               |  39 ---\n>>  src/libcamera/software_isp/debayer.cpp        |  51 ++--\n>>  src/libcamera/software_isp/debayer.h          |   2 +-\n>>  src/libcamera/software_isp/debayer_cpu.cpp    |   9 +-\n>>  src/libcamera/software_isp/debayer_cpu.h      |   2 +-\n>>  src/libcamera/software_isp/software_isp.cpp   |  43 ++-\n>>  src/libcamera/software_isp/swstats_cpu.cpp    |   6 +-\n>>  src/libcamera/software_isp/swstats_cpu.h      |   4 +-\n>>  29 files changed, 955 insertions(+), 424 deletions(-)\n>>  create mode 100644 src/ipa/simple/algorithms/agc.cpp\n>>  create mode 100644 src/ipa/simple/algorithms/agc.h\n>>  create mode 100644 src/ipa/simple/algorithms/algorithm.h\n>>  create mode 100644 src/ipa/simple/algorithms/awb.cpp\n>>  create mode 100644 src/ipa/simple/algorithms/awb.h\n>>  create mode 100644 src/ipa/simple/algorithms/blc.cpp\n>>  create mode 100644 src/ipa/simple/algorithms/blc.h\n>>  create mode 100644 src/ipa/simple/algorithms/lut.cpp\n>>  create mode 100644 src/ipa/simple/algorithms/lut.h\n>>  create mode 100644 src/ipa/simple/algorithms/meson.build\n>>  delete mode 100644 src/ipa/simple/black_level.cpp\n>>  delete mode 100644 src/ipa/simple/black_level.h\n>>  create mode 100644 src/ipa/simple/ipa_context.cpp\n>>  create mode 100644 src/ipa/simple/ipa_context.h\n>>  create mode 100644 src/ipa/simple/module.h\n>> \n>> -- \n>> 2.44.1\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 8DF30C324C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 19 Sep 2024 18:59:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8C4AE634FC;\n\tThu, 19 Sep 2024 20:58:59 +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 71005618E7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Sep 2024 20:58:58 +0200 (CEST)","from mail-lf1-f71.google.com (mail-lf1-f71.google.com\n\t[209.85.167.71]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-679-mbCQyjuQM2yiv96V0lqOAQ-1; Thu, 19 Sep 2024 14:58:56 -0400","by mail-lf1-f71.google.com with SMTP id\n\t2adb3069b0e04-535681e6f8eso1164225e87.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 19 Sep 2024 11:58:55 -0700 (PDT)","from nuthatch (ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-a90613316c2sm746726266b.211.2024.09.19.11.58.52\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 19 Sep 2024 11:58:53 -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=\"PhJkLckr\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1726772337;\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=E3Po5U8gvVaRZFEK6pHeKtQ3Yla1JdPdyHV6Ao2t5SY=;\n\tb=PhJkLckrYfvyxBhgZRe2yd7lj4/+a+Sy93dtSbXSCbndCn1mVl6e8p9XVVu5UV8hnliFiv\n\ti5FYiXJs/el1Y198jCHcNNVoR7q38JRNvZLF/CCY6JusDbI+uSZbV6zek3Wr/cSptD7A8Q\n\t4VhkJA7e/S5uGHBsqWO27E5LMgJp6tg=","X-MC-Unique":"mbCQyjuQM2yiv96V0lqOAQ-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1726772334; x=1727377134;\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=E3Po5U8gvVaRZFEK6pHeKtQ3Yla1JdPdyHV6Ao2t5SY=;\n\tb=YgwzRCJn4dxcPkE+l9h6kiM5qQSxevr3cYw27AwkEPWZHxoYrfGG6Q7bBFRqppRv2H\n\t2Foovu7VY/IqkIuevlPeBy10C/Ng+xtm538GPFxWNX02hYr7Z4J9qleLGPzr0EikmUPb\n\tSh9UvD6Gg4eN6SDUSBjcrvn7Bvs/iWwPx6Iql11FoKs9/gw+APjseycN7xrvXUuG7cQY\n\tSYcjbDnceuW6cCEUfxFhVHtfYg2Rd+8z/8NBuEaSvfighh9udW366BwIbQZEDt/ssE5n\n\tfsssx3H0LPe1yJjP2V57ug7P+8GdHXwCYJkz7HMFwsR35cUnKvxoRAg6c7Ob7ELmnsZd\n\t8Jaw==","X-Gm-Message-State":"AOJu0YzsHUC2+RnH83/l6FvbbHgfHjntXhZW+CPsMyMvbrTCCjWt3gPt\n\t5Ly5rI8N59q1Czp9GZFoQu2YMJgGzFXj3IZSTfbOmtvOvhQkdJLr8ktFKvUvTOrI1htf7Xaczoz\n\tNnujE5VYMC9nyf7n9zd7HG+YopHl3QRSEBR1Tn8MmUm0KsirUT6+3c4SYQmtkIzMA56DFPAU=","X-Received":["by 2002:a05:6512:1105:b0:536:55b3:c4fa with SMTP id\n\t2adb3069b0e04-536ac2e58a3mr172193e87.15.1726772334224; \n\tThu, 19 Sep 2024 11:58:54 -0700 (PDT)","by 2002:a05:6512:1105:b0:536:55b3:c4fa with SMTP id\n\t2adb3069b0e04-536ac2e58a3mr172179e87.15.1726772333705; \n\tThu, 19 Sep 2024 11:58:53 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IHWBR3hxlnMAksBZ4kPynnwC+VS9jP30rL0O5InWvPqvhKi5Wxj3I26EgXA7ft9EENtSU93Yg==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,  Umang Jain\n\t<umang.jain@ideasonboard.com>,  Laurent Pinchart\n\t<laurent.pinchart@ideasonboard.com>,  Daniel Scally\n\t<dan.scally@ideasonboard.com>","Subject":"Re: [PATCH v6 00/18] Software ISP refactoring","In-Reply-To":"<172592013462.2319503.14550135178770675048@ping.linuxembedded.co.uk>\n\t(Kieran Bingham's message of \"Mon, 09 Sep 2024 23:15:34 +0100\")","References":"<20240906120927.4071508-1-mzamazal@redhat.com>\n\t<172592013462.2319503.14550135178770675048@ping.linuxembedded.co.uk>","Date":"Thu, 19 Sep 2024 20:58:52 +0200","Message-ID":"<87ed5flbbn.fsf@redhat.com>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","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>"}}]