[{"id":13392,"web_url":"https://patchwork.libcamera.org/comment/13392/","msgid":"<20201022030351.GD3942@pendragon.ideasonboard.com>","date":"2020-10-22T03:03:51","subject":"Re: [libcamera-devel] [PATCH v3 12/14] android: camera_device:\n\tHandle NOISE_REDUCTION_MODES","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 Wed, Oct 21, 2020 at 04:36:33PM +0200, Jacopo Mondi wrote:\n> Register the ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES\n> static metadata property inspecting the values retuned by the pipeline\n> handler.\n> \n> Reserve in the static metadata pack enough space to support all the 5\n> available noise reduction modes Android defines.\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> ---\n>  src/android/camera_device.cpp | 17 +++++++++++++----\n>  1 file changed, 13 insertions(+), 4 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 8166b09bb69a..a4d9e6ddc519 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -553,7 +553,7 @@ std::tuple<uint32_t, uint32_t> CameraDevice::calculateStaticMetadataSize()\n>  \t * Currently: 51 entries, 687 bytes of static metadata\n>  \t */\n>  \tuint32_t numEntries = 51;\n> -\tuint32_t byteSize = 687;\n> +\tuint32_t byteSize = 691;\n>  \n>  \t/*\n>  \t * Calculate space occupation in bytes for dynamically built metadata\n> @@ -830,9 +830,18 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()\n>  \t\t\t\t  &minFocusDistance, 1);\n>  \n>  \t/* Noise reduction modes. */\n> -\tuint8_t noiseReductionModes = ANDROID_NOISE_REDUCTION_MODE_OFF;\n> -\tstaticMetadata_->addEntry(ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,\n> -\t\t\t\t  &noiseReductionModes, 1);\n> +\t{\n> +\t\tstd::vector<uint8_t> data(5);\n> +\t\tconst auto &infoMap = controlsInfo.find(&controls::draft::NoiseReductionMode);\n> +\t\tif (infoMap != controlsInfo.end()) {\n> +\t\t\tfor (const auto &value : infoMap->second.values())\n> +\t\t\t\tdata.push_back(value.get<int32_t>());\n> +\t\t} else {\n> +\t\t\tdata.push_back(ANDROID_NOISE_REDUCTION_MODE_OFF);\n> +\t\t}\n\nThis is good enough for now, but the code isn't pretty, which makes me\nwonder if our API shouldn't be improved. I'm not sure how though, as we\nhave to convert each entry to uint8_t, so I don't see how we could avoid\na loop.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +\t\tstaticMetadata_->addEntry(ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,\n> +\t\t\t\t\t  data.data(), data.size());\n> +\t}\n>  \n>  \t/* Scaler static metadata. */\n>  \tfloat maxDigitalZoom = 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 2098FBDB13\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 22 Oct 2020 03:04:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9889761059;\n\tThu, 22 Oct 2020 05:04:38 +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 1C8356034F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 22 Oct 2020 05:04:37 +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 8EE8953;\n\tThu, 22 Oct 2020 05:04:36 +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=\"eRzOOowp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1603335876;\n\tbh=QyocAgUOb996Xf/HT00NLoulVSLsDXzF2hRGM62tYuQ=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=eRzOOowpRAg9bGmWXVucXmbjo24g+HcMo2/THxpXEk2af67F8o369OkQhPCNDyUtq\n\tfQRRAhdMZeDo5GUXBgIFegny0wEFzSybLs6LAUiXII/6KFaZ3/hpM7cKrnIE3NJt66\n\tt7MG/HxBo+6+ikA/w8bqSxCmkRokmPDHlIPgxleM=","Date":"Thu, 22 Oct 2020 06:03:51 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20201022030351.GD3942@pendragon.ideasonboard.com>","References":"<20201021143635.22846-1-jacopo@jmondi.org>\n\t<20201021143635.22846-13-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20201021143635.22846-13-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH v3 12/14] android: camera_device:\n\tHandle NOISE_REDUCTION_MODES","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>"}}]