[{"id":16617,"web_url":"https://patchwork.libcamera.org/comment/16617/","msgid":"<YIeapiuOKqkByNmR@pendragon.ideasonboard.com>","date":"2021-04-27T05:01:26","subject":"Re: [libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls\n\tnecessary for FULL compliance","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nAh, this is where the plumbing starts to happen :-)\n\nOn Thu, Apr 22, 2021 at 06:40:58PM +0900, Paul Elder wrote:\n> Add controls necessary for FULL compliance:\n> - BlackLevelLocked\n> - EdgeMode\n> - FrameDuration\n> - SensorSensitivity\n> - TonemapMode\n> \n> While at it, change the names of some AwbState values to be consistent\n> and to avoid potential conflicts with AwbLocked.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  src/libcamera/control_ids.yaml | 78 +++++++++++++++++++++++++++++++++-\n>  1 file changed, 76 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> index f025819a..61c5c96f 100644\n> --- a/src/libcamera/control_ids.yaml\n> +++ b/src/libcamera/control_ids.yaml\n> @@ -420,6 +420,13 @@ controls:\n>              The camera will cancel any active trigger and the AF routine is\n>              reset to its initial state.\n>  \n> +  - BlackLevelLocked:\n> +      type: bool\n> +      draft: true\n> +      description: |\n> +        Whether black-level compensation is locked to its current values, or is\n> +        free to vary. Currently identical to ANDROID_BLACK_LEVEL_LOCK.\n> +\n>    - NoiseReductionMode:\n>        type: int32_t\n>        draft: true\n> @@ -554,13 +561,46 @@ controls:\n>          - name: AwbStateSearching\n>            value: 1\n>            description: The AWB algorithm has not converged yet.\n> -        - name: AwbConverged\n> +        - name: AwbStateConverged\n>            value: 2\n>            description: The AWB algorithm has converged.\n> -        - name: AwbLocked\n> +        - name: AwbStateLocked\n>            value: 3\n>            description: The AWB algorithm is locked.\n\nThis is fine for now, be we should really merge this and AwbLocked.\n\n> +  - EdgeMode:\n> +      type: int32_t\n> +      draft: true\n> +      description: |\n> +       Control to report the operation mode of edge enhancement. Currently\n> +       identical to ANDROID_EDGE_MODE.\n> +      enum:\n> +        - name: EdgeModeOff\n> +          value: 0\n> +          description: No edge enhancement is applied.\n> +        - name: EdgeModeFast\n> +          value: 1\n> +          description: |\n> +           Apply edge enhancement at a quality level tha does not\n> +           slow down frame rate relative to sensor output.\n> +        - name: EdgeModeHighQuality\n> +          value: 2\n> +          description: |\n> +           Apply high-quality edge enhancement, at a cost of possible reduced\n> +           output frame rate.\n> +        - name: EdgeModeZSL\n> +          value: 3\n> +          description: |\n> +           Edge enhancement is applied at different levels for different output\n> +           streams, based on resolution.\n> +\n> +  - FrameDuration:\n> +      type: int64_t\n> +      draft: true\n> +      description: |\n> +       Duration from start of frame exposure to start of next frame exposure, in\n> +       nanoseconds. Currently identical to ANDROID_SENSOR_FRAME_DURATION.\n\nWe already have FrameDurations for this. I'm OK adding a draft control\nas a very first step, but we'll have to merge it with FrameDurations.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\n>    - SensorRollingShutterSkew:\n>        type: int64_t\n>        draft: true\n> @@ -569,6 +609,13 @@ controls:\n>         row and the start of exposure of the last row. Currently identical to\n>         ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n>  \n> +  - SensorSensitivity:\n> +      type: int32_t\n> +      draft: true\n> +      description: |\n> +       The amount of gain applied to sensor data before processing. Currently\n> +       identical to ANDROID_SENSOR_SENSITIVITY.\n> +\n>    - LensShadingMapMode:\n>        type: int32_t\n>        draft: true\n> @@ -600,6 +647,33 @@ controls:\n>            value: 2\n>            description: 60Hz flickering detected.\n>  \n> +  - TonemapMode:\n> +      type: int32_t\n> +      draft: true\n> +      description: |\n> +       High-level global contrast/gamma/tonemapping control. Currently identical\n> +       to ANDROID_TONEMAP_MODE.\n> +      enum:\n> +        - name: TonemapModeContrastCurve\n> +          value: 0\n> +          description: Use the specified tonemapping curve.\n> +        - name: TonemapModeFast\n> +          value: 1\n> +          description: |\n> +           Advanced gamma mapping and color enhancement may be applied, without\n> +           reducing frame rate compared to raw sensor output.\n> +        - name: TonemapModeHighQuality\n> +          value: 2\n> +          description: |\n> +           High-quality gamma mapping and color enhancement will be applied, at\n> +           the cost of possibly reduced frame rate compared to raw sensor output.\n> +        - name: TonemapModeGammaValue\n> +          value: 3\n> +          description: Use the specified gamma value for tonemapping.\n> +        - name: TonemapModePresetCurve\n> +          value: 4\n> +          description: Use the specified preset tonemapping curve.\n> +\n>    - PipelineDepth:\n>        type: int32_t\n>        draft: true","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 C4466BDCA6\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Apr 2021 05:01:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2682268880;\n\tTue, 27 Apr 2021 07:01:34 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 015DC60512\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Apr 2021 07:01:32 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 80307E9;\n\tTue, 27 Apr 2021 07:01:32 +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=\"j9TUIigD\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1619499692;\n\tbh=Vvv4RMmqP6XF8iRnarRhRvUKPPgmMuR4hL8EUnsjj20=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=j9TUIigDs/6je8yKzQpeg+q8VdoJQGEq5VOHngR5jmxNp0nWrMnNC9MgXqpQGviPk\n\tMHMBIxEgKYF3QIQBVDlwzr8YyjiOpEkhY32IgQD/U4kjLRnlXSalMamxqtj9P0UMIM\n\tno5ccTAjLPWje2jYTYUQqSNQH9Y1QPVRETrO61QQ=","Date":"Tue, 27 Apr 2021 08:01:26 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YIeapiuOKqkByNmR@pendragon.ideasonboard.com>","References":"<20210422094102.371772-1-paul.elder@ideasonboard.com>\n\t<20210422094102.371772-9-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210422094102.371772-9-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls\n\tnecessary for FULL compliance","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":16654,"web_url":"https://patchwork.libcamera.org/comment/16654/","msgid":"<20210427102135.hvotkvkane4yywc6@uno.localdomain>","date":"2021-04-27T10:21:35","subject":"Re: [libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls\n\tnecessary for FULL compliance","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Thu, Apr 22, 2021 at 06:40:58PM +0900, Paul Elder wrote:\n> Add controls necessary for FULL compliance:\n> - BlackLevelLocked\n> - EdgeMode\n> - FrameDuration\n> - SensorSensitivity\n> - TonemapMode\n>\n> While at it, change the names of some AwbState values to be consistent\n> and to avoid potential conflicts with AwbLocked.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  src/libcamera/control_ids.yaml | 78 +++++++++++++++++++++++++++++++++-\n>  1 file changed, 76 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> index f025819a..61c5c96f 100644\n> --- a/src/libcamera/control_ids.yaml\n> +++ b/src/libcamera/control_ids.yaml\n> @@ -420,6 +420,13 @@ controls:\n>              The camera will cancel any active trigger and the AF routine is\n>              reset to its initial state.\n>\n> +  - BlackLevelLocked:\n> +      type: bool\n> +      draft: true\n> +      description: |\n> +        Whether black-level compensation is locked to its current values, or is\n> +        free to vary. Currently identical to ANDROID_BLACK_LEVEL_LOCK.\n> +\n>    - NoiseReductionMode:\n>        type: int32_t\n>        draft: true\n> @@ -554,13 +561,46 @@ controls:\n>          - name: AwbStateSearching\n>            value: 1\n>            description: The AWB algorithm has not converged yet.\n> -        - name: AwbConverged\n> +        - name: AwbStateConverged\n>            value: 2\n>            description: The AWB algorithm has converged.\n> -        - name: AwbLocked\n> +        - name: AwbStateLocked\n\nDo you have build time conflicts ? These values should be properly\nscoped, and should compile fine...\n\n>            value: 3\n>            description: The AWB algorithm is locked.\n>\n> +  - EdgeMode:\n> +      type: int32_t\n> +      draft: true\n> +      description: |\n> +       Control to report the operation mode of edge enhancement. Currently\n> +       identical to ANDROID_EDGE_MODE.\n> +      enum:\n> +        - name: EdgeModeOff\n> +          value: 0\n> +          description: No edge enhancement is applied.\n> +        - name: EdgeModeFast\n> +          value: 1\n> +          description: |\n> +           Apply edge enhancement at a quality level tha does not\n> +           slow down frame rate relative to sensor output.\n> +        - name: EdgeModeHighQuality\n> +          value: 2\n> +          description: |\n> +           Apply high-quality edge enhancement, at a cost of possible reduced\n> +           output frame rate.\n> +        - name: EdgeModeZSL\n> +          value: 3\n> +          description: |\n> +           Edge enhancement is applied at different levels for different output\n> +           streams, based on resolution.\n> +\n> +  - FrameDuration:\n\nWe have a FrameDuration control already :)\n\n> +      type: int64_t\n> +      draft: true\n> +      description: |\n> +       Duration from start of frame exposure to start of next frame exposure, in\n> +       nanoseconds. Currently identical to ANDROID_SENSOR_FRAME_DURATION.\n> +\n>    - SensorRollingShutterSkew:\n>        type: int64_t\n>        draft: true\n> @@ -569,6 +609,13 @@ controls:\n>         row and the start of exposure of the last row. Currently identical to\n>         ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n>\n> +  - SensorSensitivity:\n> +      type: int32_t\n> +      draft: true\n> +      description: |\n> +       The amount of gain applied to sensor data before processing. Currently\n> +       identical to ANDROID_SENSOR_SENSITIVITY.\n\nI would anyway add\n\"The sensitivity is the standard ISO sensitivity value,as defined in\nISO 12232:2006.\"\n\n> +\n>    - LensShadingMapMode:\n>        type: int32_t\n>        draft: true\n> @@ -600,6 +647,33 @@ controls:\n>            value: 2\n>            description: 60Hz flickering detected.\n>\n> +  - TonemapMode:\n> +      type: int32_t\n> +      draft: true\n> +      description: |\n> +       High-level global contrast/gamma/tonemapping control. Currently identical\n> +       to ANDROID_TONEMAP_MODE.\n> +      enum:\n> +        - name: TonemapModeContrastCurve\n> +          value: 0\n> +          description: Use the specified tonemapping curve.\n\nThe Android description also reports:\nUse the tone mapping curve specified in the android.tonemap.curve* entries.\n\nDo we need a controls::toneMapCurve[float] control to reference here\nand to feed the ph with ?\n\n> +        - name: TonemapModeFast\n> +          value: 1\n> +          description: |\n> +           Advanced gamma mapping and color enhancement may be applied, without\n> +           reducing frame rate compared to raw sensor output.\n> +        - name: TonemapModeHighQuality\n> +          value: 2\n> +          description: |\n> +           High-quality gamma mapping and color enhancement will be applied, at\n> +           the cost of possibly reduced frame rate compared to raw sensor output.\n> +        - name: TonemapModeGammaValue\n> +          value: 3\n> +          description: Use the specified gamma value for tonemapping.\n\nThis as well reports:\nUse the gamma value specified in android.tonemap.gamma to peform tonemapping.\n\n> +        - name: TonemapModePresetCurve\n\nAnd this one:\nUse the preset tonemapping curve specified in android.tonemap.presetCurve to peform tonemapping.\n\nThe same reasoning for Controls::toneMapCurve applies here\n> +          value: 4\n> +          description: Use the specified preset tonemapping curve.\n> +\n>    - PipelineDepth:\n>        type: int32_t\n>        draft: true\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 2DB86BDCC3\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Apr 2021 10:20:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 58D9E68882;\n\tTue, 27 Apr 2021 12:20:55 +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 F09A5602C2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Apr 2021 12:20:53 +0200 (CEST)","from uno.localdomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id 70442100014;\n\tTue, 27 Apr 2021 10:20:53 +0000 (UTC)"],"Date":"Tue, 27 Apr 2021 12:21:35 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20210427102135.hvotkvkane4yywc6@uno.localdomain>","References":"<20210422094102.371772-1-paul.elder@ideasonboard.com>\n\t<20210422094102.371772-9-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210422094102.371772-9-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls\n\tnecessary for FULL compliance","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":16666,"web_url":"https://patchwork.libcamera.org/comment/16666/","msgid":"<20210428101544.GJ195599@pyrite.rasen.tech>","date":"2021-04-28T10:15:44","subject":"Re: [libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls\n\tnecessary for FULL compliance","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Tue, Apr 27, 2021 at 12:21:35PM +0200, Jacopo Mondi wrote:\n> Hi Paul,\n> \n> On Thu, Apr 22, 2021 at 06:40:58PM +0900, Paul Elder wrote:\n> > Add controls necessary for FULL compliance:\n> > - BlackLevelLocked\n> > - EdgeMode\n> > - FrameDuration\n> > - SensorSensitivity\n> > - TonemapMode\n> >\n> > While at it, change the names of some AwbState values to be consistent\n> > and to avoid potential conflicts with AwbLocked.\n> >\n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> > ---\n> >  src/libcamera/control_ids.yaml | 78 +++++++++++++++++++++++++++++++++-\n> >  1 file changed, 76 insertions(+), 2 deletions(-)\n> >\n> > diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> > index f025819a..61c5c96f 100644\n> > --- a/src/libcamera/control_ids.yaml\n> > +++ b/src/libcamera/control_ids.yaml\n> > @@ -420,6 +420,13 @@ controls:\n> >              The camera will cancel any active trigger and the AF routine is\n> >              reset to its initial state.\n> >\n> > +  - BlackLevelLocked:\n> > +      type: bool\n> > +      draft: true\n> > +      description: |\n> > +        Whether black-level compensation is locked to its current values, or is\n> > +        free to vary. Currently identical to ANDROID_BLACK_LEVEL_LOCK.\n> > +\n> >    - NoiseReductionMode:\n> >        type: int32_t\n> >        draft: true\n> > @@ -554,13 +561,46 @@ controls:\n> >          - name: AwbStateSearching\n> >            value: 1\n> >            description: The AWB algorithm has not converged yet.\n> > -        - name: AwbConverged\n> > +        - name: AwbStateConverged\n> >            value: 2\n> >            description: The AWB algorithm has converged.\n> > -        - name: AwbLocked\n> > +        - name: AwbStateLocked\n> \n> Do you have build time conflicts ? These values should be properly\n> scoped, and should compile fine...\n\nNo, but AwbLocked is a draft control so if it ever graduates then it\nwill conflict. Also all the other values have AwbState while these two\ndon't so I thought it was a bit inconsistent.\n\n> >            value: 3\n> >            description: The AWB algorithm is locked.\n> >\n> > +  - EdgeMode:\n> > +      type: int32_t\n> > +      draft: true\n> > +      description: |\n> > +       Control to report the operation mode of edge enhancement. Currently\n> > +       identical to ANDROID_EDGE_MODE.\n> > +      enum:\n> > +        - name: EdgeModeOff\n> > +          value: 0\n> > +          description: No edge enhancement is applied.\n> > +        - name: EdgeModeFast\n> > +          value: 1\n> > +          description: |\n> > +           Apply edge enhancement at a quality level tha does not\n> > +           slow down frame rate relative to sensor output.\n> > +        - name: EdgeModeHighQuality\n> > +          value: 2\n> > +          description: |\n> > +           Apply high-quality edge enhancement, at a cost of possible reduced\n> > +           output frame rate.\n> > +        - name: EdgeModeZSL\n> > +          value: 3\n> > +          description: |\n> > +           Edge enhancement is applied at different levels for different output\n> > +           streams, based on resolution.\n> > +\n> > +  - FrameDuration:\n> \n> We have a FrameDuration control already :)\n\nOh I didn't notice \"A fixed frame duration is achieved by setting the\nminimum and maximum values to be the same\" :p\n\n> > +      type: int64_t\n> > +      draft: true\n> > +      description: |\n> > +       Duration from start of frame exposure to start of next frame exposure, in\n> > +       nanoseconds. Currently identical to ANDROID_SENSOR_FRAME_DURATION.\n> > +\n> >    - SensorRollingShutterSkew:\n> >        type: int64_t\n> >        draft: true\n> > @@ -569,6 +609,13 @@ controls:\n> >         row and the start of exposure of the last row. Currently identical to\n> >         ANDROID_SENSOR_ROLLING_SHUTTER_SKEW\n> >\n> > +  - SensorSensitivity:\n> > +      type: int32_t\n> > +      draft: true\n> > +      description: |\n> > +       The amount of gain applied to sensor data before processing. Currently\n> > +       identical to ANDROID_SENSOR_SENSITIVITY.\n> \n> I would anyway add\n> \"The sensitivity is the standard ISO sensitivity value,as defined in\n> ISO 12232:2006.\"\n> \n> > +\n> >    - LensShadingMapMode:\n> >        type: int32_t\n> >        draft: true\n> > @@ -600,6 +647,33 @@ controls:\n> >            value: 2\n> >            description: 60Hz flickering detected.\n> >\n> > +  - TonemapMode:\n> > +      type: int32_t\n> > +      draft: true\n> > +      description: |\n> > +       High-level global contrast/gamma/tonemapping control. Currently identical\n> > +       to ANDROID_TONEMAP_MODE.\n> > +      enum:\n> > +        - name: TonemapModeContrastCurve\n> > +          value: 0\n> > +          description: Use the specified tonemapping curve.\n> \n> The Android description also reports:\n> Use the tone mapping curve specified in the android.tonemap.curve* entries.\n> \n> Do we need a controls::toneMapCurve[float] control to reference here\n> and to feed the ph with ?\n\nFor this (and the below two), for the purpose of passing CTS, no. iirc\nCTS doesn't actually check these values for correctness. For actual\ncorrectness, yeah we probably need them.\n\n\nPaul\n\n> > +        - name: TonemapModeFast\n> > +          value: 1\n> > +          description: |\n> > +           Advanced gamma mapping and color enhancement may be applied, without\n> > +           reducing frame rate compared to raw sensor output.\n> > +        - name: TonemapModeHighQuality\n> > +          value: 2\n> > +          description: |\n> > +           High-quality gamma mapping and color enhancement will be applied, at\n> > +           the cost of possibly reduced frame rate compared to raw sensor output.\n> > +        - name: TonemapModeGammaValue\n> > +          value: 3\n> > +          description: Use the specified gamma value for tonemapping.\n> \n> This as well reports:\n> Use the gamma value specified in android.tonemap.gamma to peform tonemapping.\n> \n> > +        - name: TonemapModePresetCurve\n> \n> And this one:\n> Use the preset tonemapping curve specified in android.tonemap.presetCurve to peform tonemapping.\n> \n> The same reasoning for Controls::toneMapCurve applies here\n> > +          value: 4\n> > +          description: Use the specified preset tonemapping curve.\n> > +\n> >    - PipelineDepth:\n> >        type: int32_t\n> >        draft: true\n> > --\n> > 2.27.0","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 1596DBDE41\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 28 Apr 2021 10:15:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 74FBB688B9;\n\tWed, 28 Apr 2021 12:15:52 +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 B3043602D1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 28 Apr 2021 12:15:51 +0200 (CEST)","from pyrite.rasen.tech (unknown\n\t[IPv6:2400:4051:61:600:2c71:1b79:d06d:5032])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1E55B2CF;\n\tWed, 28 Apr 2021 12:15:49 +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=\"vVLOz70U\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1619604951;\n\tbh=gh8ngfQWid6rL3F8Gpz0t7VOSyiOydi6tjQcNGMy71w=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=vVLOz70U4zR9kyibuTIbHiRDNE3UyPhYJSLi8QZg4q1k4HthA8gcjASiRD4X+hHzN\n\taDtCuaxtiVZaPa5MsIfOTClT7jwaHr1oyG7brGsmgN0h4ndQBf4ymk44ROpEDjlTJP\n\tqnflJISOyxDEbWbPDl9Dz8SSqkYwMSn8A/bJfdIU=","Date":"Wed, 28 Apr 2021 19:15:44 +0900","From":"paul.elder@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20210428101544.GJ195599@pyrite.rasen.tech>","References":"<20210422094102.371772-1-paul.elder@ideasonboard.com>\n\t<20210422094102.371772-9-paul.elder@ideasonboard.com>\n\t<20210427102135.hvotkvkane4yywc6@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210427102135.hvotkvkane4yywc6@uno.localdomain>","Subject":"Re: [libcamera-devel] [RFC PATCH v2 08/12] controls: Add controls\n\tnecessary for FULL compliance","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]