Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/18548/?format=api
{ "id": 18548, "url": "https://patchwork.libcamera.org/api/1.1/covers/18548/?format=api", "web_url": "https://patchwork.libcamera.org/cover/18548/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20230426131057.21550-1-naush@raspberrypi.com>", "date": "2023-04-26T13:10:44", "name": "[libcamera-devel,00/13] Raspberry Pi: Code refactoring", "submitter": { "id": 34, "url": "https://patchwork.libcamera.org/api/1.1/people/34/?format=api", "name": "Naushir Patuck", "email": "naush@raspberrypi.com" }, "mbox": "https://patchwork.libcamera.org/cover/18548/mbox/", "series": [ { "id": 3847, "url": "https://patchwork.libcamera.org/api/1.1/series/3847/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3847", "date": "2023-04-26T13:10:44", "name": "Raspberry Pi: Code refactoring", "version": 1, "mbox": "https://patchwork.libcamera.org/series/3847/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/18548/comments/", "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id F2F4FBDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 Apr 2023 13:13:13 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 58C91627E1;\n\tWed, 26 Apr 2023 15:13:13 +0200 (CEST)", "from mail-wr1-x431.google.com (mail-wr1-x431.google.com\n\t[IPv6:2a00:1450:4864:20::431])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0538F627D4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Apr 2023 15:13:11 +0200 (CEST)", "by mail-wr1-x431.google.com with SMTP id\n\tffacd0b85a97d-2fa47de5b04so6869426f8f.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Apr 2023 06:13:10 -0700 (PDT)", "from localhost.localdomain ([93.93.133.154])\n\tby smtp.gmail.com with ESMTPSA id\n\tk5-20020adff5c5000000b002f103ca90cdsm15780949wrp.101.2023.04.26.06.13.09\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 26 Apr 2023 06:13:09 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1682514793;\n\tbh=WtlsaklNFgDTYdFpeSFZWaG0Hxua3KOQPpwD5qYTYbg=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=yykmb3f/c4dIC2ZbziUgA5KelYfy5m9PMYJpOp2FUcTbu9wx4fuPwyutiCAbuIFSh\n\tZIk795UmZZ1lfWHfptYYu5KmWQBlx9ZoFhXY7qR7ivos7Y1aoPw6GdW0IzML+C6e0f\n\t/SreGrYpQI57rOtjOO3OwKSg8w7lx/nOmXJecEOPbWfbFpuJHv3f9lsDVhNdOi97iS\n\tn/UW6bAD1QAOKoXW+N5wPMPiwtD9oo2PtrahnCqTVbBnfE93gr4kXT4IVQQ1KrUQHg\n\tPjilkFUznJMEZP0j2YiWQSMn4wuxy95+EKXxAIiUAVzF+z7BZj+lwiF2CE7MjNrs+D\n\tHJh1aBd6B4nLw==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1682514790; x=1685106790;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=ytzC3Q1KZiO6M4dVjMPv1whQ/wdKmJL4zvpRzo8eCBE=;\n\tb=mVRDHwTK8QagQ8YhW1wkWAwsD3F+QYwKA3A9tudNXa9P3CjFkSdW2zDGFVZxIkpIw9\n\tC81J9Wt9nI7UVhSlgLbwBQ2kwRqdE9J9IN1+2GrM32aiLBDzARYDg0vpyjHio7I3oRNq\n\tXB6LKEM8yghMjijLQLbd4wPdb5tPM8SPg+9lYID9JVl8rB9uLQq+Gl8Bm2J3wlgmSH//\n\tPAgrCXbXE70awFOi7u/1KnSJ+sPDDUz32/pQH5/rtRYh90nVgvZms0CspCbDinY/MqvE\n\tKvWYXFgMemifitB992brKhE5I97R2sUvV7rHbFRWetYZjWTJjnnuEQPD8qWn0t6vODjD\n\tJ6yA==" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"mVRDHwTK\"; dkim-atps=neutral", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20221208; t=1682514790; x=1685106790;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=ytzC3Q1KZiO6M4dVjMPv1whQ/wdKmJL4zvpRzo8eCBE=;\n\tb=l1mdqMRZX5l7Y0VLcsT20BrFcENQMgXKJDpk2LsM3GFvvP0n74/HLS491pRVEu4jpo\n\teRU8/xhyymZbDtGI/np6xx1i95dnza9z0o5AbkZ+VrN13l72708Ag3keFTVoRXsiLXSB\n\toAL/29DiynlcMzpr/OtTtnezMbN38mxxHL5OPmX31fq8jdlbgVHNsO0feiFsyEVzZz7F\n\tMFLrzDHFceOwH3m0GFHfAVg5JFyrEU5r5seCCb/hr+Nh4Tqc5mSA15sImiJkvmm6wjXj\n\tvkhCXZvCEo+0sAwMwFVKozzaGTcBILESbl1fgylXbOjnb/w+iNvilbKzpGm/2+FkGE7n\n\tK8Ug==", "X-Gm-Message-State": "AAQBX9cIM8A1yfU5//bvrGHi2YayW8JhQuf2QDhx1tpZVg26icv84ISi\n\tBrxS8eq8W9zbLm5Gy6KFOEZRIeQlSlDzws6CbEShUw==", "X-Google-Smtp-Source": "AKy350ahodP+R7smOsQUGmdMeYphoNUww/SL3cL8MCis+q6tNUdXle+BOaOp8zqwruYQXeZ6VsSMcA==", "X-Received": "by 2002:a5d:4ecd:0:b0:2fb:4121:285a with SMTP id\n\ts13-20020a5d4ecd000000b002fb4121285amr14462116wrv.57.1682514790142; \n\tWed, 26 Apr 2023 06:13:10 -0700 (PDT)", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 26 Apr 2023 14:10:44 +0100", "Message-Id": "<20230426131057.21550-1-naush@raspberrypi.com>", "X-Mailer": "git-send-email 2.34.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 00/13] Raspberry Pi: Code refactoring", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "From": "Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>", "Reply-To": "Naushir Patuck <naush@raspberrypi.com>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Hi,\n\nThe aim of this (rather large) series is to refactor the Raspberry Pi pipeline\nhandler and IPA code bases. We are splitting out hardware specific functions\nfrom general boilerplate tasks in both the pipeline handler and IPA. This would\nmake it easer for third-parties to implement their own VC4/BCM2835 based\npipeline handlers and IPAs should they wish to. This is done by introducing new\nbase classes (RPi::PipelineBase and RPi::IpaBase) for the common/boilerplate\ncode, and derived classes (PipelineHandlerVc4 and IpaVc4) for the HW specific\ncode.\n\nAdditionally, these changes also introduce a new directory structure for the\nRaspberry Pi code:\n\n./src/libcamera/pipeline/rpi/\n |- common (boilerplate/common code to all vc4 based pipeline handler implementations)\n |- vc4 (the vc4/bcm2835 HW specific bits of the pipeline handler)\n\n./src/ipa/rpi/\n |- common (boilerplate/common code to all vc4 based IPA implementations)\n |- controller (controller/algorithm code)\n |- cam_helper (camera helpers for all our supported cameras)\n |- vc4 (the vc4/bcm2835 HW specific bits of the IPA)\n\nThe Raspberry Pi pipeline handler and IPA meson options have been renamed from\n\"raspberrypi\" to \"rpi/vc4\". To enable the Raspberry Pi pipeline handler and IPA\nin the build, the following meson command needs to be used:\n\nmeson configure -Dpipelines=rpi/vc4 -Dipas=rpi/vc4\n\nSome minor tidy ups, fixes and code improvement patches have also been included\nin this series.\n\nThanks,\nNaush\n\nDavid Plowman (1):\n ipa: raspberrypi: agc: Move weights out of AGC\n\nNaushir Patuck (12):\n meson: ipa: Add mapping for pipeline handler to mojom interface file\n libcamera: ipa_proxy: Allow a prefix for the configuration file\n pipeline: raspberrypi: Refactor and move pipeline handler code\n ipa: raspberrypi: Refactor and move IPA code\n pipeline: raspberrypi: rpi_stream: Set invalid buffer to id == 0\n pipeline: ipa: raspberrypi: Restructure the IPA mojom interface\n pipeline: ipa: raspberrypi: Replace IPA metadataReady() call\n ipa: raspberrypi: Introduce IpaBase class\n pipeline: raspberrypi: Make RPi::Stream::name() return const\n std::string &\n pipeline: raspberrypi: Introduce PipelineHandlerBase class\n pipeline: raspberrypi: Add stream flags to RPi::Stream\n pipeline: vc4: Connect/disconnect IPA and dequeue signals on\n start/stop\n\n Documentation/environment_variables.rst | 4 +-\n Documentation/guides/introduction.rst | 2 +-\n Documentation/guides/ipa.rst | 19 +-\n Documentation/guides/pipeline-handler.rst | 2 +-\n include/libcamera/internal/ipa_proxy.h | 3 +-\n include/libcamera/ipa/meson.build | 36 +-\n include/libcamera/ipa/raspberrypi.mojom | 129 +-\n meson.build | 2 +-\n meson_options.txt | 4 +-\n src/ipa/meson.build | 11 +\n src/ipa/raspberrypi/meson.build | 66 -\n src/ipa/{raspberrypi => rpi}/README.md | 0\n .../cam_helper}/cam_helper.cpp | 0\n .../cam_helper}/cam_helper.h | 2 +-\n .../cam_helper}/cam_helper_imx219.cpp | 0\n .../cam_helper}/cam_helper_imx290.cpp | 0\n .../cam_helper}/cam_helper_imx296.cpp | 0\n .../cam_helper}/cam_helper_imx477.cpp | 0\n .../cam_helper}/cam_helper_imx519.cpp | 0\n .../cam_helper}/cam_helper_imx708.cpp | 0\n .../cam_helper}/cam_helper_ov5647.cpp | 0\n .../cam_helper}/cam_helper_ov9281.cpp | 0\n .../cam_helper}/md_parser.h | 0\n .../cam_helper}/md_parser_smia.cpp | 0\n src/ipa/rpi/cam_helper/meson.build | 14 +\n .../common/ipa_base.cpp} | 1272 +++------\n src/ipa/rpi/common/ipa_base.h | 125 +\n src/ipa/rpi/common/meson.build | 7 +\n .../controller/af_algorithm.h | 0\n .../controller/af_status.h | 0\n .../controller/agc_algorithm.h | 3 +\n .../controller/agc_status.h | 0\n .../controller/algorithm.cpp | 0\n .../controller/algorithm.h | 0\n .../controller/alsc_status.h | 0\n .../controller/awb_algorithm.h | 0\n .../controller/awb_status.h | 0\n .../controller/black_level_status.h | 0\n .../controller/camera_mode.h | 0\n .../controller/ccm_algorithm.h | 0\n .../controller/ccm_status.h | 0\n .../controller/contrast_algorithm.h | 0\n .../controller/contrast_status.h | 0\n .../controller/controller.cpp | 0\n .../controller/controller.h | 0\n .../controller/denoise_algorithm.h | 0\n .../controller/denoise_status.h | 0\n .../controller/device_status.cpp | 0\n .../controller/device_status.h | 0\n .../controller/dpc_status.h | 0\n .../controller/geq_status.h | 0\n .../controller/histogram.cpp | 0\n .../controller/histogram.h | 0\n .../controller/lux_status.h | 0\n src/ipa/rpi/controller/meson.build | 22 +\n .../controller/metadata.h | 0\n .../controller/noise_status.h | 0\n .../controller/pdaf_data.h | 0\n .../{raspberrypi => rpi}/controller/pwl.cpp | 0\n src/ipa/{raspberrypi => rpi}/controller/pwl.h | 0\n .../controller/region_stats.h | 0\n .../controller/rpi/af.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/af.h | 0\n .../controller/rpi/agc.cpp | 27 +-\n .../{raspberrypi => rpi}/controller/rpi/agc.h | 1 +\n .../controller/rpi/alsc.cpp | 0\n .../controller/rpi/alsc.h | 0\n .../controller/rpi/awb.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/awb.h | 0\n .../controller/rpi/black_level.cpp | 0\n .../controller/rpi/black_level.h | 0\n .../controller/rpi/ccm.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/ccm.h | 0\n .../controller/rpi/contrast.cpp | 0\n .../controller/rpi/contrast.h | 0\n .../controller/rpi/dpc.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/dpc.h | 0\n .../controller/rpi/focus.h | 0\n .../controller/rpi/geq.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/geq.h | 0\n .../controller/rpi/lux.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/lux.h | 0\n .../controller/rpi/noise.cpp | 0\n .../controller/rpi/noise.h | 0\n .../controller/rpi/sdn.cpp | 0\n .../{raspberrypi => rpi}/controller/rpi/sdn.h | 0\n .../controller/rpi/sharpen.cpp | 0\n .../controller/rpi/sharpen.h | 0\n .../controller/sharpen_algorithm.h | 0\n .../controller/sharpen_status.h | 0\n .../controller}/statistics.h | 0\n .../{raspberrypi => rpi/vc4}/data/imx219.json | 0\n .../vc4}/data/imx219_noir.json | 0\n .../{raspberrypi => rpi/vc4}/data/imx290.json | 0\n .../{raspberrypi => rpi/vc4}/data/imx296.json | 0\n .../vc4}/data/imx296_mono.json | 0\n .../{raspberrypi => rpi/vc4}/data/imx378.json | 0\n .../{raspberrypi => rpi/vc4}/data/imx477.json | 0\n .../vc4}/data/imx477_noir.json | 0\n .../vc4}/data/imx477_scientific.json | 0\n .../vc4}/data/imx477_v1.json | 0\n .../{raspberrypi => rpi/vc4}/data/imx519.json | 0\n .../{raspberrypi => rpi/vc4}/data/imx708.json | 0\n .../vc4}/data/imx708_noir.json | 0\n .../vc4}/data/imx708_wide.json | 0\n .../vc4}/data/imx708_wide_noir.json | 0\n .../{raspberrypi => rpi/vc4}/data/meson.build | 2 +-\n .../{raspberrypi => rpi/vc4}/data/ov5647.json | 0\n .../vc4}/data/ov5647_noir.json | 0\n .../vc4}/data/ov9281_mono.json | 0\n .../vc4}/data/se327m12.json | 0\n .../vc4}/data/uncalibrated.json | 0\n src/ipa/rpi/vc4/meson.build | 44 +\n src/ipa/rpi/vc4/vc4.cpp | 552 ++++\n src/libcamera/ipa_proxy.cpp | 11 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 4 +-\n src/libcamera/pipeline/meson.build | 9 +\n .../pipeline/raspberrypi/raspberrypi.cpp | 2433 -----------------\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 +-\n .../common}/delayed_controls.cpp | 0\n .../common}/delayed_controls.h | 0\n .../{raspberrypi => rpi/common}/meson.build | 5 +-\n .../pipeline/rpi/common/pipeline_base.cpp | 1449 ++++++++++\n .../pipeline/rpi/common/pipeline_base.h | 276 ++\n .../common}/rpi_stream.cpp | 52 +-\n .../{raspberrypi => rpi/common}/rpi_stream.h | 62 +-\n .../vc4}/data/example.yaml | 4 +-\n .../{raspberrypi => rpi/vc4}/data/meson.build | 2 +-\n .../{raspberrypi => rpi/vc4}/dma_heaps.cpp | 0\n .../{raspberrypi => rpi/vc4}/dma_heaps.h | 0\n src/libcamera/pipeline/rpi/vc4/meson.build | 8 +\n src/libcamera/pipeline/rpi/vc4/vc4.cpp | 995 +++++++\n src/libcamera/pipeline/vimc/vimc.cpp | 2 +-\n test/ipa/ipa_interface_test.cpp | 2 +-\n 134 files changed, 4058 insertions(+), 3609 deletions(-)\n delete mode 100644 src/ipa/raspberrypi/meson.build\n rename src/ipa/{raspberrypi => rpi}/README.md (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper.h (99%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx219.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx290.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx296.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx477.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx519.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_imx708.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov5647.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/cam_helper_ov9281.cpp (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser.h (100%)\n rename src/ipa/{raspberrypi => rpi/cam_helper}/md_parser_smia.cpp (100%)\n create mode 100644 src/ipa/rpi/cam_helper/meson.build\n rename src/ipa/{raspberrypi/raspberrypi.cpp => rpi/common/ipa_base.cpp} (62%)\n create mode 100644 src/ipa/rpi/common/ipa_base.h\n create mode 100644 src/ipa/rpi/common/meson.build\n rename src/ipa/{raspberrypi => rpi}/controller/af_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/af_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/agc_algorithm.h (93%)\n rename src/ipa/{raspberrypi => rpi}/controller/agc_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/algorithm.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/alsc_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/awb_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/awb_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/black_level_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/camera_mode.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/ccm_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/ccm_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/contrast_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/contrast_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/controller.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/controller.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/denoise_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/denoise_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/device_status.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/device_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/dpc_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/geq_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/histogram.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/histogram.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/lux_status.h (100%)\n create mode 100644 src/ipa/rpi/controller/meson.build\n rename src/ipa/{raspberrypi => rpi}/controller/metadata.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/noise_status.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/pdaf_data.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/pwl.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/pwl.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/region_stats.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/af.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.cpp (97%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/agc.h (98%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/alsc.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/awb.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/black_level.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/ccm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/contrast.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/dpc.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/focus.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/geq.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/lux.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/noise.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sdn.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.cpp (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/rpi/sharpen.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/sharpen_algorithm.h (100%)\n rename src/ipa/{raspberrypi => rpi}/controller/sharpen_status.h (100%)\n rename src/ipa/{raspberrypi => rpi/controller}/statistics.h (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx219_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx290.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx296_mono.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx378.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_scientific.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx477_v1.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx519.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/imx708_wide_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/meson.build (89%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/ov5647_noir.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/ov9281_mono.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/se327m12.json (100%)\n rename src/ipa/{raspberrypi => rpi/vc4}/data/uncalibrated.json (100%)\n create mode 100644 src/ipa/rpi/vc4/meson.build\n create mode 100644 src/ipa/rpi/vc4/vc4.cpp\n delete mode 100644 src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n rename src/libcamera/pipeline/{raspberrypi => rpi/common}/delayed_controls.cpp (100%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/common}/delayed_controls.h (100%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/common}/meson.build (65%)\n create mode 100644 src/libcamera/pipeline/rpi/common/pipeline_base.cpp\n create mode 100644 src/libcamera/pipeline/rpi/common/pipeline_base.h\n rename src/libcamera/pipeline/{raspberrypi => rpi/common}/rpi_stream.cpp (87%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/common}/rpi_stream.h (76%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/vc4}/data/example.yaml (94%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/vc4}/data/meson.build (63%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/vc4}/dma_heaps.cpp (100%)\n rename src/libcamera/pipeline/{raspberrypi => rpi/vc4}/dma_heaps.h (100%)\n create mode 100644 src/libcamera/pipeline/rpi/vc4/meson.build\n create mode 100644 src/libcamera/pipeline/rpi/vc4/vc4.cpp" }