From patchwork Thu Jul 23 17:39:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 8939 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 16607BD878 for ; Thu, 23 Jul 2020 17:40:52 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E3F92611A2; Thu, 23 Jul 2020 19:40:51 +0200 (CEST) Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 6B5E960496 for ; Thu, 23 Jul 2020 19:40:48 +0200 (CEST) X-Halon-ID: a407d5b5-cd0b-11ea-933e-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de [79.202.46.202]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id a407d5b5-cd0b-11ea-933e-005056917a89; Thu, 23 Jul 2020 19:40:47 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 23 Jul 2020 19:39:39 +0200 Message-Id: <20200723173942.98182-2-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> References: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 1/4] android: camera_device: Remove ANDROID_SCALER_AVAILABLE_FORMATS 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" According to the documentation the tag ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS deprecates the ANDROID_SCALER_AVAILABLE_FORMATS tag. As the HAL implements both tags remove the deprecated one. Signed-off-by: Niklas Söderlund Reviewed-by: Jacopo Mondi --- src/android/camera_device.cpp | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 48f8090a93db454d..6e7673583f6a8f85 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -376,7 +376,7 @@ std::tuple CameraDevice::calculateStaticMetadataSize() * \todo Keep this in sync with the actual number of entries. * Currently: 50 entries, 647 bytes of static metadata */ - uint32_t numEntries = 50; + uint32_t numEntries = 49; uint32_t byteSize = 647; /* @@ -385,10 +385,9 @@ std::tuple CameraDevice::calculateStaticMetadataSize() * * Each stream configuration entry requires 52 bytes: * 4 32bits integers for ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS - * 1 32bits integer for ANDROID_SCALER_AVAILABLE_FORMATS * 4 64bits integers for ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS */ - byteSize += streamConfigurations_.size() * 52; + byteSize += streamConfigurations_.size() * 48; return std::make_tuple(numEntries, byteSize); } @@ -656,15 +655,6 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM, &maxDigitalZoom, 1); - std::vector availableStreamFormats; - availableStreamFormats.reserve(streamConfigurations_.size()); - std::transform(streamConfigurations_.begin(), streamConfigurations_.end(), - std::back_inserter(availableStreamFormats), - [](const auto &entry) { return entry.androidScalerCode; }); - staticMetadata_->addEntry(ANDROID_SCALER_AVAILABLE_FORMATS, - availableStreamFormats.data(), - availableStreamFormats.size()); - std::vector availableStreamConfigurations; availableStreamConfigurations.reserve(streamConfigurations_.size() * 4); for (const auto &entry : streamConfigurations_) { @@ -761,7 +751,6 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE, ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES, ANDROID_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM, - ANDROID_SCALER_AVAILABLE_FORMATS, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, ANDROID_SCALER_AVAILABLE_STALL_DURATIONS, ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS, From patchwork Thu Jul 23 17:39:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 8940 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 10546BD878 for ; Thu, 23 Jul 2020 17:40:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 3D1C9611AF; Thu, 23 Jul 2020 19:40:52 +0200 (CEST) Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 2732960496 for ; Thu, 23 Jul 2020 19:40:49 +0200 (CEST) X-Halon-ID: a479ae3f-cd0b-11ea-933e-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de [79.202.46.202]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id a479ae3f-cd0b-11ea-933e-005056917a89; Thu, 23 Jul 2020 19:40:47 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 23 Jul 2020 19:39:40 +0200 Message-Id: <20200723173942.98182-3-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> References: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/4] android: camera_device: Use HAL_PIXEL_FORMAT_* defines for formats 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 documentation says the HAL_PIXEL_FORMAT_* defines shall be used for formats instead of ANDROID_SCALER_AVAILABLE_FORMATS_* for the ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS and ANDROID_SCALER_AVAILABLE_MIN_FRAME_DURATIONS tags. This have worked in the past as the numerical value of the two sets are the same for the formats supported. Signed-off-by: Niklas Söderlund Reviewed-by: Jacopo Mondi Reviewed-by: Jacopo Mondi --- src/android/camera_device.cpp | 8 ++++---- src/android/camera_device.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 6e7673583f6a8f85..96dd8d5a99082966 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -317,14 +317,14 @@ int CameraDevice::initializeStreamConfigurations() status != CameraConfiguration::Valid) continue; - streamConfigurations_.push_back({ res, camera3Format.scalerFormat }); + streamConfigurations_.push_back({ res, androidFormat }); } } LOG(HAL, Debug) << "Collected stream configuration map: "; for (const auto &entry : streamConfigurations_) LOG(HAL, Debug) << "{ " << entry.resolution.toString() << " - " - << utils::hex(entry.androidScalerCode) << " }"; + << utils::hex(entry.androidFormat) << " }"; return 0; } @@ -658,7 +658,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() std::vector availableStreamConfigurations; availableStreamConfigurations.reserve(streamConfigurations_.size() * 4); for (const auto &entry : streamConfigurations_) { - availableStreamConfigurations.push_back(entry.androidScalerCode); + availableStreamConfigurations.push_back(entry.androidFormat); availableStreamConfigurations.push_back(entry.resolution.width); availableStreamConfigurations.push_back(entry.resolution.height); availableStreamConfigurations.push_back( @@ -679,7 +679,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() std::vector minFrameDurations; minFrameDurations.reserve(streamConfigurations_.size() * 4); for (const auto &entry : streamConfigurations_) { - minFrameDurations.push_back(entry.androidScalerCode); + minFrameDurations.push_back(entry.androidFormat); minFrameDurations.push_back(entry.resolution.width); minFrameDurations.push_back(entry.resolution.height); minFrameDurations.push_back(33333333); diff --git a/src/android/camera_device.h b/src/android/camera_device.h index 5b8b9c3e26e2871e..00472c21938871a1 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -75,7 +75,7 @@ private: struct Camera3StreamConfiguration { libcamera::Size resolution; - int androidScalerCode; + int androidFormat; }; int initializeStreamConfigurations(); From patchwork Thu Jul 23 17:39:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 8941 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 7F658BD878 for ; Thu, 23 Jul 2020 17:40:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DBD8B6118D; Thu, 23 Jul 2020 19:40:52 +0200 (CEST) Received: from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net [195.74.38.228]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DA3966114F for ; Thu, 23 Jul 2020 19:40:49 +0200 (CEST) X-Halon-ID: a4e8b146-cd0b-11ea-933e-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de [79.202.46.202]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id a4e8b146-cd0b-11ea-933e-005056917a89; Thu, 23 Jul 2020 19:40:48 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 23 Jul 2020 19:39:41 +0200 Message-Id: <20200723173942.98182-4-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> References: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 3/4] android: camera_device: Remove scaler format information from Camera3Format 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 scaler format information was only used for the ANDROID_SCALER_AVAILABLE_FORMATS tag which is deprecated and removed. As it has no other users remove it. Signed-off-by: Niklas Söderlund --- src/android/camera_device.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 96dd8d5a99082966..d9fdaf44b2803399 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -42,13 +42,10 @@ const std::vector camera3Resolutions = { * \brief Data associated with an Android format identifier * \var libcameraFormats List of libcamera pixel formats compatible with the * Android format - * \var scalerFormat The format identifier to be reported to the android - * framework through the static format configuration map * \var name The human-readable representation of the Android format code */ struct Camera3Format { std::vector libcameraFormats; - camera_metadata_enum_android_scaler_available_formats_t scalerFormat; const char *name; }; @@ -60,13 +57,11 @@ const std::map camera3FormatsMap = { { HAL_PIXEL_FORMAT_BLOB, { { formats::MJPEG }, - ANDROID_SCALER_AVAILABLE_FORMATS_BLOB, "BLOB" } }, { HAL_PIXEL_FORMAT_YCbCr_420_888, { { formats::NV12, formats::NV21 }, - ANDROID_SCALER_AVAILABLE_FORMATS_YCbCr_420_888, "YCbCr_420_888" } }, { @@ -76,7 +71,6 @@ const std::map camera3FormatsMap = { */ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, { { formats::NV12, formats::NV21 }, - ANDROID_SCALER_AVAILABLE_FORMATS_IMPLEMENTATION_DEFINED, "IMPLEMENTATION_DEFINED" } }, From patchwork Thu Jul 23 17:39:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 8942 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 D7A4DBD879 for ; Thu, 23 Jul 2020 17:40:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 791BE611B2; Thu, 23 Jul 2020 19:40:53 +0200 (CEST) Received: from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net [195.74.38.227]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 814EB6114F for ; Thu, 23 Jul 2020 19:40:50 +0200 (CEST) X-Halon-ID: a54ece28-cd0b-11ea-933e-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de [79.202.46.202]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id a54ece28-cd0b-11ea-933e-005056917a89; Thu, 23 Jul 2020 19:40:49 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 23 Jul 2020 19:39:42 +0200 Message-Id: <20200723173942.98182-5-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> References: <20200723173942.98182-1-niklas.soderlund@ragnatech.se> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 4/4] android: camera_device: Add ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS 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" Define the ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS to zero to inform users the HAL does not support any reprocessing. Signed-off-by: Niklas Söderlund Reviewed-by: Jacopo Mondi --- src/android/camera_device.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index d9fdaf44b2803399..0e9fc216d2b54a1a 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -370,8 +370,8 @@ std::tuple CameraDevice::calculateStaticMetadataSize() * \todo Keep this in sync with the actual number of entries. * Currently: 50 entries, 647 bytes of static metadata */ - uint32_t numEntries = 49; - uint32_t byteSize = 647; + uint32_t numEntries = 50; + uint32_t byteSize = 648; /* * Calculate space occupation in bytes for dynamically built metadata @@ -699,6 +699,11 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() staticMetadata_->addEntry(ANDROID_REQUEST_PIPELINE_MAX_DEPTH, &maxPipelineDepth, 1); + /* LIMITED does not support reprocessing. */ + uint8_t maxNumInputStreams = 0; + staticMetadata_->addEntry(ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS, + &maxNumInputStreams, 1); + std::vector availableCapabilities = { ANDROID_REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE, }; @@ -752,6 +757,7 @@ const camera_metadata_t *CameraDevice::getStaticMetadata() ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL, ANDROID_REQUEST_PARTIAL_RESULT_COUNT, ANDROID_REQUEST_PIPELINE_MAX_DEPTH, + ANDROID_REQUEST_MAX_NUM_INPUT_STREAMS, ANDROID_REQUEST_AVAILABLE_CAPABILITIES, }; staticMetadata_->addEntry(ANDROID_REQUEST_AVAILABLE_CHARACTERISTICS_KEYS,