[{"id":12475,"web_url":"https://patchwork.libcamera.org/comment/12475/","msgid":"<20200912152607.GE695456@oden.dyn.berto.se>","date":"2020-09-12T15:26:07","subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","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 work.\n\nOn 2020-09-11 18:20:35 +0200, Jacopo Mondi wrote:\n> Libcamera is in the process of defining its own set of properties, to\n> advertise the camera capabilities.\n> \n> To temporary close the gap in the Android camera HAL and support all\n> static metadata required in the LIMITED hw level, define a set of Draft\n> properties whose values are taken from their Android definition, in order\n> to allow pipeline handlers to support Android.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/property_ids.yaml | 70 +++++++++++++++++++++++++++++++++\n>  1 file changed, 70 insertions(+)\n> \n> diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml\n> index 74ad0195d631..62bed9f3844d 100644\n> --- a/src/libcamera/property_ids.yaml\n> +++ b/src/libcamera/property_ids.yaml\n> @@ -640,4 +640,74 @@ controls:\n>          \\todo Rename this property to ActiveAreas once we will have property\n>                categories (i.e. Properties::PixelArray::ActiveAreas)\n>  \n> +  - DraftAvailableNoiseReductionModes:\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n> +        Draft property to report the list of supported noise reduction modes.\n> +        Currently identical to\n> +        ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES.\n> +      enum:\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_OFF\n> +          value: 0\n> +          description: No noise reduction is applied\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_FAST\n> +          value: 1\n> +          description: |\n> +            Noise reduction is applied without reducing the frame rate.\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_HIGH_QUALITY\n> +          value: 2\n> +          description: |\n> +            High quality noise reduction at the expense of frame rate.\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_MINIMAL\n> +          value: 3\n> +          description: |\n> +            Minimal noise reduction is applied without reducing the frame rate.\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_ZSL\n> +          value: 4\n> +          description: |\n> +            Noise reduction is applied at different levels to different streams.\n> +\n> +  - DraftAvailableColorCorrectionAberrationModes:\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n> +        Draft property to report the list of supported color correction\n> +        aberration modes. Currently identical to\n> +        ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.\n> +      enum:\n> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_OFF\n> +          value: 0\n> +          description: No aberration correction is applied.\n> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_FAST\n> +          value: 1\n> +          description: Aberration correction will not slow down the frame rate.\n> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_HIGH_QUALITY\n> +          value: 2\n> +          description: |\n> +            High quality aberration correction which might reduce the frame\n> +            rate.\n> +\n> +  - DraftAvailableLensShadingMapModes:\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n> +        Draft property to report the list of supported lens shading map modes.\n> +        Currently identical to\n> +        ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES.\n> +      enum:\n> +        - name: DRAFT_LENS_SHADING_MAP_MODE_OFF\n> +          value: 0\n> +          description: No lens shading map mode is available.\n> +        - name: DRAFT_LENS_SHADING_MAP_MODE_ON\n> +          value: 1\n> +          description: The lens shading map mode is available.\n> +\n> +  - DraftPipelineMaxDepth:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report the maximum number of pipeline stages a frame\n> +        has to go through from when it is exposed to when it is available to\n> +        applications. Currently identical to ANDROID_REQUEST_PIPELINE_MAX_DEPTH.\n> +\n>  ...\n> -- \n> 2.28.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 D0266C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 12 Sep 2020 15:26:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 60C4C62D86;\n\tSat, 12 Sep 2020 17:26:10 +0200 (CEST)","from mail-lj1-x244.google.com (mail-lj1-x244.google.com\n\t[IPv6:2a00:1450:4864:20::244])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E85CF62C8C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 12 Sep 2020 17:26:08 +0200 (CEST)","by mail-lj1-x244.google.com with SMTP id c2so14932414ljj.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 12 Sep 2020 08:26:08 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\td28sm1071437lfn.218.2020.09.12.08.26.07\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSat, 12 Sep 2020 08:26:07 -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=\"eJ9ZCefL\"; 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=zx21LGDNDDz3w6OQbqwL98ld2OAO5PC7iSwvqY3ueu4=;\n\tb=eJ9ZCefLDWO2UCumuFWh4dbqEUtmLCw0OVDyhWEcGB9Kq7Ts4DR1UGWDtvbzlxIepH\n\tvTHDAb0L8+aCR/OVzusE8wlmM+jOzF5D4Xl1CIFdC2BG2pyDl0FHIxxBI00kOK7QNuLF\n\tk0fScpnKcS6o/ZA+Tol5y8wKz8F3eYnR45BHfyyZIDehQmN9jWuVTwypuFmEKgDLBZuV\n\tlZLJSIGi33mv7kzt90C4vd5pAKHX8poT9wCm1FKaZB+b6EOcDmFJg2B585cmviXDArqR\n\tdAMoxQmqFpihE0DUGYZZb0bF2lcQSmoYCrahrJBGvzHtziCXEUCrTkNm7bFp3LbIEKFw\n\tj9Qw==","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=zx21LGDNDDz3w6OQbqwL98ld2OAO5PC7iSwvqY3ueu4=;\n\tb=CAaTiNhgyIEsl9P9PLEZkWgYisaq+KHfEzgpWkRL/r5XknXCTIOIT1Lash4dnCj3Lj\n\t2icXmqJ3Usr77xbtGBNJc5TG9BYeR9OOx3AD4PM82lyweCQ5SkAiB2fc5h5DKbYPGEaJ\n\tVtlcTNkwdXqbdMUjxfrsHrk/9plp9tV1w8OBQhZqz8kPzIO4QVEkO/4irdaBihOjW8G9\n\toXU0UmYDRVH7QfqPETRUloR7mZRPfqx0Si4tF2aNn/9pueePN/HRRqWzvfO2NW6yLMRj\n\tdqCHa/PL3eiq4UVTCLOip6wisbXltvP6pcsr+jIMs8/d6XUdky+7zP+7mnVUJKudqFSU\n\tsNMw==","X-Gm-Message-State":"AOAM531GLiS86xKF6rB8um8C3LZSlhnv6/kPnneg7QOHZbbMe0oDCGe7\n\tPDF1Yf97XTOx1BPJpJbqMacvJQ==","X-Google-Smtp-Source":"ABdhPJx4D2qXGpnQ8KZhOmhDBjSSDM06zzVwoxuKM2doQsYdpyJB1+VOarPlSkXakYV8+E67KBe3Mg==","X-Received":"by 2002:a05:651c:209:: with SMTP id\n\ty9mr2340342ljn.398.1599924368187; \n\tSat, 12 Sep 2020 08:26:08 -0700 (PDT)","Date":"Sat, 12 Sep 2020 17:26:07 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200912152607.GE695456@oden.dyn.berto.se>","References":"<20200911162039.61933-1-jacopo@jmondi.org>\n\t<20200911162039.61933-3-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200911162039.61933-3-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","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":"hanlinchen@chromium.org, 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":13081,"web_url":"https://patchwork.libcamera.org/comment/13081/","msgid":"<bd2eb82c-39cc-b376-83ec-9c681ff67159@ideasonboard.com>","date":"2020-10-07T14:23:12","subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 11/09/2020 17:20, Jacopo Mondi wrote:\n> Libcamera is in the process of defining its own set of properties, to\n> advertise the camera capabilities.\n> \n> To temporary close the gap in the Android camera HAL and support all\n\ns/temporary/temporarily/\n\n> static metadata required in the LIMITED hw level, define a set of Draft\n> properties whose values are taken from their Android definition, in order\n> to allow pipeline handlers to support Android.\n> \n\nI had it in my head that these draft controls were going to be\nnamespaced such that it was accessible through:\n\nswitch(props.get(properties::draft::AvailableNoiseReductionModes) {\n\tcase properties::draft::NOISE_REDUCTION_MODE_OFF:\n\tcase properties::draft::NOISE_REDUCTION_MODE_FAST:\n\t\t// We don't do noise reduction\n\t\tbreak;\n\tcase properties::draft::NOISE_REDUCTION_MODE_HIGH_QUALITY:\nDRAFT_NOISE_REDUCTION_MODE_MINIMAL\n}\n\nAnd that inserting (or removing) a control to/from that draft namespace\nwould be about setting a property on the control definition like:\n\n+  - AvailableNoiseReductionModes:\n+      draft: true\n+      type: int32_t\n+      size: [n]\n+      description: |\n\nOr of course it could be:\n\tstatus: draft\nor\n\tstatus: staging\n\nBut that's all bikeshed colours.\n\n\nIs the reason you've used a prefix (on every value) because that's the\nway you want it? or because you haven't looked at updating the control\ngeneration scripts to support the 'draft' property?\n\nIf it's the latter, I'll tackle that now for you.\n(I'm going to have a quick go to see how hard it would be to implement).\n\n\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/libcamera/property_ids.yaml | 70 +++++++++++++++++++++++++++++++++\n>  1 file changed, 70 insertions(+)\n> \n> diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml\n> index 74ad0195d631..62bed9f3844d 100644\n> --- a/src/libcamera/property_ids.yaml\n> +++ b/src/libcamera/property_ids.yaml\n> @@ -640,4 +640,74 @@ controls:\n>          \\todo Rename this property to ActiveAreas once we will have property\n>                categories (i.e. Properties::PixelArray::ActiveAreas)\n>  \n> +  - DraftAvailableNoiseReductionModes:\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n> +        Draft property to report the list of supported noise reduction modes.\n> +        Currently identical to\n> +        ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES.\n> +      enum:\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_OFF\n> +          value: 0\n> +          description: No noise reduction is applied\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_FAST\n> +          value: 1\n> +          description: |\n> +            Noise reduction is applied without reducing the frame rate.\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_HIGH_QUALITY\n> +          value: 2\n> +          description: |\n> +            High quality noise reduction at the expense of frame rate.\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_MINIMAL\n> +          value: 3\n> +          description: |\n> +            Minimal noise reduction is applied without reducing the frame rate.\n> +        - name: DRAFT_NOISE_REDUCTION_MODE_ZSL\n> +          value: 4\n> +          description: |\n> +            Noise reduction is applied at different levels to different streams.\n\nThis implies that different streams can process noise reduction\nseparately? but it's confusing because it's referencing ZeroShutterLag?\nSo - I don't (yet) understand how that corresponds to the noise\nreduction. Maybe something for me to learn soon.\n\nAnyway, especially as these are 'DRAFT/::draft::' whatever - I don't\nthink we need to dwell 'too' much on the detail, as the point of being a\ndraft is to allow the plumbing to progress, and fix the detail before\nmoving out of draft status.\n\n\nThe other point I'd like to discuss here, is that you have used\nDRAFT_ALL_CAPS_ENUM style for all the enums, which matches the\nannonymous enum in\ninclude/libcamera/property_ids.h\nenum {\n        LOCATION = 1,\n        ROTATION = 2,\n        MODEL = 3,\n        UNIT_CELL_SIZE = 4,\n        PIXEL_ARRAY_SIZE = 5,\n        PIXEL_ARRAY_OPTICAL_BLACK_RECTANGLES = 6,\n        PIXEL_ARRAY_ACTIVE_AREAS = 7,\n};\n\n\nbut differs to the LocationValues enum:\nenum LocationValues {\n        CameraLocationFront = 0,\n        CameraLocationBack = 1,\n        CameraLocationExternal = 2,\n};\n\nMy personal preference would be to follow the LocationValues style, as\nit feels more C++/libcamery ;-)\n\nBut - it's just an open question for the moment.\n\n\n\n> +\n> +  - DraftAvailableColorCorrectionAberrationModes:\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n> +        Draft property to report the list of supported color correction\n> +        aberration modes. Currently identical to\n> +        ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.\n> +      enum:\n> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_OFF\n> +          value: 0\n> +          description: No aberration correction is applied.\n> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_FAST\n> +          value: 1\n> +          description: Aberration correction will not slow down the frame rate.\n> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_HIGH_QUALITY\n> +          value: 2\n> +          description: |\n> +            High quality aberration correction which might reduce the frame\n> +            rate.\n> +\n> +  - DraftAvailableLensShadingMapModes:\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n> +        Draft property to report the list of supported lens shading map modes.\n> +        Currently identical to\n> +        ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES.\n> +      enum:\n> +        - name: DRAFT_LENS_SHADING_MAP_MODE_OFF\n> +          value: 0\n> +          description: No lens shading map mode is available.\n> +        - name: DRAFT_LENS_SHADING_MAP_MODE_ON\n> +          value: 1\n> +          description: The lens shading map mode is available.\n> +\n> +  - DraftPipelineMaxDepth:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report the maximum number of pipeline stages a frame\n> +        has to go through from when it is exposed to when it is available to\n> +        applications. Currently identical to ANDROID_REQUEST_PIPELINE_MAX_DEPTH.\n> +\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 E6B6EBEEDF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Oct 2020 14:23:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A256460719;\n\tWed,  7 Oct 2020 16:23:16 +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 37941605BE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Oct 2020 16:23:15 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 943539DA;\n\tWed,  7 Oct 2020 16:23:14 +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=\"oxvklynj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1602080594;\n\tbh=rKUDPSxhYIjwkPQtLaZhJqX5N8biQjmhzvVhwfwYQHo=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=oxvklynjpKSlTWJgRKCoHbDNAfGfPZIrAY7MWmqBVU2le4/7qFyHSMFrEiS3Z2rZ7\n\to23sp04m37ReI195Il53X8NCtrIiRCpJrp5Cusc9mK9XGTIC8iuQX1WMK0i7eAJN90\n\tcuzpq40cAMR5//KR+nD4YFgXhcPF1SQXxK671kpY=","To":"Jacopo Mondi <jacopo@jmondi.org>, libcamera-devel@lists.libcamera.org","References":"<20200911162039.61933-1-jacopo@jmondi.org>\n\t<20200911162039.61933-3-jacopo@jmondi.org>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<bd2eb82c-39cc-b376-83ec-9c681ff67159@ideasonboard.com>","Date":"Wed, 7 Oct 2020 15:23:12 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20200911162039.61933-3-jacopo@jmondi.org>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","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>","Reply-To":"kieran.bingham@ideasonboard.com","Cc":"hanlinchen@chromium.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":13082,"web_url":"https://patchwork.libcamera.org/comment/13082/","msgid":"<20201007144039.nvotnn5ehdt7ly62@uno.localdomain>","date":"2020-10-07T14:40:39","subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Kieran,\n\nOn Wed, Oct 07, 2020 at 03:23:12PM +0100, Kieran Bingham wrote:\n> Hi Jacopo,\n>\n> On 11/09/2020 17:20, Jacopo Mondi wrote:\n> > Libcamera is in the process of defining its own set of properties, to\n> > advertise the camera capabilities.\n> >\n> > To temporary close the gap in the Android camera HAL and support all\n>\n> s/temporary/temporarily/\n>\n> > static metadata required in the LIMITED hw level, define a set of Draft\n> > properties whose values are taken from their Android definition, in order\n> > to allow pipeline handlers to support Android.\n> >\n>\n> I had it in my head that these draft controls were going to be\n> namespaced such that it was accessible through:\n>\n> switch(props.get(properties::draft::AvailableNoiseReductionModes) {\n> \tcase properties::draft::NOISE_REDUCTION_MODE_OFF:\n> \tcase properties::draft::NOISE_REDUCTION_MODE_FAST:\n> \t\t// We don't do noise reduction\n> \t\tbreak;\n> \tcase properties::draft::NOISE_REDUCTION_MODE_HIGH_QUALITY:\n> DRAFT_NOISE_REDUCTION_MODE_MINIMAL\n> }\n>\n> And that inserting (or removing) a control to/from that draft namespace\n> would be about setting a property on the control definition like:\n>\n> +  - AvailableNoiseReductionModes:\n> +      draft: true\n> +      type: int32_t\n> +      size: [n]\n> +      description: |\n>\n> Or of course it could be:\n> \tstatus: draft\n> or\n> \tstatus: staging\n>\n> But that's all bikeshed colours.\n>\n>\n> Is the reason you've used a prefix (on every value) because that's the\n> way you want it? or because you haven't looked at updating the control\n> generation scripts to support the 'draft' property?\n>\n> If it's the latter, I'll tackle that now for you.\n> (I'm going to have a quick go to see how hard it would be to implement).\n>\n\nI don't think it's worth as I suspect very few draft controls will be made\nlibcamera controls by just dropping 'draft' from their name.\n\nThere are Android defined controls, plain and simple. For each of them\nthere will be corresponding libcamera control.\n\nInstrumenting the control generation script for this purpose seems a\nbit an unjustified effort.\n\n>\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/libcamera/property_ids.yaml | 70 +++++++++++++++++++++++++++++++++\n> >  1 file changed, 70 insertions(+)\n> >\n> > diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml\n> > index 74ad0195d631..62bed9f3844d 100644\n> > --- a/src/libcamera/property_ids.yaml\n> > +++ b/src/libcamera/property_ids.yaml\n> > @@ -640,4 +640,74 @@ controls:\n> >          \\todo Rename this property to ActiveAreas once we will have property\n> >                categories (i.e. Properties::PixelArray::ActiveAreas)\n> >\n> > +  - DraftAvailableNoiseReductionModes:\n> > +      type: int32_t\n> > +      size: [n]\n> > +      description: |\n> > +        Draft property to report the list of supported noise reduction modes.\n> > +        Currently identical to\n> > +        ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES.\n> > +      enum:\n> > +        - name: DRAFT_NOISE_REDUCTION_MODE_OFF\n> > +          value: 0\n> > +          description: No noise reduction is applied\n> > +        - name: DRAFT_NOISE_REDUCTION_MODE_FAST\n> > +          value: 1\n> > +          description: |\n> > +            Noise reduction is applied without reducing the frame rate.\n> > +        - name: DRAFT_NOISE_REDUCTION_MODE_HIGH_QUALITY\n> > +          value: 2\n> > +          description: |\n> > +            High quality noise reduction at the expense of frame rate.\n> > +        - name: DRAFT_NOISE_REDUCTION_MODE_MINIMAL\n> > +          value: 3\n> > +          description: |\n> > +            Minimal noise reduction is applied without reducing the frame rate.\n> > +        - name: DRAFT_NOISE_REDUCTION_MODE_ZSL\n> > +          value: 4\n> > +          description: |\n> > +            Noise reduction is applied at different levels to different streams.\n>\n> This implies that different streams can process noise reduction\n> separately? but it's confusing because it's referencing ZeroShutterLag?\n> So - I don't (yet) understand how that corresponds to the noise\n> reduction. Maybe something for me to learn soon.\n\nNot sure. Just imported those values from the Android metadata\ndescription.\n\n>\n> Anyway, especially as these are 'DRAFT/::draft::' whatever - I don't\n> think we need to dwell 'too' much on the detail, as the point of being a\n> draft is to allow the plumbing to progress, and fix the detail before\n> moving out of draft status.\n>\n>\n> The other point I'd like to discuss here, is that you have used\n> DRAFT_ALL_CAPS_ENUM style for all the enums, which matches the\n> annonymous enum in\n> include/libcamera/property_ids.h\n> enum {\n>         LOCATION = 1,\n>         ROTATION = 2,\n>         MODEL = 3,\n>         UNIT_CELL_SIZE = 4,\n>         PIXEL_ARRAY_SIZE = 5,\n>         PIXEL_ARRAY_OPTICAL_BLACK_RECTANGLES = 6,\n>         PIXEL_ARRAY_ACTIVE_AREAS = 7,\n> };\n>\n\nThese are controls/properties identifiers\n\n>\n> but differs to the LocationValues enum:\n> enum LocationValues {\n>         CameraLocationFront = 0,\n>         CameraLocationBack = 1,\n>         CameraLocationExternal = 2,\n> };\n>\n> My personal preference would be to follow the LocationValues style, as\n> it feels more C++/libcamery ;-)\n>\n> But - it's just an open question for the moment.\n\nAgain, just because Android named them in this way and staying\nconsistent with their definition has value to me.\n\n>\n>\n>\n> > +\n> > +  - DraftAvailableColorCorrectionAberrationModes:\n> > +      type: int32_t\n> > +      size: [n]\n> > +      description: |\n> > +        Draft property to report the list of supported color correction\n> > +        aberration modes. Currently identical to\n> > +        ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.\n> > +      enum:\n> > +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_OFF\n> > +          value: 0\n> > +          description: No aberration correction is applied.\n> > +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_FAST\n> > +          value: 1\n> > +          description: Aberration correction will not slow down the frame rate.\n> > +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_HIGH_QUALITY\n> > +          value: 2\n> > +          description: |\n> > +            High quality aberration correction which might reduce the frame\n> > +            rate.\n> > +\n> > +  - DraftAvailableLensShadingMapModes:\n> > +      type: int32_t\n> > +      size: [n]\n> > +      description: |\n> > +        Draft property to report the list of supported lens shading map modes.\n> > +        Currently identical to\n> > +        ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES.\n> > +      enum:\n> > +        - name: DRAFT_LENS_SHADING_MAP_MODE_OFF\n> > +          value: 0\n> > +          description: No lens shading map mode is available.\n> > +        - name: DRAFT_LENS_SHADING_MAP_MODE_ON\n> > +          value: 1\n> > +          description: The lens shading map mode is available.\n> > +\n> > +  - DraftPipelineMaxDepth:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to report the maximum number of pipeline stages a frame\n> > +        has to go through from when it is exposed to when it is available to\n> > +        applications. Currently identical to ANDROID_REQUEST_PIPELINE_MAX_DEPTH.\n> > +\n> >  ...\n> >\n>\n> --\n> Regards\n> --\n> Kieran","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 CCE0CBEEE0\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Oct 2020 14:36:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4080360719;\n\tWed,  7 Oct 2020 16:36:40 +0200 (CEST)","from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net\n\t[217.70.183.195])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C4395605C1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Oct 2020 16:36:39 +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 relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 0BD2A60011;\n\tWed,  7 Oct 2020 14:36:38 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","Date":"Wed, 7 Oct 2020 16:40:39 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20201007144039.nvotnn5ehdt7ly62@uno.localdomain>","References":"<20200911162039.61933-1-jacopo@jmondi.org>\n\t<20200911162039.61933-3-jacopo@jmondi.org>\n\t<bd2eb82c-39cc-b376-83ec-9c681ff67159@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<bd2eb82c-39cc-b376-83ec-9c681ff67159@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","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":"hanlinchen@chromium.org, 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":13083,"web_url":"https://patchwork.libcamera.org/comment/13083/","msgid":"<f2853f7a-3723-ee3c-f499-e3bebd5dd6e2@ideasonboard.com>","date":"2020-10-07T15:11:27","subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 07/10/2020 15:40, Jacopo Mondi wrote:\n> Hi Kieran,\n> \n> On Wed, Oct 07, 2020 at 03:23:12PM +0100, Kieran Bingham wrote:\n>> Hi Jacopo,\n>>\n>> On 11/09/2020 17:20, Jacopo Mondi wrote:\n>>> Libcamera is in the process of defining its own set of properties, to\n>>> advertise the camera capabilities.\n>>>\n>>> To temporary close the gap in the Android camera HAL and support all\n>>\n>> s/temporary/temporarily/\n>>\n>>> static metadata required in the LIMITED hw level, define a set of Draft\n>>> properties whose values are taken from their Android definition, in order\n>>> to allow pipeline handlers to support Android.\n>>>\n>>\n>> I had it in my head that these draft controls were going to be\n>> namespaced such that it was accessible through:\n>>\n>> switch(props.get(properties::draft::AvailableNoiseReductionModes) {\n>> \tcase properties::draft::NOISE_REDUCTION_MODE_OFF:\n>> \tcase properties::draft::NOISE_REDUCTION_MODE_FAST:\n>> \t\t// We don't do noise reduction\n>> \t\tbreak;\n>> \tcase properties::draft::NOISE_REDUCTION_MODE_HIGH_QUALITY:\n>> DRAFT_NOISE_REDUCTION_MODE_MINIMAL\n>> }\n>>\n>> And that inserting (or removing) a control to/from that draft namespace\n>> would be about setting a property on the control definition like:\n>>\n>> +  - AvailableNoiseReductionModes:\n>> +      draft: true\n>> +      type: int32_t\n>> +      size: [n]\n>> +      description: |\n>>\n>> Or of course it could be:\n>> \tstatus: draft\n>> or\n>> \tstatus: staging\n>>\n>> But that's all bikeshed colours.\n>>\n>>\n>> Is the reason you've used a prefix (on every value) because that's the\n>> way you want it? or because you haven't looked at updating the control\n>> generation scripts to support the 'draft' property?\n>>\n>> If it's the latter, I'll tackle that now for you.\n>> (I'm going to have a quick go to see how hard it would be to implement).\n>>\n> \n> I don't think it's worth as I suspect very few draft controls will be made\n> libcamera controls by just dropping 'draft' from their name.\n\nWell - 'just dropping the DRAFT_' wasn't quite the point ;-) The name\ncan always be changed at the same time as updating the draft status (or\nit could be done in two stages as well, I don't care).\n\nThe point of the namespacing in my head was to kind of group, and\nclearly mark the controls by nature of their usage.\n\nThe namespace really highlights that it's a 'property' of the name, and\nnot a part of the name.\n\n(I'm getting extreme to try to highlight my angle of course)\n\n 'DRAFT_EXCLUDE_RANGE'\n\nThe 'draft exclude' there could be interpreted as a single term (a draft\nexcluder).\n\nWhereas:\n\n DRAFT::EXCLUDE_RANGE\n\nClearly defines the difference/separation ;-0\n\n--\nKieran\n\n\n> There are Android defined controls, plain and simple. For each of them\n> there will be corresponding libcamera control.\n> \n> Instrumenting the control generation script for this purpose seems a\n> bit an unjustified effort.\n> \n>>\n>>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>>> ---\n>>>  src/libcamera/property_ids.yaml | 70 +++++++++++++++++++++++++++++++++\n>>>  1 file changed, 70 insertions(+)\n>>>\n>>> diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml\n>>> index 74ad0195d631..62bed9f3844d 100644\n>>> --- a/src/libcamera/property_ids.yaml\n>>> +++ b/src/libcamera/property_ids.yaml\n>>> @@ -640,4 +640,74 @@ controls:\n>>>          \\todo Rename this property to ActiveAreas once we will have property\n>>>                categories (i.e. Properties::PixelArray::ActiveAreas)\n>>>\n>>> +  - DraftAvailableNoiseReductionModes:\n>>> +      type: int32_t\n>>> +      size: [n]\n>>> +      description: |\n>>> +        Draft property to report the list of supported noise reduction modes.\n>>> +        Currently identical to\n>>> +        ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES.\n>>> +      enum:\n>>> +        - name: DRAFT_NOISE_REDUCTION_MODE_OFF\n>>> +          value: 0\n>>> +          description: No noise reduction is applied\n>>> +        - name: DRAFT_NOISE_REDUCTION_MODE_FAST\n>>> +          value: 1\n>>> +          description: |\n>>> +            Noise reduction is applied without reducing the frame rate.\n>>> +        - name: DRAFT_NOISE_REDUCTION_MODE_HIGH_QUALITY\n>>> +          value: 2\n>>> +          description: |\n>>> +            High quality noise reduction at the expense of frame rate.\n>>> +        - name: DRAFT_NOISE_REDUCTION_MODE_MINIMAL\n>>> +          value: 3\n>>> +          description: |\n>>> +            Minimal noise reduction is applied without reducing the frame rate.\n>>> +        - name: DRAFT_NOISE_REDUCTION_MODE_ZSL\n>>> +          value: 4\n>>> +          description: |\n>>> +            Noise reduction is applied at different levels to different streams.\n>>\n>> This implies that different streams can process noise reduction\n>> separately? but it's confusing because it's referencing ZeroShutterLag?\n>> So - I don't (yet) understand how that corresponds to the noise\n>> reduction. Maybe something for me to learn soon.\n> \n> Not sure. Just imported those values from the Android metadata\n> description.\n\nIndeed, I think for now - it's not something I'm worried about.\n\n> \n>>\n>> Anyway, especially as these are 'DRAFT/::draft::' whatever - I don't\n>> think we need to dwell 'too' much on the detail, as the point of being a\n>> draft is to allow the plumbing to progress, and fix the detail before\n>> moving out of draft status.\n>>\n>>\n>> The other point I'd like to discuss here, is that you have used\n>> DRAFT_ALL_CAPS_ENUM style for all the enums, which matches the\n>> annonymous enum in\n>> include/libcamera/property_ids.h\n>> enum {\n>>         LOCATION = 1,\n>>         ROTATION = 2,\n>>         MODEL = 3,\n>>         UNIT_CELL_SIZE = 4,\n>>         PIXEL_ARRAY_SIZE = 5,\n>>         PIXEL_ARRAY_OPTICAL_BLACK_RECTANGLES = 6,\n>>         PIXEL_ARRAY_ACTIVE_AREAS = 7,\n>> };\n>>\n> \n> These are controls/properties identifiers\n\nAha - I see - those are the actual enum values that get assigned to the\nproperties! I see now ;-)\n\n> \n>>\n>> but differs to the LocationValues enum:\n>> enum LocationValues {\n>>         CameraLocationFront = 0,\n>>         CameraLocationBack = 1,\n>>         CameraLocationExternal = 2,\n>> };\n>>\n>> My personal preference would be to follow the LocationValues style, as\n>> it feels more C++/libcamery ;-)\n>>\n>> But - it's just an open question for the moment.\n> \n> Again, just because Android named them in this way and staying\n> consistent with their definition has value to me.\n> \n\nI think we need to be consistent in the way we style these properties in\nour namespace though ...\n\n\n>>> +  - DraftAvailableColorCorrectionAberrationModes:\n>>> +      type: int32_t\n>>> +      size: [n]\n>>> +      description: |\n>>> +        Draft property to report the list of supported color correction\n>>> +        aberration modes. Currently identical to\n>>> +        ANDROID_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.\n>>> +      enum:\n>>> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_OFF\n>>> +          value: 0\n>>> +          description: No aberration correction is applied.\n>>> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_FAST\n>>> +          value: 1\n>>> +          description: Aberration correction will not slow down the frame rate.\n>>> +        - name: DRAFT_COLOR_CORRECTION_ABERRATION_HIGH_QUALITY\n>>> +          value: 2\n>>> +          description: |\n>>> +            High quality aberration correction which might reduce the frame\n>>> +            rate.\n>>> +\n>>> +  - DraftAvailableLensShadingMapModes:\n>>> +      type: int32_t\n>>> +      size: [n]\n>>> +      description: |\n>>> +        Draft property to report the list of supported lens shading map modes.\n>>> +        Currently identical to\n>>> +        ANDROID_STATISTICS_INFO_AVAILABLE_LENS_SHADING_MAP_MODES.\n>>> +      enum:\n>>> +        - name: DRAFT_LENS_SHADING_MAP_MODE_OFF\n>>> +          value: 0\n>>> +          description: No lens shading map mode is available.\n>>> +        - name: DRAFT_LENS_SHADING_MAP_MODE_ON\n>>> +          value: 1\n>>> +          description: The lens shading map mode is available.\n>>> +\n>>> +  - DraftPipelineMaxDepth:\n>>> +      type: int32_t\n>>> +      description: |\n>>> +        Draft control to report the maximum number of pipeline stages a frame\n>>> +        has to go through from when it is exposed to when it is available to\n>>> +        applications. Currently identical to ANDROID_REQUEST_PIPELINE_MAX_DEPTH.\n>>> +\n>>>  ...\n>>>\n>>\n>> --\n>> Regards\n>> --\n>> Kieran","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 6F5C7BEEDF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Oct 2020 15:11:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EE400607C7;\n\tWed,  7 Oct 2020 17:11:31 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 102BC605BB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Oct 2020 17:11:31 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6D7F89DA;\n\tWed,  7 Oct 2020 17:11:30 +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=\"pDeHTAyB\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1602083490;\n\tbh=OePpeX0OmLAJXeb5CTuam8mosLZCX0gW7EDGOIZD8jE=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=pDeHTAyBx3XpJh2WDk/8AcHKpHnIEz+ITY+WdV5PFpPha++DGTTNoKHyIJvDI2IfZ\n\tY45BONV1NA4XxZ1iWYsXnO/riU+uEMtP6ki449Aq8OQYTnfAPbVcmKE3aBQxbLbboe\n\tVjBvoJfr0NRd9Bl8zrhabf/qZPVBOmcC1om9s4tM=","To":"Jacopo Mondi <jacopo@jmondi.org>","References":"<20200911162039.61933-1-jacopo@jmondi.org>\n\t<20200911162039.61933-3-jacopo@jmondi.org>\n\t<bd2eb82c-39cc-b376-83ec-9c681ff67159@ideasonboard.com>\n\t<20201007144039.nvotnn5ehdt7ly62@uno.localdomain>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<f2853f7a-3723-ee3c-f499-e3bebd5dd6e2@ideasonboard.com>","Date":"Wed, 7 Oct 2020 16:11:27 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20201007144039.nvotnn5ehdt7ly62@uno.localdomain>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [RFC 2/6] libcamera: property_ids: Define\n\tdraft properties","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>","Reply-To":"kieran.bingham@ideasonboard.com","Cc":"hanlinchen@chromium.org, 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>"}}]