From patchwork Tue Apr 5 00:42:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Rauch X-Patchwork-Id: 15615 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 589A5C3260 for ; Tue, 5 Apr 2022 00:42:26 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id F1EBF65641; Tue, 5 Apr 2022 02:42:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1649119345; 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=XlyDgvpIP8a2l1hLrCrNMPfhOCnfEXcE8odPzqtz7yI2GyJxzU0ZlpHPuVjiXRUfH Uuaq89qShBdoZWhlDonBs8tiUdSJF4zkzXvkH95JDIqhclWkj5WvaF3ZwbuhO4BT05 Gw/0nWfd2bTgxTWaLf8UBefXkqeX4/NAg8rT9z0b4DM1e3qmHVD5Q6Qup7kCm8vhAr wVUNrfz/tb5KV93nvLwJqThP9Hc0fbTLqy4tkBmuhkVo4BzHxmwjn2LaoHnK8YaAnX MepJ4Mzmurg3TOkjDQMv/xGr7eG/mq1pO3rD/dQRlkmQAh9c2/V5qH7FeDiJyKx/El zuwE0bxfQNXkg== Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A3CE965640 for ; Tue, 5 Apr 2022 02:42:22 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="dn/hBKF7"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1649119342; bh=JuVzSB5dB/GwkXEWP3cFR31HptSzBMeuKMg5Yu3wvVM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=dn/hBKF7frxW8wcIm0Rv7MNZ5MVLHc119cRfVBXMmjFkEewvqP9gqJqtCsJHsk4vR J+nobZmsBgVG79UgFAYtbHlUOJ0w4JhWdb9yN2+JlCEyxbCmkz2u3aFSviaaPQ77ao iz+yuAE35bTlAY+pFExa5NmTq9g/+38gatpm+i8s= 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 1MGz1f-1nnvjh0ReN-00E2fI; Tue, 05 Apr 2022 02:42:22 +0200 To: libcamera-devel@lists.libcamera.org Date: Tue, 5 Apr 2022 01:42:11 +0100 Message-Id: <20220405004215.86340-2-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220405004215.86340-1-Rauch.Christian@gmx.de> References: <20220405004215.86340-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:rpolKMIt4wjkCHnVn4td08oirM7e8GiudIU5WAffthMUHOqbSKF CmkTx22cA44z58OBsMQyRasFoGV9p30yWJMR0EypZqJw6A+9EVxkMEIELtGMGyIYYwEYlGe AhcQ2vpeThJ4jQUDHDE2ElGzccHlvX3LXJH1qyUshnXYhENnOQLxh5zmOuk87+5DeaxTY+c 3q+GB7Xf/tOsFFXcAYBTg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:w5hD4gHjLAQ=:LFji2d49qQhiucAZHxj3Km gU0tSrXF35gfNV/tdnuw9Wil8DWf4vgc325G8gBg0MHpQE2etlNLds6LHUyPb87FlU0RxsXoV 7KuYuJ14CF8dRkshMUklybOm4iELm/0wGPS3Opoc8Jld90PeMe/M/5HnITRuQjPzMpM0UuEPk 3CIsAH8KbgSYddWlD2lli9eBl3RGjx4kA0UNM5mw/cbNylmqYjq9qyBp3oXR7xDd5nEtKrodC 0O+pOpsadhd8NGu4kKcrHCQH5B2DnCMa4P8tPXx+EOJC6vrXTbSzJCdf4E8EHWsik7w9KEsXq xn+dDHccoqMmXPYEhPAH/136tkGNT08jMcpqj1U8jCq7oktP8zvvLvXBoJ5WJ4Xa441rIX8qK ed9p17oXc+mnpzeDjwaVZW2yiYOxPMuxbcwzncHlz7xpXCFryStjaNl8u3NTlaRErlzg6PLG+ XPVcYJwT9L4B84ErWipQy9fdb66sSOa16IJvAq9CIyglnWyk0IeU7mW6wzB8lgfYxd/XaJrR4 iUJXYUIX8CMjU6fYVcb0NKOCNplgOjHx67BTTqWvl+xnvMrkLwQDwicfN27r6awuo0XUl7mIh k8yoWwyV4gqD/1H6zd/vPxezUZoYL4EtytIvtspSB7DlWYOnyOg91bm9xxzp4VQ6NKh6vJTdV MK25Kiqzn+XfG1/H2+uISTpfp1nQAXyQI7PSKU932IHwpA2BMnWp3Y7E/vLdL8whtLv7Ulvu8 HroWW/OhLnV9Xj+JNARy9FNGjgZZIQAdrn4pD1vaiTXyt7ayumlRJLcnnUpWUcT1Ss7MacGDF 0zsOdNDA/yLjVHP6RrWZvxI/K8RCfmXDCYVL3L9fy/1SAYl8ytw+NWCiMNq74717WfDl7eOJv ztvdQemgqU40dger+wV4iVjjFq7zFCWXQmCFRXhZuXfoIOXTmjjxxmgTG7Bh+d+qHThs0iIir L27RUpiy/lMGX6X4ut8hgIi7tLu9gEDhqAXJP+tdz5+8s3HFUxz+nnQCYW/BCIqCAHrFWkL9B 9SBHLukShX2zyVuAIPj6D/3hM7TqT4vmyY71mOKEQkr51VBuEmm90rEQgN9mQOJ8zZIcpMmgb cHjr+c67qvcu7I= Subject: [libcamera-devel] [PATCH v2 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 --- 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 Tue Apr 5 00:42: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: 15616 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 379BEC0F1B for ; Tue, 5 Apr 2022 00:42:27 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 72EF665649; Tue, 5 Apr 2022 02:42:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1649119345; bh=xyoNLYvQ00/5n2V0UrTP044WvBSFrAPN/SMgrg6VLqk=; 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=h1K5LbCnPeJDd5JDqqQjfrfyOIzxVoiDZpXubjHQj6y5WXGI1AtwVcKnmskJs8c7W cPzszrBufoc6Rzbl2tUyUtY9LiTXWkun1cA48UZjqLnlPxS2qfTsMV8Zc4+0TBpp64 59agZ0l0mCVDRVrqRop0RzdYeIjluue1pXN9V7FVdn0+VAuo6cM3BTlbQgqgNGuTGA pPuEN8OwjajhlY526TQXas5h4vb871S5LXmDsoei4+7HN0IUpy4bkYd7Blsid4Co8G O7hMzhiysvQserJagMDMzqjL4mVxzyTrtbBJLI4MQBZ49Dp3TJZG0tnyp7Q4MhZBQj ov4WY4FOCHBfg== Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C642465641 for ; Tue, 5 Apr 2022 02:42:22 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="TWL/TzaA"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1649119342; bh=xyoNLYvQ00/5n2V0UrTP044WvBSFrAPN/SMgrg6VLqk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=TWL/TzaAszo1nR91c2q9I58hibkBKZrfmn56sURSmrW03d8K7CE4MyON9dhzl7b1h P/v+Z66oGI6lyOwA0TVbgVtS0SSbk5GWXzPMSRdYEsP81m0vu/RLZ9jp7Z7ng4VkqV B0l/dzmST24OTDLr+BUjkBT/z0XP9RG4pyve+kJ0= 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 1Mbir8-1o8xg81Vs6-00dEPN; Tue, 05 Apr 2022 02:42:22 +0200 To: libcamera-devel@lists.libcamera.org Date: Tue, 5 Apr 2022 01:42:12 +0100 Message-Id: <20220405004215.86340-3-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220405004215.86340-1-Rauch.Christian@gmx.de> References: <20220405004215.86340-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:EHpgIaThWfIhYiEjXAlEqfu37Nc9NoHdyeWFtIimzoGjUvxMqQc Okj9MDB2hg7Hv3DJ54rAIp28Jwmhogg+EIRwUigzfsXeJKv82vErEYnc+ec484W6lfCvdsx 1EfVo9DopxWgQr1RwH63ydCIshO0piHcO1BTfSqDtedqI3Hig5vUxuSKnlPJAY4E9jBr6PE MDyBf/zmiFq0V5SfMKn+Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:NAc2snPw1uE=:Ioj5Y3ih/LGLOQ+ZZFEmsN zCxBhtMRgEVnu2twdE6H25owfpaVlT26hqTTBdYFquFNXRIT3aWCuEgxMr+WAyq3hexF36IFV 4b6JpIWf33HJKua3Id+0fVsLFs9MlPKNIjglVoHRaxoL5LPW5iZQB685bBgTvkhWtrTNB3VXx pO/+i01RcAgKaFdg1pioT2pSsCSzdYomZPgIfEmaEBKP9a8TAQNUI36yCVW/2PnU88eayYRMu NqHQ3czUpP6BKFxfPaInERqfZPf+oNeuA7l20dwxFt+vO8nEMlqoD+n4toPpP1WdOUuwbtpsF qydNmPJT4qIHTlzvoOR8GF7sHp5jHNA03uWyahS8jv3uYIfbf3uU4RZcySe499gE9E7HScU0Z OyZeaSncnEW//muZer5LA+dEmwIhFLDX0/mfVQf++en2qOy4WFa9SQQVxPOwjeo6sm+vxbpDv bi0TYGIeBrwuuyNN71Hx6oryP23qwev6ft7uCJDt+HbSfQZidWgtN8+jkibRvAWr7gDtuB57h obC6e00s24sjITrtp1TsKNe6xRRwYk1OYEaZq684UOoQSYH/lh2jTuT5K1r3FCHx+w9YsBPm6 ek33NXMiqAzf1KVDz5CFT2o5iJQgEcJ6VPm5w9HaCnLjxVDwYUEoU8I0nERCAMNoB5/h2sqFp RP6Hy3NnxwKN1EQHHLcLcPPI1srfhCGEsej1FA455c1+mZsaRmUzS4tX4nr3ijbyBE2yXZTJp tbzjUcCjFdOlZulAantJQ69ZV+qYz4Tvch6CVsdtX15aoGGN6jznUXnY7UbTHzrnzS9UMb1vu aM41uWHUUho+pY3AECw1kA9n/2y8dJi6Pya1xQ3eooMC7vXg9VkeP3A8omNbIBXEWlTvvdtfZ r2NnCW7DO7Ijj9oCznXfCfSd5GgeCkAIOVDpJF+HRN3ZKO2Q4j5CYcD/ZKUkmG/FKU+5DpB3p FXeYX2if+aW3dm9Kxw+JohrnXlWwfbb08yIc9e1Vnon4W9nGcFyC9+kR/IFiWJvBfj74XjaT/ gskeuPcIPKLBadNpq4MLhd0Jx/O2jlbU31ZYVJxqVvK6u7FH1hDyTpXmJ5kvW/E8jjU8Usgzy Luxg9MjBumwv4w= Subject: [libcamera-devel] [PATCH v2 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..4cadf160 100755 --- a/utils/gen-controls.py +++ b/utils/gen-controls.py @@ -7,6 +7,7 @@ # gen-controls.py - Generate control definitions from YAML import argparse +from math import prod import string import sys import yaml @@ -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': + return 'std::string' + elif ctrl_is_span: + if ctrl_span_size: + # fixed-sized Span + return 'Span'.format(ctrl_type, ctrl_span_size) + else: + # variable-sized Span + return 'Span'.format(ctrl_type) + else: + 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 Tue Apr 5 00:42: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: 15617 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 9E046C326C for ; Tue, 5 Apr 2022 00:42:27 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0C42265646; Tue, 5 Apr 2022 02:42:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1649119346; bh=1/elyQ8hHXseydij7lEbb9vqmTVhPoAJidVmASxCNro=; 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=qHjpZ8PMGEdEfQq9IEmtbxKTye7wuC1rA1KjO10i2tC9q3eg3Ibslm/lVbRSuDFgp GVWEmkzrA3pKEiZg8JszdLhJ0Y8MEd06PoOjjumbwqT+5GvyRnV6KM4yWxtEsaETkm t/nO1FrrztkHqr0iTmPclLJa1cGHGNnxvqeV0+plCAjT3kuDLyt4TwDx69XbHk2T+n iVuMUOOOrGy81ByLZXG7/zvEq2sNFthKDhH+p4ljDyYME4xej/q8sDIiFRXCbGUVwv 1tdJSBna+gfFuj1R1fmAcGMULsCH4r5y1vGG4EXlXUfBkabi7aDQj/TSdNvuaD8kOV QTvaYB0+vw5Og== Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 12F8A60397 for ; Tue, 5 Apr 2022 02:42:23 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="LNab4qir"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1649119342; bh=1/elyQ8hHXseydij7lEbb9vqmTVhPoAJidVmASxCNro=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=LNab4qirnsGnZbnh7TkO9j71vEacULG35uhuOLQrTJHNXv0R4OUGnsCiYRH0GF1mj przKy+gN+e20WZxa0TncuEd+gazHlgeptbBvf19wmNxVpBY0s1HZmoc8StoUcMWbDK EwRjDvh0LN5RUpzqt+53U7BdSkNFBNQG7rVLi6zE= 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 1Mel81-1oBQWR2bjR-00akda; Tue, 05 Apr 2022 02:42:22 +0200 To: libcamera-devel@lists.libcamera.org Date: Tue, 5 Apr 2022 01:42:13 +0100 Message-Id: <20220405004215.86340-4-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220405004215.86340-1-Rauch.Christian@gmx.de> References: <20220405004215.86340-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:Zn2Z6kXd7Amjxo21NqWSWXVgNVLd/hyEctvEu2NHG6yPDbdPJ5l zfT0ZkNPHgFehQIoTEFq8mtkYGJ1aOVhxia5USu/3XGPLlHwJxVx0BbfLqratUroUG57l5O 6CyOTjYmFzsigoAI3IBPzbco2Y+2T/iHD8kVsk7B3ZaJqEnQCPRdcMenEvBYixu1A21IDNa I0I2RL5obnbzbrISMerwQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:C3k3cmL33xY=:2KCCTMSOE4Vol02fNZIUSe ORnvqIAmYXqq3MW1N3bcoy61OsfFlj/qr9YduFjIzYXkfJuKVTx7x8bulGXN/QzlXMw+muY0z ThWehDHoYDj2flp0rcxdEU9xh/mMuiQ5GZqlLpXHOUqy88OMO4KJNXoko+eOuxmi8P02T6bBa PApD0wd1bDcqb1vGiNz3o86YQ08x3ACORAxfDUoP70oAli0erHN+6wkmQ7cX2eRmVUAw42X4i DpWZYN6j+umaiuDp6G6ygDssCzvLH+zfhgz3XlLYx5wlgV9/ZJetjjghinmEIxW2nC84aaF8k 8yE8GPD6uRba+MJsE7YmSrpTp5qRam8xr/lGdRoprwOMHScMn/5gj5jUEfQ76QoAvtpPkgbqo Ruvnhdw0QhRX+1ysJINE36WwDLB7RVYwpxrurLUBEweaSgnp4BxoxOwvEynSzyUIXerQIq1+o eEhzPtBdGXik9D4eViytSZDZuXBRBIt07tydAM28I039tVLHK3L2Utao2SiNQqQgQV1wkTrqp crwrL8RmCZEneBOs98r4UFq97v2G7Ps9bGqe7eu7j6rPKCKpLAzgUsLqcWpFwqRH668iSNP/8 kEoc9iQpGH8kIWhls4hLzjprSvEnT6cc+Tnk1WaimJBFwQD7S6ZGFdst06WfjeH5m00Ot6G5k Qtc0vhws8YXnGP/ym+Zh4NQyClkHMiKRemOVBS+y5oCRQiNFtZJrE1QBQ0Cn7Abx7UneWPVGn R3t70KLPK8ZWqaEmkx6LZEuSv1EFzIF1L7G3CbNY4nQOolcSmwMot6+hHAk3bYqCSwHZ1gVOh RnRXTk7WgibITea6Vnr/EvuE1aw6k829fb/RDijh4Sl84+M0jcSUdEoqllvFNlnJMYW/MVYD7 YbEBfz/hJFlHdb9DxUPpQN7nrQ1OSkvX8lTzoozgSE7SIT/6Ny5MRXxUkRLV4aglyz813reOP hH0QZIML6J+PwQYfCx/tIhYdJSuew0Bv+yeiCKWHHp/gEi3wlr+aGsW2afftfsX+DCfUi7VOi XC0fEyd05RECQz67rX81xN2eD7kAIT/Z1+FvCWyII7lqWXDm8LyCtnLje543YJ92dOIvGOa+u RHwRy4Qob96tTM= Subject: [libcamera-devel] [PATCH v2 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" This allows to construct empty 0-fixed-sized Spans. Signed-off-by: Christian Rauch --- include/libcamera/base/span.h | 2 -- include/libcamera/controls.h | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) -- 2.25.1 diff --git a/include/libcamera/base/span.h b/include/libcamera/base/span.h index 88d2e3de..bff4c115 100644 --- a/include/libcamera/base/span.h +++ b/include/libcamera/base/span.h @@ -105,8 +105,6 @@ public: static constexpr std::size_t extent = Extent; - template> constexpr Span() noexcept : data_(nullptr) { 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__ From patchwork Tue Apr 5 00:42: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: 15618 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 0E873C3260 for ; Tue, 5 Apr 2022 00:42:28 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 9E8F26564C; Tue, 5 Apr 2022 02:42:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1649119346; bh=ZAMvAKg3juwEoXLU0WdCEjcdyrCNwFE2RlHsrGAWtOQ=; 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=g7jbqh5EyMAtafhjWR9pbFpZ5E55NrKGAqKbTEW3+6Cke8Sz4aLx6ObVojhNmsqt8 oLnFc4BKNsuipaQcQcXKVthtVI5ElwNNb0yPjbuHgVpb5i9yroxdT27Ee/Zg/t0bDl JsUQgEVIUSn2+uVCp38LWphMZZ5pGC1+b29gbpWhuCU2s+lMH4YctcOek4SUJBN7BK nXneMw8Ky6xU1qxkUICsBUlPjvTGnW2A4PseOwif7v4nKZfZrZIbDKDL8ala7qxkko s+TA/Lx5UQ3ONNF40yZxQXEFCC/On5uNZ6WMDfXZlXrOID2pozKV1yekzpCt4/WKyT 4MVxnnVf+eUcg== Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 6479E65644 for ; Tue, 5 Apr 2022 02:42:23 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="Fdi0ThTB"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1649119343; bh=ZAMvAKg3juwEoXLU0WdCEjcdyrCNwFE2RlHsrGAWtOQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Fdi0ThTBBznaRxDdXyVf7LkcoXXneKMUjhdGjiW6AMO8fhVMkWTTF9l72G0t5/T4p bfU1ypVbEJRPFxkf8uduj1ZKmVtYkzH/dZbt605s5a+eWO6wYQQW/NpVJf/ZRB5oZs p1bAgZYQQnBaofxbnwP4DMdK+bCPnT/lNXwihOQ8= 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 1MHG8m-1nokgQ3gEy-00DDaN; Tue, 05 Apr 2022 02:42:23 +0200 To: libcamera-devel@lists.libcamera.org Date: Tue, 5 Apr 2022 01:42:14 +0100 Message-Id: <20220405004215.86340-5-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220405004215.86340-1-Rauch.Christian@gmx.de> References: <20220405004215.86340-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:5JBE5J7fY3u9MQXsY51yiEo1CbfHd0FmEOsf1q4SqidSrE2BFR7 kzudsOEcs9j4SErZ9rFyEJedCgZWAk3QerciXhI37e4hcNSW7rx7M3JPuVnzYnaLa2NMX5z Ylcy8xLjeevbvVT/CIakKwdDxVm535VVWJxanLuBVAFCaco+PG8suS6zth2LBenbjMYFP2v nAiI+cl5jMSIXMRhSB24Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:C1//DFEEyPk=:ysAI3NSOERGIwDWCFD8Lo/ 3S369/wSjPN8fEvzF5+Xuj+JzsQt6d2ilFmPijO0gK/AECUA/LLhHOWFfQvTeKbgvfx4FFoBM BNTDrVRQrB6lim67auuRkqjglcw97xZ1OqXv0dahnZ0r9HO6SgELUvZXtDy+l7KZGdMV8DxGm KvPO0QiF69GHyGr3dkdEZhJRiU/R+EdNyOt+Hi0inIkeM7uG7LNMmA+YC1Jb0G8m8zl7x9Q8X 97EVbxnYqFvb8OUw92NgXTS/TGiWZASJ2onywvqDE0nBWHfj8mSgNtLwIriM2Z/kjE7DSOdy/ tyxf22393KhFxO+FYLdKdupdx1us03Xf4rOwDxCKjH/y7jsCKcz7aHPu/iijdWmf8sDUKBA89 xk7YA7aqp3sL5OfePw1XF9FuI1Cpimhi2dHifwWgCXlo4FKoleh8FCGcoHjkT95ovr2uFpCxg OeauWS1TFPrcjdfthgLunI0RKSPz3483U9P0RdaVaXE5LaD4dCWXIYtUnnBgF0HQ4bwVL2IQU 0TetKzYPSHklGu93nzrTnD7AKDzjA70SwvEBxCYr86GmA9PxGgAu0ShO15KjaQAwQGaHOnY38 sjxC8Stk+WzuqFJPcTdxVkLrYcpYet7dNnFgqqM39uMwzWfOd7qptJCcKbvazClZNd5Y+kEi9 f+IZ3RYqxxy2Qlv/YBstvQ8LHRZaa3PZ4WoY2qQ8H3is/UPVzJEZglyAK2B97GbF+K/q3JLaL AsrPn/9/zzYcUkyn7AJywBbj2y2503creANWaYkTdzAsXDIZvsd/Gzy5Kxz0qARpPmgnvW3IR CFO+IuU9KqlkjfnNIeltTrKTaN2KegLhJWn1ygj8Uf4Rx84GeJ/pPTH7MhjGvioZr2yhMrgDP rgB9l6Xuu/RczWhP1Tk911KUgWRISrVa5BQNzS1RrOeT3zQmsFEpgVJVZY8n/m9807xQVh6Ls /FKyssuEGLJiS+iMozlzjN70dVNovgWIZrovJG1tuvB8AI6CMKasPTuP+3iiUVACQ4gZ4IgL7 vDzCZrIkcAbdjCzH9QmkQQXSB87AnGhGBiUc6ZctmpCZIDAuEWbKfhW1JgZRJciln8RTOxMi4 cmKGwx2fBji+2I= Subject: [libcamera-devel] [PATCH v2 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 bff4c115..b2fdd5fb 100644 --- a/include/libcamera/base/span.h +++ b/include/libcamera/base/span.h @@ -124,7 +124,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) { @@ -134,7 +134,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()) { @@ -144,7 +144,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()) { @@ -153,10 +153,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)) { @@ -165,10 +165,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)) { @@ -178,7 +178,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()) { @@ -235,10 +235,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 @@ -315,10 +312,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)) { @@ -327,10 +324,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 abf3a5d6..3c3f6937 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 Tue Apr 5 00:42: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: 15619 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 4AD96C326D for ; Tue, 5 Apr 2022 00:42:28 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0BF2565653; Tue, 5 Apr 2022 02:42:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1649119347; 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=PVnmM+d3MjZ1otbsofazWkwfY55Txg03JMUMyh2oRfQzdjPvuGPjdB+xFLtaFDqyE 15Z/fXCygxgOy1stfgJ2ZlzIZIdjDqA40Uv357josBnWb7RkRjFL0JCkCfhDs3VAdG YtS9H4drb2RrJrrJRhwl6mdzPe4LtirTLG6PkX5QfJG3dDC/vtbnAB/qyY49sVy2e2 6HYYKnrboEQFfqtBPFbxTy8bqaYulEJ1mPJ6gYdDH+4uwCmTOyp/a7mAQ0QWWcW9HM Xsh5QP0Y5j/O/DK6cHK2ghfyMkPFFBuTgqn9DOIzyNq04Kv+UMZZFI5wPyOgA0OLT+ kiRFDdIL50GKw== Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 86ABC65643 for ; Tue, 5 Apr 2022 02:42:23 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=gmx.net header.i=@gmx.net header.b="LunkeF+K"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1649119343; bh=InSS1aMS9uqLW8CBU1NK5f37YyIWVBJAMr5et4FWe74=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=LunkeF+KQH4wmDK6kuNXpIWV9dFTKElc5fXDLSnuuJAllFlzgaMrrRMBct/rGYiLy Om37U6bGcSPwLT1FrGRwjiKdPedeOVS2SeNxRBoSoDoGqahtYYHS7M2c6hSPxi4/SM N0CNU9sMttP/rjkbP3lrX49fH5nIf8kMXObNNO8A= 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 1M3DNt-1naAtO0cQf-003coA; Tue, 05 Apr 2022 02:42:23 +0200 To: libcamera-devel@lists.libcamera.org Date: Tue, 5 Apr 2022 01:42:15 +0100 Message-Id: <20220405004215.86340-6-Rauch.Christian@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220405004215.86340-1-Rauch.Christian@gmx.de> References: <20220405004215.86340-1-Rauch.Christian@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:X4tywJo2l37GzmXeLnZj98FTq+P/cO53w5zinK0BInia9gjAW3v DPeNaame2MtaL816+75TLOv5AMSICMWc0igRC6olRzDVchFwVafGOlxfEvng9asY86ch4Xn 2yHW/99ATK1h2NBM1Qi/zw5PkLgWNpsRCKH5ypIfG3h1qiATKnMlKCpHo7j8kIwIJpAHHAQ Hakw/nGwWkdjIqdxYIRkA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:qs35K/Gqh+A=:SbCzE4TtN1AbTap5d9TeW8 lbCWIk52sg/+kfui90/PaCoV5IJzJLmT36SSZ0ggVhwjLhM1RKcHPHdTchw9qZCRlKB25sdTe 2Ss2LGY+yFPannla3b0uQE9tl2m+MrGQ3GmH5dN1O0jyG1avRYaxVnTPBKvdTH6vzj1qbuM5n vCm1Tf4DEquMcy6AUAbw4g+msvnMSmU23zNvnM3lzqBd4562kxJEj2DSW1IYF84tpu6LS2jXy Nbe3Zehj2HxBCESpVsawtN4WAAyRgEuMJa7PcC9zMCRlNOBNSRPdkbvcOvoEmx1UaVeueV7p2 HRP44mKat/Djj1bAyly3w/DWSDoFhEzs2rsWj8qHl3f3bdIrSCDkwAMClXNfC21x63ZI6fFJ2 yp1HNnMQcr2POsyhafF/9fZ8hjWrdb/05xW+i1M8Bpv0D7WToFgkIuIbGPO/0qyIVRBlzvoe5 smyKbRgXdXGOBmX4c0ptMQjM36p1P3lFUvYgXdihrvaDfKfsQnxkO/wE5NiEjIRJ8Mx/6Ee7s cXj1G1escGGO5rdPOJ072MB/llATUsI4arcpBTPRk6s3wJkum/zQx95XJj46PS8YpMEeYZGMC as1EOJo/RkZh4zVsL7LIs7qMtQkddFnxohDOi1AD2J2Uu9OdYEb5PS2dyXhUz0P5kXefWILxW /K07GmLbPbqiKZxMphbagxr91dv9G6jUiowOqMnHID4VrddKmbjoymGSLxMpMx7fMg3vZ6AaM 5CwRPElIMgIceZFpBqax8KuAVKFr1XHT+BY4gp1MpPbHtvyKlzKhOAr6vSV2PEU54JORMBJEs S2BA3YftS1O3Dd84ICto9rDXoPjmdcp9zIuOvchKE7nJVFHqfitrUzN1PgAGkF8n91DhGZW3d qQXYKJMY88Bc+o4ef9vYOtz4ZkQe15MFjdCqWVsC8YOw551aDE6AtrhrSHmpt7X51HkAPCHsf zC9udNq6PaIrHZ2PCak5QMGGSeKSiMcLj8+sTkpqJZHcgkIGfV0KEodYuf/VK4xMXpsjpmYEQ 9SuGRdp4d5Q2dYFKQBEJmcHvPjolKHCbwntLSw7fS8egBpxO+ee+aFvFLP0Q48bjCBe13TIUf slhvX0WH+f6ASA= Subject: [libcamera-devel] [PATCH v2 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 */