From patchwork Fri Apr 1 00:06:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15604 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 470E9C0F1B for ; Fri, 1 Apr 2022 00:06:47 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E9CC165631; Fri, 1 Apr 2022 02:06:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1648771606; bh=JuVzSB5dB/GwkXEWP3cFR31HptSzBMeuKMg5Yu3wvVM=; 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=ClzuNP30/ROfZEed/1nVIALqbqlYrI3FX/BmHHw3MOEBOjdC6BKHkb/P+WqOCsIH7 QbzWPoDExRdMSarDpfS10iu5NMNrUIKKyeRN/VSs5ixQdintZBB9j4OQxAYWOsk/vh 78YMRU8Qq9rpwVLfqGJlYIuHMnguCSgfvR6BQjx7t2nQkQdcNaZ/D9F3Bp9cvi4voC kLzxAiepqvUypKywwuhcr4HNtYgnzeQ4GKh9cCyuzgSwzjS5kiKWQrdp9lSEPxU29r nCuj0MvDVkgU67Wrg9b9noDOY/XLVNG9KXhRx5de4r4a6JTdhwL4U8EPSzbnBNDe7n oXsKvGwuTtJ9g== Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4A11865631 for ; Fri, 1 Apr 2022 02:06:45 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="TTSkb3LP"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1648771605; bh=JuVzSB5dB/GwkXEWP3cFR31HptSzBMeuKMg5Yu3wvVM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=TTSkb3LPfzP4cV/vU4YOb0vpWVvBPJjjSV9AeOWvlk7YS6fhVCj2FUSsBCjOGonsN MhJ5oKzkl6Wd+w/m9M9p1E4z3bx3lZcGkrINncyXK/1ase/y7zjO2j1jwq7WWX28fl 7Vt8sHRU8vCxPZZ+voA7ooTVAPdS6OeHiFDBRQGo= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([92.10.251.63]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Ml6mE-1oJMKW3UgW-00lSa0; Fri, 01 Apr 2022 02:06:44 +0200 To: libcamera-devel@lists.libcamera.org Date: Fri, 1 Apr 2022 01:06:12 +0100 Message-Id: <20220401000616.12976-2-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220401000616.12976-1-Rauch.Christian@gmx.de> References: <20220401000616.12976-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:LoMMTsA3kQHkkodzvTIkS50c/Ke8NjyjdaXnWMzDJRBl3FsM10u H61884Q5jKDBQA+M7uNSdGfNFtR+n/Y6A5fGGCUKWVm/mPESMHRX5hUTsSvO3kbtmNS0lsH OmQU90mVh1nMGtFdERWOnPZqzdSgiS1wuqOxVdxw9S5WiBEzZU2WUkAdx7RUtAyl0jnS+Sp ISwJy1Ji+SmjDhn2jCa4w== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:asAf4kyr9wU=:I7A7jkPmGxvOvCe5QR1p7H Vja2jXs4FeqE+D/UPhEmRVFCAF9W5JAHoXJzVoYehM6G/LNYhYZBPmZOsYHHyMmvTRuJXJQeQ cYucZZKLMu1RFrR8IV29KX8dXKBNxmB0UqcXqbBfTkRXFUu0Org/VSbe32mr+KdLtu/ePED57 g6UbrDcSYyMe34gkVCq5DTLZsqcM2hHoIxMwQZuPaq2EBZ45sKXg1Emmf3clTTQ5V7mh1C3Oh yi3NwOI/UKT9wKLDp96Ws7gB5XIQhhMWuqkn2o50KG2FtF6Dh09LGNkW2gJY0oo8yWPmSKOoL /VkJhlUFsmSvQjmXsHkhVzY/CDWHT+OOFgq1gYDta8CmGHHKcEA5BGX8OG5yJsqtWbLxx10y1 29pb9CmGsLAyluxqFqaaNj6C/Ohu0Rjm8iDr/oukT8tdIfK5aqDc1D6PhmvHBC0aFNSKbfTdn lr4tvCTX5A+rVI+2tgFuyNyYOUbv7k0kZ9I88XZCp7aejEE+wbgznclgd/fjm7WitGLLqmjP7 o/bmBZsaC+GrxTroBZAWgpYQV5Z6TYDFSt/I4RVUN2YKCeamEZYZQdhDN+BA/L2HoA9phYd5D gHBtb+Pt9c95WMsSuV0jho1leVKW4HKvDzlOocEPqdDGfxAiIcaqlBSpxZGtDaQ7pxgAP0K/K RRuvjuM/KqSdwtBtHAA6l2p0tLpr2E48H3x4eIdRHZjbaXURvKUAXsWPab9sevq5eKxbE7Lof SPnU0zsrJ9U4f3jwiIpe3irVE1vWMePFfAYuB3KD37YtCvKsvlFXMAFa4AQeB/IL8vY0Z07O8 an9V/grUjZMYjcNTLoXQUmJxWmH9O1wR0qD90XHb/88rQQuiZqqvc0wUdF7oDztFMpQlb74fn AryJDNJz0vceUvuAior8RtseSyO/QdpjcLb2Hxf/75YWqAJPqsAvWxc252CHadACXtJaAgpc/ 4BQzO+z0/dB8GW5GjAgqNJ7OuCxmrnVXJuAc4BIeC2h8ILswWw/Yt96GGh7c4HfDt8LQ9mva0 U/mRJT4MELrZX2bgOWvqKNu2io6BTTB+/S78wlSvgd7xtTjf2xtKsSldAFLXcfuMEco6Scb2F nure2J4yB7UqDI= Subject: [libcamera-devel] [PATCH 1/5] define Span size as shape vector 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" This follows the convention in other Tensor APIs. Since all tensors are represented as a Span with a single dimension, values provided in 'size' are interpreted as fixed-size Spans, while an empty array ("[]") will be interpreted as variable-sized Span. Signed-off-by: Christian Rauch Reviewed-by: Jacopo Mondi --- src/libcamera/control_ids.yaml | 2 +- src/libcamera/property_ids.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) -- 2.25.1 diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml index 9d4638ae..c3f593a1 100644 --- a/src/libcamera/control_ids.yaml +++ b/src/libcamera/control_ids.yaml @@ -291,7 +291,7 @@ controls: transformation. The 3x3 matrix is stored in conventional reading order in an array of 9 floating point values. - size: [3x3] + size: [3,3] - ScalerCrop: type: Rectangle diff --git a/src/libcamera/property_ids.yaml b/src/libcamera/property_ids.yaml index 12ecbce5..47c350ed 100644 --- a/src/libcamera/property_ids.yaml +++ b/src/libcamera/property_ids.yaml @@ -497,7 +497,7 @@ controls: - PixelArrayOpticalBlackRectangles: type: Rectangle - size: [n] + size: [] description: | The pixel array region(s) which contain optical black pixels considered valid for calibration purposes. @@ -592,7 +592,7 @@ controls: - PixelArrayActiveAreas: type: Rectangle - size: [n] + size: [] description: | The PixelArrayActiveAreas property defines the (possibly multiple and overlapping) portions of the camera sensor readable pixel matrix From patchwork Fri Apr 1 00:06:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15605 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 D0058C3265 for ; Fri, 1 Apr 2022 00:06:47 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 73ECA65641; Fri, 1 Apr 2022 02:06:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1648771607; bh=LPPdeQdJbsck3dbM0H669GulrtDx8tgII4gP48FnFPQ=; 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=mGGjf5D3U5dodLhtbyV4Q5Ty5ceqjpz8kAYRIuIMaLluFbDxht8J5B2wVk7wgZZ+g yH6ygfVEkHwbtZb66dPrsYqRCj2KaHRPE23AfqtjIp6AJ/IwLP1D3TXFjcE3eyErDa 8b1V6H5HtexggseGc33XCdmfFUOPBPcCmoFmh9PrhTjcjy0PtRPYHUf6lgJZxbusDw m0wTZWHGdW5Tj/u5RToDIYYZ8Us7pGhjHQhi4zyUN9vTzCNZgSmtK9nOACcWPeo+bv qi9SbjcMey1GBUBBlWVhrrF1tZeSUnBYb6uCOFgHANNBdoR6e/RxUvy/uhtPAzs8Rx PIZ8Ca4Juu1jA== Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 8F3B660135 for ; Fri, 1 Apr 2022 02:06:45 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="hAoJZsMZ"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1648771605; bh=LPPdeQdJbsck3dbM0H669GulrtDx8tgII4gP48FnFPQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=hAoJZsMZfONdEhCT+xug+y7eL2az2jmeo7XG9Ywl9tGRMl1fEtMze2x3/f79vClzK DGL2OLcdEVYi/gJYzP+EEiwQx7ZDBRBbZPDSOmAStHzMhEK4x+Z3eYET+czU3+tmkJ dhzKDH4ttF7bEBPJnp3wJwYONiGWt86fumW+SjT8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([92.10.251.63]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MuDc7-1nt8Mi0LQj-00udf7; Fri, 01 Apr 2022 02:06:45 +0200 To: libcamera-devel@lists.libcamera.org Date: Fri, 1 Apr 2022 01:06:13 +0100 Message-Id: <20220401000616.12976-3-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220401000616.12976-1-Rauch.Christian@gmx.de> References: <20220401000616.12976-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:pjquAJgGrAojuXgsCfZezU4cJ5Y4vD8gFPSydcXosmIjWmYSmgL wvsf4Nouc0N+J36r7vCUb5ZPB53G4CuweJ3qbL5wiJRBq3jgkBAZp/UxN/QVs3I7CK1AI5r MBKHnxc3AYgVp+6o25LO/iRtvxqvsH10PSZG7HyfWK30lKjl2n6QoE990JIXfkLzwmznPUF USzdlmvbCBfGubjyddr9A== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:tY5BXCb8rQs=:QBNqE8PoEStqotT9DWAfuM cSjcRf7+ZTunkXKQSmaDs8HAuIGN8loavyGbJzCx4O1qXWeGiZedkJ5dK2SoyNsvuVt6AqOZy kSnaH8moO91yHL9wCrYG9Mdqz+d5Sjxbrwx/sny83JO/806qRdPtTuNRvL5xS7Wnz8IeF8jVn 2ILHFEnNgiOxMLQnWxaQhx1rSsIfvR2CpkPuEBShoKMmEck9zc/mIkqql4y3FCXQFTO/qAMXD aQsB8TY6xAzzQEoxPlMxoaGJY4d1mJ3AGG2AxDScqfQ8Gspd8v9tnIZzAQv73gfq6KsSu+AEo uTyVgAL7Bcdt+0T2MK/7sFWEqrXYrR1wjtvTE6aEWMzJtxEymj/27ZNCZgt1Xlo//7nbCQ0HV ydoSyoMN0z1/Tuqt5rfdf9a8jm2mu8eZIMxuBiWKtzCspjX5GrtgpHDX97ZzHYugqa9sSromD D1CWr9cmzLcynKnbrO9p6XqQhsBEYkLO1DwArnbwOyCUEySAqJlhGRM5W33AHOV6iVUw6+/v5 qPikoOpMSy3rB2vPiurHQTC22zuMsJVDfHHh9iGOMsMVWKYrNtRLMZUx3eWBja+drc1vmhsvR 9HYHskmDyttFbHPyqKOKlT3e0DUiZ3furtty07MxSE8WwPeSl9ABoxwRK+jtU9LywmlRDg5qV HkSH9bEC+FdUYG+Npn73M2K04qGSWY9uB0KkQW0eUdpM4GN5CY6IuO0v/qqGjPW07D2qZ6kVh IWfsQWfhHlASlnOsM3Vvu6fYJUmi9fq0S3wuPVjdiMOIoMm1jxSPJRTTBQAVkxJNCFWmt19Ew UiWt91c5q1EnOtlEhDlf2ynyKKuCRsfScDW3RSACU3SIrrgsDeaAzeoBi0isLWPJ3N/BjdtbQ cVLn6e6MfjxGFbvkAmFMuVDp5OCmjLX1AfaVZba09/SOnV8x8tM1lVbWzcMF1JhFmTXkRVXD8 YuKjMdmLanXfJ65SHOe4dpiefFoOilpOYhub8jUNSYmoDW5VVcarstXwYXv8RLS7w+z4jKa8J hvxTkg5g8eXnQkTsRLW/bUtrie+C63zbUvc9vvLt29d2grA4DmW5SO7fTUFNgoPZrbgtHu7zv nGmPOpRL9cHuMQ= Subject: [libcamera-devel] [PATCH 2/5] generate fixed- and variable-sized Span Controls 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" This defines Controls with a 'size' as either variable-sized Span or as fixed-sized Span. Signed-off-by: Christian Rauch --- utils/gen-controls.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) -- 2.25.1 diff --git a/utils/gen-controls.py b/utils/gen-controls.py index 3f99b5e2..694d761a 100755 --- a/utils/gen-controls.py +++ b/utils/gen-controls.py @@ -10,6 +10,7 @@ import argparse import string import sys import yaml +from math import prod def snake_case(s): @@ -22,6 +23,26 @@ def format_description(description): return '\n'.join([(line and ' * ' or ' *') + line for line in description]) +def get_ctrl_type_format(ctrl): + ctrl_type = ctrl['type'] + ctrl_size_arr = ctrl.get('size') + ctrl_is_span = ctrl_size_arr is not None + if ctrl_is_span: + ctrl_span_size = prod(ctrl_size_arr) if len(ctrl_size_arr)>0 else None + + if ctrl_type == 'string': + ctrl_type = 'std::string' + elif ctrl_is_span: + if ctrl_span_size: + # fixed-sized Span + ctrl_type = 'Span'.format(ctrl_type, ctrl_span_size) + else: + # variable-sized Span + ctrl_type = 'Span'.format(ctrl_type) + + return ctrl_type + + def generate_cpp(controls): enum_doc_start_template = string.Template('''/** * \\enum ${name}Enum @@ -50,11 +71,7 @@ ${description} name, ctrl = ctrl.popitem() id_name = snake_case(name).upper() - ctrl_type = ctrl['type'] - if ctrl_type == 'string': - ctrl_type = 'std::string' - elif ctrl.get('size'): - ctrl_type = 'Span' % ctrl_type + ctrl_type = get_ctrl_type_format(ctrl) info = { 'name': name, @@ -135,11 +152,7 @@ def generate_h(controls): ids.append('\t' + id_name + ' = ' + str(id_value) + ',') - ctrl_type = ctrl['type'] - if ctrl_type == 'string': - ctrl_type = 'std::string' - elif ctrl.get('size'): - ctrl_type = 'Span' % ctrl_type + ctrl_type = get_ctrl_type_format(ctrl) info = { 'name': name, From patchwork Fri Apr 1 00:06:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15606 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 CDAA8C0F1B for ; Fri, 1 Apr 2022 00:06:48 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 141486563A; Fri, 1 Apr 2022 02:06:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1648771608; bh=dCN0zXKjOJg6nL++Wc/KnDtiT7JyUC2xTyT5uMG1gLI=; 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=iHhfnAaOJwzNj0d6ZbtFfHsQcg8Uy5PrjyFN6UU51/4Rs9Rq0FrZrIoXBKmQICurQ XrY+62W93UDFjsOmRaQMe0kf6bVNE0KW/JwhzwmaUQYXKfIdUFP4BWHmiG0W8a3Gg9 f18RW8OVp6Nu+AC5kwh57K/PQM1n3LiZdwOJDmq319SP+MwFGVvT7AYnJh8o+pKPFs SVC5NRrWwPF4/kxUxuy6ohdkHCKdi76Tqar9JjB5J6mnHDOSzDLg3GP6H2Fe3lDAKT 7ALeZ3QzRfiEJwwZdOUAyjPoEdlY0dOKnhyYrKwf0fpPVxH2lVFGriY0NoswbaewDP KBZIBHZq7YoRg== Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C67D165631 for ; Fri, 1 Apr 2022 02:06:45 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="DAa3zj8+"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1648771605; bh=dCN0zXKjOJg6nL++Wc/KnDtiT7JyUC2xTyT5uMG1gLI=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=DAa3zj8+c1TwOvNwVtcJgEKcjOfabVlVAHW4fm6nB32V2ocRV5dlswJ0+lYTsm1gJ XL2JWJpBciYv6fbLMtxhlyGhBEB9PGyBO+ZeBjH+63fFqN6VEUFLJUrWL7smcoLr7a WGaEOSfQhwxW6BywJcXfzV7RIkUW1M0nEj9bdhGk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([92.10.251.63]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MsYv3-1ntg461R1f-00u5xv; Fri, 01 Apr 2022 02:06:45 +0200 To: libcamera-devel@lists.libcamera.org Date: Fri, 1 Apr 2022 01:06:14 +0100 Message-Id: <20220401000616.12976-4-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220401000616.12976-1-Rauch.Christian@gmx.de> References: <20220401000616.12976-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:8vymKkR/9CXoaT9myx7ZxN/SY+9o0MrRLCDj5HASLlLIywf+IXI j5dJ6slJCLnfVKkii380FwpXZBLSqwsWrxdsILxUMbJoRssbfvOAlmgKpO90OuDEAE07cba BnNJmg5dtyTVXDxQeRhcSC+JKrkBDQKmAo1ZDseVqiG/ZqVlbw106ASDY996IjBno2Ko13E 4TEvHrBqcEg7bTX3+U55Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:WYhstEDN6FI=:6P20zKkOafHyptgAKKnHpS WM1rguJOqdJ618VXSP8WDKPGCoaVhKdYWNMf9RUnT5sm4xp19njdqjRKrKOaYYBVcCTjadYzr s6wlgqbklJpJtJBNAO/o6aKlS7C5KTVLeeYADNW9FPiZs0EeeNSeC/uvTpwU+tVsKyuz62O/q YRR+Ie1U2IenCbZHhhoCes0Wva0KssaDPStSQgAkNVzfSTbqzmKIzeL0oGjeH/91MAU5kpmCa wyTmuGk7H+PfGRxO2ZKuGI3QqNIdsmEOYXVjfJE8RU+1u/xGNDRvj8L+fEc+lu2k1dPgtTEWa BBpRBkuRsMOPDRz2Amt4iSRIvb5LKje5K4AjESmZes6/71Qs+/9sq1lxE5a3nLXkrMWnytuq7 sIo40Z2lGBmDRsIh7MZtaBVqkjUZ+bniwz9dftf1Pi8JEvCB//IyaknTdh1cvYOxs99S2F43j Cm568yPWWhl4CW99k/trv7wD9cgBazir9kpmPv2jI004HMVomzjD696jHLqWE7Z/RoMPydX2V Lzq85eOWy+PpIEVtYEqOQ+VipD8QfXOfW9y0U0SY4r+Ap24Y0Roq5m9qceDS1W5DDQPozurKU /CV8Dw7dCSfo0MeRLuX9SGLeH+45Tf5ZFSrdjWlvUAAWDSH2Az/ps7PSB/ieHUbW4lFHdUmwQ sWLov8TBdMSRdujZul93KuTGbXA/nMSNCWjcQT+KQu8ynrfv3fiznZv29wn8ghxMa26aA5i3/ m20AwGefRyqhsjpoG4YOLuxgiH3YKbfgZcqoAImo0vwALDAhS9HbBiovwzQ0uTGxScihIABuJ +ZHj403GlVGsPki3lG6IsMLZJOrW9QFcmBniRdy47/O8JBlEYmZLodlyjF/fPRWpWN/MokYgq bPQI1BuE704eE6KDPb2tT+lKSm9uFSNJZiTKDkyMeuDpBNIgtekFdpuUEEqAJ8mEIWTF/kA4X C4KkKmUJaPdrCxwqOgfpv567CdTQVlIkEoboYEafdBa9mgB2NpWXFWLe3z58Xe6xGyJiGXywh tTaNxq6i/FIYrShAajCyFcrc391DMtEVRj/fEjIp0mf614JJsU8yWlfimODHXTv0tx9k5pXeE Ng/lcl5MPH5oSM= Subject: [libcamera-devel] [PATCH 3/5] provide a default fixed-sized Span constructor 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 new default constructor allows to construct a fixed-sized Span via the default constructor of its stored data type. This prevents the construction of empty fixed-sized Spans that cannot hold any data. Signed-off-by: Christian Rauch --- include/libcamera/base/span.h | 5 +++++ include/libcamera/controls.h | 2 +- test/span.cpp | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) -- 2.25.1 diff --git a/include/libcamera/base/span.h b/include/libcamera/base/span.h index 88d2e3de..7a4806dc 100644 --- a/include/libcamera/base/span.h +++ b/include/libcamera/base/span.h @@ -112,6 +112,11 @@ public: { } + Span() + { + Span(std::array{}); + } + explicit constexpr Span(pointer ptr, [[maybe_unused]] size_type count) : data_(ptr) { diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h index 665bcac1..de8a7770 100644 --- a/include/libcamera/controls.h +++ b/include/libcamera/controls.h @@ -167,7 +167,7 @@ public: using V = typename T::value_type; const V *value = reinterpret_cast(data().data()); - return { value, numElements_ }; + return T{ value, numElements_ }; } #ifndef __DOXYGEN__ diff --git a/test/span.cpp b/test/span.cpp index abf3a5d6..c37e2a66 100644 --- a/test/span.cpp +++ b/test/span.cpp @@ -37,7 +37,7 @@ protected: * to generate undefined behaviour. */ - Span{}; + /* Span{}; */ /* Span{}; */ Span{ &i[0], 4 }; From patchwork Fri Apr 1 00:06:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15607 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 ADE15C3266 for ; Fri, 1 Apr 2022 00:06:49 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 3E7166563B; Fri, 1 Apr 2022 02:06:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1648771609; bh=MgYIrK0mESwIgxjRuASeFAMcLUTFookB9j/ke6uuGXY=; 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=pW2qTIXNcvI1lneTmCDEtGfLdQPp58YNbSTOQHG5wtKsIqR055/AfWWbPtsC/sLij 9P8BOC3tr10j1cqc1ged+Ks9gjiaV3CT1QuRDmOIDBygUgRQ9vMg5JDvPbVtyYLS5o VLiAgipf/YOayOfZOZRqjXLnu+op3yWHYGTbxJj70qqwZrxL6aIwSHTMhIFVC6a9fG oG3J0pd9jL0HThywhv5SaIED937Y3+MI4u8bI2cbbi/8yEzYNYaobR98hgS0yf+yyd zU6FTnRW1pQIGnaToq1ARUaUQbxChX/yG0aDRCahUqd24NZxmzMJRJuRNXySo0oT3I czUZqEuPWAjnA== Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1E62F60135 for ; Fri, 1 Apr 2022 02:06:46 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="W8S/aA6L"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1648771605; bh=MgYIrK0mESwIgxjRuASeFAMcLUTFookB9j/ke6uuGXY=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=W8S/aA6LiS8P0TiaS5rO2bUmHWnq4CbgmW7uQWpNh2TfdDLZcs3FjrThEGQ8ofTtJ IxHA0EJPAX5R2sQgIHlENTqBOeT2T4cXpfljABDYzuRIJ5b1jzSj5j+BRm+8c6dnmd 3y7FK+knlm1uQlIuNByo2TheZMwQhhem17XO5qsw= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([92.10.251.63]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MF3DW-1npXHp2WeO-00FPXw; Fri, 01 Apr 2022 02:06:45 +0200 To: libcamera-devel@lists.libcamera.org Date: Fri, 1 Apr 2022 01:06:15 +0100 Message-Id: <20220401000616.12976-5-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220401000616.12976-1-Rauch.Christian@gmx.de> References: <20220401000616.12976-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:6W7XQZ8nUlpCshYLk9H6dhcx5dzp67UIFTwXfPGkbpu6ETtX2X/ AxYcfbF/2LNZk+okpJ6w5PrMSKiCMVhdcKA5D7v42+laSrJ042R1bdxVyYxRAIrV0oXU/Gc vJ1m4mWJ8tA6C6m8F0OCamxJj5KBRBDMDHu/IxLL/vG3nxKp9hxJUeBv7HZONAHi0HEMejh IaAG55FJSJ0gmPsl0dpVQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:JQxk3HPg+lU=:85Xxo+GMfI3icoET23FK6k m25B0cCOWmqSrp9EXfSqI26pw5Sj7XJfc6Weyikb323kTKCv8d9dXieBDMclNUhozfQp1XqNE I6xkY1pn/j8dXAjLUGYpGOsLbnGY5hfSwmwuFRL+20EcCt0gKOGMNO+XjvXbVL8Cp2mpL3Xhp awxTow4fPkwo7Jqofd5nM8MZF8TYRzXd02dmDKa0F91qT+3xiz5NeJPBw499GgkspD9AxIfiK i87bNTTup2J25/PH51zOnsN85e7A4cC2WtPzlIUDHaMfWeAnWpH6jHC0yvQpRY/eng1B9lGiY N+zwO2MxT672av8ByefJpc7EvDrsJgBs4F3tgrbFXKdmOaFMKpWJtZ/wR7uM+C7JdPxw8Lagy N5TDGqBXFVxH9z8HV5IaRIt0hTRAL8kobVvNk5zJnw4gvrJsV0xQic8pV/fTT2eNAjLM51F55 Y/W4y+axobfnlKxOahopoo1Dg+iVO5nXfZej2/rKTIfcsBIgA1PBoeepCil2K2ts2Fi3cqAge n8amZfaR2YQ2efoFxMXd/lSOe0WibwYkAFAoC6hLYmXCUIBfhuoP4r4rpo93Oo47a8MDKIxn7 71cvZqAc4jHRa/8d5P+uarR1r7roQa1ynyoxgJ2TnlmtRVyPbrsC+WtPjQ76qGp0XQLI0yN6b 7iZvP2WXqsiP9q7DdVKAoMwPsUDZ8psYp6+DfnlrFNHt6QOAYX5/T654ySrDc/rpGBSw46V5N jr3XqSaP+Vikz26kXwQk2hl0R1RE9uiJmgcumk29gbfRKnT+Cz/TKXDgpVoTwWU9YF+nUODw8 J8QAWtzWfkVU03J6aiv3Ll0BP9IhGlyDfJXlCZG6wxPES/ldFXaUjvFIdkqv8XmFxS0i2EazM cMGYBvbbLOgAyFQzSlfEmpbO9zjqWZerleU0wJqtEGJjJrm3qwqJyIFI7dFohWHgboybsJzza AQYy94enCs6PrIhMNipiOycf/4GQOF5REbzt7kJ/d8OIfH9xHfMTFEOeGEgl5XK3RJOQsWvzI yM8vEvaioEjoR/gDyC8ct4O2nHUCkghSkfaBnu/QM32M2wN+MMrDE7JlkNMH4sGWGvH43wFPc XAa7WWwXKHAyQA= Subject: [libcamera-devel] [PATCH 4/5] apply clang-format style 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" Signed-off-by: Christian Rauch --- include/libcamera/base/span.h | 45 +++--- src/ipa/raspberrypi/raspberrypi.cpp | 3 +- .../pipeline/raspberrypi/raspberrypi.cpp | 34 +++-- src/qcam/dng_writer.cpp | 140 +++++++++--------- test/span.cpp | 4 +- 5 files changed, 116 insertions(+), 110 deletions(-) -- 2.25.1 diff --git a/include/libcamera/base/span.h b/include/libcamera/base/span.h index 7a4806dc..a38f6161 100644 --- a/include/libcamera/base/span.h +++ b/include/libcamera/base/span.h @@ -131,7 +131,7 @@ public: constexpr Span(element_type (&arr)[N], std::enable_if_t (*)[], element_type (*)[]>::value && - N == Extent, + N == Extent, std::nullptr_t> = nullptr) noexcept : data_(arr) { @@ -141,7 +141,7 @@ public: constexpr Span(std::array &arr, std::enable_if_t (*)[], element_type (*)[]>::value && - N == Extent, + N == Extent, std::nullptr_t> = nullptr) noexcept : data_(arr.data()) { @@ -151,7 +151,7 @@ public: constexpr Span(const std::array &arr, std::enable_if_t (*)[], element_type (*)[]>::value && - N == Extent, + N == Extent, std::nullptr_t> = nullptr) noexcept : data_(arr.data()) { @@ -160,10 +160,10 @@ public: template explicit constexpr Span(Container &cont, std::enable_if_t::value && - !details::is_array::value && - !std::is_array::value && - std::is_convertible (*)[], - element_type (*)[]>::value, + !details::is_array::value && + !std::is_array::value && + std::is_convertible (*)[], + element_type (*)[]>::value, std::nullptr_t> = nullptr) : data_(utils::data(cont)) { @@ -172,10 +172,10 @@ public: template explicit constexpr Span(const Container &cont, std::enable_if_t::value && - !details::is_array::value && - !std::is_array::value && - std::is_convertible (*)[], - element_type (*)[]>::value, + !details::is_array::value && + !std::is_array::value && + std::is_convertible (*)[], + element_type (*)[]>::value, std::nullptr_t> = nullptr) : data_(utils::data(cont)) { @@ -185,7 +185,7 @@ public: template explicit constexpr Span(const Span &s, std::enable_if_t::value && - N == Extent, + N == Extent, std::nullptr_t> = nullptr) noexcept : data_(s.data()) { @@ -242,10 +242,7 @@ public: static_assert(Offset <= Extent, "Offset larger than size"); static_assert(Count == dynamic_extent || Count + Offset <= Extent, "Offset + Count larger than size"); - return Span{ - data() + Offset, - Count == dynamic_extent ? size() - Offset : Count - }; + return Span < element_type, Count != dynamic_extent ? Count : Extent - Offset > { data() + Offset, Count == dynamic_extent ? size() - Offset : Count }; } constexpr Span @@ -322,10 +319,10 @@ public: template constexpr Span(Container &cont, std::enable_if_t::value && - !details::is_array::value && - !std::is_array::value && - std::is_convertible (*)[], - element_type (*)[]>::value, + !details::is_array::value && + !std::is_array::value && + std::is_convertible (*)[], + element_type (*)[]>::value, std::nullptr_t> = nullptr) : data_(utils::data(cont)), size_(utils::size(cont)) { @@ -334,10 +331,10 @@ public: template constexpr Span(const Container &cont, std::enable_if_t::value && - !details::is_array::value && - !std::is_array::value && - std::is_convertible (*)[], - element_type (*)[]>::value, + !details::is_array::value && + !std::is_array::value && + std::is_convertible (*)[], + element_type (*)[]>::value, std::nullptr_t> = nullptr) : data_(utils::data(cont)), size_(utils::size(cont)) { diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp index 1bf4e270..926b3185 100644 --- a/src/ipa/raspberrypi/raspberrypi.cpp +++ b/src/ipa/raspberrypi/raspberrypi.cpp @@ -22,11 +22,12 @@ #include #include #include +#include + #include #include #include #include -#include #include "libcamera/internal/mapped_framebuffer.h" diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 8fd79be6..34d9f4c4 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -10,26 +10,26 @@ #include #include #include -#include #include #include +#include +#include +#include + #include #include #include #include #include -#include -#include -#include #include #include #include -#include -#include -#include +#include +#include +#include #include "libcamera/internal/bayer_format.h" #include "libcamera/internal/camera.h" @@ -42,6 +42,8 @@ #include "libcamera/internal/pipeline_handler.h" #include "libcamera/internal/v4l2_videodevice.h" +#include + #include "dma_heaps.h" #include "rpi_stream.h" @@ -174,8 +176,12 @@ V4L2SubdeviceFormat findBestFormat(const SensorFormats &formatsMap, const Size & return bestFormat; } -enum class Unicam : unsigned int { Image, Embedded }; -enum class Isp : unsigned int { Input, Output0, Output1, Stats }; +enum class Unicam : unsigned int { Image, + Embedded }; +enum class Isp : unsigned int { Input, + Output0, + Output1, + Stats }; } /* namespace */ @@ -250,7 +256,10 @@ public: * thread. So, we do not need to have any mutex to protect access to any * of the variables below. */ - enum class State { Stopped, Idle, Busy, IpaComplete }; + enum class State { Stopped, + Idle, + Busy, + IpaComplete }; State state_; struct BayerFrame { @@ -544,7 +553,6 @@ CameraConfiguration::Status RPiCameraConfiguration::validate() cfg.stride = format.planes[0].bpl; cfg.frameSize = format.planes[0].size; - } return status; @@ -651,8 +659,8 @@ CameraConfiguration *PipelineHandlerRPi::generateConfiguration(Camera *camera, PixelFormat pf = mbusCodeToPixelFormat(format.first, BayerFormat::Packing::CSI2); if (pf.isValid()) - deviceFormats.emplace(std::piecewise_construct, std::forward_as_tuple(pf), - std::forward_as_tuple(format.second.begin(), format.second.end())); + deviceFormats.emplace(std::piecewise_construct, std::forward_as_tuple(pf), + std::forward_as_tuple(format.second.begin(), format.second.end())); } } else { /* diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp index 34c8df5a..a7dd30f8 100644 --- a/src/qcam/dng_writer.cpp +++ b/src/qcam/dng_writer.cpp @@ -11,12 +11,12 @@ #include #include -#include - #include #include #include +#include + using namespace libcamera; enum CFAPatternColour : uint8_t { @@ -201,7 +201,7 @@ void packScanlineIPU3(void *output, const void *input, unsigned int width) if (++x >= width) return; - *out++ = (in[4] & 0xff) << 8 | (in[3] & 0xc0) << 0; + *out++ = (in[4] & 0xff) << 8 | (in[3] & 0xc0) << 0; if (++x >= width) return; @@ -235,8 +235,7 @@ void thumbScanlineIPU3([[maybe_unused]] const FormatInfo &info, void *output, if (pixelInBlock == 24) pixelInBlock--; - const uint8_t *in = static_cast(input) - + block * 32 + (pixelInBlock / 4) * 5; + const uint8_t *in = static_cast(input) + block * 32 + (pixelInBlock / 4) * 5; uint16_t val1, val2, val3, val4; switch (pixelInBlock % 4) { @@ -254,14 +253,14 @@ void thumbScanlineIPU3([[maybe_unused]] const FormatInfo &info, void *output, break; case 2: val1 = (in[3] & 0x3f) << 10 | (in[2] & 0xf0) << 2; - val2 = (in[4] & 0xff) << 8 | (in[3] & 0xc0) << 0; + val2 = (in[4] & 0xff) << 8 | (in[3] & 0xc0) << 0; val3 = (in[stride + 3] & 0x3f) << 10 | (in[stride + 2] & 0xf0) << 2; - val4 = (in[stride + 4] & 0xff) << 8 | (in[stride + 3] & 0xc0) << 0; + val4 = (in[stride + 4] & 0xff) << 8 | (in[stride + 3] & 0xc0) << 0; break; case 3: - val1 = (in[4] & 0xff) << 8 | (in[3] & 0xc0) << 0; + val1 = (in[4] & 0xff) << 8 | (in[3] & 0xc0) << 0; val2 = (in[6] & 0x03) << 14 | (in[5] & 0xff) << 6; - val3 = (in[stride + 4] & 0xff) << 8 | (in[stride + 3] & 0xc0) << 0; + val3 = (in[stride + 4] & 0xff) << 8 | (in[stride + 3] & 0xc0) << 0; val4 = (in[stride + 6] & 0x03) << 14 | (in[stride + 5] & 0xff) << 6; break; } @@ -275,77 +274,77 @@ void thumbScanlineIPU3([[maybe_unused]] const FormatInfo &info, void *output, static const std::map formatInfo = { { formats::SBGGR10_CSI2P, { - .bitsPerSample = 10, - .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed }, - .packScanline = packScanlineSBGGR10P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 10, + .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed }, + .packScanline = packScanlineSBGGR10P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SGBRG10_CSI2P, { - .bitsPerSample = 10, - .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen }, - .packScanline = packScanlineSBGGR10P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 10, + .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen }, + .packScanline = packScanlineSBGGR10P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SGRBG10_CSI2P, { - .bitsPerSample = 10, - .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen }, - .packScanline = packScanlineSBGGR10P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 10, + .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen }, + .packScanline = packScanlineSBGGR10P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SRGGB10_CSI2P, { - .bitsPerSample = 10, - .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue }, - .packScanline = packScanlineSBGGR10P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 10, + .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue }, + .packScanline = packScanlineSBGGR10P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SBGGR12_CSI2P, { - .bitsPerSample = 12, - .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed }, - .packScanline = packScanlineSBGGR12P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 12, + .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed }, + .packScanline = packScanlineSBGGR12P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SGBRG12_CSI2P, { - .bitsPerSample = 12, - .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen }, - .packScanline = packScanlineSBGGR12P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 12, + .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen }, + .packScanline = packScanlineSBGGR12P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SGRBG12_CSI2P, { - .bitsPerSample = 12, - .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen }, - .packScanline = packScanlineSBGGR12P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 12, + .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen }, + .packScanline = packScanlineSBGGR12P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SRGGB12_CSI2P, { - .bitsPerSample = 12, - .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue }, - .packScanline = packScanlineSBGGR12P, - .thumbScanline = thumbScanlineSBGGRxxP, - } }, + .bitsPerSample = 12, + .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue }, + .packScanline = packScanlineSBGGR12P, + .thumbScanline = thumbScanlineSBGGRxxP, + } }, { formats::SBGGR10_IPU3, { - .bitsPerSample = 16, - .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed }, - .packScanline = packScanlineIPU3, - .thumbScanline = thumbScanlineIPU3, - } }, + .bitsPerSample = 16, + .pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed }, + .packScanline = packScanlineIPU3, + .thumbScanline = thumbScanlineIPU3, + } }, { formats::SGBRG10_IPU3, { - .bitsPerSample = 16, - .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen }, - .packScanline = packScanlineIPU3, - .thumbScanline = thumbScanlineIPU3, - } }, + .bitsPerSample = 16, + .pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen }, + .packScanline = packScanlineIPU3, + .thumbScanline = thumbScanlineIPU3, + } }, { formats::SGRBG10_IPU3, { - .bitsPerSample = 16, - .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen }, - .packScanline = packScanlineIPU3, - .thumbScanline = thumbScanlineIPU3, - } }, + .bitsPerSample = 16, + .pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen }, + .packScanline = packScanlineIPU3, + .thumbScanline = thumbScanlineIPU3, + } }, { formats::SRGGB10_IPU3, { - .bitsPerSample = 16, - .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue }, - .packScanline = packScanlineIPU3, - .thumbScanline = thumbScanlineIPU3, - } }, + .bitsPerSample = 16, + .pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue }, + .packScanline = packScanlineIPU3, + .thumbScanline = thumbScanlineIPU3, + } }, }; int DNGWriter::write(const char *filename, const Camera *camera, @@ -524,7 +523,8 @@ int DNGWriter::write(const char *filename, const Camera *camera, */ unsigned int green = (info->pattern[0] == CFAPatternRed || info->pattern[1] == CFAPatternRed) - ? 0 : 1; + ? 0 + : 1; for (unsigned int i = 0; i < 4; ++i) { unsigned int level; diff --git a/test/span.cpp b/test/span.cpp index c37e2a66..bf3b77fa 100644 --- a/test/span.cpp +++ b/test/span.cpp @@ -9,12 +9,12 @@ * Include first to ensure the header is self-contained, as there's no span.cpp * in libcamera. */ -#include - #include #include #include +#include + #include "test.h" using namespace std; From patchwork Fri Apr 1 00:06:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15608 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 BD9F0C3265 for ; Fri, 1 Apr 2022 00:06:50 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5B09665633; Fri, 1 Apr 2022 02:06:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1648771610; bh=InSS1aMS9uqLW8CBU1NK5f37YyIWVBJAMr5et4FWe74=; 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=dlc4GYLFJucOUjUPM8xI9tWqOex9ot911BGAM14DT7TtcaCbNywdwhfv4FXXhhpaa OZtF+xiJ7F4qFgLu1zf6wK2xrP2uSgU+9qI8juQPeNI3tOxqWmZ5F5GJ0ITFzMPp1+ SJBuoc90JMVR5wdy92Z41rND048qXFern9q9vL2Rq9E1mqZ0QZ6CYFmuxemALuBgb6 cB10JwvBROnbNHsXEOW/KcDi9qnCjcf8pyMkI99g2hOjY1DVXZyQz0UzvyQUtZOEue mV/3GG9GHfZYJ01JN/SHXYsActHVlvP/KmW1YiRWmQmZreu5ZQzButf1zWxm5vF6q0 2Qc7BTt1BtG4A== Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5225065631 for ; Fri, 1 Apr 2022 02:06:46 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="idtxihlx"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1648771606; bh=InSS1aMS9uqLW8CBU1NK5f37YyIWVBJAMr5et4FWe74=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=idtxihlxBvljrZktLcNmlYf+PsJw53hX280gUAiCdr4uc/ZFczNbJl8OV6UQuoexC XmI1tiB6ky0vpP7qrTaIDuMDo7v9YAmPTlsHFm5rjs/M/8G7ZgX8M6Ua4X5XpieNE+ Duuq2sYZnANnEzi1gnH+2AaH88wbPLDByT69LJ+U= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([92.10.251.63]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7b6l-1nfslc3fy9-00819F; Fri, 01 Apr 2022 02:06:46 +0200 To: libcamera-devel@lists.libcamera.org Date: Fri, 1 Apr 2022 01:06:16 +0100 Message-Id: <20220401000616.12976-6-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220401000616.12976-1-Rauch.Christian@gmx.de> References: <20220401000616.12976-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:vXkxMZ+8ontAhJp4nZPjyQns8/gVfN3/OeS0+fz2uufrBb+t/tH sNezpoOtWoXwCxfzOeNorSsJ3KfyNKzWXL6REYkhH5LwZyJdS8Kz2a0mSC1Fnd4hhfT4Ck9 wf+G+9NLV5YcsvFKdHb6Ow7TP47UBiDnDz/MYFL8FKKms44k4LUpoZxIkW6DUS3Ipvl/wcg JYup68+7xf58gLecPoKAw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:SLycFwaQoXo=:1ti9+TILYjkBoxNIJQQudJ 01FhriWUUAYLL8vrIhEMp6m5Kk6f3tKtPrgvf/zT51mnWwLWoYLk2itg8BZ/7ky8Yll/XUMxb Fjr4Tg/wFwrIIQdWq1E9mjtUpC+Qgojb3U2ZXB8QCRfXRtaXLVfofBps29+kOs/vzq7a/xI0g 2C0EyYXsZ2R3rNIzyGWUah00jyP99K36naCLDEGcvU1JFrulg2v2kvJ1Ej6lcIUK3N+vL6XbM x0Kj0U90yE5NFF82XUhvV46KfjFF2HYLKLIC65AIry4Br6j8bwhUSCmuXVynoSM/WyNv3fYqg QgxIgJGWAlreiXAtAbDFXx7Jr2G1H63qT66vDfT1Mts3/SmmbUr6pXK9jBWw1Y0rqgLp1tONn fHJbKOzajDWHkv/YiVgJVM1gqwM2qFj5gylQtLPm8hSWAXwvIrzfCCr6eGyVazhRMKz6YGB3w +XRDMeuROL52PMih3GdDTmfyG9u/6aRgkDafwHmAZmMhk3aQKmmy7HuTzTGsHE8Mms2f9qrlv GoCRw0mP+76fid0pgLPz3G85bbmaNkyewqJNufCwY7B0aWTCdtf/jQ+HKHPl3NYXbxQ3UTds4 9bwAUXLog/3HuZq5IEcoIO1OSmMxz3RrNTqxRnOrgwTl60JQck7SWoLBAqrXa8veukCxgDP/A x1Y7vDv7rKJOqPXb4iNgct0932rQRnrW2Z2UwwOo6yxl/6bqpkuvmtt/LY/3nkw3FBiANXhC8 feVbxsXTm50R8bpXGr8o6Ri+VXUmZiAko5NVyFS9iT6zFFr5+Z3kc8VTyemsDH7M4quc08ThC FVawFv+ZTLdfHXaiml2yU3U6HG+0Q/MCcU9E+jKZzS5dsKjrK7tOBGYojXWkcYQQESRoKaTIZ AA52tpPL3lwjpGHbdcs9paPQ8XvOLQ5GuXk9fSmX9KxZlbgDwam0W3W/pU73Puhe8Y1XUZfok ylBa+k2abw584P6voPI1H9+YTx/ZZ/5EsbzQwgRT4Iz6XTZyk+uKOQvkIALnEZ221K3B2fxu3 2UO3ToVyS9p9JlFs7nw/huHgygZHLSzwZsDZw9qjZy8QYvPuAcu/ePrk/7PMMz0sKFqXsl0r8 MdNppdURHMdwEY= Subject: [libcamera-devel] [PATCH 5/5] 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 | 18 +++++++++--------- .../pipeline/raspberrypi/raspberrypi.cpp | 2 +- src/qcam/dng_writer.cpp | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) -- 2.25.1 diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp index 926b3185..c27c897f 100644 --- a/src/ipa/raspberrypi/raspberrypi.cpp +++ b/src/ipa/raspberrypi/raspberrypi.cpp @@ -499,18 +499,18 @@ 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) { @@ -815,7 +815,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; } @@ -1099,8 +1099,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 34d9f4c4..7d4142cf 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -1692,7 +1692,7 @@ 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 = controls.get(libcamera::controls::ColourGains); + libcamera::Span colourGains = controls.get(libcamera::controls::ColourGains); /* 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 a7dd30f8..d712dab2 100644 --- a/src/qcam/dng_writer.cpp +++ b/src/qcam/dng_writer.cpp @@ -437,7 +437,7 @@ 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); + Span const &colourGains = metadata.get(controls::ColourGains); if (colourGains[0] > eps && colourGains[1] > eps) { wbGain = Matrix3d::diag(colourGains[0], 1, colourGains[1]); neutral[0] = 1.0 / colourGains[0]; /* red */