[{"id":15909,"web_url":"https://patchwork.libcamera.org/comment/15909/","msgid":"<YF0ROmRcjdTDf3Cx@oden.dyn.berto.se>","date":"2021-03-25T22:39:54","subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your patch.\n\nOn 2021-03-24 12:25:27 +0100, Jacopo Mondi wrote:\n> Add camera HAL configuration file for IPU3 Soraka.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/android/data/soraka/camera_hal.yaml | 14 ++++++++++++++\n>  1 file changed, 14 insertions(+)\n>  create mode 100644 src/android/data/soraka/camera_hal.yaml\n> \n> diff --git a/src/android/data/soraka/camera_hal.yaml b/src/android/data/soraka/camera_hal.yaml\n> new file mode 100644\n> index 000000000000..489e601ac5d0\n> --- /dev/null\n> +++ b/src/android/data/soraka/camera_hal.yaml\n> @@ -0,0 +1,14 @@\n> +- manufacturer: Google\n> +- model: Soraka\n> +\n> +- camera:\n> +  - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n> +  - model: \"ov5670\"\n> +  - location: \"front\"\n> +  - rotation: 0\n> +\n> +- camera:\n> +  - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n> +  - model: \"ov13858\"\n> +  - location: \"back\"\n> +  - rotation: 0\n> -- \n> 2.30.0\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 4E2D5C32EA\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 25 Mar 2021 22:39:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 065A168D65;\n\tThu, 25 Mar 2021 23:39:57 +0100 (CET)","from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com\n\t[IPv6:2a00:1450:4864:20::12f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DF6F7603FE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Mar 2021 23:39:55 +0100 (CET)","by mail-lf1-x12f.google.com with SMTP id i26so4866857lfl.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 25 Mar 2021 15:39:55 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\te11sm932791ljj.59.2021.03.25.15.39.54\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 25 Mar 2021 15:39:54 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"rYQcVFTO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=dV3L9Wbz/vI/7tFsHzfK4V4FWpJi0olt0f0j+4QhWiI=;\n\tb=rYQcVFTOa81gTD/hF9Dp7G12/NGXWkexxGpQRCkRNRjFQ6r2hTWe7REuihM+Y/Pwg/\n\tJdTsDAcBZA+4/H+9ZNKU2mjkAKjmTJhnfJfBv7NdIi+U6W7JoyHyrn24BHR5Fs6k18su\n\tZDgRxT2rz2MUZt+eOjqttaRGoeSiLZl1Z28SyFh3lXJ+/HuvGY6/PlvV3bWq2M8Cln9F\n\tcDvpy9HK63swZOaL1ne+4pwh1dFLxYKrZbkmsG4xg+p7Q07CPeEJIWmh6VAo8tVSOXHy\n\thMxt5TvDmp/vsQpLsFS/CgV0N76WoVBEusayae949U5qPMy55zH+Vy1DDKoi/tZQD+mR\n\t0Gmg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=dV3L9Wbz/vI/7tFsHzfK4V4FWpJi0olt0f0j+4QhWiI=;\n\tb=U6uc020nZg+Wwk5z+Tpiv8oJWIhUJLG2g08DPc/4rthll4IEz5u8cR3tPULa/Swpu6\n\twbANnQbacs9e8qsUpQqwao1iI1gSKykVuoAQ86XQNzDFiCSBeCiAUpTqzf2irXNjMJWt\n\tSt4Tw9uASVVmPTNOQ4fQq+DByQyAiCO8gSqAxnTQXQPsovaxjQQyNAN2Kbq/hQA82Zfj\n\t7Mp2COdPM1j3V1S0gyaWCr6v5f8ysdz3QNp8dQkIRe8YP4PD/ySamF9aYhwPe3HyJTF1\n\tDpmldLmQugIJ/3QCs1e7wkRMgX7qgOBOkuEACX2vtTJ2gKNd1U/Y4DE2aTv+1ccW2Zm5\n\thtTQ==","X-Gm-Message-State":"AOAM532UDbB7dDlk0+MIVd/vi9PKRx3GgpSaIs5Hcbw8TR/oqEcC2G/E\n\tPpARs/mlwBYcVGh31VfWiK2KKA==","X-Google-Smtp-Source":"ABdhPJx8bLNlCLXBuHPcc0FCgRW16RptJ9nQHtah+YiAsyHuA/VybuI6MRaEpIp6eyRONVjIigzcmg==","X-Received":"by 2002:a19:c749:: with SMTP id\n\tx70mr6418578lff.162.1616711995376; \n\tThu, 25 Mar 2021 15:39:55 -0700 (PDT)","Date":"Thu, 25 Mar 2021 23:39:54 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YF0ROmRcjdTDf3Cx@oden.dyn.berto.se>","References":"<20210324112527.63701-1-jacopo@jmondi.org>\n\t<20210324112527.63701-8-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210324112527.63701-8-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","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=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15932,"web_url":"https://patchwork.libcamera.org/comment/15932/","msgid":"<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>","date":"2021-03-26T03:31:36","subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Wed, Mar 24, 2021 at 12:25:27PM +0100, Jacopo Mondi wrote:\n> Add camera HAL configuration file for IPU3 Soraka.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/android/data/soraka/camera_hal.yaml | 14 ++++++++++++++\n>  1 file changed, 14 insertions(+)\n>  create mode 100644 src/android/data/soraka/camera_hal.yaml\n> \n> diff --git a/src/android/data/soraka/camera_hal.yaml b/src/android/data/soraka/camera_hal.yaml\n> new file mode 100644\n> index 000000000000..489e601ac5d0\n> --- /dev/null\n> +++ b/src/android/data/soraka/camera_hal.yaml\n> @@ -0,0 +1,14 @@\n> +- manufacturer: Google\n> +- model: Soraka\n> +\n> +- camera:\n> +  - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n> +  - model: \"ov5670\"\n> +  - location: \"front\"\n> +  - rotation: 0\n> +\n> +- camera:\n> +  - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n> +  - model: \"ov13858\"\n> +  - location: \"back\"\n> +  - rotation: 0\n\nI'm sure we can spend an endless amount of time bikeshedding on the YAML\nschema, so I'll only make one comment :-)\n\nAt the top level, you have a list, with each list entry being a\ndictionary with a single key:value pair. There's no guarantee on unicity\nof properties with this type of schema, you could for instance have\nmultiple \"manufacturer\" list entries. Same for the properties within\neach camera.\n\nThis would I believe be a more natural usage of YAML (to the extent that\nYAML has anything natural about it):\n\nmanufacturer: Google\nmodel: Soraka\n\ncameras:\n  - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n    model: \"ov5670\"\n    location: \"front\"\n    rotation: 0\n\n  - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n    model: \"ov13858\"\n    location: \"back\"\n    rotation: 0\n\nOr, possibly even better, to guarantee unicity of camera entries,\n\nmanufacturer: Google\nmodel: Soraka\n\ncameras:\n  \"\\\\_SB_.PCI0.I2C4.CAM1\":\n    model: \"ov5670\"\n    location: \"front\"\n    rotation: 0\n\n  \"\\\\_SB_.PCI0.I2C2.CAM0\":\n    model: \"ov13858\"\n    location: \"back\"\n    rotation: 0\n\nThe three options produce the following objects in Python:\n\n>>> pprint.pprint(yaml.safe_load(open('yaml1.yaml', 'rb').read()))\n[{'manufacturer': 'Google'},\n {'model': 'Soraka'},\n {'camera': [{'name': '\\\\_SB_.PCI0.I2C4.CAM1'},\n             {'model': 'ov5670'},\n             {'location': 'front'},\n             {'rotation': 0}]},\n {'camera': [{'name': '\\\\_SB_.PCI0.I2C2.CAM0'},\n             {'model': 'ov13858'},\n             {'location': 'back'},\n             {'rotation': 0}]}]\n>>> pprint.pprint(yaml.safe_load(open('yaml2.yaml', 'rb').read()))\n{'cameras': [{'location': 'front',\n              'model': 'ov5670',\n              'name': '\\\\_SB_.PCI0.I2C4.CAM1',\n              'rotation': 0},\n             {'location': 'back',\n              'model': 'ov13858',\n              'name': '\\\\_SB_.PCI0.I2C2.CAM0',\n              'rotation': 0}],\n 'manufacturer': 'Google',\n 'model': 'Soraka'}\n>>> pprint.pprint(yaml.safe_load(open('yaml3.yaml', 'rb').read()))\n{'cameras': {'\\\\_SB_.PCI0.I2C2.CAM0': {'location': 'back',\n                                       'model': 'ov13858',\n                                       'rotation': 0},\n             '\\\\_SB_.PCI0.I2C4.CAM1': {'location': 'front',\n                                       'model': 'ov5670',\n                                       'rotation': 0}},\n 'manufacturer': 'Google',\n 'model': 'Soraka'}","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 8EDF6BDC66\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Mar 2021 03:32:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F28356084F;\n\tFri, 26 Mar 2021 04:32:20 +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 BACA6602E3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Mar 2021 04:32:19 +0100 (CET)","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 21FA8443;\n\tFri, 26 Mar 2021 04:32:19 +0100 (CET)"],"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=\"oCJ/eph4\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1616729539;\n\tbh=55mr0dytSoNKH6zAdtAtv3Up9f9bJ7K2K0UGSjk1HLw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=oCJ/eph48MqisMq0vG5LwS155e/RFhGtt7HOsWq+noyIKXomUhkdGT39Rc035lz9m\n\t4j5Lk/xPAb7Q95S0hEaUidHTMRM9csU4vWNzWRhG/GEPcANT9vz3tWzkDKFZ2th5rC\n\tUy9QPNd4UZ3O8fRYUrEA9je1gCFiw1CCtI7eBu20=","Date":"Fri, 26 Mar 2021 05:31:36 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>","References":"<20210324112527.63701-1-jacopo@jmondi.org>\n\t<20210324112527.63701-8-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210324112527.63701-8-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","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":15937,"web_url":"https://patchwork.libcamera.org/comment/15937/","msgid":"<CAO5uPHP=kF6a5FW85v9R7FXV=Sh+VvKJLeOEY34RsckwGQg=Aw@mail.gmail.com>","date":"2021-03-26T08:27:34","subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Jacopo, thanks for this work,\n\nCan you add a document for the yaml configuration?\nDoes this direction cause us to need preparing those files for all\nsupported devices?\nI am a bit concerned about SKU differences.\nDo we have an issue tracker for this?\n+Tomasz Figa\n\nBest Regards,\n-Hiro\n\nOn Fri, Mar 26, 2021 at 12:32 PM Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Jacopo,\n>\n> Thank you for the patch.\n>\n> On Wed, Mar 24, 2021 at 12:25:27PM +0100, Jacopo Mondi wrote:\n> > Add camera HAL configuration file for IPU3 Soraka.\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/android/data/soraka/camera_hal.yaml | 14 ++++++++++++++\n> >  1 file changed, 14 insertions(+)\n> >  create mode 100644 src/android/data/soraka/camera_hal.yaml\n> >\n> > diff --git a/src/android/data/soraka/camera_hal.yaml b/src/android/data/soraka/camera_hal.yaml\n> > new file mode 100644\n> > index 000000000000..489e601ac5d0\n> > --- /dev/null\n> > +++ b/src/android/data/soraka/camera_hal.yaml\n> > @@ -0,0 +1,14 @@\n> > +- manufacturer: Google\n> > +- model: Soraka\n> > +\n> > +- camera:\n> > +  - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n> > +  - model: \"ov5670\"\n> > +  - location: \"front\"\n> > +  - rotation: 0\n> > +\n> > +- camera:\n> > +  - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n> > +  - model: \"ov13858\"\n> > +  - location: \"back\"\n> > +  - rotation: 0\n>\n> I'm sure we can spend an endless amount of time bikeshedding on the YAML\n> schema, so I'll only make one comment :-)\n>\n> At the top level, you have a list, with each list entry being a\n> dictionary with a single key:value pair. There's no guarantee on unicity\n> of properties with this type of schema, you could for instance have\n> multiple \"manufacturer\" list entries. Same for the properties within\n> each camera.\n>\n> This would I believe be a more natural usage of YAML (to the extent that\n> YAML has anything natural about it):\n>\n> manufacturer: Google\n> model: Soraka\n>\n> cameras:\n>   - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n>     model: \"ov5670\"\n>     location: \"front\"\n>     rotation: 0\n>\n>   - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n>     model: \"ov13858\"\n>     location: \"back\"\n>     rotation: 0\n>\n> Or, possibly even better, to guarantee unicity of camera entries,\n>\n> manufacturer: Google\n> model: Soraka\n>\n> cameras:\n>   \"\\\\_SB_.PCI0.I2C4.CAM1\":\n>     model: \"ov5670\"\n>     location: \"front\"\n>     rotation: 0\n>\n>   \"\\\\_SB_.PCI0.I2C2.CAM0\":\n>     model: \"ov13858\"\n>     location: \"back\"\n>     rotation: 0\n>\n> The three options produce the following objects in Python:\n>\n> >>> pprint.pprint(yaml.safe_load(open('yaml1.yaml', 'rb').read()))\n> [{'manufacturer': 'Google'},\n>  {'model': 'Soraka'},\n>  {'camera': [{'name': '\\\\_SB_.PCI0.I2C4.CAM1'},\n>              {'model': 'ov5670'},\n>              {'location': 'front'},\n>              {'rotation': 0}]},\n>  {'camera': [{'name': '\\\\_SB_.PCI0.I2C2.CAM0'},\n>              {'model': 'ov13858'},\n>              {'location': 'back'},\n>              {'rotation': 0}]}]\n> >>> pprint.pprint(yaml.safe_load(open('yaml2.yaml', 'rb').read()))\n> {'cameras': [{'location': 'front',\n>               'model': 'ov5670',\n>               'name': '\\\\_SB_.PCI0.I2C4.CAM1',\n>               'rotation': 0},\n>              {'location': 'back',\n>               'model': 'ov13858',\n>               'name': '\\\\_SB_.PCI0.I2C2.CAM0',\n>               'rotation': 0}],\n>  'manufacturer': 'Google',\n>  'model': 'Soraka'}\n> >>> pprint.pprint(yaml.safe_load(open('yaml3.yaml', 'rb').read()))\n> {'cameras': {'\\\\_SB_.PCI0.I2C2.CAM0': {'location': 'back',\n>                                        'model': 'ov13858',\n>                                        'rotation': 0},\n>              '\\\\_SB_.PCI0.I2C4.CAM1': {'location': 'front',\n>                                        'model': 'ov5670',\n>                                        'rotation': 0}},\n>  'manufacturer': 'Google',\n>  'model': 'Soraka'}\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\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 8B68AC32EA\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Mar 2021 08:27:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CC8B768D66;\n\tFri, 26 Mar 2021 09:27:48 +0100 (CET)","from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com\n\t[IPv6:2a00:1450:4864:20::62b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9979768D47\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Mar 2021 09:27:47 +0100 (CET)","by mail-ej1-x62b.google.com with SMTP id u5so7133324ejn.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Mar 2021 01:27:47 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"akJiQdT7\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=unMhY3UFO+taws/4G3gF1gsb4pGD5vY2R/dmj0Pn3Sc=;\n\tb=akJiQdT7SmRJgMNh/6A6P9l1Q4eT+xo3PGORy91kNx/JY5wm7H4/C1tTlRyPMHtXqB\n\t3r2266kSY82PTS/p+85t7eaWmfKczkyWbwL8YYQQnjDuvDb7kniIWX8bfcyeqNNldf1f\n\tm5+HsTjmUcgyDP/io3EFMSZlJM0OINlX6hXaU=","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=unMhY3UFO+taws/4G3gF1gsb4pGD5vY2R/dmj0Pn3Sc=;\n\tb=spiAsH/ZkHFuWKEKyGluOkYBTTBbtmvW/AeQ/+h2FtkxbUMwGcORV1kZLcknHZZIup\n\tJt0vHrwORhN+Ni+4IxycxxGPJOu2dJv94bskubuDMFwyQUpCrnZI/jx1xl3QzmFU6Z/a\n\tlfurw36Sp/2xU7GxzvKjA5GoLk9QtVkvRTUnpXL49nX3XEjl4zIMxtscmC5sMcSnAFTn\n\tPIH/OLiueFZt62M1beUV+76Ljl9U7m0hnGKc25HNar/3Tv8kdq1K70ECJrJ03MmojDko\n\tIOr28NBRdJDsUWkkjYcDqrBCV7Xzi756MzS1AIZSZOof0qXCqxJcQxtSxyBT8VgoD1bD\n\tRLXg==","X-Gm-Message-State":"AOAM531Kkc0QdXZLYZNFDQmtuzAj8etildVBJbg6abOIrA4BkLOmKfT/\n\tDh2lsfYCFr+mb5Zw+4UlnHp/cbyukI+OurssmolmxQ==","X-Google-Smtp-Source":"ABdhPJzyh2o0JvwQLAckXnSEClcci+z3JXnrpGaLX/bGACRxJKL5FoTXXo4VT3p8nkEK66VEsFGljRu8H+0ARPrrYp0=","X-Received":"by 2002:a17:906:1a4b:: with SMTP id\n\tj11mr14092675ejf.55.1616747267166; \n\tFri, 26 Mar 2021 01:27:47 -0700 (PDT)","MIME-Version":"1.0","References":"<20210324112527.63701-1-jacopo@jmondi.org>\n\t<20210324112527.63701-8-jacopo@jmondi.org>\n\t<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>","In-Reply-To":"<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Fri, 26 Mar 2021 17:27:34 +0900","Message-ID":"<CAO5uPHP=kF6a5FW85v9R7FXV=Sh+VvKJLeOEY34RsckwGQg=Aw@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tTomasz Figa <tfiga@chromium.org>","Subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","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":15942,"web_url":"https://patchwork.libcamera.org/comment/15942/","msgid":"<YF3SZttYRLctgWNg@pendragon.ideasonboard.com>","date":"2021-03-26T12:24:06","subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Hiro,\n\nOn Fri, Mar 26, 2021 at 05:27:34PM +0900, Hirokazu Honda wrote:\n> Hi Jacopo, thanks for this work,\n> \n> Can you add a document for the yaml configuration?\n> Does this direction cause us to need preparing those files for all\n> supported devices?\n> I am a bit concerned about SKU differences.\n\nThe configuration needs to be different only to the extent that the\ndifferent SKUs exhibit differences that need to be taken into account on\nthe camera side. You can think about this file as being, in the worst\ncase, as SKU-dependent as the vendor camera tuning file. In particular,\nwe will store lens-related information in the configuration file, so if\ntwo different SKUs have, for instance, different lens focal distances,\nthen different configuration files will be needed.\n\n> Do we have an issue tracker for this?\n> +Tomasz Figa\n> \n> Best Regards,\n> -Hiro\n> \n> On Fri, Mar 26, 2021 at 12:32 PM Laurent Pinchart\n> <laurent.pinchart@ideasonboard.com> wrote:\n> >\n> > Hi Jacopo,\n> >\n> > Thank you for the patch.\n> >\n> > On Wed, Mar 24, 2021 at 12:25:27PM +0100, Jacopo Mondi wrote:\n> > > Add camera HAL configuration file for IPU3 Soraka.\n> > >\n> > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > ---\n> > >  src/android/data/soraka/camera_hal.yaml | 14 ++++++++++++++\n> > >  1 file changed, 14 insertions(+)\n> > >  create mode 100644 src/android/data/soraka/camera_hal.yaml\n> > >\n> > > diff --git a/src/android/data/soraka/camera_hal.yaml b/src/android/data/soraka/camera_hal.yaml\n> > > new file mode 100644\n> > > index 000000000000..489e601ac5d0\n> > > --- /dev/null\n> > > +++ b/src/android/data/soraka/camera_hal.yaml\n> > > @@ -0,0 +1,14 @@\n> > > +- manufacturer: Google\n> > > +- model: Soraka\n> > > +\n> > > +- camera:\n> > > +  - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n> > > +  - model: \"ov5670\"\n> > > +  - location: \"front\"\n> > > +  - rotation: 0\n> > > +\n> > > +- camera:\n> > > +  - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n> > > +  - model: \"ov13858\"\n> > > +  - location: \"back\"\n> > > +  - rotation: 0\n> >\n> > I'm sure we can spend an endless amount of time bikeshedding on the YAML\n> > schema, so I'll only make one comment :-)\n> >\n> > At the top level, you have a list, with each list entry being a\n> > dictionary with a single key:value pair. There's no guarantee on unicity\n> > of properties with this type of schema, you could for instance have\n> > multiple \"manufacturer\" list entries. Same for the properties within\n> > each camera.\n> >\n> > This would I believe be a more natural usage of YAML (to the extent that\n> > YAML has anything natural about it):\n> >\n> > manufacturer: Google\n> > model: Soraka\n> >\n> > cameras:\n> >   - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n> >     model: \"ov5670\"\n> >     location: \"front\"\n> >     rotation: 0\n> >\n> >   - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n> >     model: \"ov13858\"\n> >     location: \"back\"\n> >     rotation: 0\n> >\n> > Or, possibly even better, to guarantee unicity of camera entries,\n> >\n> > manufacturer: Google\n> > model: Soraka\n> >\n> > cameras:\n> >   \"\\\\_SB_.PCI0.I2C4.CAM1\":\n> >     model: \"ov5670\"\n> >     location: \"front\"\n> >     rotation: 0\n> >\n> >   \"\\\\_SB_.PCI0.I2C2.CAM0\":\n> >     model: \"ov13858\"\n> >     location: \"back\"\n> >     rotation: 0\n> >\n> > The three options produce the following objects in Python:\n> >\n> > >>> pprint.pprint(yaml.safe_load(open('yaml1.yaml', 'rb').read()))\n> > [{'manufacturer': 'Google'},\n> >  {'model': 'Soraka'},\n> >  {'camera': [{'name': '\\\\_SB_.PCI0.I2C4.CAM1'},\n> >              {'model': 'ov5670'},\n> >              {'location': 'front'},\n> >              {'rotation': 0}]},\n> >  {'camera': [{'name': '\\\\_SB_.PCI0.I2C2.CAM0'},\n> >              {'model': 'ov13858'},\n> >              {'location': 'back'},\n> >              {'rotation': 0}]}]\n> > >>> pprint.pprint(yaml.safe_load(open('yaml2.yaml', 'rb').read()))\n> > {'cameras': [{'location': 'front',\n> >               'model': 'ov5670',\n> >               'name': '\\\\_SB_.PCI0.I2C4.CAM1',\n> >               'rotation': 0},\n> >              {'location': 'back',\n> >               'model': 'ov13858',\n> >               'name': '\\\\_SB_.PCI0.I2C2.CAM0',\n> >               'rotation': 0}],\n> >  'manufacturer': 'Google',\n> >  'model': 'Soraka'}\n> > >>> pprint.pprint(yaml.safe_load(open('yaml3.yaml', 'rb').read()))\n> > {'cameras': {'\\\\_SB_.PCI0.I2C2.CAM0': {'location': 'back',\n> >                                        'model': 'ov13858',\n> >                                        'rotation': 0},\n> >              '\\\\_SB_.PCI0.I2C4.CAM1': {'location': 'front',\n> >                                        'model': 'ov5670',\n> >                                        'rotation': 0}},\n> >  'manufacturer': 'Google',\n> >  'model': 'Soraka'}\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 0D449C32EA\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 26 Mar 2021 12:24:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3CCA168D47;\n\tFri, 26 Mar 2021 13:24:52 +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 CB053602D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 26 Mar 2021 13:24:50 +0100 (CET)","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 35B95443;\n\tFri, 26 Mar 2021 13:24:50 +0100 (CET)"],"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=\"s6XZtQ7W\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1616761490;\n\tbh=u5lLKWaZQt0HXF9OjW9VKx5W96tuTaJEzfb6n6xwpQ8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=s6XZtQ7WxzcQTR+KhbmIMfw6vGKITHLCstAyEWs4nkJ1RDHkaBjzORouMu3HODSyw\n\t8d83pr/dMTJTuC5v2geD9/wmWmNs5ZntHQHybQgZNXca5uRQQuFdZvjU0Al7/2E+dJ\n\tUkX8q6PaJrT6F2IPFV+Zi/n7rqEG+Cgy87FxHDuo=","Date":"Fri, 26 Mar 2021 14:24:06 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<YF3SZttYRLctgWNg@pendragon.ideasonboard.com>","References":"<20210324112527.63701-1-jacopo@jmondi.org>\n\t<20210324112527.63701-8-jacopo@jmondi.org>\n\t<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>\n\t<CAO5uPHP=kF6a5FW85v9R7FXV=Sh+VvKJLeOEY34RsckwGQg=Aw@mail.gmail.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHP=kF6a5FW85v9R7FXV=Sh+VvKJLeOEY34RsckwGQg=Aw@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","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":16017,"web_url":"https://patchwork.libcamera.org/comment/16017/","msgid":"<20210329122802.i5fp2t6stev5d4ez@uno.localdomain>","date":"2021-03-29T12:28:02","subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Fri, Mar 26, 2021 at 05:31:36AM +0200, Laurent Pinchart wrote:\n> Hi Jacopo,\n>\n> Thank you for the patch.\n>\n> On Wed, Mar 24, 2021 at 12:25:27PM +0100, Jacopo Mondi wrote:\n> > Add camera HAL configuration file for IPU3 Soraka.\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/android/data/soraka/camera_hal.yaml | 14 ++++++++++++++\n> >  1 file changed, 14 insertions(+)\n> >  create mode 100644 src/android/data/soraka/camera_hal.yaml\n> >\n> > diff --git a/src/android/data/soraka/camera_hal.yaml b/src/android/data/soraka/camera_hal.yaml\n> > new file mode 100644\n> > index 000000000000..489e601ac5d0\n> > --- /dev/null\n> > +++ b/src/android/data/soraka/camera_hal.yaml\n> > @@ -0,0 +1,14 @@\n> > +- manufacturer: Google\n> > +- model: Soraka\n> > +\n> > +- camera:\n> > +  - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n> > +  - model: \"ov5670\"\n> > +  - location: \"front\"\n> > +  - rotation: 0\n> > +\n> > +- camera:\n> > +  - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n> > +  - model: \"ov13858\"\n> > +  - location: \"back\"\n> > +  - rotation: 0\n>\n> I'm sure we can spend an endless amount of time bikeshedding on the YAML\n> schema, so I'll only make one comment :-)\n>\n> At the top level, you have a list, with each list entry being a\n> dictionary with a single key:value pair. There's no guarantee on unicity\n> of properties with this type of schema, you could for instance have\n> multiple \"manufacturer\" list entries. Same for the properties within\n> each camera.\n>\n> This would I believe be a more natural usage of YAML (to the extent that\n> YAML has anything natural about it):\n>\n> manufacturer: Google\n> model: Soraka\n>\n> cameras:\n>   - name: \"\\\\_SB_.PCI0.I2C4.CAM1\"\n>     model: \"ov5670\"\n>     location: \"front\"\n>     rotation: 0\n>\n>   - name: \"\\\\_SB_.PCI0.I2C2.CAM0\"\n>     model: \"ov13858\"\n>     location: \"back\"\n>     rotation: 0\n>\n> Or, possibly even better, to guarantee unicity of camera entries,\n>\n> manufacturer: Google\n> model: Soraka\n>\n> cameras:\n>   \"\\\\_SB_.PCI0.I2C4.CAM1\":\n>     model: \"ov5670\"\n>     location: \"front\"\n>     rotation: 0\n>\n>   \"\\\\_SB_.PCI0.I2C2.CAM0\":\n>     model: \"ov13858\"\n>     location: \"back\"\n>     rotation: 0\n>\n\nThis clearly shows how poor my understanding of yaml is.\nI'll go with the last proposed option as it guarantees unicity of the\ncameras.\n\nThanks\n  j\n\n\n> The three options produce the following objects in Python:\n>\n> >>> pprint.pprint(yaml.safe_load(open('yaml1.yaml', 'rb').read()))\n> [{'manufacturer': 'Google'},\n>  {'model': 'Soraka'},\n>  {'camera': [{'name': '\\\\_SB_.PCI0.I2C4.CAM1'},\n>              {'model': 'ov5670'},\n>              {'location': 'front'},\n>              {'rotation': 0}]},\n>  {'camera': [{'name': '\\\\_SB_.PCI0.I2C2.CAM0'},\n>              {'model': 'ov13858'},\n>              {'location': 'back'},\n>              {'rotation': 0}]}]\n> >>> pprint.pprint(yaml.safe_load(open('yaml2.yaml', 'rb').read()))\n> {'cameras': [{'location': 'front',\n>               'model': 'ov5670',\n>               'name': '\\\\_SB_.PCI0.I2C4.CAM1',\n>               'rotation': 0},\n>              {'location': 'back',\n>               'model': 'ov13858',\n>               'name': '\\\\_SB_.PCI0.I2C2.CAM0',\n>               'rotation': 0}],\n>  'manufacturer': 'Google',\n>  'model': 'Soraka'}\n> >>> pprint.pprint(yaml.safe_load(open('yaml3.yaml', 'rb').read()))\n> {'cameras': {'\\\\_SB_.PCI0.I2C2.CAM0': {'location': 'back',\n>                                        'model': 'ov13858',\n>                                        'rotation': 0},\n>              '\\\\_SB_.PCI0.I2C4.CAM1': {'location': 'front',\n>                                        'model': 'ov5670',\n>                                        'rotation': 0}},\n>  'manufacturer': 'Google',\n>  'model': 'Soraka'}\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 88E38C32EF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 29 Mar 2021 12:27:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D82C568784;\n\tMon, 29 Mar 2021 14:27:28 +0200 (CEST)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 788B16877D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 29 Mar 2021 14:27:27 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id DE2B31BF20B;\n\tMon, 29 Mar 2021 12:27:26 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","Date":"Mon, 29 Mar 2021 14:28:02 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20210329122802.i5fp2t6stev5d4ez@uno.localdomain>","References":"<20210324112527.63701-1-jacopo@jmondi.org>\n\t<20210324112527.63701-8-jacopo@jmondi.org>\n\t<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<YF1VmO4uWgkseo9t@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 7/7] android: soraka: Add camera HAL\n\tconfiguration","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>"}}]