[{"id":18473,"web_url":"https://patchwork.libcamera.org/comment/18473/","msgid":"<YQdGBbAbUCKxQ/M0@pendragon.ideasonboard.com>","date":"2021-08-02T01:10:29","subject":"Re: [libcamera-devel] [PATCH v6 2/9] android: metadata: Add\n\thasEntry and entryContains","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 Fri, Jul 30, 2021 at 07:35:29PM +0900, Paul Elder wrote:\n> Add convenience functions for checking if an entry is present in a\n> CameraMetadata instance, and to check if an array entry includes a\n> specific value.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n> Changes in v6:\n> - restore to v4\n> \n> Changes in v5:\n> - refactor template code to reduce the footprint of specialized template\n>   code\n> \n> New in v4\n> ---\n>  src/android/camera_metadata.cpp | 20 ++++++++++++++++++++\n>  src/android/camera_metadata.h   |  4 ++++\n>  2 files changed, 24 insertions(+)\n> \n> diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp\n> index 3fc7cf27..075b6a22 100644\n> --- a/src/android/camera_metadata.cpp\n> +++ b/src/android/camera_metadata.cpp\n> @@ -121,6 +121,26 @@ bool CameraMetadata::resize(size_t count, size_t size)\n>  \treturn true;\n>  }\n>  \n> +template<> bool CameraMetadata::entryContains(uint32_t tag, uint8_t value) const\n> +{\n> +\tcamera_metadata_ro_entry_t entry;\n> +\tif (!getEntry(tag, &entry))\n> +\t\treturn false;\n> +\n> +\tfor (unsigned int i = 0; i < entry.count; i++) {\n> +\t\tif (entry.data.u8[i] == value)\n> +\t\t\treturn true;\n> +\t}\n> +\n> +\treturn false;\n> +}\n> +\n> +bool CameraMetadata::hasEntry(uint32_t tag) const\n> +{\n> +\tcamera_metadata_ro_entry_t entry;\n> +\treturn getEntry(tag, &entry);\n> +}\n> +\n>  bool CameraMetadata::addEntry(uint32_t tag, const void *data, size_t count,\n>  \t\t\t      size_t elementSize)\n>  {\n> diff --git a/src/android/camera_metadata.h b/src/android/camera_metadata.h\n> index 3b7c9e24..03b3e701 100644\n> --- a/src/android/camera_metadata.h\n> +++ b/src/android/camera_metadata.h\n> @@ -29,6 +29,10 @@ public:\n>  \tbool isValid() const { return valid_; }\n>  \tbool getEntry(uint32_t tag, camera_metadata_ro_entry_t *entry) const;\n>  \n> +\ttemplate<typename T> bool entryContains(uint32_t tag, T value) const;\n> +\n> +\tbool hasEntry(uint32_t tag) const;\n> +\n>  \ttemplate<typename T,\n>  \t\t std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>\n>  \tbool addEntry(uint32_t tag, const T &data)","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 E9524BD878\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  2 Aug 2021 01:10:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 64FB6687C3;\n\tMon,  2 Aug 2021 03:10:41 +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 E8AE2687B6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  2 Aug 2021 03:10:39 +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 0DE734A3;\n\tMon,  2 Aug 2021 03:10:39 +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=\"ut4gfFsf\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1627866639;\n\tbh=0RMCCojjs+Fsv1phEHp6Vhie/h2bDEp11tX+qKVZFts=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=ut4gfFsfdtOxz3EVMhBeQ8oTgAFEhdPcSxFfgaSgv6Ng9k2ah21LHLAWftijhatP4\n\t4/DNnxunrpXbclKzs4dIfs9eeca1L0+zSc9ZFSFOcUgDwMKfjuZhsBnawINPYuhbFn\n\t0AK7/RXwPZqQ6kc2QIfDe3Lr9BuzkIFxEvt90gQ4=","Date":"Mon, 2 Aug 2021 04:10:29 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YQdGBbAbUCKxQ/M0@pendragon.ideasonboard.com>","References":"<20210730103536.81117-1-paul.elder@ideasonboard.com>\n\t<20210730103536.81117-3-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210730103536.81117-3-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v6 2/9] android: metadata: Add\n\thasEntry and entryContains","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>"}}]