[{"id":16357,"web_url":"https://patchwork.libcamera.org/comment/16357/","msgid":"<CAHW6GYJew0CqqNV1Fi_FZxEVgpp=EYRYdeY_PBx_iq+xey_fCg@mail.gmail.com>","date":"2021-04-19T13:50:01","subject":"Re: [libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge\n\tmethod to RPiController::Metadata","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Naush\n\nThanks for implementing this!\n\nOn Mon, 19 Apr 2021 at 14:35, Naushir Patuck <naush@raspberrypi.com> wrote:\n>\n> Add a new Merge method to the Metadata class. This will move all\n> key/value pairs between a source and destination metadata object. Once\n> complete, the source Metadata object will be empty.\n>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n\nReviewed-by: David Plowman <david.plowman@raspberrypi.com>\n\nThanks!\nDavid\n\n> ---\n>  src/ipa/raspberrypi/controller/metadata.hpp | 12 ++++++++++++\n>  1 file changed, 12 insertions(+)\n>\n> diff --git a/src/ipa/raspberrypi/controller/metadata.hpp b/src/ipa/raspberrypi/controller/metadata.hpp\n> index 319f2320fc70..1d3e941b3e52 100644\n> --- a/src/ipa/raspberrypi/controller/metadata.hpp\n> +++ b/src/ipa/raspberrypi/controller/metadata.hpp\n> @@ -75,6 +75,18 @@ public:\n>                 return *this;\n>         }\n>\n> +       void Merge(Metadata &other)\n> +       {\n> +               std::lock_guard<std::mutex> lock(mutex_);\n> +               std::lock_guard<std::mutex> other_lock(other.mutex_);\n> +\n> +               for (auto const &kv: other.data_)\n> +                       data_[kv.first] = std::move(kv.second);\n> +\n> +               /* Render the other object as empty now! */\n> +               other.data_.clear();\n> +       }\n> +\n>         template<typename T>\n>         T *GetLocked(std::string const &tag)\n>         {\n> --\n> 2.25.1\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 D05A9BD814\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Apr 2021 13:50:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6FE4868839;\n\tMon, 19 Apr 2021 15:50:14 +0200 (CEST)","from mail-oi1-x235.google.com (mail-oi1-x235.google.com\n\t[IPv6:2607:f8b0:4864:20::235])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 82F0668824\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Apr 2021 15:50:13 +0200 (CEST)","by mail-oi1-x235.google.com with SMTP id k18so30541381oik.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Apr 2021 06:50:13 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"ghSzrFKV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=MQYt4Ny3j00EWsl0PVcv6SYG8E3d4F8G+9LzbLbdNLY=;\n\tb=ghSzrFKV6v+Kalp/KmhVrNfB/9nPJzNAX/72whyAxhqIurIbFywa2xwAUFET4tLlwD\n\takoz+6y8696dfmmuPZWxsaeQ4IFPdmkBG/47mjnY97GPpoYiJIWSjwFWX3zx9tPVqYh/\n\tB+FdiFjNK8A7jyJDapDKcI/vlqDtGm3FE2xZ3+xey98KhcwJuqsHvgVEJGWS1VZ1rBuP\n\tZSqEyyGTs+BrLAvY/yItnaWmXo3pDPS+bxKJA/p8PNNTnkRt4ktv275O1tw5UFs8MI6C\n\tgj1EXLCEJLYxsSsn1MsEfHSGZliHbqWy/I5z7OfWUVW1YYksYDxyh8y9k0J8DBd6vk3n\n\tyM3Q==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=MQYt4Ny3j00EWsl0PVcv6SYG8E3d4F8G+9LzbLbdNLY=;\n\tb=sC1BaPeouVjpaml0ofHvpi9ZmskBq+/mbz9EmsLNlIlekWb5+/5ZeTHocparhrLNEL\n\t2ZI0J1G+OKjNuS29xpMYPwNJrGFF1uMK7e/ybHXqIdfsfO5dvsnsGqYKlQpLH/g+uuqY\n\tx5ZWiAzjWd+fa4Xe4uiEmXgymVQaSNBuDRQGzs0MtCOlo132RlLRW3rOPt3TZvh6mRju\n\t5t+byW1rLXA7z8hCOtj67HnGOREYTgHaLFeKGKtjjE/yfCAx1AZ+XSTpbkqE9d7G5OkE\n\t+jl0EYOgZFWiPHv7M5nc0jyNDk0HfeV/rpysoVE1uGuI0VCELvjHNiehXEzyKWGi+sZc\n\ttwFQ==","X-Gm-Message-State":"AOAM533WOqfJwtoYqGCsu7zOlSzi6FZ/DJubS5TI1Ex/IZ2yRPUwQGxg\n\trFuxMvwTBWxjpnlA3B2/Ru4rZhviRej37tIvSWz4njFCJTw=","X-Google-Smtp-Source":"ABdhPJyyMWVaM2mn2uhMmhLhX3tWP1GE7cyS2kKImlX0ibbjQw1hKFrVGCGoeksatghbrPKZRMiRWlqFIS2Gmd0xrdI=","X-Received":"by 2002:aca:d693:: with SMTP id\n\tn141mr3698617oig.107.1618840212511; \n\tMon, 19 Apr 2021 06:50:12 -0700 (PDT)","MIME-Version":"1.0","References":"<20210419133451.263733-1-naush@raspberrypi.com>\n\t<20210419133451.263733-5-naush@raspberrypi.com>","In-Reply-To":"<20210419133451.263733-5-naush@raspberrypi.com>","From":"David Plowman <david.plowman@raspberrypi.com>","Date":"Mon, 19 Apr 2021 14:50:01 +0100","Message-ID":"<CAHW6GYJew0CqqNV1Fi_FZxEVgpp=EYRYdeY_PBx_iq+xey_fCg@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge\n\tmethod to RPiController::Metadata","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":16635,"web_url":"https://patchwork.libcamera.org/comment/16635/","msgid":"<YIe6uufPmynwJvEz@pendragon.ideasonboard.com>","date":"2021-04-27T07:18:18","subject":"Re: [libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge\n\tmethod to RPiController::Metadata","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nThank you for the patch.\n\nOn Mon, Apr 19, 2021 at 02:34:50PM +0100, Naushir Patuck wrote:\n> Add a new Merge method to the Metadata class. This will move all\n> key/value pairs between a source and destination metadata object. Once\n> complete, the source Metadata object will be empty.\n> \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  src/ipa/raspberrypi/controller/metadata.hpp | 12 ++++++++++++\n>  1 file changed, 12 insertions(+)\n> \n> diff --git a/src/ipa/raspberrypi/controller/metadata.hpp b/src/ipa/raspberrypi/controller/metadata.hpp\n> index 319f2320fc70..1d3e941b3e52 100644\n> --- a/src/ipa/raspberrypi/controller/metadata.hpp\n> +++ b/src/ipa/raspberrypi/controller/metadata.hpp\n> @@ -75,6 +75,18 @@ public:\n>  \t\treturn *this;\n>  \t}\n>  \n> +\tvoid Merge(Metadata &other)\n> +\t{\n> +\t\tstd::lock_guard<std::mutex> lock(mutex_);\n> +\t\tstd::lock_guard<std::mutex> other_lock(other.mutex_);\n> +\n> +\t\tfor (auto const &kv: other.data_)\n> +\t\t\tdata_[kv.first] = std::move(kv.second);\n\nCan't you use\n\n\t\tdata_.merge(other.data_);\n\nN\n\n> +\n> +\t\t/* Render the other object as empty now! */\n> +\t\tother.data_.clear();\n> +\t}\n> +\n>  \ttemplate<typename T>\n>  \tT *GetLocked(std::string const &tag)\n>  \t{","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 02CB9BDE19\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Apr 2021 07:18:26 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B8035688B5;\n\tTue, 27 Apr 2021 09:18:25 +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 1400C6885A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Apr 2021 09:18:25 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9D6F4E9;\n\tTue, 27 Apr 2021 09:18:24 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Wp/TELYV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1619507904;\n\tbh=KA7K4mdW5D6swnYa0ieswk0jh0A4oSe+nMH8najs0Pk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Wp/TELYVDzX2dcC7HvjffC/5tBBgLRoOMuB7t27ChB7keVDh3dNSUhcMGeTrUqw/q\n\t6WnacKjP5ffDE109upp2oiVB7e98Eta7R1qlIpuQHGV6iLWSYeGN9WBzxWrjPKdDmi\n\tbiSxQ6lb88qivzRvcQZYDKiJxt5FntcPGyf4yBzU=","Date":"Tue, 27 Apr 2021 10:18:18 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<YIe6uufPmynwJvEz@pendragon.ideasonboard.com>","References":"<20210419133451.263733-1-naush@raspberrypi.com>\n\t<20210419133451.263733-5-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210419133451.263733-5-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge\n\tmethod to RPiController::Metadata","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>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":16652,"web_url":"https://patchwork.libcamera.org/comment/16652/","msgid":"<CAEmqJPqz__AqNqXOW+Va2EBQZfau-bQYQRyO8CjFFOViXEcQOQ@mail.gmail.com>","date":"2021-04-27T09:26:01","subject":"Re: [libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge\n\tmethod to RPiController::Metadata","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nThank you for your review feedback.\n\nOn Tue, 27 Apr 2021 at 08:18, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Thank you for the patch.\n>\n> On Mon, Apr 19, 2021 at 02:34:50PM +0100, Naushir Patuck wrote:\n> > Add a new Merge method to the Metadata class. This will move all\n> > key/value pairs between a source and destination metadata object. Once\n> > complete, the source Metadata object will be empty.\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  src/ipa/raspberrypi/controller/metadata.hpp | 12 ++++++++++++\n> >  1 file changed, 12 insertions(+)\n> >\n> > diff --git a/src/ipa/raspberrypi/controller/metadata.hpp\n> b/src/ipa/raspberrypi/controller/metadata.hpp\n> > index 319f2320fc70..1d3e941b3e52 100644\n> > --- a/src/ipa/raspberrypi/controller/metadata.hpp\n> > +++ b/src/ipa/raspberrypi/controller/metadata.hpp\n> > @@ -75,6 +75,18 @@ public:\n> >               return *this;\n> >       }\n> >\n> > +     void Merge(Metadata &other)\n> > +     {\n> > +             std::lock_guard<std::mutex> lock(mutex_);\n> > +             std::lock_guard<std::mutex> other_lock(other.mutex_);\n> > +\n> > +             for (auto const &kv: other.data_)\n> > +                     data_[kv.first] = std::move(kv.second);\n>\n> Can't you use\n>\n>                 data_.merge(other.data_);\n>\n\nSadly not.  std::map::merge() will not overwrite elements that are present\nin the destination, which is what I want.  None of the insert type methods\ndo actually.  I toyed with doing something like:\n\nother.data_.merge(data_);\nstd::swap(other.data_, data_);\n\nwhich would achieve what I want, but thought it might look a bit cryptic.\nNot sure about any performance benefits from using this construct vs\nthe explicit loop.\n\nPerhaps I should be a bit clearer with the method name, and call it\nOverwrite()?  Thoughts?\n\nRegards,\nNaush\n\n\n\n>\n> N\n>\n> > +\n> > +             /* Render the other object as empty now! */\n> > +             other.data_.clear();\n> > +     }\n> > +\n> >       template<typename T>\n> >       T *GetLocked(std::string const &tag)\n> >       {\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\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 0BE26BDE19\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Apr 2021 09:26:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 479A0688B5;\n\tTue, 27 Apr 2021 11:26:19 +0200 (CEST)","from mail-lf1-x132.google.com (mail-lf1-x132.google.com\n\t[IPv6:2a00:1450:4864:20::132])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E9CC6605BD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Apr 2021 11:26:17 +0200 (CEST)","by mail-lf1-x132.google.com with SMTP id y4so52453117lfl.10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Apr 2021 02:26:17 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"CEr6b3V9\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=7MPJ8z5njrPQ2W73yN2wufQpttKO4r5R/pvN1A5KnSo=;\n\tb=CEr6b3V9MxGJRlrzuMC31QddjxV3Ihaj0S8fFnJa5zcuhgcBMT/m5Hnhcwaflh/aTF\n\thKZeKxuHMcq4a/BYLS3coFcpbBDMkTwz1LJXMOfgO0Zrgr+Rr3ty8r3J3MpSQVdowRtX\n\t+B87JwfSh2oLhw3DcO1gQU9L3aWRjk6oqBmCmCWLyDr/TxFk3GgLOKdGgniSIjD1svfN\n\t7cryMd+7LgjSxTycowC2LW74rYtMo1jzKKk6zFjT7QSQmyHCldx6Gi/H3/v3Q7wQVHjd\n\tRQKtWjOu58d1NyXJ03i22KoH9nbqZ5jtous/6u3yQF644QFRVSaM4Qds3014eLtzeZuC\n\t6stw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=7MPJ8z5njrPQ2W73yN2wufQpttKO4r5R/pvN1A5KnSo=;\n\tb=JbgjRhvXJ5Qvk8jVhBUdlKJwwlQl+bYBepGYALuk8w725m6EpCHKDmyXG7pmvdnI1A\n\tiBwbePZfluLKyHmIum7xDxYZflgmqG/u9erqP68+yabmqYK5mtA6xxnwNV58Z4xR5prY\n\tbrQjb2fN43SRhtJbrfwtwmQeXc5omQOiSngfLT6la/ReLGTcqqKb71eZWlZmPPOKPL9g\n\t+up57y4art3zEMmrn2QejfdX0S59JsPAreDiPAcGCfMgJ3FuT17vgksv9kKMnhNhrA3y\n\t4MekJBxL732VBaT8a6FaDuRT7ggQ2gJAIOervl0IRDoEjkZBehfVNGVIfQA41UM2GrIH\n\tHf/Q==","X-Gm-Message-State":"AOAM5329TzW8fB06uhA2CQVMBqclzCzXWA7ADFL8qzuFgzPYptL6oVd7\n\tIW/ak4mq0K0jiQxoP9JBla1qmeyKvhs9xwpxA1mhxvuF29d5zw==","X-Google-Smtp-Source":"ABdhPJz4hl1fHdthkI3zgMZfFTMhUewlnGYzN7cu82UDAa1x/01jRm3FVHDk/nfynyZB/EaupNowbidgJtmm8XF2CaM=","X-Received":"by 2002:a05:6512:922:: with SMTP id\n\tf2mr15432658lft.171.1619515577353; \n\tTue, 27 Apr 2021 02:26:17 -0700 (PDT)","MIME-Version":"1.0","References":"<20210419133451.263733-1-naush@raspberrypi.com>\n\t<20210419133451.263733-5-naush@raspberrypi.com>\n\t<YIe6uufPmynwJvEz@pendragon.ideasonboard.com>","In-Reply-To":"<YIe6uufPmynwJvEz@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 27 Apr 2021 10:26:01 +0100","Message-ID":"<CAEmqJPqz__AqNqXOW+Va2EBQZfau-bQYQRyO8CjFFOViXEcQOQ@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v5 4/5] ipa: raspberrypi: Add Merge\n\tmethod to RPiController::Metadata","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"multipart/mixed;\n\tboundary=\"===============6909570853854725991==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]