From patchwork Fri Jan 29 06:01:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 11048 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 62D7DC33BB for ; Fri, 29 Jan 2021 06:02:11 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id CB48868391; Fri, 29 Jan 2021 07:02:10 +0100 (CET) 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="VVLb3SYB"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id AA85860307 for ; Fri, 29 Jan 2021 07:02:08 +0100 (CET) Received: from pyrite.rasen.tech (unknown [IPv6:2400:4051:61:600:2c71:1b79:d06d:5032]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 67B752E0; Fri, 29 Jan 2021 07:02:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1611900128; bh=xUtSTC/ZNU9hO4iz41m63zEaC6aJQaI8U+pxHsrsmjQ=; h=From:To:Cc:Subject:Date:From; b=VVLb3SYBeOomsH5ZnRC9BYLKmMQStw+4SgiVO/EFPIbHIsfUHu+zA/Td0NHfrnUmp okaDSFqLZCRUpTY1VBW2i00KGpJgI5tS+ied5srhJ00Eo1rkLA8+6yaDM5d81p/8FA 2weg/hB46jfR1vIQfASVjiy2n6R3b9kf6Od+p01k= From: Paul Elder To: libcamera-devel@lists.libcamera.org Date: Fri, 29 Jan 2021 15:01:49 +0900 Message-Id: <20210129060149.13462-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2] android: camera_device: Fix exposure time tag in exif and android 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 ExposureTime libcamera control is in microseconds while android and our exif component use nanoseconds. Convert it appropriately. CTS also expects the ExposureTime exif tag to match the ExposureTime set in the android result metadata. Fix it. Signed-off-by: Paul Elder Reviewed-by: Jacopo Mondi Reviewed-by: Laurent Pinchart Reviewed-by: Niklas Söderlund --- Changes in v2: - remove todo to get the information from libcamera::Request::metadata - fix potential overflow --- src/android/camera_device.cpp | 2 +- src/android/jpeg/post_processor_jpeg.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 741dc8cf..c1025e81 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -2058,7 +2058,7 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor, } if (metadata.contains(controls::ExposureTime)) { - int32_t exposure = metadata.get(controls::ExposureTime); + int64_t exposure = metadata.get(controls::ExposureTime) * 1000ULL; resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME, &exposure, 1); } diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp index cac0087b..1cbab30c 100644 --- a/src/android/jpeg/post_processor_jpeg.cpp +++ b/src/android/jpeg/post_processor_jpeg.cpp @@ -112,8 +112,8 @@ int PostProcessorJpeg::process(const FrameBuffer &source, */ exif.setTimestamp(std::time(nullptr), 0ms); - /* \todo Get this information from libcamera::Request::metadata */ - exif.setExposureTime(0); + ret = resultMetadata->getEntry(ANDROID_SENSOR_EXPOSURE_TIME, &entry); + exif.setExposureTime(ret ? *entry.data.i64 : 0); ret = requestMetadata.getEntry(ANDROID_LENS_APERTURE, &entry); if (ret) exif.setAperture(*entry.data.f);