From patchwork Wed Apr 27 22:30:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15741 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 641DCC3256 for ; Wed, 27 Apr 2022 22:30:16 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D93C66564D; Thu, 28 Apr 2022 00:30:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1651098614; bh=EHDUM2P5pwfuT7LnX3aqWA3xtIJT07JPWG1WLdGyah4=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=FPBolv0L1NvjbAbjpN7ewRcn7vlslGPKrbAjyR0EzcJw2lHSXzkzVSmZqU59PTLFM dOvA5Rat7uub/kVOyavw8KXB2YwNp1Uw5k+y87qdD36234hsLy5y8OQfu9+OhJtd2n EfvsEVR5NUt0HM15OlbfDcrjcCUnVD9MYcgHRr5LQ46ZPwIGKANwqjPjOZxoMF/Y5n O+veudXodFvQKI5qUwwDvcqpTUN+5SRr4DFH9sFSTdOTjmF75Nu6TIzQGRP04zgkiE a9fS4HxJobUJvDjkcSVVDj6B83dA0wMlhKYPhGTMoGtqKyqFX1Jab7g8zj9tDdnrJG glwn/wHsJavkw== Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DC51665646 for ; Thu, 28 Apr 2022 00:30:08 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="ZbZEo31q"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1651098608; bh=EHDUM2P5pwfuT7LnX3aqWA3xtIJT07JPWG1WLdGyah4=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=ZbZEo31qH8A2VXCe4wDbCVUmO/m18BW4AX84Sh2ZDasj2dV21JNpZBmwifKO3T9Oe Fbjs3B+wKuDB5Mm3cLdsH/IdvE7piEoPH+RcKD3Nn/jcB0i3aUNpM3KsH3Ni+Ztpbx pioek0tnQS2zcvMaNon0Ump1RjN2HB7za5J+JQ7I= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([92.10.251.63]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MxlzC-1o56sg0bx0-00zEiS; Thu, 28 Apr 2022 00:30:08 +0200 To: libcamera-devel@lists.libcamera.org Date: Wed, 27 Apr 2022 23:30:04 +0100 Message-Id: <20220427223004.115381-5-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220427223004.115381-1-Rauch.Christian@gmx.de> References: <20220427223004.115381-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:K7a7ojRXfc5NtD2hy8HN8T2ijGK+Jan+Y0MBrx8fCm1urjqxRpu RbyUL/kRJWzsEijSMZuA3EFI4kEAq+sXXlqEXCoaKwnqOOzqPR/Mv5Iujeokna7c9X6emXN 9OkVvJwXo1MBs43AghHEuR1LcSphSpQ98OzfYodtkpsJj5pAFiHeRepaZCHS7OUWWHwJSWI Ce04IXJRcYdCmKkB9oXzg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:wH7/chnL4u4=:+EnweZOrDJKcvAQ+PQ0ynr Gx77J81eYEVPGweMrb5Jh+ZFSFj/oKRWYC1+AYS03qw8fn8ww6oR+vkY80TxovIRkwmhmW8XR Vmhqxx9U77EyMR8ht1Q4Opxs78pv9fgj/ZWWKJs2n5kzs3/PnEsGQ16ql6HVvFQ4ICHKzbVIs 1dBoaP6HJQW5BVcmyW9Xk2ExSLZK+G/j+KydFXH3lozdUoytSrrTONfhhccWuJKPSdrYsXJ0z /xJw9MZAkFAs647FxxmnEeRcubKUAZAMwEIOpxfpK74psdefR3YZqiF+KHN9kLILyv8aoEGjj L3m4v3rEi4985aZfRgDQ1qopCwaRi/FGJmzBXJ3u0mIj0brTPv28po0k3PDVG3VXYYfwJVkqT DKXAkn5FhTNchfRjVJVYyv4IvfHvSL4pBCTR3Vgk8tqXq+scQfaUzJ4zSkgfuG8MRY+FOK0a9 L7lEiM2pRZ4LVQVHiapPry3Py9oGxkQ7frguc2nvUkO2wHphtwFM4uWyj4oGuCmcG5byC/FDK nmS6iHQQoXnGwDSDzOBRTBc+frv5fFXWO5NnVqgqo2XlmfE5IijXZNoxPNYZ/MilqzU1q05Sb MII8wcg1kt8rcGKp0uvLeKsiL6Lncw/4vV6wr4hkxD8qdh5UVSCCQ7Ofc11DOclXNUgQcSISc HIPFywjtmqNVN7U6D//K3PQtB8Lxnr6F1Lvuto9XqGCgyJEa/7hOI2Mr1OqRIZC+3wkuzKkiW ABtyIR4yL0pgbkPvLCzRnAUQVofkrrUp0D8j1lNnwbzb6AMuxqZwfmGuIgzVTFZiJxAtO37YR BM3qI4Eg9ys8xDMUrfyuOAFVSd3sm1qyFdnyzH5g5eHI9QD9whV1O/Ylqvn1t2st3vPlv0OzJ A3OhrcJwaw9mt5FmpjtQtwTQtS21NFnovD4WSvtxVDAuEPVfXIkjKkQrzCJQZD9rZ/7N1TQ9L LfopUSb8oZITYXNo4hEcCWkDYyrE9rG2K11SV3EK8WmOHRtwomzONbiqoqD/I5B4DAtaOyVEY NCfIxRZlHIeVTdJ5FJOIksSsleX3QbJYxVqKkmcp1v2AOj2Wo+7jzi6nS7L5jBKWW/nxmUF+X 62u9jbdBz8F6U8= Subject: [libcamera-devel] [PATCH v4 4/4] apply explicit fixed-sized Span type casts 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: , X-Patchwork-Original-From: Christian Rauch via libcamera-devel From: Christian Rauch Reply-To: Christian Rauch Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The change of types of some Controls from variable- to fixed-sized requires explicit casting of FrameDurationLimits, ColourGains and SensorBlackLevels. Signed-off-by: Christian Rauch --- src/ipa/raspberrypi/raspberrypi.cpp | 19 ++++++++++--------- .../pipeline/raspberrypi/raspberrypi.cpp | 4 ++-- src/qcam/dng_writer.cpp | 12 ++++++------ 3 files changed, 18 insertions(+), 17 deletions(-) -- 2.34.1 diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp index bf54f64f..57e3de5d 100644 --- a/src/ipa/raspberrypi/raspberrypi.cpp +++ b/src/ipa/raspberrypi/raspberrypi.cpp @@ -502,18 +502,19 @@ void IPARPi::reportMetadata() AwbStatus *awbStatus = rpiMetadata_.GetLocked("awb.status"); if (awbStatus) { - libcameraMetadata_.set(controls::ColourGains, { static_cast(awbStatus->gain_r), - static_cast(awbStatus->gain_b) }); + libcameraMetadata_.set(controls::ColourGains, + Span({ static_cast(awbStatus->gain_r), + static_cast(awbStatus->gain_b) })); libcameraMetadata_.set(controls::ColourTemperature, awbStatus->temperature_K); } BlackLevelStatus *blackLevelStatus = rpiMetadata_.GetLocked("black_level.status"); if (blackLevelStatus) libcameraMetadata_.set(controls::SensorBlackLevels, - { static_cast(blackLevelStatus->black_level_r), - static_cast(blackLevelStatus->black_level_g), - static_cast(blackLevelStatus->black_level_g), - static_cast(blackLevelStatus->black_level_b) }); + Span({ static_cast(blackLevelStatus->black_level_r), + static_cast(blackLevelStatus->black_level_g), + static_cast(blackLevelStatus->black_level_g), + static_cast(blackLevelStatus->black_level_b) })); FocusStatus *focusStatus = rpiMetadata_.GetLocked("focus.status"); if (focusStatus && focusStatus->num == 12) { @@ -818,7 +819,7 @@ void IPARPi::queueRequest(const ControlList &controls) if (gains[0] != 0.0f && gains[1] != 0.0f) /* A gain of 0.0f will switch back to auto mode. */ libcameraMetadata_.set(controls::ColourGains, - { gains[0], gains[1] }); + Span({ gains[0], gains[1] })); break; } @@ -1102,8 +1103,8 @@ void IPARPi::applyFrameDurations(Duration minFrameDuration, Duration maxFrameDur /* Return the validated limits via metadata. */ libcameraMetadata_.set(controls::FrameDurationLimits, - { static_cast(minFrameDuration_.get()), - static_cast(maxFrameDuration_.get()) }); + Span({ static_cast(minFrameDuration_.get()), + static_cast(maxFrameDuration_.get()) })); /* * Calculate the maximum exposure time possible for the AGC to use. diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index ce86ba45..f526c558 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -1696,9 +1696,9 @@ void RPiCameraData::statsMetadataComplete(uint32_t bufferId, const ControlList & * V4L2_CID_NOTIFY_GAINS control (which means notifyGainsUnity_ is set). */ if (notifyGainsUnity_ && controls.contains(libcamera::controls::ColourGains)) { - libcamera::Span colourGains = + libcamera::Span colourGains = controls.get(libcamera::controls::ColourGains).\ - value_or(libcamera::Span({ 0, 0 })); + value_or(libcamera::Span({ 0, 0 })); /* The control wants linear gains in the order B, Gb, Gr, R. */ ControlList ctrls(sensor_->controls()); std::array gains{ diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp index e119ca52..030432e3 100644 --- a/src/qcam/dng_writer.cpp +++ b/src/qcam/dng_writer.cpp @@ -438,8 +438,8 @@ int DNGWriter::write(const char *filename, const Camera *camera, const double eps = 1e-2; if (metadata.contains(controls::ColourGains)) { - Span const &colourGains = - metadata.get(controls::ColourGains).value_or(libcamera::Span({ 0, 0 })); + Span const &colourGains = + metadata.get(controls::ColourGains).value_or(libcamera::Span({ 0, 0 })); if (colourGains[0] > eps && colourGains[1] > eps) { wbGain = Matrix3d::diag(colourGains[0], 1, colourGains[1]); neutral[0] = 1.0 / colourGains[0]; /* red */ @@ -447,8 +447,8 @@ int DNGWriter::write(const char *filename, const Camera *camera, } } if (metadata.contains(controls::ColourCorrectionMatrix)) { - Span const &coeffs = - metadata.get(controls::ColourCorrectionMatrix).value_or(Span({ 0, 0, 0, 0, 0, 0, 0, 0, 0 })); + Span const &coeffs = + metadata.get(controls::ColourCorrectionMatrix).value_or(Span({ 0, 0, 0, 0, 0, 0, 0, 0, 0 })); Matrix3d ccmSupplied(coeffs); if (ccmSupplied.determinant() > eps) ccm = ccmSupplied; @@ -517,8 +517,8 @@ int DNGWriter::write(const char *filename, const Camera *camera, uint32_t whiteLevel = (1 << info->bitsPerSample) - 1; if (metadata.contains(controls::SensorBlackLevels)) { - Span levels = - metadata.get(controls::SensorBlackLevels).value_or(Span({ 0, 0, 0, 0 })); + Span levels = + metadata.get(controls::SensorBlackLevels).value_or(Span({ 0, 0, 0, 0 })); /* * The black levels control is specified in R, Gr, Gb, B order.