{"id":11021,"url":"https://patchwork.libcamera.org/api/1.1/patches/11021/?format=json","web_url":"https://patchwork.libcamera.org/patch/11021/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20210126173008.446321-6-jacopo@jmondi.org>","date":"2021-01-26T17:30:07","name":"[libcamera-devel,v2,5/6] android: camera_device: Use AE FPS range in template","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"547c9ae89d845c12a8f7b25df84dedf27417a753","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/1.1/people/3/?format=json","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/11021/mbox/","series":[{"id":1612,"url":"https://patchwork.libcamera.org/api/1.1/series/1612/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1612","date":"2021-01-26T17:30:02","name":"android: Report frame durations","version":2,"mbox":"https://patchwork.libcamera.org/series/1612/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/11021/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/11021/checks/","tags":{},"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 6B139C0F2C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 26 Jan 2021 17:29:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2020868337;\n\tTue, 26 Jan 2021 18:29:58 +0100 (CET)","from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net\n\t[217.70.183.196])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0BD3768325\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Jan 2021 18:29:55 +0100 (CET)","from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233])\n\t(Authenticated sender: jacopo@jmondi.org)\n\tby relay4-d.mail.gandi.net (Postfix) with ESMTPSA id CC193E0004\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Jan 2021 17:29:54 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"libcamera-devel@lists.libcamera.org","Date":"Tue, 26 Jan 2021 18:30:07 +0100","Message-Id":"<20210126173008.446321-6-jacopo@jmondi.org>","X-Mailer":"git-send-email 2.30.0","In-Reply-To":"<20210126173008.446321-1-jacopo@jmondi.org>","References":"<20210126173008.446321-1-jacopo@jmondi.org>","MIME-Version":"1.0","Subject":"[libcamera-devel] [PATCH v2 5/6] android: camera_device: Use AE FPS\n\trange in 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>","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>"},"content":"The request template returned by requestTemplatePreview() uses an\narbitrary {15, 30} Auto-Exposure algorithm FPS range. Use the one\ncalculated at static metadata creation time, which is consistent with\nthe camera limits.\n\nOnce template generation will be performed inspecting the requested\ncapture intent, the FPS range over which the AE algorithm can range\nshall be tuned accordingly.\n\nSigned-off-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n src/android/camera_device.cpp | 26 ++++++++++++++++++++------\n 1 file changed, 20 insertions(+), 6 deletions(-)","diff":"diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 5a8072a8a007..f3f59f7dcb77 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -1339,12 +1339,26 @@ CameraMetadata *CameraDevice::requestTemplatePreview()\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+\t/* Get the FPS range registered in the static metadata. */\n+\tcamera_metadata_ro_entry_t entry;\n+\tbool found = staticMetadata_->getEntry(ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES,\n+\t\t\t\t\t       &entry);\n+\tif (found) {\n+\t\t/*\n+\t\t * \\todo Depending on the requested CaptureIntent, the FPS range\n+\t\t * needs to be adjusted. For example, the capture template for\n+\t\t * video capture intent shall report a fixed value.\n+\t\t *\n+\t\t * Also assume the AE_AVAILABLE_TARGET_FPS_RANGE static metadata\n+\t\t * has been assembled as {{min, max} {max, max}}.\n+\t\t */\n+\t\tconst int32_t *data = entry.data.i32;\n+\t\tstd::vector<int32_t> aeFpsTarget = {\n+\t\t\tdata[0], data[1],\n+\t\t};\n+\t\trequestTemplate->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,\n+\t\t\t\t\t  aeFpsTarget.data(), aeFpsTarget.size());\n+\t}\n \n \tuint8_t aeAntibandingMode = ANDROID_CONTROL_AE_ANTIBANDING_MODE_AUTO;\n \trequestTemplate->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE,\n","prefixes":["libcamera-devel","v2","5/6"]}