From patchwork Tue Dec 21 05:15:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 15193 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 15D06BF415 for ; Tue, 21 Dec 2021 05:16:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5E2B1608E9; Tue, 21 Dec 2021 06:16:58 +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="bcWCj+xB"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9545A608A2 for ; Tue, 21 Dec 2021 06:16:56 +0100 (CET) Received: from pyrite.mediacom.info (unknown [IPv6:2604:2d80:ad90:fb00:96fd:8874:873:6c16]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 992C5881; Tue, 21 Dec 2021 06:16:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1640063816; bh=pJpEINjc9eY6CJCGOo+5eQjjcbmlFf1wQuq5ZouA4TU=; h=From:To:Cc:Subject:Date:From; b=bcWCj+xBNN9Ca1wk+NrjtJMJpLT0a8GbmJ0Bjss5h/SUbFEtmM+2ZVT63/tvr/out MkHc555ooZQwFBThMPttWX2BT906Q27UtysRx/mKF6npR3zDlj82OKtuQlNlzSECH/ a3hvxZE3fRWbBAnKBHyn4gt57v/msiBIhnl3rV98= From: Paul Elder To: libcamera-devel@lists.libcamera.org Date: Mon, 20 Dec 2021 23:15:49 -0600 Message-Id: <20211221051549.2647005-1-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] android: capabilities: Add static white level 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" Plumb SENSOR_INFO_WHITE_LEVEL into the static metadata. Get the information from the maximum bit depth raw format supported by the sensor. Since we hardcode accept only 16-bit raw formats, take that hardcoded value. While at it, save the hardcoded value in a variable so that if it is changed in the future this gets updated automatically. Note that nothing is added to the capability detector, as white level will always be added to the static metadata. Add a comment to document it. Bug: https://bugs.libcamera.org/show_bug.cgi?id=49 Signed-off-by: Paul Elder Reviewed-by: Kieran Bingham --- src/android/camera_capabilities.cpp | 9 ++++++++- src/android/camera_capabilities.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp index d5e79057..bc62a928 100644 --- a/src/android/camera_capabilities.cpp +++ b/src/android/camera_capabilities.cpp @@ -447,6 +447,7 @@ int CameraCapabilities::initialize(std::shared_ptr camera, orientation_ = orientation; facing_ = facing; minISO_ = minISO; + rawBitDepth_ = 16; rawStreamAvailable_ = false; maxFrameDuration_ = 0; @@ -667,7 +668,7 @@ int CameraCapabilities::initializeStreamConfigurations() const PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat); switch (info.colourEncoding) { case PixelFormatInfo::ColourEncodingRAW: - if (info.bitsPerPixel != 16) + if (info.bitsPerPixel != rawBitDepth_) continue; rawStreamAvailable_ = true; @@ -1335,6 +1336,12 @@ int CameraCapabilities::initializeStaticMetadata() staticMetadata_->addEntry(ANDROID_SENSOR_INFO_MAX_FRAME_DURATION, maxFrameDuration_); + /* This is required for FULL. */ + int whiteLevel = (1 << rawBitDepth_) - 1; + staticMetadata_->addEntry(ANDROID_SENSOR_INFO_WHITE_LEVEL, + whiteLevel); + availableCharacteristicsKeys_.insert(ANDROID_SENSOR_INFO_WHITE_LEVEL); + /* Statistics static metadata. */ uint8_t faceDetectMode = ANDROID_STATISTICS_FACE_DETECT_MODE_OFF; staticMetadata_->addEntry(ANDROID_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES, diff --git a/src/android/camera_capabilities.h b/src/android/camera_capabilities.h index 7f554c63..2e6595fb 100644 --- a/src/android/camera_capabilities.h +++ b/src/android/camera_capabilities.h @@ -71,6 +71,7 @@ private: int facing_; int orientation_; int minISO_; + unsigned int rawBitDepth_; bool rawStreamAvailable_; int64_t maxFrameDuration_; camera_metadata_enum_android_info_supported_hardware_level hwLevel_;