[{"id":19024,"web_url":"https://patchwork.libcamera.org/comment/19024/","msgid":"<YSQ+RAHxHrDA23Gm@pendragon.ideasonboard.com>","date":"2021-08-24T00:33:08","subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Mon, Aug 23, 2021 at 07:32:58PM +0900, Paul Elder wrote:\n> In the manual sensor capability validator, add a check for the exposure\n> time range.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  src/android/camera_capabilities.cpp | 22 ++++++++++++++++++++++\n>  1 file changed, 22 insertions(+)\n> \n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index bd661675..5b560b4f 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -217,6 +217,8 @@ std::vector<U> setMetadata(CameraMetadata *metadata, uint32_t tag,\n>  \n>  bool CameraCapabilities::validateManualSensorCapability()\n>  {\n> +\tcamera_metadata_ro_entry_t entry;\n> +\n>  \tconst char *noMode = \"Manual sensor capability unavailable: \";\n>  \n>  \tif (!staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AE_AVAILABLE_MODES,\n> @@ -231,6 +233,26 @@ bool CameraCapabilities::validateManualSensorCapability()\n>  \t\treturn false;\n>  \t}\n>  \n> +\tif (!staticMetadata_->hasEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE)) {\n> +\t\tLOG(HAL, Info) << noMode << \"missing exposure time range\";\n> +\t\treturn false;\n> +\t}\n> +\n> +\tstaticMetadata_->getEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE, &entry);\n> +\tif (100000 < entry.data.i32[0]) {\n\nYou know that C++ has a > operator ? :-) It would match the following\ntext:\n\n\tif (is larger than 100us)\n\t\t\"must be no larger than 100\";\n\nWith this addressed,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t\tLOG(HAL, Info)\n> +\t\t\t<< noMode\n> +\t\t\t<< \"exposure time range minimum must be no larger than 100us\";\n> +\t\treturn false;\n> +\t}\n> +\n> +\tif (entry.data.i32[1] < 100000000) {\n> +\t\tLOG(HAL, Info)\n> +\t\t\t<< noMode\n> +\t\t\t<< \"exposure time range maximum must be no smaller than 100ms\";\n> +\t\treturn false;\n> +\t}\n> +\n>  \t/*\n>  \t * \\todo Return true here after we satisfy all the requirements:\n>  \t * https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR","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 1104DBD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 24 Aug 2021 00:33:20 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8D355688A3;\n\tTue, 24 Aug 2021 02:33:19 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DDE9D68890\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 24 Aug 2021 02:33:18 +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 58AB72A5;\n\tTue, 24 Aug 2021 02:33:18 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"QaHCuLds\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1629765198;\n\tbh=pqDZgsd6nsCMD1u/ct/5GrSuUT8r2yJz0oHFam57ekE=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=QaHCuLdstbXB7mU+kMhqzq/Ix5iI14CXpv+SHOqyAGq/HZNy1AsE7+vVs81dzNsU1\n\tdZT+QmBjUUDWaZB1TccLRjtbZYrWb86l1yTqpbxd8u0AWqerAa7DWS5Mt5rHrjIg0g\n\t/umHydrQRe2qRJblAKeTzcpIQkNhptDMaSFfgBVU=","Date":"Tue, 24 Aug 2021 03:33:08 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YSQ+RAHxHrDA23Gm@pendragon.ideasonboard.com>","References":"<20210823103258.1583287-1-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210823103258.1583287-1-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":19040,"web_url":"https://patchwork.libcamera.org/comment/19040/","msgid":"<20210825090222.zqmsosg3ngywspkx@uno.localdomain>","date":"2021-08-25T09:02:22","subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Mon, Aug 23, 2021 at 07:32:58PM +0900, Paul Elder wrote:\n> In the manual sensor capability validator, add a check for the exposure\n> time range.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  src/android/camera_capabilities.cpp | 22 ++++++++++++++++++++++\n>  1 file changed, 22 insertions(+)\n>\n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index bd661675..5b560b4f 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -217,6 +217,8 @@ std::vector<U> setMetadata(CameraMetadata *metadata, uint32_t tag,\n>\n>  bool CameraCapabilities::validateManualSensorCapability()\n>  {\n> +\tcamera_metadata_ro_entry_t entry;\n> +\n>  \tconst char *noMode = \"Manual sensor capability unavailable: \";\n>\n>  \tif (!staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AE_AVAILABLE_MODES,\n> @@ -231,6 +233,26 @@ bool CameraCapabilities::validateManualSensorCapability()\n>  \t\treturn false;\n>  \t}\n>\n> +\tif (!staticMetadata_->hasEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE)) {\n> +\t\tLOG(HAL, Info) << noMode << \"missing exposure time range\";\n> +\t\treturn false;\n> +\t}\n> +\n> +\tstaticMetadata_->getEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE, &entry);\n> +\tif (100000 < entry.data.i32[0]) {\n> +\t\tLOG(HAL, Info)\n> +\t\t\t<< noMode\n> +\t\t\t<< \"exposure time range minimum must be no larger than 100us\";\n> +\t\treturn false;\n> +\t}\n> +\n> +\tif (entry.data.i32[1] < 100000000) {\n> +\t\tLOG(HAL, Info)\n> +\t\t\t<< noMode\n> +\t\t\t<< \"exposure time range maximum must be no smaller than 100ms\";\n> +\t\treturn false;\n> +\t}\n> +\n\nWhy I don't see such requirement for MANUAL_SENSOR capability\ndescription, but rather in the FULL level description only ?\n\nandroid.sensor.info.exposureTimeRange:\nFor FULL capability devices (android.info.supportedHardwareLevel ==\nFULL),The maximum of the range SHOULD be at least 1 second (1e9), MUST\nbe at least 100ms.\n\n>  \t/*\n>  \t * \\todo Return true here after we satisfy all the requirements:\n>  \t * https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR\n> --\n> 2.27.0\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 14560BD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Aug 2021 09:01:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 91400688A3;\n\tWed, 25 Aug 2021 11:01:36 +0200 (CEST)","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 D092660259\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Aug 2021 11:01:34 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay7-d.mail.gandi.net (Postfix) with ESMTPSA id 2007C20006;\n\tWed, 25 Aug 2021 09:01:33 +0000 (UTC)"],"Date":"Wed, 25 Aug 2021 11:02:22 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20210825090222.zqmsosg3ngywspkx@uno.localdomain>","References":"<20210823103258.1583287-1-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210823103258.1583287-1-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":19118,"web_url":"https://patchwork.libcamera.org/comment/19118/","msgid":"<20210827030247.GJ968527@pyrite.rasen.tech>","date":"2021-08-27T03:02:47","subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Wed, Aug 25, 2021 at 11:02:22AM +0200, Jacopo Mondi wrote:\n> Hi Paul,\n> \n> On Mon, Aug 23, 2021 at 07:32:58PM +0900, Paul Elder wrote:\n> > In the manual sensor capability validator, add a check for the exposure\n> > time range.\n> >\n> > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> > ---\n> >  src/android/camera_capabilities.cpp | 22 ++++++++++++++++++++++\n> >  1 file changed, 22 insertions(+)\n> >\n> > diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> > index bd661675..5b560b4f 100644\n> > --- a/src/android/camera_capabilities.cpp\n> > +++ b/src/android/camera_capabilities.cpp\n> > @@ -217,6 +217,8 @@ std::vector<U> setMetadata(CameraMetadata *metadata, uint32_t tag,\n> >\n> >  bool CameraCapabilities::validateManualSensorCapability()\n> >  {\n> > +\tcamera_metadata_ro_entry_t entry;\n> > +\n> >  \tconst char *noMode = \"Manual sensor capability unavailable: \";\n> >\n> >  \tif (!staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AE_AVAILABLE_MODES,\n> > @@ -231,6 +233,26 @@ bool CameraCapabilities::validateManualSensorCapability()\n> >  \t\treturn false;\n> >  \t}\n> >\n> > +\tif (!staticMetadata_->hasEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE)) {\n> > +\t\tLOG(HAL, Info) << noMode << \"missing exposure time range\";\n> > +\t\treturn false;\n> > +\t}\n> > +\n> > +\tstaticMetadata_->getEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE, &entry);\n> > +\tif (100000 < entry.data.i32[0]) {\n> > +\t\tLOG(HAL, Info)\n> > +\t\t\t<< noMode\n> > +\t\t\t<< \"exposure time range minimum must be no larger than 100us\";\n> > +\t\treturn false;\n> > +\t}\n> > +\n> > +\tif (entry.data.i32[1] < 100000000) {\n> > +\t\tLOG(HAL, Info)\n> > +\t\t\t<< noMode\n> > +\t\t\t<< \"exposure time range maximum must be no smaller than 100ms\";\n> > +\t\treturn false;\n> > +\t}\n> > +\n> \n> Why I don't see such requirement for MANUAL_SENSOR capability\n> description, but rather in the FULL level description only ?\n> \n> android.sensor.info.exposureTimeRange:\n> For FULL capability devices (android.info.supportedHardwareLevel ==\n> FULL),The maximum of the range SHOULD be at least 1 second (1e9), MUST\n> be at least 100ms.\n\nFrom what I saw [1], the first is an overall requirement, while the\nsecond is only a FULL requirement.\n\nThe minimum exposure time will be less than 100 us. For FULL capability\ndevices (android.info.supportedHardwareLevel == FULL), the maximum\nexposure time will be greater than 100\n\nSo can I assume that the first is satisfied? Or should we check it when\nit's set in the static metadata and reject it there?\n\nAlso I guess the checks should be \"or equal to\" :)\n\n[1] https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE\n\n\nThanks,\n\nPaul\n\n> \n> >  \t/*\n> >  \t * \\todo Return true here after we satisfy all the requirements:\n> >  \t * https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR\n> > --\n> > 2.27.0\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 2050EBD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 27 Aug 2021 03:02:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 96FE668928;\n\tFri, 27 Aug 2021 05:02:56 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 503A168920\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 27 Aug 2021 05:02:55 +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 DEE525A1;\n\tFri, 27 Aug 2021 05:02:53 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"tcJR/odW\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1630033374;\n\tbh=RVIXNY/8rs8MQm+GWshR5QTBUl6WM6mK8/2dVDt1m84=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=tcJR/odW8NVqlfIiv67h0jm+PGTNWL8rODBMjDX1eSzAhwfDonuVieYK/Okk/02Zw\n\twtoeQKmB2udsr0Akiu9S4qA0X+BM7xMplzbCefAUWosO9k4YZRfcuvn5+naizn0a2N\n\tjGuJ/n+UxgTjfMn715i/dWWnhpqbNlYvimsa6714=","Date":"Fri, 27 Aug 2021 12:02:47 +0900","From":"paul.elder@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20210827030247.GJ968527@pyrite.rasen.tech>","References":"<20210823103258.1583287-1-paul.elder@ideasonboard.com>\n\t<20210825090222.zqmsosg3ngywspkx@uno.localdomain>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20210825090222.zqmsosg3ngywspkx@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":19120,"web_url":"https://patchwork.libcamera.org/comment/19120/","msgid":"<20210827062813.t47on6hyh736p7rm@uno.localdomain>","date":"2021-08-27T06:28:13","subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Fri, Aug 27, 2021 at 12:02:47PM +0900, paul.elder@ideasonboard.com wrote:\n> Hi Jacopo,\n>\n> On Wed, Aug 25, 2021 at 11:02:22AM +0200, Jacopo Mondi wrote:\n> > Hi Paul,\n> >\n> > On Mon, Aug 23, 2021 at 07:32:58PM +0900, Paul Elder wrote:\n> > > In the manual sensor capability validator, add a check for the exposure\n> > > time range.\n> > >\n> > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> > > ---\n> > >  src/android/camera_capabilities.cpp | 22 ++++++++++++++++++++++\n> > >  1 file changed, 22 insertions(+)\n> > >\n> > > diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> > > index bd661675..5b560b4f 100644\n> > > --- a/src/android/camera_capabilities.cpp\n> > > +++ b/src/android/camera_capabilities.cpp\n> > > @@ -217,6 +217,8 @@ std::vector<U> setMetadata(CameraMetadata *metadata, uint32_t tag,\n> > >\n> > >  bool CameraCapabilities::validateManualSensorCapability()\n> > >  {\n> > > +\tcamera_metadata_ro_entry_t entry;\n> > > +\n> > >  \tconst char *noMode = \"Manual sensor capability unavailable: \";\n> > >\n> > >  \tif (!staticMetadata_->entryContains<uint8_t>(ANDROID_CONTROL_AE_AVAILABLE_MODES,\n> > > @@ -231,6 +233,26 @@ bool CameraCapabilities::validateManualSensorCapability()\n> > >  \t\treturn false;\n> > >  \t}\n> > >\n> > > +\tif (!staticMetadata_->hasEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE)) {\n> > > +\t\tLOG(HAL, Info) << noMode << \"missing exposure time range\";\n> > > +\t\treturn false;\n> > > +\t}\n> > > +\n> > > +\tstaticMetadata_->getEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE, &entry);\n> > > +\tif (100000 < entry.data.i32[0]) {\n> > > +\t\tLOG(HAL, Info)\n> > > +\t\t\t<< noMode\n> > > +\t\t\t<< \"exposure time range minimum must be no larger than 100us\";\n> > > +\t\treturn false;\n> > > +\t}\n> > > +\n> > > +\tif (entry.data.i32[1] < 100000000) {\n> > > +\t\tLOG(HAL, Info)\n> > > +\t\t\t<< noMode\n> > > +\t\t\t<< \"exposure time range maximum must be no smaller than 100ms\";\n> > > +\t\treturn false;\n> > > +\t}\n> > > +\n> >\n> > Why I don't see such requirement for MANUAL_SENSOR capability\n> > description, but rather in the FULL level description only ?\n> >\n> > android.sensor.info.exposureTimeRange:\n> > For FULL capability devices (android.info.supportedHardwareLevel ==\n> > FULL),The maximum of the range SHOULD be at least 1 second (1e9), MUST\n> > be at least 100ms.\n>\n> From what I saw [1], the first is an overall requirement, while the\n> second is only a FULL requirement.\n>\n> The minimum exposure time will be less than 100 us. For FULL capability\n> devices (android.info.supportedHardwareLevel == FULL), the maximum\n> exposure time will be greater than 100\n\nReading again this quotation, yes it seems the first is a generic\nrequirement.\n\n>\n> So can I assume that the first is satisfied? Or should we check it when\n> it's set in the static metadata and reject it there?\n\nI think it would be better verified at static metadata initialization\ntime ? What do you think ?\n\n\tconst auto &exposureInfo = controlsInfo.find(&controls::ExposureTime);\n\tif (exposureInfo != controlsInfo.end()) {\n\t\tint64_t exposureTimeRange[2] = {\n\t\t\texposureInfo->second.min().get<int32_t>() * 1000LL,\n\t\t\texposureInfo->second.max().get<int32_t>() * 1000LL,\n\n                        ---> HERE ?\n\t\t};\n\t\tstaticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,\n\t\t\t\t\t  exposureTimeRange, 2);\n\t}\n\nwhile the second requirement has to be verified when testing for FULL\nlevel support ?\n\nThanks\n   j\n\n>\n> Also I guess the checks should be \"or equal to\" :)\n>\n> [1] https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE\n>\n>\n> Thanks,\n>\n> Paul\n>\n> >\n> > >  \t/*\n> > >  \t * \\todo Return true here after we satisfy all the requirements:\n> > >  \t * https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR\n> > > --\n> > > 2.27.0\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 52C63BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 27 Aug 2021 06:27:27 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CD70668939;\n\tFri, 27 Aug 2021 08:27:26 +0200 (CEST)","from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[217.70.183.199])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 677DC60288\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 27 Aug 2021 08:27:25 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 95F7FFF80E;\n\tFri, 27 Aug 2021 06:27:24 +0000 (UTC)"],"Date":"Fri, 27 Aug 2021 08:28:13 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"paul.elder@ideasonboard.com","Message-ID":"<20210827062813.t47on6hyh736p7rm@uno.localdomain>","References":"<20210823103258.1583287-1-paul.elder@ideasonboard.com>\n\t<20210825090222.zqmsosg3ngywspkx@uno.localdomain>\n\t<20210827030247.GJ968527@pyrite.rasen.tech>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210827030247.GJ968527@pyrite.rasen.tech>","Subject":"Re: [libcamera-devel] [PATCH] android: Check exposure time range\n\tfor manual sensor capability","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","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]