[{"id":11943,"web_url":"https://patchwork.libcamera.org/comment/11943/","msgid":"<20200808103209.GE3387836@oden.dyn.berto.se>","date":"2020-08-08T10:32:09","subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","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-08-08 12:00:46 +0200, Jacopo Mondi wrote:\n> Libcamera is in the process of defining its own set of controls and\n> properties, to advertise the camera capabilities, allow applications to\n> control the image capture process and return information on the captured\n> frames.\n> \n> However, we're still not there yet to have all the controls we need to\n> support the Android Camera3 HAL requisites.\n\nI would drop this paragraph.\n\n> \n> To temporary close the gap, and support all controls required in the\n> LIMITED hw level, define a set of Draft controls whose values are taken\n> from their Android definition, in order to allow pipeline handlers to\n> support Android natively.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/libcamera/control_ids.yaml | 242 +++++++++++++++++++++++++++++++++\n>  1 file changed, 242 insertions(+)\n> \n> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> index 4c415545dcae..cdd51911c400 100644\n> --- a/src/libcamera/control_ids.yaml\n> +++ b/src/libcamera/control_ids.yaml\n> @@ -284,4 +284,246 @@ controls:\n>          order in an array of 9 floating point values.\n>  \n>        size: [3x3]\n> +\n> +  - DraftAePrecaptureTrigger:\n> +      type: int32_t\n> +      description: |\n> +        Draft control for AE metering trigger. Currently identical to\n> +        ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER.\n> +\n> +        Whether the camera device will trigger a precapture metering sequence\n> +        when it processes this request.\n> +      enum:\n\nnit: My OCD is tingling, sometimes you have a new line between \ndescription and enum, and sometimes you don't ;-)\n\n> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_IDLE\n> +          value: 0\n> +          description: The trigger is idle.\n> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_START\n> +          value: 1\n> +          description: The pre-capture AE metering is started by the camera.\n> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_CANCEL\n> +          value: 2\n> +          description: |\n> +            The camera will cancel any active or completed metering sequence.\n> +            The AE algorithm is reset to its initial state.\n> +\n> +  - DraftAfTrigger:\n> +      type: int32_t\n> +      description: |\n> +        Draft control for AF trigger. Currently identical to\n> +        ANDROID_CONTROL_AF_TRIGGER.\n> +\n> +        Whether the camera device will trigger autofocus for this request.\n> +\n> +      enum:\n> +        - name: DRAFT_AF_TRIGGER_IDLE\n> +          value: 0\n> +          description: The trigger is idle.\n> +        - name: DRAFT_AF_TRIGGER_START\n> +          value: 1\n> +          description: The AF routine is started by the camera.\n> +        - name: DRAFT_AF_TRIGGER_CANCEL\n> +          value: 2\n> +          description: |\n> +            The camera will cancel any active trigger and the AF routine is\n> +            reset to its initial state.\n> +\n> +  - DraftNoiseReductionMode:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to select the noise reduction algorithm mode. Currently\n> +        identical to ANDROID_NOISE_REDUCTION_MODE.\n> +\n> +        Mode of operation for the noise reduction algorithm.\n> +\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> +  - DraftColorCorrectionAberrationMode:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to select the color correction aberration mode. Currently\n> +        identical to ANDROID_COLOR_CORRECTION_ABERRATION_MODE.\n> +\n> +        Mode of operation for the chromatic aberration correction algorithm.\n> +\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> +  - DraftAeState:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report the current AE algorithm state. Currently\n> +        identical to ANDROID_CONTROL_AE_STATE.\n> +\n> +        Current state of the AE algorithm.\n> +\n> +      enum:\n> +        - name: DRAFT_AE_STATE_INACTIVE\n> +          value: 0\n> +          description: The AE algorithm is inactive.\n> +        - name: DRAFT_AE_STATE_SEARCHING\n> +          value: 1\n> +          description: The AE algorithm has not converged yet.\n> +        - name: DRAFT_AE_STATE_CONVERGED\n> +          value: 2\n> +          description: The AE algorithm has converged.\n> +        - name: DRAFT_AE_STATE_LOCKED\n> +          value: 3\n> +          description: The AE algorithm is locked.\n> +        - name: DRAFT_AE_STATE_FLASH_REQUIRED\n> +          value: 4\n> +          description: The AE algorithm would need a flash for good results\n> +        - name: DRAFT_AE_STATE_PRECAPTURE\n> +          value: 5\n> +          description: |\n> +            The AE algorithm has started a pre-capture metering session.\n> +            \\sa DraftAePrecaptureTrigger\n> +\n> +  - DraftAfState:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report the current AF algorithm state. Currently\n> +        identical to ANDROID_CONTROL_AF_STATE.\n> +\n> +        Current state of the AF algorithm.\n> +      enum:\n> +        - name: DRAFT_AF_STATE_INACTIVE\n> +          value: 0\n> +          description: The AF algorithm is inactive.\n> +        - name: DRAFT_AF_STATE_PASSIVE_SCAN\n> +          value: 1\n> +          description: |\n> +            AF is performing a passive scan of the scene in continuous\n> +            auto-focus mode.\n> +        - name: DRAFT_AF_STATE_PASSIVE_FOCUSED\n> +          value: 2\n> +          description: |\n> +            AF believes the scene is in focus, but might restart scanning.\n> +        - name: DRAFT_AF_STATE_ACTIVE_SCAN\n> +          value: 3\n> +          description: |\n> +            AF is performing a scan triggered by an AF trigger request.\n> +            \\sa DraftAfTrigger\n> +        - name: DRAFT_AF_STATE_FOCUSED_LOCK\n> +          value: 4\n> +          description: |\n> +            AF believes has focused correctly and has locked focus.\n> +        - name: DRAFT_AF_STATE_NOT_FOCUSED_LOCK\n> +          value: 5\n> +          description: |\n> +            AF has not been able to focus and has locked.\n> +        - name: DRAFT_AF_STATE_PASSIVE_UNFOCUSED\n> +          value: 6\n> +          description: |\n> +            AF has completed a passive scan without finding focus.\n> +\n> +  - DraftAwbState:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report the current AWB algorithm state. Currently\n> +        identical to ANDROID_CONTROL_AWB_STATE.\n> +\n> +        Current state of the AWB algorithm.\n> +      enum:\n> +        - name: DRAFT_AWB_STATE_INACTIVE\n> +          value: 0\n> +          description: The AWB algorithm is inactive.\n> +        - name: DRAFT_AWB_STATE_SEARCHING\n> +          value: 1\n> +          description: The AWB algorithm has not converged yet.\n> +        - name: DRAFT_AWB_CONVERGED\n> +          value: 2\n> +          description: The AWB algorithm has converged.\n> +        - name: DRAFT_AWB_LOCKED\n> +          value: 3\n> +          description: The AWB algorithm is locked.\n> +\n> +  - DraftScalerCropRegion:\n> +      type: Rectangle\n> +      description: |\n> +        Draft control to report the region of the sensor that has been read-out.\n> +        Currently identical to ANDROID_SCALER_CROP_REGION.\n> +\n> +        The area of the sensor that has been read out, defined relatively to\n> +        the active pixel array size.\n> +\n> +        \\sa Properties::PixelArrayActiveAreas\n> +        \\todo This will soon be required to implement digital zoom\n\nDoes the \\sa and \\todo really belong here or are they left over \ndevelopment notes?\n\n> +\n> +  - DraftSensorTimestamp:\n> +      type: int64_t\n> +      description: |\n> +        Draft control to report the start of exposure of the first row of the\n> +        captured image. Currently identical to ANDROID_SENSOR_TIMESTAMP.\n\nCould we replace the FrameMetadata::timestamp with this control on the \nrequest? This definition is really nice and it would move the timestamp \nfrom buffer to Request which is something we have been thinking about \nfor some time already.\n\n> +\n> +  - DraftSensorRollingShutterSkew:\n> +      type: int64_t\n> +      description: |\n> +        Draft control to report the time between the start of exposure of the\n> +        first row and the start of exposure of the last row. Currently\n> +        identical to ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n> +\n> +  - DraftLensShadingMapMode:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report if the lens shading map is available. Currently\n> +        identical to ANDROID_STATISTICS_LENS_SHADING_MAP_MODE.\n> +\n> +        \\todo Once we define a control to report the lens shading map, we can\n> +        deduce if it is available or not. Currently this will always be set to\n> +        OFF.\n\nSame here, is this todo something we wish to record?\n\nOver all I'm happy to see this patch as it will allow us to move forward \nat a much quicker phase using these draft controls, nice work.\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\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> +\n> +  - DraftSceneFlicker:\n> +      type: int32_t\n> +      description: |\n> +        Draft control to report the detected scene light frequency. Currently\n> +        identical to ANDROID_STATISTICS_SCENE_FLICKER.\n> +\n> +      enum:\n> +        - name: DRAFT_SCENE_FLICKER_OFF\n> +          value: 0\n> +          description: No flickering detected.\n> +        - name: DRAFT_SCENE_FLICKER_50HZ\n> +          value: 0\n> +          description: 50Hz flickering detected.\n> +        - name: DRAFT_SCENE_FLICKER_60HZ\n> +          value: 0\n> +          description: 50Hz flickering detected.\n> +\n>  ...\n> -- \n> 2.27.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 EA5E4BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat,  8 Aug 2020 10:32:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 792F460DDE;\n\tSat,  8 Aug 2020 12:32:14 +0200 (CEST)","from mail-lj1-x242.google.com (mail-lj1-x242.google.com\n\t[IPv6:2a00:1450:4864:20::242])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C555B6038E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat,  8 Aug 2020 12:32:12 +0200 (CEST)","by mail-lj1-x242.google.com with SMTP id m22so4674804ljj.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 08 Aug 2020 03:32:12 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tn29sm5939626lfi.9.2020.08.08.03.32.10\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSat, 08 Aug 2020 03:32:11 -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=\"zfiSyJLE\"; 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=OICCBnsGyY5wpW9Sed329DLocM+GWyLwUXexkpyjWhY=;\n\tb=zfiSyJLEJpQ8ofQ5q8lreui002E1vm4wPM3lI5uhza4+A5FuTGXIr7duQ7OcRcyEyM\n\ta+SLDldZJ3ofYv2B2GQu+PL/+YbJO+FSKhsyDpJ0LdZoxavfcOwWs7BRr5NeSrIbTpS8\n\tJzY3BJEIc/QILQo2fZDzZzGgc4PgJp83pNEAAP/IK7+ZD71EvoxseOC9YTmJjm9IIYod\n\thSvxnAigkFkgm36PM9xwCoXNGPjCdjDmGiRV4I5C+TzbPypq3jezv14jD0aTVKu7Lm5C\n\tHnY9k4P4KRoB28R2T0+WtHULVk0HYdh/x57gZuXJwLSWpVpeMK4xks1M8kE1PHVi1ct+\n\tu9tg==","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=OICCBnsGyY5wpW9Sed329DLocM+GWyLwUXexkpyjWhY=;\n\tb=QiPsyS0JdmSBUt+1mwZReEiTlrkC6g1l1lRzyiWhDaLeEuXiRgVNpfwz9d/0LbizuW\n\tAZ0JJH6/wwgJowwU46/sqLiSm3ldsSzG80grT6xmLQJr3TYF9g0l1ox+60fEe1PS0+Mt\n\tgxS7KH2IHutX+E7A+8ai/qUaOM1OiiYI31eYpnGJGqlKZVjHGFaO1IhFWZzaU6Q3ItlK\n\t2QPEV+fOPtys/SuggHhZMd5xXUvUTWyfXIflmroXqMkED+w3EUkd20mYcxT5GKGtobnG\n\tfzkUeRgK6mMsyxh+/38BVxngALZBpDaWWWmY81L1i0sNmTHgkJsSuMqNdI/ZN+kBRuSB\n\thmFA==","X-Gm-Message-State":"AOAM530osUPGJvF+oeBlAlDdsQQh8CEiv3+EUFlULmqhPBTSX/cXd+8G\n\tBbk0mjx12Wsl4P3tJo/EpbnjDgcwuzg=","X-Google-Smtp-Source":"ABdhPJwpB/1uao2v87PYmEmdJd1NupckA4Q8v320YLoWN2GGRP1u19ry7PmEY1utwQF5shP+k+/EYA==","X-Received":"by 2002:a2e:80c9:: with SMTP id r9mr7487072ljg.95.1596882731788; \n\tSat, 08 Aug 2020 03:32:11 -0700 (PDT)","Date":"Sat, 8 Aug 2020 12:32:09 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200808103209.GE3387836@oden.dyn.berto.se>","References":"<20200808100046.5347-1-jacopo@jmondi.org>\n\t<20200808100046.5347-3-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200808100046.5347-3-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","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":11960,"web_url":"https://patchwork.libcamera.org/comment/11960/","msgid":"<20200810072315.ctq7qxwhpfswokvm@uno.localdomain>","date":"2020-08-10T07:23:15","subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Niklas,\n\nOn Sat, Aug 08, 2020 at 12:32:09PM +0200, Niklas Söderlund wrote:\n> Hi Jacopo,\n>\n> Thanks for your work.\n>\n> On 2020-08-08 12:00:46 +0200, Jacopo Mondi wrote:\n> > Libcamera is in the process of defining its own set of controls and\n> > properties, to advertise the camera capabilities, allow applications to\n> > control the image capture process and return information on the captured\n> > frames.\n> >\n> > However, we're still not there yet to have all the controls we need to\n> > support the Android Camera3 HAL requisites.\n>\n> I would drop this paragraph.\n>\n> >\n> > To temporary close the gap, and support all controls required in the\n> > LIMITED hw level, define a set of Draft controls whose values are taken\n> > from their Android definition, in order to allow pipeline handlers to\n> > support Android natively.\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/libcamera/control_ids.yaml | 242 +++++++++++++++++++++++++++++++++\n> >  1 file changed, 242 insertions(+)\n> >\n> > diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> > index 4c415545dcae..cdd51911c400 100644\n> > --- a/src/libcamera/control_ids.yaml\n> > +++ b/src/libcamera/control_ids.yaml\n> > @@ -284,4 +284,246 @@ controls:\n> >          order in an array of 9 floating point values.\n> >\n> >        size: [3x3]\n> > +\n> > +  - DraftAePrecaptureTrigger:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control for AE metering trigger. Currently identical to\n> > +        ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER.\n> > +\n> > +        Whether the camera device will trigger a precapture metering sequence\n> > +        when it processes this request.\n> > +      enum:\n>\n> nit: My OCD is tingling, sometimes you have a new line between\n> description and enum, and sometimes you don't ;-)\n>\n\nOuch, not a nit indeed. Sorry, I started placing and empy line\nrandomly to \"see how it looks like\" then I forgot and didn't notice\nwhen I generated patches. I think I like the empy line though :)\n\n> > +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_IDLE\n> > +          value: 0\n> > +          description: The trigger is idle.\n> > +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_START\n> > +          value: 1\n> > +          description: The pre-capture AE metering is started by the camera.\n> > +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_CANCEL\n> > +          value: 2\n> > +          description: |\n> > +            The camera will cancel any active or completed metering sequence.\n> > +            The AE algorithm is reset to its initial state.\n> > +\n> > +  - DraftAfTrigger:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control for AF trigger. Currently identical to\n> > +        ANDROID_CONTROL_AF_TRIGGER.\n> > +\n> > +        Whether the camera device will trigger autofocus for this request.\n> > +\n> > +      enum:\n> > +        - name: DRAFT_AF_TRIGGER_IDLE\n> > +          value: 0\n> > +          description: The trigger is idle.\n> > +        - name: DRAFT_AF_TRIGGER_START\n> > +          value: 1\n> > +          description: The AF routine is started by the camera.\n> > +        - name: DRAFT_AF_TRIGGER_CANCEL\n> > +          value: 2\n> > +          description: |\n> > +            The camera will cancel any active trigger and the AF routine is\n> > +            reset to its initial state.\n> > +\n> > +  - DraftNoiseReductionMode:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to select the noise reduction algorithm mode. Currently\n> > +        identical to ANDROID_NOISE_REDUCTION_MODE.\n> > +\n> > +        Mode of operation for the noise reduction algorithm.\n> > +\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> > +  - DraftColorCorrectionAberrationMode:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to select the color correction aberration mode. Currently\n> > +        identical to ANDROID_COLOR_CORRECTION_ABERRATION_MODE.\n> > +\n> > +        Mode of operation for the chromatic aberration correction algorithm.\n> > +\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> > +  - DraftAeState:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to report the current AE algorithm state. Currently\n> > +        identical to ANDROID_CONTROL_AE_STATE.\n> > +\n> > +        Current state of the AE algorithm.\n> > +\n> > +      enum:\n> > +        - name: DRAFT_AE_STATE_INACTIVE\n> > +          value: 0\n> > +          description: The AE algorithm is inactive.\n> > +        - name: DRAFT_AE_STATE_SEARCHING\n> > +          value: 1\n> > +          description: The AE algorithm has not converged yet.\n> > +        - name: DRAFT_AE_STATE_CONVERGED\n> > +          value: 2\n> > +          description: The AE algorithm has converged.\n> > +        - name: DRAFT_AE_STATE_LOCKED\n> > +          value: 3\n> > +          description: The AE algorithm is locked.\n> > +        - name: DRAFT_AE_STATE_FLASH_REQUIRED\n> > +          value: 4\n> > +          description: The AE algorithm would need a flash for good results\n> > +        - name: DRAFT_AE_STATE_PRECAPTURE\n> > +          value: 5\n> > +          description: |\n> > +            The AE algorithm has started a pre-capture metering session.\n> > +            \\sa DraftAePrecaptureTrigger\n> > +\n> > +  - DraftAfState:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to report the current AF algorithm state. Currently\n> > +        identical to ANDROID_CONTROL_AF_STATE.\n> > +\n> > +        Current state of the AF algorithm.\n> > +      enum:\n> > +        - name: DRAFT_AF_STATE_INACTIVE\n> > +          value: 0\n> > +          description: The AF algorithm is inactive.\n> > +        - name: DRAFT_AF_STATE_PASSIVE_SCAN\n> > +          value: 1\n> > +          description: |\n> > +            AF is performing a passive scan of the scene in continuous\n> > +            auto-focus mode.\n> > +        - name: DRAFT_AF_STATE_PASSIVE_FOCUSED\n> > +          value: 2\n> > +          description: |\n> > +            AF believes the scene is in focus, but might restart scanning.\n> > +        - name: DRAFT_AF_STATE_ACTIVE_SCAN\n> > +          value: 3\n> > +          description: |\n> > +            AF is performing a scan triggered by an AF trigger request.\n> > +            \\sa DraftAfTrigger\n> > +        - name: DRAFT_AF_STATE_FOCUSED_LOCK\n> > +          value: 4\n> > +          description: |\n> > +            AF believes has focused correctly and has locked focus.\n> > +        - name: DRAFT_AF_STATE_NOT_FOCUSED_LOCK\n> > +          value: 5\n> > +          description: |\n> > +            AF has not been able to focus and has locked.\n> > +        - name: DRAFT_AF_STATE_PASSIVE_UNFOCUSED\n> > +          value: 6\n> > +          description: |\n> > +            AF has completed a passive scan without finding focus.\n> > +\n> > +  - DraftAwbState:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to report the current AWB algorithm state. Currently\n> > +        identical to ANDROID_CONTROL_AWB_STATE.\n> > +\n> > +        Current state of the AWB algorithm.\n> > +      enum:\n> > +        - name: DRAFT_AWB_STATE_INACTIVE\n> > +          value: 0\n> > +          description: The AWB algorithm is inactive.\n> > +        - name: DRAFT_AWB_STATE_SEARCHING\n> > +          value: 1\n> > +          description: The AWB algorithm has not converged yet.\n> > +        - name: DRAFT_AWB_CONVERGED\n> > +          value: 2\n> > +          description: The AWB algorithm has converged.\n> > +        - name: DRAFT_AWB_LOCKED\n> > +          value: 3\n> > +          description: The AWB algorithm is locked.\n> > +\n> > +  - DraftScalerCropRegion:\n> > +      type: Rectangle\n> > +      description: |\n> > +        Draft control to report the region of the sensor that has been read-out.\n> > +        Currently identical to ANDROID_SCALER_CROP_REGION.\n> > +\n> > +        The area of the sensor that has been read out, defined relatively to\n> > +        the active pixel array size.\n> > +\n> > +        \\sa Properties::PixelArrayActiveAreas\n> > +        \\todo This will soon be required to implement digital zoom\n>\n> Does the \\sa and \\todo really belong here or are they left over\n> development notes?\n>\n\nBeing draft controls, I think it's very much relevant to take notes\nwhat's their purpose and the connections with the existing ones.\nThose are meant to be here indeed. Don't you agree ?\n\n> > +\n> > +  - DraftSensorTimestamp:\n> > +      type: int64_t\n> > +      description: |\n> > +        Draft control to report the start of exposure of the first row of the\n> > +        captured image. Currently identical to ANDROID_SENSOR_TIMESTAMP.\n>\n> Could we replace the FrameMetadata::timestamp with this control on the\n> request? This definition is really nice and it would move the timestamp\n> from buffer to Request which is something we have been thinking about\n> for some time already.\n>\n\nThe right process to me would be to define a libcamera control (named\nSensorTimestamp or similar) and use it then drop the draft one. The\ncontrol value would then be filled in with the\nFrameMetadatata::timestamp value (I know nothing about that part, I\ntrust your judgment there) and the value of the libcamera control used\nto fill the Android one in the Camera HAL.\n\nShould we add a todo note ?\n\n> > +\n> > +  - DraftSensorRollingShutterSkew:\n> > +      type: int64_t\n> > +      description: |\n> > +        Draft control to report the time between the start of exposure of the\n> > +        first row and the start of exposure of the last row. Currently\n> > +        identical to ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n> > +\n> > +  - DraftLensShadingMapMode:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to report if the lens shading map is available. Currently\n> > +        identical to ANDROID_STATISTICS_LENS_SHADING_MAP_MODE.\n> > +\n> > +        \\todo Once we define a control to report the lens shading map, we can\n> > +        deduce if it is available or not. Currently this will always be set to\n> > +        OFF.\n>\n> Same here, is this todo something we wish to record?\n\nIntentional indeed. I don't mind to have notes on draft controls, but\nwe can keep them out if necessary.\n\n>\n> Over all I'm happy to see this patch as it will allow us to move forward\n> at a much quicker phase using these draft controls, nice work.\n>\n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\nThanks\n  j\n\n>\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> > +\n> > +  - DraftSceneFlicker:\n> > +      type: int32_t\n> > +      description: |\n> > +        Draft control to report the detected scene light frequency. Currently\n> > +        identical to ANDROID_STATISTICS_SCENE_FLICKER.\n> > +\n> > +      enum:\n> > +        - name: DRAFT_SCENE_FLICKER_OFF\n> > +          value: 0\n> > +          description: No flickering detected.\n> > +        - name: DRAFT_SCENE_FLICKER_50HZ\n> > +          value: 0\n> > +          description: 50Hz flickering detected.\n> > +        - name: DRAFT_SCENE_FLICKER_60HZ\n> > +          value: 0\n> > +          description: 50Hz flickering detected.\n> > +\n> >  ...\n> > --\n> > 2.27.0\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel\n>\n> --\n> Regards,\n> Niklas Söderlund","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 102D4BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 10 Aug 2020 07:19:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8E4E960DCA;\n\tMon, 10 Aug 2020 09:19:36 +0200 (CEST)","from relay12.mail.gandi.net (relay12.mail.gandi.net\n\t[217.70.178.232])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4D5766055A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 10 Aug 2020 09:19:35 +0200 (CEST)","from uno.localdomain (host-82-52-18-94.retail.telecomitalia.it\n\t[82.52.18.94]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay12.mail.gandi.net (Postfix) with ESMTPSA id 0CEA7200011;\n\tMon, 10 Aug 2020 07:19:33 +0000 (UTC)"],"Date":"Mon, 10 Aug 2020 09:23:15 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200810072315.ctq7qxwhpfswokvm@uno.localdomain>","References":"<20200808100046.5347-1-jacopo@jmondi.org>\n\t<20200808100046.5347-3-jacopo@jmondi.org>\n\t<20200808103209.GE3387836@oden.dyn.berto.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200808103209.GE3387836@oden.dyn.berto.se>","Subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","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=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12273,"web_url":"https://patchwork.libcamera.org/comment/12273/","msgid":"<4f07d3cd-2cd6-6217-82eb-797588e308ab@ideasonboard.com>","date":"2020-09-03T10:04:24","subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 08/08/2020 11:32, Niklas Söderlund wrote:\n> Hi Jacopo,\n> \n> Thanks for your work.\n> \n> On 2020-08-08 12:00:46 +0200, Jacopo Mondi wrote:\n>> Libcamera is in the process of defining its own set of controls and\n>> properties, to advertise the camera capabilities, allow applications to\n>> control the image capture process and return information on the captured\n>> frames.\n>>\n>> However, we're still not there yet to have all the controls we need to\n>> support the Android Camera3 HAL requisites.\n> \n> I would drop this paragraph.\n> \n>>\n>> To temporary close the gap, and support all controls required in the\n>> LIMITED hw level, define a set of Draft controls whose values are taken\n>> from their Android definition, in order to allow pipeline handlers to\n>> support Android natively.\n>>\n>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>> ---\n>>  src/libcamera/control_ids.yaml | 242 +++++++++++++++++++++++++++++++++\n>>  1 file changed, 242 insertions(+)\n>>\n>> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n>> index 4c415545dcae..cdd51911c400 100644\n>> --- a/src/libcamera/control_ids.yaml\n>> +++ b/src/libcamera/control_ids.yaml\n>> @@ -284,4 +284,246 @@ controls:\n>>          order in an array of 9 floating point values.\n>>  \n>>        size: [3x3]\n>> +\n>> +  - DraftAePrecaptureTrigger:\n\nI thought I recalled that we would have a property on the control that\nstated it was a staging control. Wouldn't that be better/less invasive\nthan having to rename all the controls?\n\nOr is the point that the controls have to be renamed to highlight them\nthrough breakage when they are 'formalised' ?\n\nOr have them in a separate sub-namespace?\n\nWith a\n\tstate: staging\n\nor\n\tstate: draft\n\nproperty on the controls, we can have the generation script put them\ninto a sub-namespace ?\n\t\n\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control for AE metering trigger. Currently identical to\n>> +        ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER.\n>> +\n>> +        Whether the camera device will trigger a precapture metering sequence\n>> +        when it processes this request.\n>> +      enum:\n> \n> nit: My OCD is tingling, sometimes you have a new line between \n> description and enum, and sometimes you don't ;-)\n> \n>> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_IDLE\n>> +          value: 0\n>> +          description: The trigger is idle.\n>> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_START\n>> +          value: 1\n>> +          description: The pre-capture AE metering is started by the camera.\n>> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_CANCEL\n>> +          value: 2\n>> +          description: |\n>> +            The camera will cancel any active or completed metering sequence.\n>> +            The AE algorithm is reset to its initial state.\n>> +\n>> +  - DraftAfTrigger:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control for AF trigger. Currently identical to\n>> +        ANDROID_CONTROL_AF_TRIGGER.\n>> +\n>> +        Whether the camera device will trigger autofocus for this request.\n>> +\n>> +      enum:\n>> +        - name: DRAFT_AF_TRIGGER_IDLE\n>> +          value: 0\n>> +          description: The trigger is idle.\n>> +        - name: DRAFT_AF_TRIGGER_START\n>> +          value: 1\n>> +          description: The AF routine is started by the camera.\n>> +        - name: DRAFT_AF_TRIGGER_CANCEL\n>> +          value: 2\n>> +          description: |\n>> +            The camera will cancel any active trigger and the AF routine is\n>> +            reset to its initial state.\n>> +\n>> +  - DraftNoiseReductionMode:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to select the noise reduction algorithm mode. Currently\n>> +        identical to ANDROID_NOISE_REDUCTION_MODE.\n>> +\n>> +        Mode of operation for the noise reduction algorithm.\n>> +\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>> +  - DraftColorCorrectionAberrationMode:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to select the color correction aberration mode. Currently\n>> +        identical to ANDROID_COLOR_CORRECTION_ABERRATION_MODE.\n>> +\n>> +        Mode of operation for the chromatic aberration correction algorithm.\n>> +\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>> +  - DraftAeState:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to report the current AE algorithm state. Currently\n>> +        identical to ANDROID_CONTROL_AE_STATE.\n>> +\n>> +        Current state of the AE algorithm.\n>> +\n>> +      enum:\n>> +        - name: DRAFT_AE_STATE_INACTIVE\n>> +          value: 0\n>> +          description: The AE algorithm is inactive.\n>> +        - name: DRAFT_AE_STATE_SEARCHING\n>> +          value: 1\n>> +          description: The AE algorithm has not converged yet.\n>> +        - name: DRAFT_AE_STATE_CONVERGED\n>> +          value: 2\n>> +          description: The AE algorithm has converged.\n>> +        - name: DRAFT_AE_STATE_LOCKED\n>> +          value: 3\n>> +          description: The AE algorithm is locked.\n>> +        - name: DRAFT_AE_STATE_FLASH_REQUIRED\n>> +          value: 4\n>> +          description: The AE algorithm would need a flash for good results\n>> +        - name: DRAFT_AE_STATE_PRECAPTURE\n>> +          value: 5\n>> +          description: |\n>> +            The AE algorithm has started a pre-capture metering session.\n>> +            \\sa DraftAePrecaptureTrigger\n>> +\n>> +  - DraftAfState:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to report the current AF algorithm state. Currently\n>> +        identical to ANDROID_CONTROL_AF_STATE.\n>> +\n>> +        Current state of the AF algorithm.\n>> +      enum:\n>> +        - name: DRAFT_AF_STATE_INACTIVE\n>> +          value: 0\n>> +          description: The AF algorithm is inactive.\n>> +        - name: DRAFT_AF_STATE_PASSIVE_SCAN\n>> +          value: 1\n>> +          description: |\n>> +            AF is performing a passive scan of the scene in continuous\n>> +            auto-focus mode.\n>> +        - name: DRAFT_AF_STATE_PASSIVE_FOCUSED\n>> +          value: 2\n>> +          description: |\n>> +            AF believes the scene is in focus, but might restart scanning.\n>> +        - name: DRAFT_AF_STATE_ACTIVE_SCAN\n>> +          value: 3\n>> +          description: |\n>> +            AF is performing a scan triggered by an AF trigger request.\n>> +            \\sa DraftAfTrigger\n>> +        - name: DRAFT_AF_STATE_FOCUSED_LOCK\n>> +          value: 4\n>> +          description: |\n>> +            AF believes has focused correctly and has locked focus.\n>> +        - name: DRAFT_AF_STATE_NOT_FOCUSED_LOCK\n>> +          value: 5\n>> +          description: |\n>> +            AF has not been able to focus and has locked.\n>> +        - name: DRAFT_AF_STATE_PASSIVE_UNFOCUSED\n>> +          value: 6\n>> +          description: |\n>> +            AF has completed a passive scan without finding focus.\n>> +\n>> +  - DraftAwbState:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to report the current AWB algorithm state. Currently\n>> +        identical to ANDROID_CONTROL_AWB_STATE.\n>> +\n>> +        Current state of the AWB algorithm.\n>> +      enum:\n>> +        - name: DRAFT_AWB_STATE_INACTIVE\n>> +          value: 0\n>> +          description: The AWB algorithm is inactive.\n>> +        - name: DRAFT_AWB_STATE_SEARCHING\n>> +          value: 1\n>> +          description: The AWB algorithm has not converged yet.\n>> +        - name: DRAFT_AWB_CONVERGED\n>> +          value: 2\n>> +          description: The AWB algorithm has converged.\n>> +        - name: DRAFT_AWB_LOCKED\n>> +          value: 3\n>> +          description: The AWB algorithm is locked.\n>> +\n>> +  - DraftScalerCropRegion:\n>> +      type: Rectangle\n>> +      description: |\n>> +        Draft control to report the region of the sensor that has been read-out.\n>> +        Currently identical to ANDROID_SCALER_CROP_REGION.\n>> +\n>> +        The area of the sensor that has been read out, defined relatively to\n>> +        the active pixel array size.\n>> +\n>> +        \\sa Properties::PixelArrayActiveAreas\n>> +        \\todo This will soon be required to implement digital zoom\n> \n> Does the \\sa and \\todo really belong here or are they left over \n> development notes?\n> \n>> +\n>> +  - DraftSensorTimestamp:\n>> +      type: int64_t\n>> +      description: |\n>> +        Draft control to report the start of exposure of the first row of the\n>> +        captured image. Currently identical to ANDROID_SENSOR_TIMESTAMP.\n> \n> Could we replace the FrameMetadata::timestamp with this control on the \n> request? This definition is really nice and it would move the timestamp \n> from buffer to Request which is something we have been thinking about \n> for some time already.\n\nMoving the timestamp to the request does sound like it would be helpful\nindeed.\n\n> \n>> +\n>> +  - DraftSensorRollingShutterSkew:\n>> +      type: int64_t\n>> +      description: |\n>> +        Draft control to report the time between the start of exposure of the\n>> +        first row and the start of exposure of the last row. Currently\n>> +        identical to ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n>> +\n>> +  - DraftLensShadingMapMode:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to report if the lens shading map is available. Currently\n>> +        identical to ANDROID_STATISTICS_LENS_SHADING_MAP_MODE.\n>> +\n>> +        \\todo Once we define a control to report the lens shading map, we can\n>> +        deduce if it is available or not. Currently this will always be set to\n>> +        OFF.\n> \n> Same here, is this todo something we wish to record?\n> \n> Over all I'm happy to see this patch as it will allow us to move forward \n> at a much quicker phase using these draft controls, nice work.\n> \n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> \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>> +\n>> +  - DraftSceneFlicker:\n>> +      type: int32_t\n>> +      description: |\n>> +        Draft control to report the detected scene light frequency. Currently\n>> +        identical to ANDROID_STATISTICS_SCENE_FLICKER.\n>> +\n>> +      enum:\n>> +        - name: DRAFT_SCENE_FLICKER_OFF\n>> +          value: 0\n>> +          description: No flickering detected.\n>> +        - name: DRAFT_SCENE_FLICKER_50HZ\n>> +          value: 0\n>> +          description: 50Hz flickering detected.\n>> +        - name: DRAFT_SCENE_FLICKER_60HZ\n>> +          value: 0\n>> +          description: 50Hz flickering detected.\n>> +\n>>  ...\n>> -- \n>> 2.27.0\n>>\n>> _______________________________________________\n>> libcamera-devel mailing list\n>> libcamera-devel@lists.libcamera.org\n>> https://lists.libcamera.org/listinfo/libcamera-devel\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 3A2C0BE174\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Sep 2020 10:04:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B101E629B6;\n\tThu,  3 Sep 2020 12:04:29 +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 22DAF62901\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Sep 2020 12:04:28 +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 5382256E;\n\tThu,  3 Sep 2020 12:04:27 +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=\"SlhE2qGx\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1599127467;\n\tbh=LeM0hOc/GWS4SnejuVc1FAEgBXRjvo+MKCfzyS+gnuY=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=SlhE2qGxwyurh/NtBfScpwHSslw5zD0jZqT6qjwf/r3xKbRvlC7upMxENXnzvvsP5\n\t8HaEwjpLBVJr88DR+abFcFT4VyYD8guSE/Zirps9QuarinPNxhvP5OMcCHls1oeDRL\n\trCCFsX5WGZAERmkGO9con7AoIP2OqOcQBlURI5Zw=","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tJacopo Mondi <jacopo@jmondi.org>","References":"<20200808100046.5347-1-jacopo@jmondi.org>\n\t<20200808100046.5347-3-jacopo@jmondi.org>\n\t<20200808103209.GE3387836@oden.dyn.berto.se>","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":"<4f07d3cd-2cd6-6217-82eb-797588e308ab@ideasonboard.com>","Date":"Thu, 3 Sep 2020 11:04:24 +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":"<20200808103209.GE3387836@oden.dyn.berto.se>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","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":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12274,"web_url":"https://patchwork.libcamera.org/comment/12274/","msgid":"<20200903101949.iucfpfuptcmjbhf6@uno.localdomain>","date":"2020-09-03T10:19:49","subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Kieran,\n\nOn Thu, Sep 03, 2020 at 11:04:24AM +0100, Kieran Bingham wrote:\n> Hi Jacopo,\n>\n> On 08/08/2020 11:32, Niklas Söderlund wrote:\n> > Hi Jacopo,\n> >\n> > Thanks for your work.\n> >\n> > On 2020-08-08 12:00:46 +0200, Jacopo Mondi wrote:\n> >> Libcamera is in the process of defining its own set of controls and\n> >> properties, to advertise the camera capabilities, allow applications to\n> >> control the image capture process and return information on the captured\n> >> frames.\n> >>\n> >> However, we're still not there yet to have all the controls we need to\n> >> support the Android Camera3 HAL requisites.\n> >\n> > I would drop this paragraph.\n> >\n> >>\n> >> To temporary close the gap, and support all controls required in the\n> >> LIMITED hw level, define a set of Draft controls whose values are taken\n> >> from their Android definition, in order to allow pipeline handlers to\n> >> support Android natively.\n> >>\n> >> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> >> ---\n> >>  src/libcamera/control_ids.yaml | 242 +++++++++++++++++++++++++++++++++\n> >>  1 file changed, 242 insertions(+)\n> >>\n> >> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> >> index 4c415545dcae..cdd51911c400 100644\n> >> --- a/src/libcamera/control_ids.yaml\n> >> +++ b/src/libcamera/control_ids.yaml\n> >> @@ -284,4 +284,246 @@ controls:\n> >>          order in an array of 9 floating point values.\n> >>\n> >>        size: [3x3]\n> >> +\n> >> +  - DraftAePrecaptureTrigger:\n>\n> I thought I recalled that we would have a property on the control that\n> stated it was a staging control. Wouldn't that be better/less invasive\n> than having to rename all the controls?\n\nIt's not just renaming to drop the 'Draft' part that makes a control\na non-draft one.\n\nThe here proposed definitions point to the Android documentation, we\nmight end up expressing the control's semantic through one or more\ndifferent libcamera controls.\n\n>\n> Or is the point that the controls have to be renamed to highlight them\n> through breakage when they are 'formalised' ?\n>\n\nI suspect most of the controls here will be re-implemented in a\ndifferent fashion\n\n> Or have them in a separate sub-namespace?\n>\n> With a\n> \tstate: staging\n>\n> or\n> \tstate: draft\n>\n> property on the controls, we can have the generation script put them\n> into a sub-namespace ?\n\nI don't think it's worth the effort, give that in the long term we\nplan to get rid of these, not make them part of the standard controls\ndefinition.\n\n>\n>\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control for AE metering trigger. Currently identical to\n> >> +        ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER.\n> >> +\n> >> +        Whether the camera device will trigger a precapture metering sequence\n> >> +        when it processes this request.\n> >> +      enum:\n> >\n> > nit: My OCD is tingling, sometimes you have a new line between\n> > description and enum, and sometimes you don't ;-)\n> >\n> >> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_IDLE\n> >> +          value: 0\n> >> +          description: The trigger is idle.\n> >> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_START\n> >> +          value: 1\n> >> +          description: The pre-capture AE metering is started by the camera.\n> >> +        - name: DRAFT_AE_PRECAPTURE_TRIGGER_CANCEL\n> >> +          value: 2\n> >> +          description: |\n> >> +            The camera will cancel any active or completed metering sequence.\n> >> +            The AE algorithm is reset to its initial state.\n> >> +\n> >> +  - DraftAfTrigger:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control for AF trigger. Currently identical to\n> >> +        ANDROID_CONTROL_AF_TRIGGER.\n> >> +\n> >> +        Whether the camera device will trigger autofocus for this request.\n> >> +\n> >> +      enum:\n> >> +        - name: DRAFT_AF_TRIGGER_IDLE\n> >> +          value: 0\n> >> +          description: The trigger is idle.\n> >> +        - name: DRAFT_AF_TRIGGER_START\n> >> +          value: 1\n> >> +          description: The AF routine is started by the camera.\n> >> +        - name: DRAFT_AF_TRIGGER_CANCEL\n> >> +          value: 2\n> >> +          description: |\n> >> +            The camera will cancel any active trigger and the AF routine is\n> >> +            reset to its initial state.\n> >> +\n> >> +  - DraftNoiseReductionMode:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to select the noise reduction algorithm mode. Currently\n> >> +        identical to ANDROID_NOISE_REDUCTION_MODE.\n> >> +\n> >> +        Mode of operation for the noise reduction algorithm.\n> >> +\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> >> +  - DraftColorCorrectionAberrationMode:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to select the color correction aberration mode. Currently\n> >> +        identical to ANDROID_COLOR_CORRECTION_ABERRATION_MODE.\n> >> +\n> >> +        Mode of operation for the chromatic aberration correction algorithm.\n> >> +\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> >> +  - DraftAeState:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to report the current AE algorithm state. Currently\n> >> +        identical to ANDROID_CONTROL_AE_STATE.\n> >> +\n> >> +        Current state of the AE algorithm.\n> >> +\n> >> +      enum:\n> >> +        - name: DRAFT_AE_STATE_INACTIVE\n> >> +          value: 0\n> >> +          description: The AE algorithm is inactive.\n> >> +        - name: DRAFT_AE_STATE_SEARCHING\n> >> +          value: 1\n> >> +          description: The AE algorithm has not converged yet.\n> >> +        - name: DRAFT_AE_STATE_CONVERGED\n> >> +          value: 2\n> >> +          description: The AE algorithm has converged.\n> >> +        - name: DRAFT_AE_STATE_LOCKED\n> >> +          value: 3\n> >> +          description: The AE algorithm is locked.\n> >> +        - name: DRAFT_AE_STATE_FLASH_REQUIRED\n> >> +          value: 4\n> >> +          description: The AE algorithm would need a flash for good results\n> >> +        - name: DRAFT_AE_STATE_PRECAPTURE\n> >> +          value: 5\n> >> +          description: |\n> >> +            The AE algorithm has started a pre-capture metering session.\n> >> +            \\sa DraftAePrecaptureTrigger\n> >> +\n> >> +  - DraftAfState:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to report the current AF algorithm state. Currently\n> >> +        identical to ANDROID_CONTROL_AF_STATE.\n> >> +\n> >> +        Current state of the AF algorithm.\n> >> +      enum:\n> >> +        - name: DRAFT_AF_STATE_INACTIVE\n> >> +          value: 0\n> >> +          description: The AF algorithm is inactive.\n> >> +        - name: DRAFT_AF_STATE_PASSIVE_SCAN\n> >> +          value: 1\n> >> +          description: |\n> >> +            AF is performing a passive scan of the scene in continuous\n> >> +            auto-focus mode.\n> >> +        - name: DRAFT_AF_STATE_PASSIVE_FOCUSED\n> >> +          value: 2\n> >> +          description: |\n> >> +            AF believes the scene is in focus, but might restart scanning.\n> >> +        - name: DRAFT_AF_STATE_ACTIVE_SCAN\n> >> +          value: 3\n> >> +          description: |\n> >> +            AF is performing a scan triggered by an AF trigger request.\n> >> +            \\sa DraftAfTrigger\n> >> +        - name: DRAFT_AF_STATE_FOCUSED_LOCK\n> >> +          value: 4\n> >> +          description: |\n> >> +            AF believes has focused correctly and has locked focus.\n> >> +        - name: DRAFT_AF_STATE_NOT_FOCUSED_LOCK\n> >> +          value: 5\n> >> +          description: |\n> >> +            AF has not been able to focus and has locked.\n> >> +        - name: DRAFT_AF_STATE_PASSIVE_UNFOCUSED\n> >> +          value: 6\n> >> +          description: |\n> >> +            AF has completed a passive scan without finding focus.\n> >> +\n> >> +  - DraftAwbState:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to report the current AWB algorithm state. Currently\n> >> +        identical to ANDROID_CONTROL_AWB_STATE.\n> >> +\n> >> +        Current state of the AWB algorithm.\n> >> +      enum:\n> >> +        - name: DRAFT_AWB_STATE_INACTIVE\n> >> +          value: 0\n> >> +          description: The AWB algorithm is inactive.\n> >> +        - name: DRAFT_AWB_STATE_SEARCHING\n> >> +          value: 1\n> >> +          description: The AWB algorithm has not converged yet.\n> >> +        - name: DRAFT_AWB_CONVERGED\n> >> +          value: 2\n> >> +          description: The AWB algorithm has converged.\n> >> +        - name: DRAFT_AWB_LOCKED\n> >> +          value: 3\n> >> +          description: The AWB algorithm is locked.\n> >> +\n> >> +  - DraftScalerCropRegion:\n> >> +      type: Rectangle\n> >> +      description: |\n> >> +        Draft control to report the region of the sensor that has been read-out.\n> >> +        Currently identical to ANDROID_SCALER_CROP_REGION.\n> >> +\n> >> +        The area of the sensor that has been read out, defined relatively to\n> >> +        the active pixel array size.\n> >> +\n> >> +        \\sa Properties::PixelArrayActiveAreas\n> >> +        \\todo This will soon be required to implement digital zoom\n> >\n> > Does the \\sa and \\todo really belong here or are they left over\n> > development notes?\n> >\n> >> +\n> >> +  - DraftSensorTimestamp:\n> >> +      type: int64_t\n> >> +      description: |\n> >> +        Draft control to report the start of exposure of the first row of the\n> >> +        captured image. Currently identical to ANDROID_SENSOR_TIMESTAMP.\n> >\n> > Could we replace the FrameMetadata::timestamp with this control on the\n> > request? This definition is really nice and it would move the timestamp\n> > from buffer to Request which is something we have been thinking about\n> > for some time already.\n>\n> Moving the timestamp to the request does sound like it would be helpful\n> indeed.\n>\n> >\n> >> +\n> >> +  - DraftSensorRollingShutterSkew:\n> >> +      type: int64_t\n> >> +      description: |\n> >> +        Draft control to report the time between the start of exposure of the\n> >> +        first row and the start of exposure of the last row. Currently\n> >> +        identical to ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n> >> +\n> >> +  - DraftLensShadingMapMode:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to report if the lens shading map is available. Currently\n> >> +        identical to ANDROID_STATISTICS_LENS_SHADING_MAP_MODE.\n> >> +\n> >> +        \\todo Once we define a control to report the lens shading map, we can\n> >> +        deduce if it is available or not. Currently this will always be set to\n> >> +        OFF.\n> >\n> > Same here, is this todo something we wish to record?\n> >\n> > Over all I'm happy to see this patch as it will allow us to move forward\n> > at a much quicker phase using these draft controls, nice work.\n> >\n> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> >\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> >> +\n> >> +  - DraftSceneFlicker:\n> >> +      type: int32_t\n> >> +      description: |\n> >> +        Draft control to report the detected scene light frequency. Currently\n> >> +        identical to ANDROID_STATISTICS_SCENE_FLICKER.\n> >> +\n> >> +      enum:\n> >> +        - name: DRAFT_SCENE_FLICKER_OFF\n> >> +          value: 0\n> >> +          description: No flickering detected.\n> >> +        - name: DRAFT_SCENE_FLICKER_50HZ\n> >> +          value: 0\n> >> +          description: 50Hz flickering detected.\n> >> +        - name: DRAFT_SCENE_FLICKER_60HZ\n> >> +          value: 0\n> >> +          description: 50Hz flickering detected.\n> >> +\n> >>  ...\n> >> --\n> >> 2.27.0\n> >>\n> >> _______________________________________________\n> >> libcamera-devel mailing list\n> >> libcamera-devel@lists.libcamera.org\n> >> https://lists.libcamera.org/listinfo/libcamera-devel\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 51567BF019\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  3 Sep 2020 10:16:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E51AA629B6;\n\tThu,  3 Sep 2020 12:16:06 +0200 (CEST)","from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E9F6462901\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Sep 2020 12:16:04 +0200 (CEST)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id 99B18100011;\n\tThu,  3 Sep 2020 10:16:03 +0000 (UTC)"],"Date":"Thu, 3 Sep 2020 12:19:49 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20200903101949.iucfpfuptcmjbhf6@uno.localdomain>","References":"<20200808100046.5347-1-jacopo@jmondi.org>\n\t<20200808100046.5347-3-jacopo@jmondi.org>\n\t<20200808103209.GE3387836@oden.dyn.berto.se>\n\t<4f07d3cd-2cd6-6217-82eb-797588e308ab@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<4f07d3cd-2cd6-6217-82eb-797588e308ab@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 2/2] libcamera: control_ids: Define\n\tdraft controls","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=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]