[{"id":11569,"web_url":"https://patchwork.libcamera.org/comment/11569/","msgid":"<20200724160715.GJ5921@pendragon.ideasonboard.com>","date":"2020-07-24T16:07:15","subject":"Re: [libcamera-devel] [PATCH 6/6] android: camera_device: Fix\n\tpreview template","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nThank you for the patch.\n\nOn Fri, Jul 24, 2020 at 04:21:20PM +0200, Jacopo Mondi wrote:\n> Add 5 controls to the generate preview template to comply with the\n> camera3 specification.\n> \n> This change fixes CTS 9.0.r12 test [14/253]\n> android.hardware.camera2.cts.CameraDeviceTest#testCameraDevicePreviewTemplate\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/android/camera_device.cpp | 32 +++++++++++++++++++++++++++++---\n>  1 file changed, 29 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index b8cb118a960e..58901a119c18 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -377,7 +377,7 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()\n>  \t * Currently: 50 entries, 647 bytes of static metadata\n>  \t */\n>  \tuint32_t numEntries = 50;\n> -\tuint32_t byteSize = 647;\n> +\tuint32_t byteSize = 667;\n>  \n>  \t/*\n>  \t * Calculate space occupation in bytes for dynamically built metadata\n> @@ -779,6 +779,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n>  \t\tANDROID_CONTROL_AE_MODE,\n>  \t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n>  \t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n>  \t\tANDROID_CONTROL_AE_LOCK,\n>  \t\tANDROID_CONTROL_AF_TRIGGER,\n>  \t\tANDROID_CONTROL_AWB_MODE,\n> @@ -787,6 +789,9 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n>  \t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n>  \t\tANDROID_NOISE_REDUCTION_MODE,\n>  \t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> +\t\tANDROID_LENS_APERTURE,\n> +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> +\t\tANDROID_CONTROL_MODE,\n>  \t\tANDROID_CONTROL_CAPTURE_INTENT,\n>  \t};\n>  \tstaticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,\n> @@ -825,9 +830,9 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n>  {\n>  \t/*\n>  \t * \\todo Keep this in sync with the actual number of entries.\n> -\t * Currently: 12 entries, 15 bytes\n> +\t * Currently: 20 entries, 35 bytes\n>  \t */\n> -\tCameraMetadata *requestTemplate = new CameraMetadata(15, 20);\n> +\tCameraMetadata *requestTemplate = new CameraMetadata(20, 35);\n\nIt's lovely how (15, 20) didn't match the comment :-) I'll be happy when\nwe'll get a better API.\n\n>  \tif (!requestTemplate->isValid())\n>  \t\treturn nullptr;\n>  \n> @@ -847,6 +852,17 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n>  \trequestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK,\n>  \t\t\t\t  &aeLock, 1);\n>  \n> +\tstd::vector<int32_t> aeFpsTarget = {\n> +\t\t15, 30,\n> +\t};\n> +\trequestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> +\t\t\t\t  aeFpsTarget.data(),\n> +\t\t\t\t  aeFpsTarget.size());\n> +\n> +\tuint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;\n\nShould we report OFF instead, as we don't support antibanding at the\nmoment ?\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\trequestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> +\t\t\t\t  &aeAntibandingMode, 1);\n> +\n>  \tuint8_t afTrigger = ANDROID_CONTROL_AF_TRIGGER_IDLE;\n>  \trequestTemplate->addEntry(ANDROID_CONTROL_AF_TRIGGER,\n>  \t\t\t\t  &afTrigger, 1);\n> @@ -875,6 +891,16 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n>  \trequestTemplate->addEntry(ANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n>  \t\t\t\t  &aberrationMode, 1);\n>  \n> +\tuint8_t controlMode = ANDROID_CONTROL_MODE_AUTO;\n> +\trequestTemplate->addEntry(ANDROID_CONTROL_MODE, &controlMode, 1);\n> +\n> +\tfloat lensAperture = 2.53 / 100;\n> +\trequestTemplate->addEntry(ANDROID_LENS_APERTURE, &lensAperture, 1);\n> +\n> +\tuint8_t opticalStabilization = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;\n> +\trequestTemplate->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> +\t\t\t\t  &opticalStabilization, 1);\n> +\n>  \tuint8_t captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n>  \trequestTemplate->addEntry(ANDROID_CONTROL_CAPTURE_INTENT,\n>  \t\t\t\t  &captureIntent, 1);","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 2B8CCBD878\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 24 Jul 2020 16:07:24 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A66B261218;\n\tFri, 24 Jul 2020 18:07:23 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 581B6605B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 24 Jul 2020 18:07:22 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id C6106538;\n\tFri, 24 Jul 2020 18:07:21 +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=\"kXsACy76\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1595606842;\n\tbh=Ed02t0vCe6frtuBvvtHw7wm/yUn7ZhHKhb9oyE6UjAQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=kXsACy76Fs0BWXCRhg8B7LrT0xHMfCgI6rgX5WWc8E91RIEjhw2Ou8JvLqxSPuNdX\n\tpE4+E7oI69rUM2TiitQnbCf30ykcMe6/mHdkTBW9Lzfyvh7w07sCHIFvzaHjX9DqNz\n\ti+X64D0q3Hm/Dv5C2L9d9Wi7nK4f+RAR3pJbVBjY=","Date":"Fri, 24 Jul 2020 19:07:15 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200724160715.GJ5921@pendragon.ideasonboard.com>","References":"<20200724142120.95538-1-jacopo@jmondi.org>\n\t<20200724142120.95538-7-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200724142120.95538-7-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 6/6] android: camera_device: Fix\n\tpreview template","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":11600,"web_url":"https://patchwork.libcamera.org/comment/11600/","msgid":"<20200725123652.d5eodsq3za23tgsu@uno.localdomain>","date":"2020-07-25T12:36:52","subject":"Re: [libcamera-devel] [PATCH 6/6] android: camera_device: Fix\n\tpreview template","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Fri, Jul 24, 2020 at 07:07:15PM +0300, Laurent Pinchart wrote:\n> Hi Jacopo,\n>\n> Thank you for the patch.\n>\n> On Fri, Jul 24, 2020 at 04:21:20PM +0200, Jacopo Mondi wrote:\n> > Add 5 controls to the generate preview template to comply with the\n> > camera3 specification.\n> >\n> > This change fixes CTS 9.0.r12 test [14/253]\n> > android.hardware.camera2.cts.CameraDeviceTest#testCameraDevicePreviewTemplate\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > ---\n> >  src/android/camera_device.cpp | 32 +++++++++++++++++++++++++++++---\n> >  1 file changed, 29 insertions(+), 3 deletions(-)\n> >\n> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > index b8cb118a960e..58901a119c18 100644\n> > --- a/src/android/camera_device.cpp\n> > +++ b/src/android/camera_device.cpp\n> > @@ -377,7 +377,7 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()\n> >  \t * Currently: 50 entries, 647 bytes of static metadata\n> >  \t */\n> >  \tuint32_t numEntries = 50;\n> > -\tuint32_t byteSize = 647;\n> > +\tuint32_t byteSize = 667;\n> >\n> >  \t/*\n> >  \t * Calculate space occupation in bytes for dynamically built metadata\n> > @@ -779,6 +779,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n> >  \t\tANDROID_CONTROL_AE_MODE,\n> >  \t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n> >  \t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> > +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> > +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> >  \t\tANDROID_CONTROL_AE_LOCK,\n> >  \t\tANDROID_CONTROL_AF_TRIGGER,\n> >  \t\tANDROID_CONTROL_AWB_MODE,\n> > @@ -787,6 +789,9 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n> >  \t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n> >  \t\tANDROID_NOISE_REDUCTION_MODE,\n> >  \t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> > +\t\tANDROID_LENS_APERTURE,\n> > +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> > +\t\tANDROID_CONTROL_MODE,\n> >  \t\tANDROID_CONTROL_CAPTURE_INTENT,\n> >  \t};\n> >  \tstaticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,\n> > @@ -825,9 +830,9 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n> >  {\n> >  \t/*\n> >  \t * \\todo Keep this in sync with the actual number of entries.\n> > -\t * Currently: 12 entries, 15 bytes\n> > +\t * Currently: 20 entries, 35 bytes\n> >  \t */\n> > -\tCameraMetadata *requestTemplate = new CameraMetadata(15, 20);\n> > +\tCameraMetadata *requestTemplate = new CameraMetadata(20, 35);\n>\n> It's lovely how (15, 20) didn't match the comment :-) I'll be happy when\n> we'll get a better API.\n>\n\nIt's a real pain, yes\n\n> >  \tif (!requestTemplate->isValid())\n> >  \t\treturn nullptr;\n> >\n> > @@ -847,6 +852,17 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n> >  \trequestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK,\n> >  \t\t\t\t  &aeLock, 1);\n> >\n> > +\tstd::vector<int32_t> aeFpsTarget = {\n> > +\t\t15, 30,\n> > +\t};\n> > +\trequestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> > +\t\t\t\t  aeFpsTarget.data(),\n> > +\t\t\t\t  aeFpsTarget.size());\n> > +\n> > +\tuint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;\n>\n> Should we report OFF instead, as we don't support antibanding at the\n> moment ?\n\nCTS complains if I report OFF.\n\nI'm not sure I got why, as we report OFF in the available anti-banding\nmodes reported with ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES.\n\nI think I'll stick with AUTO for the moment.\n\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> > +\trequestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> > +\t\t\t\t  &aeAntibandingMode, 1);\n> > +\n> >  \tuint8_t afTrigger = ANDROID_CONTROL_AF_TRIGGER_IDLE;\n> >  \trequestTemplate->addEntry(ANDROID_CONTROL_AF_TRIGGER,\n> >  \t\t\t\t  &afTrigger, 1);\n> > @@ -875,6 +891,16 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n> >  \trequestTemplate->addEntry(ANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> >  \t\t\t\t  &aberrationMode, 1);\n> >\n> > +\tuint8_t controlMode = ANDROID_CONTROL_MODE_AUTO;\n> > +\trequestTemplate->addEntry(ANDROID_CONTROL_MODE, &controlMode, 1);\n> > +\n> > +\tfloat lensAperture = 2.53 / 100;\n> > +\trequestTemplate->addEntry(ANDROID_LENS_APERTURE, &lensAperture, 1);\n> > +\n> > +\tuint8_t opticalStabilization = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;\n> > +\trequestTemplate->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> > +\t\t\t\t  &opticalStabilization, 1);\n> > +\n> >  \tuint8_t captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n> >  \trequestTemplate->addEntry(ANDROID_CONTROL_CAPTURE_INTENT,\n> >  \t\t\t\t  &captureIntent, 1);\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 4CA25BD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 25 Jul 2020 12:33:17 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C122961253;\n\tSat, 25 Jul 2020 14:33:16 +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 A7AB861223\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 25 Jul 2020 14:33:15 +0200 (CEST)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id EC0A8100005;\n\tSat, 25 Jul 2020 12:33:14 +0000 (UTC)"],"Date":"Sat, 25 Jul 2020 14:36:52 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20200725123652.d5eodsq3za23tgsu@uno.localdomain>","References":"<20200724142120.95538-1-jacopo@jmondi.org>\n\t<20200724142120.95538-7-jacopo@jmondi.org>\n\t<20200724160715.GJ5921@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200724160715.GJ5921@pendragon.ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 6/6] android: camera_device: Fix\n\tpreview template","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":11612,"web_url":"https://patchwork.libcamera.org/comment/11612/","msgid":"<20200727001823.GP28704@pendragon.ideasonboard.com>","date":"2020-07-27T00:18:23","subject":"Re: [libcamera-devel] [PATCH 6/6] android: camera_device: Fix\n\tpreview template","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Sat, Jul 25, 2020 at 02:36:52PM +0200, Jacopo Mondi wrote:\n> On Fri, Jul 24, 2020 at 07:07:15PM +0300, Laurent Pinchart wrote:\n> > On Fri, Jul 24, 2020 at 04:21:20PM +0200, Jacopo Mondi wrote:\n> > > Add 5 controls to the generate preview template to comply with the\n> > > camera3 specification.\n> > >\n> > > This change fixes CTS 9.0.r12 test [14/253]\n> > > android.hardware.camera2.cts.CameraDeviceTest#testCameraDevicePreviewTemplate\n> > >\n> > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > > ---\n> > >  src/android/camera_device.cpp | 32 +++++++++++++++++++++++++++++---\n> > >  1 file changed, 29 insertions(+), 3 deletions(-)\n> > >\n> > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > > index b8cb118a960e..58901a119c18 100644\n> > > --- a/src/android/camera_device.cpp\n> > > +++ b/src/android/camera_device.cpp\n> > > @@ -377,7 +377,7 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()\n> > >  \t * Currently: 50 entries, 647 bytes of static metadata\n> > >  \t */\n> > >  \tuint32_t numEntries = 50;\n> > > -\tuint32_t byteSize = 647;\n> > > +\tuint32_t byteSize = 667;\n> > >\n> > >  \t/*\n> > >  \t * Calculate space occupation in bytes for dynamically built metadata\n> > > @@ -779,6 +779,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n> > >  \t\tANDROID_CONTROL_AE_MODE,\n> > >  \t\tANDROID_CONTROL_AE_EXPOSURE_COMPENSATION,\n> > >  \t\tANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,\n> > > +\t\tANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> > > +\t\tANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> > >  \t\tANDROID_CONTROL_AE_LOCK,\n> > >  \t\tANDROID_CONTROL_AF_TRIGGER,\n> > >  \t\tANDROID_CONTROL_AWB_MODE,\n> > > @@ -787,6 +789,9 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n> > >  \t\tANDROID_STATISTICS_FACE_DETECT_MODE,\n> > >  \t\tANDROID_NOISE_REDUCTION_MODE,\n> > >  \t\tANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> > > +\t\tANDROID_LENS_APERTURE,\n> > > +\t\tANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> > > +\t\tANDROID_CONTROL_MODE,\n> > >  \t\tANDROID_CONTROL_CAPTURE_INTENT,\n> > >  \t};\n> > >  \tstaticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS,\n> > > @@ -825,9 +830,9 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n> > >  {\n> > >  \t/*\n> > >  \t * \\todo Keep this in sync with the actual number of entries.\n> > > -\t * Currently: 12 entries, 15 bytes\n> > > +\t * Currently: 20 entries, 35 bytes\n> > >  \t */\n> > > -\tCameraMetadata *requestTemplate = new CameraMetadata(15, 20);\n> > > +\tCameraMetadata *requestTemplate = new CameraMetadata(20, 35);\n> >\n> > It's lovely how (15, 20) didn't match the comment :-) I'll be happy when\n> > we'll get a better API.\n> \n> It's a real pain, yes\n> \n> > >  \tif (!requestTemplate->isValid())\n> > >  \t\treturn nullptr;\n> > >\n> > > @@ -847,6 +852,17 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n> > >  \trequestTemplate->addEntry(ANDROID_CONTROL_AE_LOCK,\n> > >  \t\t\t\t  &aeLock, 1);\n> > >\n> > > +\tstd::vector<int32_t> aeFpsTarget = {\n> > > +\t\t15, 30,\n> > > +\t};\n> > > +\trequestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n> > > +\t\t\t\t  aeFpsTarget.data(),\n> > > +\t\t\t\t  aeFpsTarget.size());\n> > > +\n> > > +\tuint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;\n> >\n> > Should we report OFF instead, as we don't support antibanding at the\n> > moment ?\n> \n> CTS complains if I report OFF.\n> \n> I'm not sure I got why, as we report OFF in the available anti-banding\n> modes reported with ANDROID_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES.\n\nI think it's due to\n\ncommit 9ecdbaf9b0f50dcb9bf456310415238b4767e59b\nAuthor: Yin-Chia Yeh <yinchiayeh@google.com>\nDate:   Tue Nov 25 11:56:01 2014 -0800\n\n    Camera2: update antibanding spec\n\n    Allow auto mode not always available. When auto is unavailable,\n    the default should be either 50HZ or 60HZ and both 50HZ and 60HZ\n    modes should be available.\n\n    Bug: 18503791\n    Change-Id: I32c99ca64fe53d2cef8caaedd4208357b24221bc\n\n(https://android.googlesource.com/platform/cts)\n\nIf auto mode isn't supported, CTS requires manual mode to be supported.\nIt's actually documented in platform/system/media/camera/docs/docs.html:\n\n\"AUTO mode is the default if it is available on given camera device. When\nAUTO mode is not available, the default will be either 50HZ or 60HZ, and\nboth 50HZ and 60HZ will be available.\"\n\n> I think I'll stick with AUTO for the moment.\n\nIf we mandate support of anti-banding in IPAs, it will be easier to\nimplement manual mode and auto mode. Should we start by exposing manual\nmode ?\n\n> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> >\n> > > +\trequestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,\n> > > +\t\t\t\t  &aeAntibandingMode, 1);\n> > > +\n> > >  \tuint8_t afTrigger = ANDROID_CONTROL_AF_TRIGGER_IDLE;\n> > >  \trequestTemplate->addEntry(ANDROID_CONTROL_AF_TRIGGER,\n> > >  \t\t\t\t  &afTrigger, 1);\n> > > @@ -875,6 +891,16 @@ const CameraMetadata *CameraDevice::captureTemplatePreview()\n> > >  \trequestTemplate->addEntry(ANDROID_COLOR_CORRECTION_ABERRATION_MODE,\n> > >  \t\t\t\t  &aberrationMode, 1);\n> > >\n> > > +\tuint8_t controlMode = ANDROID_CONTROL_MODE_AUTO;\n> > > +\trequestTemplate->addEntry(ANDROID_CONTROL_MODE, &controlMode, 1);\n> > > +\n> > > +\tfloat lensAperture = 2.53 / 100;\n> > > +\trequestTemplate->addEntry(ANDROID_LENS_APERTURE, &lensAperture, 1);\n> > > +\n> > > +\tuint8_t opticalStabilization = ANDROID_LENS_OPTICAL_STABILIZATION_MODE_OFF;\n> > > +\trequestTemplate->addEntry(ANDROID_LENS_OPTICAL_STABILIZATION_MODE,\n> > > +\t\t\t\t  &opticalStabilization, 1);\n> > > +\n> > >  \tuint8_t captureIntent = ANDROID_CONTROL_CAPTURE_INTENT_PREVIEW;\n> > >  \trequestTemplate->addEntry(ANDROID_CONTROL_CAPTURE_INTENT,\n> > >  \t\t\t\t  &captureIntent, 1);","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 3E68EBD86F\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 27 Jul 2020 00:18:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BDA7661247;\n\tMon, 27 Jul 2020 02:18:32 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CEB1260399\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 27 Jul 2020 02:18:31 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CAB30304;\n\tMon, 27 Jul 2020 02:18:30 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"UaNkw2m0\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1595809111;\n\tbh=HN9jxggT9KSkvy43Epbp0/pJZNHaEilAVPVSpe6paJU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=UaNkw2m0oCXEgg3LX6YdQTEwwSLttHLIUqmE64xCjUyC1Wxr1qu3lPrWN+g/iRv5H\n\teLPYgWlbQDrwOu/qRBhG9sDQUniltvwxw0ri1WH941fE01us7k5Cd8RbPaKuExNZ+2\n\t704ciP6lCFbu/9F7tXbdfoeAv6NddBJJ4SZPp6wY=","Date":"Mon, 27 Jul 2020 03:18:23 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200727001823.GP28704@pendragon.ideasonboard.com>","References":"<20200724142120.95538-1-jacopo@jmondi.org>\n\t<20200724142120.95538-7-jacopo@jmondi.org>\n\t<20200724160715.GJ5921@pendragon.ideasonboard.com>\n\t<20200725123652.d5eodsq3za23tgsu@uno.localdomain>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200725123652.d5eodsq3za23tgsu@uno.localdomain>","Subject":"Re: [libcamera-devel] [PATCH 6/6] android: camera_device: Fix\n\tpreview template","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>"}}]