[{"id":19242,"web_url":"https://patchwork.libcamera.org/comment/19242/","msgid":"<20210901072026.GR968527@pyrite.rasen.tech>","date":"2021-09-01T07:20:26","subject":"Re: [libcamera-devel] [PATCH 10/16] android: Filter preview streams\n\ton FPS","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn Fri, Aug 27, 2021 at 02:07:51PM +0200, Jacopo Mondi wrote:\n> Register as preview streams only streams capable of producing at least\n> 30 FPS.\n> \n> This requirement comes from inspecting the existing HAL implementation\n> on Intel IPU3 platform.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> ---\n>  src/android/camera_capabilities.cpp | 20 ++++++++++++++++++++\n>  1 file changed, 20 insertions(+)\n> \n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index 388552963c47..c1ce63018aa8 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -1257,6 +1257,21 @@ int CameraCapabilities::initializeStaticMetadata()\n>  \tstd::vector<uint32_t> availableStreamConfigurations;\n>  \tavailableStreamConfigurations.reserve(streamConfigurations_.size() * 4);\n>  \tfor (const auto &entry : streamConfigurations_) {\n> +\t\t/*\n> +\t\t * Filter out YUV streams not capable of running at 30 FPS.\n> +\t\t *\n> +\t\t * This requirement comes from inspecting the Intel IPU3\n> +\t\t * HAL implementation but no reference has been found in the\n> +\t\t * metadata documentation.\n> +\t\t *\n> +\t\t * Calculate FPS as CTS does: see\n> +\t\t * Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration()\n> +\t\t */\n> +\t\tunsigned int fps = static_cast<unsigned int>\n> +\t\t\t\t   (floor(1e9 / entry.minFrameDurationNsec + 0.05f));\n> +\t\tif (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)\n> +\t\t\tcontinue;\n> +\n>  \t\tavailableStreamConfigurations.push_back(entry.androidFormat);\n>  \t\tavailableStreamConfigurations.push_back(entry.resolution.width);\n>  \t\tavailableStreamConfigurations.push_back(entry.resolution.height);\n> @@ -1269,6 +1284,11 @@ int CameraCapabilities::initializeStaticMetadata()\n>  \tstd::vector<int64_t> minFrameDurations;\n>  \tminFrameDurations.reserve(streamConfigurations_.size() * 4);\n>  \tfor (const auto &entry : streamConfigurations_) {\n> +\t\tunsigned int fps = static_cast<unsigned int>\n> +\t\t\t\t   (floor(1e9 / entry.minFrameDurationNsec + 0.05f));\n> +\t\tif (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)\n> +\t\t\tcontinue;\n> +\n>  \t\tminFrameDurations.push_back(entry.androidFormat);\n>  \t\tminFrameDurations.push_back(entry.resolution.width);\n>  \t\tminFrameDurations.push_back(entry.resolution.height);\n> -- \n> 2.32.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 C915DBDC71\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  1 Sep 2021 07:20:36 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3127B60253;\n\tWed,  1 Sep 2021 09:20:36 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8C43060253\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  1 Sep 2021 09:20:34 +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 009DA3D7;\n\tWed,  1 Sep 2021 09:20:32 +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=\"nMYfHe3f\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1630480834;\n\tbh=3UkEjath3K7L1+yEpaTS3zCLO2hYSsy159S4mhiohxA=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=nMYfHe3frEx31+8hPU/7G1CPm7edwaTGNKwcifpoPZHlbrY+bTYtpqC/d00ok4pTr\n\toXzuF3MVcGTUzb1I6VxnN1YIBH53wZGu7wcJ+lphMFVuhCAaC7AflF6UIVoUgNcyai\n\tL0530oTvsz7PSRs7K/YNdUTt1HmWRiT7lpvggqGo=","Date":"Wed, 1 Sep 2021 16:20:26 +0900","From":"paul.elder@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20210901072026.GR968527@pyrite.rasen.tech>","References":"<20210827120757.110615-1-jacopo@jmondi.org>\n\t<20210827120757.110615-11-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20210827120757.110615-11-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 10/16] android: Filter preview streams\n\ton FPS","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":19256,"web_url":"https://patchwork.libcamera.org/comment/19256/","msgid":"<87ec3b31-57e7-1c68-24f8-059da9f92563@ideasonboard.com>","date":"2021-09-01T08:53:52","subject":"Re: [libcamera-devel] [PATCH 10/16] android: Filter preview streams\n\ton FPS","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi Jacopo\n\nLooks good to me overall\n\nOn 8/27/21 5:37 PM, Jacopo Mondi wrote:\n> Register as preview streams only streams capable of producing at least\n> 30 FPS.\n>\n> This requirement comes from inspecting the existing HAL implementation\n> on Intel IPU3 platform.\n>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>   src/android/camera_capabilities.cpp | 20 ++++++++++++++++++++\n>   1 file changed, 20 insertions(+)\n>\n> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\n> index 388552963c47..c1ce63018aa8 100644\n> --- a/src/android/camera_capabilities.cpp\n> +++ b/src/android/camera_capabilities.cpp\n> @@ -1257,6 +1257,21 @@ int CameraCapabilities::initializeStaticMetadata()\n>   \tstd::vector<uint32_t> availableStreamConfigurations;\n>   \tavailableStreamConfigurations.reserve(streamConfigurations_.size() * 4);\n>   \tfor (const auto &entry : streamConfigurations_) {\n> +\t\t/*\n> +\t\t * Filter out YUV streams not capable of running at 30 FPS.\n> +\t\t *\n> +\t\t * This requirement comes from inspecting the Intel IPU3\n> +\t\t * HAL implementation but no reference has been found in the\n> +\t\t * metadata documentation.\n> +\t\t *\n> +\t\t * Calculate FPS as CTS does: see\n> +\t\t * Camera2SurfaceViewTestCase.java:getSuitableFpsRangeForDuration()\n> +\t\t */\n> +\t\tunsigned int fps = static_cast<unsigned int>\n> +\t\t\t\t   (floor(1e9 / entry.minFrameDurationNsec + 0.05f));\n\n\nHowever, this is similar on the lines we do for minFrameDurationNsec for \nANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES right?\n\nI am trying to find to find a relation between the two places, if any. \nI'll probably come around to take another look at this later. For now,\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> +\t\tif (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)\n> +\t\t\tcontinue;\n> +\n>   \t\tavailableStreamConfigurations.push_back(entry.androidFormat);\n>   \t\tavailableStreamConfigurations.push_back(entry.resolution.width);\n>   \t\tavailableStreamConfigurations.push_back(entry.resolution.height);\n> @@ -1269,6 +1284,11 @@ int CameraCapabilities::initializeStaticMetadata()\n>   \tstd::vector<int64_t> minFrameDurations;\n>   \tminFrameDurations.reserve(streamConfigurations_.size() * 4);\n>   \tfor (const auto &entry : streamConfigurations_) {\n> +\t\tunsigned int fps = static_cast<unsigned int>\n> +\t\t\t\t   (floor(1e9 / entry.minFrameDurationNsec + 0.05f));\n> +\t\tif (entry.androidFormat != HAL_PIXEL_FORMAT_BLOB && fps < 30)\n> +\t\t\tcontinue;\n> +\n>   \t\tminFrameDurations.push_back(entry.androidFormat);\n>   \t\tminFrameDurations.push_back(entry.resolution.width);\n>   \t\tminFrameDurations.push_back(entry.resolution.height);","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 23B4BBD87D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  1 Sep 2021 08:54:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 88E6860255;\n\tWed,  1 Sep 2021 10:53:59 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 577D260253\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  1 Sep 2021 10:53:57 +0200 (CEST)","from [192.168.1.104] (unknown [103.251.226.107])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 774C83D7;\n\tWed,  1 Sep 2021 10:53:56 +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=\"eNaXelZF\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1630486436;\n\tbh=YkjRYBYLmPk2LAfX7woXvbT/hQDnvGWkKZg+Sf2FyHA=;\n\th=Subject:To:References:From:Date:In-Reply-To:From;\n\tb=eNaXelZFtAF3vHFQ5/l6e0efHPM7aPnYEkIsYYeda7EptNJCowcOMLGtRrLmp0bbk\n\tZ5Gx3VTeNi0vjFOrlR7/BlNP37ws7iEPvjj3qq7l/DYSLmxsMcJXB9WG89IJrlIai1\n\tBwTiNa2+53qIBHUQWjokZtc2zDSDNSNtvWjH3IVw=","To":"Jacopo Mondi <jacopo@jmondi.org>, libcamera-devel@lists.libcamera.org","References":"<20210827120757.110615-1-jacopo@jmondi.org>\n\t<20210827120757.110615-11-jacopo@jmondi.org>","From":"Umang Jain <umang.jain@ideasonboard.com>","Message-ID":"<87ec3b31-57e7-1c68-24f8-059da9f92563@ideasonboard.com>","Date":"Wed, 1 Sep 2021 14:23:52 +0530","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.10.2","MIME-Version":"1.0","In-Reply-To":"<20210827120757.110615-11-jacopo@jmondi.org>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [PATCH 10/16] android: Filter preview streams\n\ton FPS","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]