From patchwork Thu Apr 1 10:13:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 11814 X-Patchwork-Delegate: paul.elder@ideasonboard.com 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 B3F91C0DA4 for ; Thu, 1 Apr 2021 10:14:11 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7188C6878B; Thu, 1 Apr 2021 12:14:11 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="aMgWFTAX"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4B82F6878B for ; Thu, 1 Apr 2021 12:14:09 +0200 (CEST) Received: from pyrite.rasen.tech (unknown [IPv6:2400:4051:61:600:2c71:1b79:d06d:5032]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id CBFA1527; Thu, 1 Apr 2021 12:14:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1617272049; bh=1+uVv3LJLbdpWJaTH6+9zQtHYgRPsq3BGfz+pTlOaKs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aMgWFTAXP+AwHksGfWxlrxwr841wzY50HgnLPEduQA0kkQniEmRxFnwH3EeSOBJYR Z/aw5Fsx8cS1tcLghRAs6RCwknov9vt4oP/F9eqyQzenUCmZ4Aevpw+E3hnf48V2oP 3KxbZobxKqAhP+URKj8kvt8dp+XZ9uM97xHgi7V4= From: Paul Elder To: libcamera-devel@lists.libcamera.org Date: Thu, 1 Apr 2021 19:13:40 +0900 Message-Id: <20210401101340.160590-9-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210401101340.160590-1-paul.elder@ideasonboard.com> References: <20210401101340.160590-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [RFC PATCH 8/8] android: camera_device: Fix exposure time range and max analog sensitivity 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 exposure time range minimum must be at most 100us, and the maximum at least 100ms. Clamp these values. The maximum analog sensitivity is a required static metadata entry for hardware level FULL. Add it. This allows the following CTS test to pass: - android.hardware.camera2.cts.CaptureRequestTest#testFlashControl Signed-off-by: Paul Elder --- src/android/camera_device.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index a187beff..9652b0e0 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -675,10 +675,10 @@ std::tuple CameraDevice::calculateStaticMetadataSize() { /* * \todo Keep this in sync with the actual number of entries. - * Currently: 54 entries, 874 bytes of static metadata + * Currently: 55 entries, 878 bytes of static metadata */ - uint32_t numEntries = 54; - uint32_t byteSize = 874; + uint32_t numEntries = 55; + uint32_t byteSize = 878; /* * Calculate space occupation in bytes for dynamically built metadata @@ -982,10 +982,20 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() exposureInfo->second.min().get() * 1000LL, exposureInfo->second.max().get() * 1000LL, }; + /* min must be at most 100us, max at least 100ms */ + if (exposureTimeRange[0] > 100000) + exposureTimeRange[0] = 100000; + if (exposureTimeRange[1] < 100000000) + exposureTimeRange[1] = 100000000; staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE, &exposureTimeRange, 2); } + /* min at most 100, max at least 800 */ + int32_t maxAnalogSensitivity = 800; + staticMetadata_->addEntry(ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY, + &maxAnalogSensitivity, 1); + staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, &orientation_, 1); std::vector testPatterModes = { @@ -1270,6 +1280,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() ANDROID_SENSOR_INFO_PIXEL_ARRAY_SIZE, ANDROID_SENSOR_INFO_SENSITIVITY_RANGE, ANDROID_SENSOR_INFO_TIMESTAMP_SOURCE, + ANDROID_SENSOR_MAX_ANALOG_SENSITIVITY, ANDROID_SENSOR_ORIENTATION, ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES, ANDROID_STATISTICS_INFO_MAX_FACE_COUNT,