From patchwork Tue Dec 1 15:59:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 10528 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 8AADFBE176 for ; Tue, 1 Dec 2020 15:59:34 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 282BC63503; Tue, 1 Dec 2020 16:59:34 +0100 (CET) Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D347363460 for ; Tue, 1 Dec 2020 16:59:32 +0100 (CET) X-Originating-IP: 93.34.118.233 Received: from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233]) (Authenticated sender: jacopo@jmondi.org) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 4E62EE0006; Tue, 1 Dec 2020 15:59:32 +0000 (UTC) From: Jacopo Mondi To: hanlinchen@chromium.org, libcamera-devel@lists.libcamera.org Date: Tue, 1 Dec 2020 16:59:30 +0100 Message-Id: <20201201155930.58584-1-jacopo@jmondi.org> X-Mailer: git-send-email 2.29.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2] android: camera_mode: Reserve 'data' vectors X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The CameraDevice::getStaticMetadata() function populates the entries for Android's static metadata by walking the ControlInfo supported values reported by the libcamera pipeline. The number of entries to be passed to Android is computed using the vector's size which is initialized at vector creation time to the maximum number of available entries. In order to report the correct number of metadata do not create the vector with the largest possible number of elements but only reserve space for them using std::vector::reserve() which does not modify the vector's size. Signed-off-by: Jacopo Mondi Reviewed-by: Kieran Bingham Reviewed-by: Laurent Pinchart --- This patch fixes cros_camera_test: Camera3DeviceTest/Camera3DeviceDefaultSettings.ConstructDefaultSettings/1 --- src/android/camera_device.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) -- 2.29.1 diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 4690346e05cb..4eb05df0fdc2 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -596,7 +596,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() /* Color correction static metadata. */ { - std::vector data(3); + std::vector data; + data.reserve(3); const auto &infoMap = controlsInfo.find(&controls::draft::ColorCorrectionAberrationMode); if (infoMap != controlsInfo.end()) { for (const auto &value : infoMap->second.values()) @@ -782,7 +783,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() &maxFaceCount, 1); { - std::vector data(2); + std::vector data; + data.reserve(2); const auto &infoMap = controlsInfo.find(&controls::draft::LensShadingMapMode); if (infoMap != controlsInfo.end()) { for (const auto &value : infoMap->second.values()) @@ -850,7 +852,8 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() /* Noise reduction modes. */ { - std::vector data(5); + std::vector data; + data.reserve(5); const auto &infoMap = controlsInfo.find(&controls::draft::NoiseReductionMode); if (infoMap != controlsInfo.end()) { for (const auto &value : infoMap->second.values())