[{"id":14529,"web_url":"https://patchwork.libcamera.org/comment/14529/","msgid":"<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>","date":"2021-01-11T23:07:33","subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nThank you for the patch.\n\nOn Wed, Jan 06, 2021 at 10:06:57AM +0000, Naushir Patuck wrote:\n> Add an int64_t array control (controls::FrameDurations) to specify the\n> minimum and maximum (in that order) frame duration to be used by the\n> camera sensor.\n> \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> Tested-by: David Plowman <david.plowman@raspberrypi.com>\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/libcamera/control_ids.yaml | 38 ++++++++++++++++++++++++++++++++++\n>  1 file changed, 38 insertions(+)\n> \n> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> index 6d6f0fee..d1240beb 100644\n> --- a/src/libcamera/control_ids.yaml\n> +++ b/src/libcamera/control_ids.yaml\n> @@ -306,6 +306,44 @@ controls:\n>          maximum valid value is given by the properties::ScalerCropMaximum\n>          property, and the two can be used to implement digital zoom.\n>  \n> +  - FrameDurations:\n> +      type: int64_t\n> +      description: |\n> +          The minimum and maximum (in that order) frame duration,\n> +          expressed in micro-seconds.\n\ns/micro-seconds/microseconds/\n\n(The indentation should be 2 spaces btw)\n\n> +\n> +          When provided by applications, the control specifies the sensor frame\n> +          duration interval the pipeline has to use. This limits the largest\n> +          exposure time the sensor can use. For example, if a maximum frame\n> +          duration of 33ms is requested (corresponding to 30 frames per second),\n> +          the sensor will not be able to raise the exposure time above 33ms.\n> +          A fixed frame duration is achieved by setting the minimum and maximum\n> +          values to be the same. Setting both values to 0 reverts to using the\n> +          IPA provided defaults.\n> +\n> +          The maximum frame duration provides the absolute limit to the shutter\n> +          speed computed by the AE algorithm and it overrides any exposure mode\n> +          setting specified with controls::AeExposureMode. Similarly, when a\n> +          manual exposure time is set through controls::ExposureTime, it also\n> +          gets clipped to the limits set by this control.\n\nThis looks good.\n\n>            When reported in\n> +          metadata, the control expresses the minimum and maximum frame\n> +          durations used after being clipped to these limits.\n> +\n\nBut this sounds weird. The previous part states that FrameDurations has\nhigher priority than all other parameters, but then this sentence says\nit's clipped by \"these limits\".\n\n> +          \\sa AeExposureMode\n> +          \\sa ExposureTime\n> +\n> +          \\todo Refer to the frame duration limits property to describe how\n> +          application-provided values gets clipped and reset.\n\nIt hasn't been long, and the context is already starting to escape me.\nWould it be possible to expand this just a little bit so that we'll know\nwhat it means in 3 months time ?\n\n> +\n> +          \\todo Define how to calculate the capture frame rate by\n> +          defining controls to report additional delays introduced by\n> +          the capture pipeline or post-processing stages (ie JPEG\n> +          conversion, frame scaling).\n> +\n> +          \\todo Provide an explicit definition of default control values, for\n> +          this and all other controls.\n> +      size: [2]\n> +\n>    # ----------------------------------------------------------------------------\n>    # Draft controls section\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 26751BD80C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 11 Jan 2021 23:07:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 88EE1680C0;\n\tTue, 12 Jan 2021 00:07:49 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1AC2960523\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 Jan 2021 00:07:48 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8FCBE3E;\n\tTue, 12 Jan 2021 00:07:47 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"T5c3iXHA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1610406467;\n\tbh=H0Wa/wQJtOlolIdsCeRjzDjD9gpltOXQNJpU4MAEmjI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=T5c3iXHA/DBwl5LhyKNwCVo53UReXt7uvjOaoh57vqnxS+brfnMLdQQvwSVO41W5V\n\te/Qj81fACkfSlRn0AS4lsmLl9a5NhgOLwTXhtSnikDqNUalAPuuMWDmtNj4YrVd9d9\n\tHYzTRqN1E0CDndQztldxlskL95gsr+PoDgD+2VGw=","Date":"Tue, 12 Jan 2021 01:07:33 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>","References":"<20210106100659.8363-1-naush@raspberrypi.com>\n\t<20210106100659.8363-2-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210106100659.8363-2-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","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":14535,"web_url":"https://patchwork.libcamera.org/comment/14535/","msgid":"<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>","date":"2021-01-12T07:17:14","subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nThank you for your comments.\n\nOn Mon, 11 Jan 2021 at 23:07, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Thank you for the patch.\n>\n> On Wed, Jan 06, 2021 at 10:06:57AM +0000, Naushir Patuck wrote:\n> > Add an int64_t array control (controls::FrameDurations) to specify the\n> > minimum and maximum (in that order) frame duration to be used by the\n> > camera sensor.\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> > Tested-by: David Plowman <david.plowman@raspberrypi.com>\n> > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/libcamera/control_ids.yaml | 38 ++++++++++++++++++++++++++++++++++\n> >  1 file changed, 38 insertions(+)\n> >\n> > diff --git a/src/libcamera/control_ids.yaml\n> b/src/libcamera/control_ids.yaml\n> > index 6d6f0fee..d1240beb 100644\n> > --- a/src/libcamera/control_ids.yaml\n> > +++ b/src/libcamera/control_ids.yaml\n> > @@ -306,6 +306,44 @@ controls:\n> >          maximum valid value is given by the\n> properties::ScalerCropMaximum\n> >          property, and the two can be used to implement digital zoom.\n> >\n> > +  - FrameDurations:\n> > +      type: int64_t\n> > +      description: |\n> > +          The minimum and maximum (in that order) frame duration,\n> > +          expressed in micro-seconds.\n>\n> s/micro-seconds/microseconds/\n>\n> (The indentation should be 2 spaces btw)\n>\n> > +\n> > +          When provided by applications, the control specifies the\n> sensor frame\n> > +          duration interval the pipeline has to use. This limits the\n> largest\n> > +          exposure time the sensor can use. For example, if a maximum\n> frame\n> > +          duration of 33ms is requested (corresponding to 30 frames per\n> second),\n> > +          the sensor will not be able to raise the exposure time above\n> 33ms.\n> > +          A fixed frame duration is achieved by setting the minimum and\n> maximum\n> > +          values to be the same. Setting both values to 0 reverts to\n> using the\n> > +          IPA provided defaults.\n> > +\n> > +          The maximum frame duration provides the absolute limit to the\n> shutter\n> > +          speed computed by the AE algorithm and it overrides any\n> exposure mode\n> > +          setting specified with controls::AeExposureMode. Similarly,\n> when a\n> > +          manual exposure time is set through controls::ExposureTime,\n> it also\n> > +          gets clipped to the limits set by this control.\n>\n> This looks good.\n>\n> >            When reported in\n> > +          metadata, the control expresses the minimum and maximum frame\n> > +          durations used after being clipped to these limits.\n> > +\n>\n> But this sounds weird. The previous part states that FrameDurations has\n> higher priority than all other parameters, but then this sentence says\n> it's clipped by \"these limits\".\n>\n\nYou are right, this does not read correct.  I wanted to express that the\nframe durations provided may be further limited by what the sensor mode can\nactually achieve.  How about replacing the above paragraph of text with the\nfollowing:\n\nWhen reported in metadata, the control expresses the minimum and maximum\nframe durations used after being clipped to the sensor provided frame\nduration limits.\n\n\n>\n> > +          \\sa AeExposureMode\n> > +          \\sa ExposureTime\n> > +\n> > +          \\todo Refer to the frame duration limits property to describe\n> how\n> > +          application-provided values gets clipped and reset.\n>\n> It hasn't been long, and the context is already starting to escape me.\n> Would it be possible to expand this just a little bit so that we'll know\n> what it means in 3 months time ?\n>\n\nPerhaps this makes more sense given the rewording above?  Or maybe a reword\nas follows:\n\n\\todo Refer to the frame duration limits property to describe how\napplication-provided values get clipped to what is supported by the sensor\nmode.\n\nHopefully that makes things more readable?\n\nRegards,\nNaush\n\n\n> > +\n> > +          \\todo Define how to calculate the capture frame rate by\n> > +          defining controls to report additional delays introduced by\n> > +          the capture pipeline or post-processing stages (ie JPEG\n> > +          conversion, frame scaling).\n> > +\n> > +          \\todo Provide an explicit definition of default control\n> values, for\n> > +          this and all other controls.\n> > +      size: [2]\n> > +\n> >    #\n> ----------------------------------------------------------------------------\n> >    # Draft controls section\n> >\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id F1596BD80C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 12 Jan 2021 07:17:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6E8B4680CE;\n\tTue, 12 Jan 2021 08:17:33 +0100 (CET)","from mail-lf1-x131.google.com (mail-lf1-x131.google.com\n\t[IPv6:2a00:1450:4864:20::131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5826660523\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 Jan 2021 08:17:32 +0100 (CET)","by mail-lf1-x131.google.com with SMTP id x20so1777249lfe.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 11 Jan 2021 23:17:32 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"Au34SKlK\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=i+oeb5QT/RqD67nadFlYgsiqds6vhcd2rw3LLrW6VeY=;\n\tb=Au34SKlKHFF0v2cjuhcqLLOlqUWnQ6nFD85uQKsUbeDAgCoJRMzpxWSL2XzvMEwfKy\n\tctFjtO4YaX/vHljHLwk0ZsVOTkhlZJaX4ROjJLY6r24E2z0RmMG0aaHnVfY+R42N75H/\n\tozhjOVaeIHJH92Oj3Zj+kjj6BRZotiF0ZqTuX/JWXPT7B56StueFtRya3MVWQGCGU3Qz\n\t5XA6T4a/b53DqU0yDiJoKe8KX05mK7/T+v3XxRrbG+uKoJhaCCK/oYUwLwxtHZlVKt+F\n\t5DJcnh6Mr2d2Jl2M+xZoL/8AFVMbn3VbvcpLTQ6Peyd2jqbHenhepK6s9MDlUTRfhG8S\n\trUeA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=i+oeb5QT/RqD67nadFlYgsiqds6vhcd2rw3LLrW6VeY=;\n\tb=QEUOEjIVq3FvdRy4fnnamtbaFKcYXloqt4kHIw6xuTfsiwyllArZvJ4xju2tQmAPFx\n\t0WCDCajWy3anBjHiA5W37QoIDPo6JXeVGZ27DaMoIAqBCctut10bMFaqISIPnuH70ykl\n\t0GgoVBaFtnLNAmKihXHXy7YLRKimAZUSVeNc+z18W2mKSNcuPtZJDu46dqT7hDvxIZaU\n\t9GisqiCewXcrxNxNjhXu5KLcYUNoswsXdd9T7gX3SwMWMkxHdUqNgM9PyrAQr+cE8b26\n\tlUlpEzJ2TUmg7dSVqE2xe2ojXy2K/U/Z1A/XGWjicRXHObF+1ypRDP/nP7ASPdJmEJD7\n\tG2KQ==","X-Gm-Message-State":"AOAM530L1osCmgCe1jrE06z9J+4emYKLUgxOnQtIt21nrhPxuBibfoeE\n\tJS5LQMnu69eKP01GxHWgVwfB1tFqcc0dSN/rrUAXHWKylDWkwg==","X-Google-Smtp-Source":"ABdhPJydEqmOHw/lYnxxsf8sPrKFs5iFPcDaBNVwiX2BFro7bIaLN9d13rkTOmhAjHLJjM+PxrxyAPCpAQ0xDhCI/EY=","X-Received":"by 2002:ac2:4daa:: with SMTP id\n\th10mr1525897lfe.617.1610435851506; \n\tMon, 11 Jan 2021 23:17:31 -0800 (PST)","MIME-Version":"1.0","References":"<20210106100659.8363-1-naush@raspberrypi.com>\n\t<20210106100659.8363-2-naush@raspberrypi.com>\n\t<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>","In-Reply-To":"<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 12 Jan 2021 07:17:14 +0000","Message-ID":"<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"multipart/mixed;\n\tboundary=\"===============5124823113130037125==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14544,"web_url":"https://patchwork.libcamera.org/comment/14544/","msgid":"<X//eyB/yqwHK8lPK@pendragon.ideasonboard.com>","date":"2021-01-14T06:03:52","subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nOn Tue, Jan 12, 2021 at 07:17:14AM +0000, Naushir Patuck wrote:\n> On Mon, 11 Jan 2021 at 23:07, Laurent Pinchart wrote:\n> > On Wed, Jan 06, 2021 at 10:06:57AM +0000, Naushir Patuck wrote:\n> > > Add an int64_t array control (controls::FrameDurations) to specify the\n> > > minimum and maximum (in that order) frame duration to be used by the\n> > > camera sensor.\n> > >\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> > > Tested-by: David Plowman <david.plowman@raspberrypi.com>\n> > > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > ---\n> > >  src/libcamera/control_ids.yaml | 38 ++++++++++++++++++++++++++++++++++\n> > >  1 file changed, 38 insertions(+)\n> > >\n> > > diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml\n> > > index 6d6f0fee..d1240beb 100644\n> > > --- a/src/libcamera/control_ids.yaml\n> > > +++ b/src/libcamera/control_ids.yaml\n> > > @@ -306,6 +306,44 @@ controls:\n> > >          maximum valid value is given by the properties::ScalerCropMaximum\n> > >          property, and the two can be used to implement digital zoom.\n> > >\n> > > +  - FrameDurations:\n> > > +      type: int64_t\n> > > +      description: |\n> > > +          The minimum and maximum (in that order) frame duration,\n> > > +          expressed in micro-seconds.\n> >\n> > s/micro-seconds/microseconds/\n> >\n> > (The indentation should be 2 spaces btw)\n> >\n> > > +\n> > > +          When provided by applications, the control specifies the sensor frame\n> > > +          duration interval the pipeline has to use. This limits the largest\n> > > +          exposure time the sensor can use. For example, if a maximum frame\n> > > +          duration of 33ms is requested (corresponding to 30 frames per second),\n> > > +          the sensor will not be able to raise the exposure time above 33ms.\n> > > +          A fixed frame duration is achieved by setting the minimum and maximum\n> > > +          values to be the same. Setting both values to 0 reverts to using the\n> > > +          IPA provided defaults.\n> > > +\n> > > +          The maximum frame duration provides the absolute limit to the shutter\n> > > +          speed computed by the AE algorithm and it overrides any exposure mode\n> > > +          setting specified with controls::AeExposureMode. Similarly, when a\n> > > +          manual exposure time is set through controls::ExposureTime, it also\n> > > +          gets clipped to the limits set by this control.\n> >\n> > This looks good.\n> >\n> > >            When reported in\n> > > +          metadata, the control expresses the minimum and maximum frame\n> > > +          durations used after being clipped to these limits.\n> > > +\n> >\n> > But this sounds weird. The previous part states that FrameDurations has\n> > higher priority than all other parameters, but then this sentence says\n> > it's clipped by \"these limits\".\n> \n> You are right, this does not read correct.  I wanted to express that the\n> frame durations provided may be further limited by what the sensor mode can\n> actually achieve.  How about replacing the above paragraph of text with the\n> following:\n> \n> When reported in metadata, the control expresses the minimum and maximum\n> frame durations used after being clipped to the sensor provided frame\n> duration limits.\n\nSounds good to me.\n\n> > > +          \\sa AeExposureMode\n> > > +          \\sa ExposureTime\n> > > +\n> > > +          \\todo Refer to the frame duration limits property to describe how\n> > > +          application-provided values gets clipped and reset.\n> >\n> > It hasn't been long, and the context is already starting to escape me.\n> > Would it be possible to expand this just a little bit so that we'll know\n> > what it means in 3 months time ?\n> \n> Perhaps this makes more sense given the rewording above?  Or maybe a reword\n> as follows:\n> \n> \\todo Refer to the frame duration limits property to describe how\n> application-provided values get clipped to what is supported by the sensor\n> mode.\n> \n> Hopefully that makes things more readable?\n\nNot quite I'm afraid, but maybe it's just too early in the morning :-)\n\nIs this about documenting how other properties also get clipped by the\nsensor mode ? Or something else ?\n\n> > > +\n> > > +          \\todo Define how to calculate the capture frame rate by\n> > > +          defining controls to report additional delays introduced by\n> > > +          the capture pipeline or post-processing stages (ie JPEG\n> > > +          conversion, frame scaling).\n> > > +\n> > > +          \\todo Provide an explicit definition of default control values, for\n> > > +          this and all other controls.\n> > > +      size: [2]\n> > > +\n> > >    # ----------------------------------------------------------------------------\n> > >    # Draft controls section\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 873C8BD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 14 Jan 2021 06:04:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D9F4B680DA;\n\tThu, 14 Jan 2021 07:04:10 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F2FD46010B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 14 Jan 2021 07:04:09 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 6F113279;\n\tThu, 14 Jan 2021 07:04:09 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"mqDWIgiu\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1610604249;\n\tbh=wnAFN3dEwg+93j6wVNXkxOEEgIpoZHwdx2ZpokbNBto=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=mqDWIgiu8NzLBoyaMda8ffbE3HaVx1uUi92XTrAkm87pGpAQo1Z+CYvPd1sVYdNXG\n\tloEvy8z+r1gaYYMwz8lZ22s/9ToF68j/tVBVKenF/G/oALJu0lRW5qvLfQeKndLCpw\n\tIRdsnf/hepDkdlBur1PAR+qIxZb6BlcDys2zH3/U=","Date":"Thu, 14 Jan 2021 08:03:52 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<X//eyB/yqwHK8lPK@pendragon.ideasonboard.com>","References":"<20210106100659.8363-1-naush@raspberrypi.com>\n\t<20210106100659.8363-2-naush@raspberrypi.com>\n\t<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>\n\t<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14545,"web_url":"https://patchwork.libcamera.org/comment/14545/","msgid":"<CAEmqJPpF4cVTLf2-Zmb3gN48_qfdsUWNnssKNeZUULNC5x0YPQ@mail.gmail.com>","date":"2021-01-14T07:34:20","subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\n\nOn Thu, 14 Jan 2021 at 06:04, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> On Tue, Jan 12, 2021 at 07:17:14AM +0000, Naushir Patuck wrote:\n> > On Mon, 11 Jan 2021 at 23:07, Laurent Pinchart wrote:\n> > > On Wed, Jan 06, 2021 at 10:06:57AM +0000, Naushir Patuck wrote:\n> > > > Add an int64_t array control (controls::FrameDurations) to specify\n> the\n> > > > minimum and maximum (in that order) frame duration to be used by the\n> > > > camera sensor.\n> > > >\n> > > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> > > > Tested-by: David Plowman <david.plowman@raspberrypi.com>\n> > > > Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > > ---\n> > > >  src/libcamera/control_ids.yaml | 38\n> ++++++++++++++++++++++++++++++++++\n> > > >  1 file changed, 38 insertions(+)\n> > > >\n> > > > diff --git a/src/libcamera/control_ids.yaml\n> b/src/libcamera/control_ids.yaml\n> > > > index 6d6f0fee..d1240beb 100644\n> > > > --- a/src/libcamera/control_ids.yaml\n> > > > +++ b/src/libcamera/control_ids.yaml\n> > > > @@ -306,6 +306,44 @@ controls:\n> > > >          maximum valid value is given by the\n> properties::ScalerCropMaximum\n> > > >          property, and the two can be used to implement digital zoom.\n> > > >\n> > > > +  - FrameDurations:\n> > > > +      type: int64_t\n> > > > +      description: |\n> > > > +          The minimum and maximum (in that order) frame duration,\n> > > > +          expressed in micro-seconds.\n> > >\n> > > s/micro-seconds/microseconds/\n> > >\n> > > (The indentation should be 2 spaces btw)\n> > >\n> > > > +\n> > > > +          When provided by applications, the control specifies the\n> sensor frame\n> > > > +          duration interval the pipeline has to use. This limits\n> the largest\n> > > > +          exposure time the sensor can use. For example, if a\n> maximum frame\n> > > > +          duration of 33ms is requested (corresponding to 30 frames\n> per second),\n> > > > +          the sensor will not be able to raise the exposure time\n> above 33ms.\n> > > > +          A fixed frame duration is achieved by setting the minimum\n> and maximum\n> > > > +          values to be the same. Setting both values to 0 reverts\n> to using the\n> > > > +          IPA provided defaults.\n> > > > +\n> > > > +          The maximum frame duration provides the absolute limit to\n> the shutter\n> > > > +          speed computed by the AE algorithm and it overrides any\n> exposure mode\n> > > > +          setting specified with controls::AeExposureMode.\n> Similarly, when a\n> > > > +          manual exposure time is set through\n> controls::ExposureTime, it also\n> > > > +          gets clipped to the limits set by this control.\n> > >\n> > > This looks good.\n> > >\n> > > >            When reported in\n> > > > +          metadata, the control expresses the minimum and maximum\n> frame\n> > > > +          durations used after being clipped to these limits.\n> > > > +\n> > >\n> > > But this sounds weird. The previous part states that FrameDurations has\n> > > higher priority than all other parameters, but then this sentence says\n> > > it's clipped by \"these limits\".\n> >\n> > You are right, this does not read correct.  I wanted to express that the\n> > frame durations provided may be further limited by what the sensor mode\n> can\n> > actually achieve.  How about replacing the above paragraph of text with\n> the\n> > following:\n> >\n> > When reported in metadata, the control expresses the minimum and maximum\n> > frame durations used after being clipped to the sensor provided frame\n> > duration limits.\n>\n> Sounds good to me.\n>\n> > > > +          \\sa AeExposureMode\n> > > > +          \\sa ExposureTime\n> > > > +\n> > > > +          \\todo Refer to the frame duration limits property to\n> describe how\n> > > > +          application-provided values gets clipped and reset.\n> > >\n> > > It hasn't been long, and the context is already starting to escape me.\n> > > Would it be possible to expand this just a little bit so that we'll\n> know\n> > > what it means in 3 months time ?\n> >\n> > Perhaps this makes more sense given the rewording above?  Or maybe a\n> reword\n> > as follows:\n> >\n> > \\todo Refer to the frame duration limits property to describe how\n> > application-provided values get clipped to what is supported by the\n> sensor\n> > mode.\n> >\n> > Hopefully that makes things more readable?\n>\n> Not quite I'm afraid, but maybe it's just too early in the morning :-)\n>\n> Is this about documenting how other properties also get clipped by the\n> sensor mode ? Or something else ?\n>\n\nIt's about how the frame durations are clipped by the sensor mode limits -\nas advertised by the sensor properties in the future.\nWe can remove this statement entirely if you do not think it's appropriate,\nor a rewording as follows:\n\n\\todo Refer to the frame duration limits property (when available) to\nobtain sensor\nmode limits used for clipping the application-provided values.\n\nRegards,\nNaush\n\n\n\n>\n> > > > +\n> > > > +          \\todo Define how to calculate the capture frame rate by\n> > > > +          defining controls to report additional delays introduced\n> by\n> > > > +          the capture pipeline or post-processing stages (ie JPEG\n> > > > +          conversion, frame scaling).\n> > > > +\n> > > > +          \\todo Provide an explicit definition of default control\n> values, for\n> > > > +          this and all other controls.\n> > > > +      size: [2]\n> > > > +\n> > > >    #\n> ----------------------------------------------------------------------------\n> > > >    # Draft controls section\n> > > >\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7C589BD80C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 14 Jan 2021 07:34:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id ED7AE680E1;\n\tThu, 14 Jan 2021 08:34:39 +0100 (CET)","from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com\n\t[IPv6:2a00:1450:4864:20::22c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 631396010B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 14 Jan 2021 08:34:38 +0100 (CET)","by mail-lj1-x22c.google.com with SMTP id p13so5391989ljg.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 13 Jan 2021 23:34:38 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"nSXVLJDB\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=uGWfTsalIllnCIBArZFC9+xOKI1Mos50YQVa6adOczg=;\n\tb=nSXVLJDBfz2mMjNy2/MohQYc9cvCwOipjt2nht93/oO8mKqERSIvpQ8gR1b0rg6lZs\n\tzTSGcBFZ/RDVN+ZYdsnx+S36qfDz5eNBfnOdrGk67iVzRkbw3BNYd8I+zQMyGRmyR8z2\n\twWzhGO9nVaTZ2F2psZ+LD3QEfNw0Lmt1W2Gr720QE9a+MbW0oOT2iTWtouiL+z3rG+Kv\n\tE7aC2B9fXJ/wSiXpH5jYp+pyxrGJkgQXDl1G3nJkatjD85vJCkB1QlcY+9Ut5btQu3ZG\n\thYk7ipSBRhzn6GANWUQHQLs6RRZyM/WNiW4eIDQj//3Sk/xJTHdf1hqII5Q5vsEmxQRn\n\t2f5A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=uGWfTsalIllnCIBArZFC9+xOKI1Mos50YQVa6adOczg=;\n\tb=ZPkMgnRvNYYWWE7yMkNzCmxq//4AMCV3bPvIhZZo/FG/M66iEO22a9xMQXWmkIY+n+\n\thG8muR9DJAd0oJO4JoSgihRRgpahdtpK1fFMSUn1KC9HXKPmSxJqTcyS2mACd/XIyvn3\n\tPgV+M0xq1OKi/ys5R9b2kAynSurTzU3dPWM5MBtOX7a9fYjCKYbiBEthN1J+xpHyB8iQ\n\tN/9r3lQFU79ID1DjIWJd/8yvgGH5OdAyWX4T+h405uDzwNE6HGE4fZTBR+gYSI1x/2Wh\n\tuIcGBxTNZKpzHNsTGa1UVMLzkxMJ/Mv2FMQIDp7bpEWAyfB14A07ubnAMmWpthcWPjs1\n\tZp0A==","X-Gm-Message-State":"AOAM530F4HybXTpiPV7eNAyossWPKsRvIkh9LNjNvZ0Z+eo2LXbBtC1i\n\tgd9SXcbI8CU3Q66tQD003jJuUrsW5b91FhZcu4myLcNZbOI=","X-Google-Smtp-Source":"ABdhPJwNdUTF6vXRMFfj8/8g87XGAANp8G5v6euQNFlhdpWgc6yw4fHIpgmqMjcZe1OuV7RayBXtHA+cFV+WowYabCg=","X-Received":"by 2002:a2e:93d6:: with SMTP id\n\tp22mr2617455ljh.169.1610609677478; \n\tWed, 13 Jan 2021 23:34:37 -0800 (PST)","MIME-Version":"1.0","References":"<20210106100659.8363-1-naush@raspberrypi.com>\n\t<20210106100659.8363-2-naush@raspberrypi.com>\n\t<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>\n\t<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>\n\t<X//eyB/yqwHK8lPK@pendragon.ideasonboard.com>","In-Reply-To":"<X//eyB/yqwHK8lPK@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Thu, 14 Jan 2021 07:34:20 +0000","Message-ID":"<CAEmqJPpF4cVTLf2-Zmb3gN48_qfdsUWNnssKNeZUULNC5x0YPQ@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"multipart/mixed;\n\tboundary=\"===============3678792757703028332==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14604,"web_url":"https://patchwork.libcamera.org/comment/14604/","msgid":"<20210119151600.e3fdaydqfmdcjscq@uno.localdomain>","date":"2021-01-19T15:16:00","subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Naush,\n\nOn Thu, Jan 14, 2021 at 07:34:20AM +0000, Naushir Patuck wrote:\n> Hi Laurent,\n>\n>\n> On Thu, 14 Jan 2021 at 06:04, Laurent Pinchart <\n> laurent.pinchart@ideasonboard.com> wrote:\n>\n> > Hi Naush,\n> >\n\n[snip]\n\n> > > >\n> > > > >            When reported in\n> > > > > +          metadata, the control expresses the minimum and maximum\n> > frame\n> > > > > +          durations used after being clipped to these limits.\n> > > > > +\n> > > >\n> > > > But this sounds weird. The previous part states that FrameDurations has\n> > > > higher priority than all other parameters, but then this sentence says\n> > > > it's clipped by \"these limits\".\n> > >\n> > > You are right, this does not read correct.  I wanted to express that the\n> > > frame durations provided may be further limited by what the sensor mode\n> > can\n> > > actually achieve.  How about replacing the above paragraph of text with\n> > the\n> > > following:\n> > >\n> > > When reported in metadata, the control expresses the minimum and maximum\n> > > frame durations used after being clipped to the sensor provided frame\n> > > duration limits.\n> >\n> > Sounds good to me.\n> >\n> > > > > +          \\sa AeExposureMode\n> > > > > +          \\sa ExposureTime\n> > > > > +\n> > > > > +          \\todo Refer to the frame duration limits property to\n> > describe how\n> > > > > +          application-provided values gets clipped and reset.\n> > > >\n> > > > It hasn't been long, and the context is already starting to escape me.\n> > > > Would it be possible to expand this just a little bit so that we'll\n> > know\n> > > > what it means in 3 months time ?\n> > >\n> > > Perhaps this makes more sense given the rewording above?  Or maybe a\n> > reword\n> > > as follows:\n> > >\n> > > \\todo Refer to the frame duration limits property to describe how\n> > > application-provided values get clipped to what is supported by the\n> > sensor\n> > > mode.\n> > >\n> > > Hopefully that makes things more readable?\n\nI know where this last statment came from, as I had a frame durations\nlimit property on its way. But as it has not been finalized, and I'm\ncurrently questioning if it is really required or not, can we drop\nthis last part so that the last obstacle for this series to be merged\nis removed ?\n\nThanks\n   j\n\n> >\n> > Not quite I'm afraid, but maybe it's just too early in the morning :-)\n> >\n> > Is this about documenting how other properties also get clipped by the\n> > sensor mode ? Or something else ?\n> >\n>\n> It's about how the frame durations are clipped by the sensor mode limits -\n> as advertised by the sensor properties in the future.\n> We can remove this statement entirely if you do not think it's appropriate,\n> or a rewording as follows:\n>\n> \\todo Refer to the frame duration limits property (when available) to\n> obtain sensor\n> mode limits used for clipping the application-provided values.\n>\n> Regards,\n> Naush\n>\n>\n>\n> >\n> > > > > +\n> > > > > +          \\todo Define how to calculate the capture frame rate by\n> > > > > +          defining controls to report additional delays introduced\n> > by\n> > > > > +          the capture pipeline or post-processing stages (ie JPEG\n> > > > > +          conversion, frame scaling).\n> > > > > +\n> > > > > +          \\todo Provide an explicit definition of default control\n> > values, for\n> > > > > +          this and all other controls.\n> > > > > +      size: [2]\n> > > > > +\n> > > > >    #\n> > ----------------------------------------------------------------------------\n> > > > >    # Draft controls section\n> > > > >\n> >\n> > --\n> > Regards,\n> >\n> > Laurent Pinchart\n> >\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 AFCF0C0F1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 19 Jan 2021 15:15:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 19BBB68151;\n\tTue, 19 Jan 2021 16:15:44 +0100 (CET)","from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net\n\t[217.70.183.200])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 333E56814B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 Jan 2021 16:15:43 +0100 (CET)","from uno.localdomain (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay7-d.mail.gandi.net (Postfix) with ESMTPSA id 872E620002;\n\tTue, 19 Jan 2021 15:15:42 +0000 (UTC)"],"X-Originating-IP":"93.61.96.190","Date":"Tue, 19 Jan 2021 16:16:00 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<20210119151600.e3fdaydqfmdcjscq@uno.localdomain>","References":"<20210106100659.8363-1-naush@raspberrypi.com>\n\t<20210106100659.8363-2-naush@raspberrypi.com>\n\t<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>\n\t<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>\n\t<X//eyB/yqwHK8lPK@pendragon.ideasonboard.com>\n\t<CAEmqJPpF4cVTLf2-Zmb3gN48_qfdsUWNnssKNeZUULNC5x0YPQ@mail.gmail.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPpF4cVTLf2-Zmb3gN48_qfdsUWNnssKNeZUULNC5x0YPQ@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14605,"web_url":"https://patchwork.libcamera.org/comment/14605/","msgid":"<CAEmqJPogkvm7tvbzSxixsAh0n5vxSkXRBZNjdtceFYS3r5PkgQ@mail.gmail.com>","date":"2021-01-19T15:23:14","subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Jacopo,\n\n\nOn Tue, 19 Jan 2021 at 15:15, Jacopo Mondi <jacopo@jmondi.org> wrote:\n\n> Hi Naush,\n>\n> On Thu, Jan 14, 2021 at 07:34:20AM +0000, Naushir Patuck wrote:\n> > Hi Laurent,\n> >\n> >\n> > On Thu, 14 Jan 2021 at 06:04, Laurent Pinchart <\n> > laurent.pinchart@ideasonboard.com> wrote:\n> >\n> > > Hi Naush,\n> > >\n>\n> [snip]\n>\n> > > > >\n> > > > > >            When reported in\n> > > > > > +          metadata, the control expresses the minimum and\n> maximum\n> > > frame\n> > > > > > +          durations used after being clipped to these limits.\n> > > > > > +\n> > > > >\n> > > > > But this sounds weird. The previous part states that\n> FrameDurations has\n> > > > > higher priority than all other parameters, but then this sentence\n> says\n> > > > > it's clipped by \"these limits\".\n> > > >\n> > > > You are right, this does not read correct.  I wanted to express that\n> the\n> > > > frame durations provided may be further limited by what the sensor\n> mode\n> > > can\n> > > > actually achieve.  How about replacing the above paragraph of text\n> with\n> > > the\n> > > > following:\n> > > >\n> > > > When reported in metadata, the control expresses the minimum and\n> maximum\n> > > > frame durations used after being clipped to the sensor provided frame\n> > > > duration limits.\n> > >\n> > > Sounds good to me.\n> > >\n> > > > > > +          \\sa AeExposureMode\n> > > > > > +          \\sa ExposureTime\n> > > > > > +\n> > > > > > +          \\todo Refer to the frame duration limits property to\n> > > describe how\n> > > > > > +          application-provided values gets clipped and reset.\n> > > > >\n> > > > > It hasn't been long, and the context is already starting to escape\n> me.\n> > > > > Would it be possible to expand this just a little bit so that we'll\n> > > know\n> > > > > what it means in 3 months time ?\n> > > >\n> > > > Perhaps this makes more sense given the rewording above?  Or maybe a\n> > > reword\n> > > > as follows:\n> > > >\n> > > > \\todo Refer to the frame duration limits property to describe how\n> > > > application-provided values get clipped to what is supported by the\n> > > sensor\n> > > > mode.\n> > > >\n> > > > Hopefully that makes things more readable?\n>\n> I know where this last statment came from, as I had a frame durations\n> limit property on its way. But as it has not been finalized, and I'm\n> currently questioning if it is really required or not, can we drop\n> this last part so that the last obstacle for this series to be merged\n> is removed ?\n>\n\nYes, I am fine with removing this todo statement if this property is not\nconfirmed to be introduced.  I will post an update with it removed, as well\nas the previous wording changes as discussed with Laurent.  Hopefully it\nshould then be good for merging.\n\nRegards,\nNaush\n\n\n\n>\n> Thanks\n>    j\n>\n> > >\n> > > Not quite I'm afraid, but maybe it's just too early in the morning :-)\n> > >\n> > > Is this about documenting how other properties also get clipped by the\n> > > sensor mode ? Or something else ?\n> > >\n> >\n> > It's about how the frame durations are clipped by the sensor mode limits\n> -\n> > as advertised by the sensor properties in the future.\n> > We can remove this statement entirely if you do not think it's\n> appropriate,\n> > or a rewording as follows:\n> >\n> > \\todo Refer to the frame duration limits property (when available) to\n> > obtain sensor\n> > mode limits used for clipping the application-provided values.\n> >\n> > Regards,\n> > Naush\n> >\n> >\n> >\n> > >\n> > > > > > +\n> > > > > > +          \\todo Define how to calculate the capture frame rate\n> by\n> > > > > > +          defining controls to report additional delays\n> introduced\n> > > by\n> > > > > > +          the capture pipeline or post-processing stages (ie\n> JPEG\n> > > > > > +          conversion, frame scaling).\n> > > > > > +\n> > > > > > +          \\todo Provide an explicit definition of default\n> control\n> > > values, for\n> > > > > > +          this and all other controls.\n> > > > > > +      size: [2]\n> > > > > > +\n> > > > > >    #\n> > >\n> ----------------------------------------------------------------------------\n> > > > > >    # Draft controls section\n> > > > > >\n> > >\n> > > --\n> > > Regards,\n> > >\n> > > Laurent Pinchart\n> > >\n>\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel\n>\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D29BBBD808\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 19 Jan 2021 15:23:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 497046815E;\n\tTue, 19 Jan 2021 16:23:33 +0100 (CET)","from mail-lj1-x234.google.com (mail-lj1-x234.google.com\n\t[IPv6:2a00:1450:4864:20::234])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1001F6814B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 Jan 2021 16:23:31 +0100 (CET)","by mail-lj1-x234.google.com with SMTP id u11so22293998ljo.13\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 Jan 2021 07:23:31 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"NE+iSmiF\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=yVAtVXvVXlL8zRE2dMfPEOUm45O0FmM/VCLylDaaGUY=;\n\tb=NE+iSmiF7sJFioNmcSoR7ThuqzMKeSpTeOGPFdgp8T+wDvH6T9DB65vNExYgg2tCUF\n\tbYdD18gvHCMJkMpWXX8sSa8bBBo/wKzoa8bIXOvCbxLO6e80map0WcgibUTYz5b+b3GL\n\tPzj64AINoWxzy6Vtv7I8UrN3uku1epCdZnJw8WnFKgPLhr0IfT6edvMGtK9S5wC+5UPV\n\t/wURa0/2Mwjv/EfX5gcvYoVsTeMKeW0MCJe/xCFN64wxWKHTtgAWAXDBvuis7yHiEde+\n\t3+Uo1I1SJwP20fX3Y42Ot8ULvJZnmaJARuJEBITX/tMBOtUp27/+BoK7KtFVTjcmvMar\n\t3KHA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=yVAtVXvVXlL8zRE2dMfPEOUm45O0FmM/VCLylDaaGUY=;\n\tb=KumoyZdG0Kx+dGLarS98oTwWmU3kNDQxGMD+QGiXduyozfgsPwlywmpy2VEYnoVUNI\n\t98A2iw85R+YCDnHt5zHjl35+6rutM0YWPeY2/JYpELXyHFW8Gr/Xf510LapgLM1D7mvW\n\tOPzinfIRTooFJja77rODh4Tevw5h5jkaWcCj0T2oTCi5A3X7LH4jcaAVthOUk/FgFrDb\n\trEVXPjpRJUqjpbDkBohvsG/xJRlXvUsctU06nEnY4gg/MUUKZ2ZkxNSM24Lz1fNkvA9/\n\tl9P1k+JNYj9kJY/OKWpAv0AoSF0rWj3trtu0iijjO4yyqmzIS/8Jdx8f3OJWzZhSUwTf\n\t6pCg==","X-Gm-Message-State":"AOAM53183TW3RhubHUTGw8x/M/o+0NdAIJIN5AiAjJv8XvLlUgtYlTOU\n\t3aNm2retujxTKh3Pdxi/YdHkH7UQdw10tKu5YMDzfw==","X-Google-Smtp-Source":"ABdhPJy/0ahkascfDmreDY/yC2tBacXy7a0HAe+rwkGkVM+EQdgahHhV3MRoFXNj53GySZhi8R0NLFdF3NAycoewm9g=","X-Received":"by 2002:a05:651c:544:: with SMTP id\n\tq4mr2056348ljp.253.1611069810201; \n\tTue, 19 Jan 2021 07:23:30 -0800 (PST)","MIME-Version":"1.0","References":"<20210106100659.8363-1-naush@raspberrypi.com>\n\t<20210106100659.8363-2-naush@raspberrypi.com>\n\t<X/zaNdq+2nUH3cL8@pendragon.ideasonboard.com>\n\t<CAEmqJPoB_1vV-yg=LQKxkWzh8+NhxPUVoBBteZjvnWaCy6fyrQ@mail.gmail.com>\n\t<X//eyB/yqwHK8lPK@pendragon.ideasonboard.com>\n\t<CAEmqJPpF4cVTLf2-Zmb3gN48_qfdsUWNnssKNeZUULNC5x0YPQ@mail.gmail.com>\n\t<20210119151600.e3fdaydqfmdcjscq@uno.localdomain>","In-Reply-To":"<20210119151600.e3fdaydqfmdcjscq@uno.localdomain>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 19 Jan 2021 15:23:14 +0000","Message-ID":"<CAEmqJPogkvm7tvbzSxixsAh0n5vxSkXRBZNjdtceFYS3r5PkgQ@mail.gmail.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH v11 1/3] libcamera: controls: Add\n\tframe duration control","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Content-Type":"multipart/mixed;\n\tboundary=\"===============8029440479356606395==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]