Show a patch.

GET /api/patches/25223/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 25223,
    "url": "https://patchwork.libcamera.org/api/patches/25223/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/25223/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20251127022256.178929-10-bryan.odonoghue@linaro.org>",
    "date": "2025-11-27T02:22:41",
    "name": "[v2,09/22] libcamera: software_isp: Move useful items from DebayerCpu to Debayer base class",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "b9d9893a6815cf2005c305891c5a0a6835412790",
    "submitter": {
        "id": 175,
        "url": "https://patchwork.libcamera.org/api/people/175/?format=api",
        "name": "Bryan O'Donoghue",
        "email": "bryan.odonoghue@linaro.org"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/25223/mbox/",
    "series": [
        {
            "id": 5616,
            "url": "https://patchwork.libcamera.org/api/series/5616/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5616",
            "date": "2025-11-27T02:22:32",
            "name": "GPUISP precursor series",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/5616/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/25223/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/25223/checks/",
    "tags": {},
    "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 3874AC32DE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 27 Nov 2025 02:23:27 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CC86A60AB5;\n\tThu, 27 Nov 2025 03:23:26 +0100 (CET)",
            "from mail-wm1-x330.google.com (mail-wm1-x330.google.com\n\t[IPv6:2a00:1450:4864:20::330])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 628EF60A9E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 27 Nov 2025 03:23:24 +0100 (CET)",
            "by mail-wm1-x330.google.com with SMTP id\n\t5b1f17b1804b1-47789cd2083so1244905e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Nov 2025 18:23:24 -0800 (PST)",
            "from inspiron14p-linux.ht.home (188-141-3-146.dynamic.upc.ie.\n\t[188.141.3.146]) by smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4790b0e21e8sm71549495e9.15.2025.11.26.18.23.21\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 26 Nov 2025 18:23:22 -0800 (PST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"uafm4k9j\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764210204; x=1764815004;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=xct2DeCKpVaCKpyr73/2/r0NH1wGrT5ujJTl4HH6e1M=;\n\tb=uafm4k9juJJGjMVcFiRPGYh7+8X59gjvqCMSX/ejvQ2IBS5OPIDlcGeCrIFLj5jQZ3\n\tDABA4UGm3z+VI68SZVSP3z7RPRK1DQfD/0umK81cEDg8IsKulUFfTpfYBQlCy6woKcGL\n\tVreTR3xJb9AintfO4tvX3mIt0yDlSU5GW2LNijXaYPqFNIwXGgD0C/aFRuu5LFohAXi5\n\tqrfgLvPygKnL7Ciicx8+g8lUAZ3BIiGqExXbW3joqpjNai/W9hSiKJED2byOBx0Q6gOV\n\tRt5EqQa5oOQl+sNacZ1/7Z3fcVfjsl1mO7vTEKpmaGMzfyitb5pElHvIwDjDvpIrN3Fc\n\tulQw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764210204; x=1764815004;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n\t:to:cc:subject:date:message-id:reply-to;\n\tbh=xct2DeCKpVaCKpyr73/2/r0NH1wGrT5ujJTl4HH6e1M=;\n\tb=lmcQpuazU39YPdYZ/zGgnA4lhRNRswzHKea5M4Y3Wca85I5DqN7YmIq+Sgxn34RwJ8\n\tE4xh9y3QSo2zDMy9C36zCUfYbIQnNlr0WgJ9rLgwFoBgDW5PongQrT334CCrz1FwUWm6\n\tsIDn0V6X7/loyiUtrBUdBB/3hTyUY/sdyt9DWnxT/wyIiKEEBD96bki+qQFiw85MVzDN\n\tVyIEd4luWnZqrIprCqtQrC0B81ECfiw56BVXVUSoy50r3U/3PlLlZl51vR1b1U0D1YbP\n\t38RO/bL4dXhiYMaEHzmypQlDaJp2yFm1djIdpF12hDUDOJso/A2n0BqJA+tIDllUCPgw\n\tjAPA==",
        "X-Gm-Message-State": "AOJu0Yw1JyZQOQgHgaQkaTZw3nIUMHJFoK86Vb0AkfP2lBhTOV+xoZju\n\tTqoEncbXaVOyVEnkO8afUUzXYNswecVK7/daIduY85T6RIKMK6lOOeMHg4LrmMO6ZPHJJQye5nk\n\t5/KB2nZk=",
        "X-Gm-Gg": "ASbGnctSNN3cRuWDxna+LXmyJ7ip4mdAq0/qzZZYFR9y1rzvA7dBC2g82mvPHGdYVbX\n\tgAlad0MRgYq3yYgYUaQ83fD1eI1q7HT+pM+XLdW4Oca2JwwIjKdIKmuRSwzZx2F5L6lFTMQTk4w\n\t4QOebk3m5XWldnsGpkAJBriqRlxR7FZuylHJSiwnApFBvIPeBesDuWHiG6gvH7KZaf0OH3A8/ji\n\tx7vGUWRybMlkKwo466ErY647Z958huHtu715GQRmKwZRpBnfWUK/2VwuJPXBygQNkxY/+YW3Wx7\n\ttjUn2U5gAlqEj3e0s8k+T2sPxJUaqbDiTcpW9pioekcnKMRwwGUp4XzTB67rtLel1tkQJ7oLEGb\n\taybt3DLxT12qdy8VPoMg8sn54F/rBZakEsclKK3m2pPtpRm3d5iaUQyvwoB4SeCtMZqM5vG0WtH\n\t7O1NQ+h4e6RTFbEbGBgc1m94UwzreFMSkaeZ+qieh6cYFjZpd39xp144ASGVd1WnRMWS2WTJMdQ\n\tINENA==",
        "X-Google-Smtp-Source": "AGHT+IGI/hc0K7DjMIv7Rj8hgK9OB7/DWKVJ4oL06AL+b/ZYJU1Du03P3SO2XaCw3jH1qeNayv0U/Q==",
        "X-Received": "by 2002:a05:600c:4443:b0:477:af74:ed64 with SMTP id\n\t5b1f17b1804b1-477c114f00amr215909755e9.27.1764210203735; \n\tWed, 26 Nov 2025 18:23:23 -0800 (PST)",
        "From": "Bryan O'Donoghue <bryan.odonoghue@linaro.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "pavel@ucw.cz, Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>",
        "Subject": "[PATCH v2 09/22] libcamera: software_isp: Move useful items from\n\tDebayerCpu to Debayer base class",
        "Date": "Thu, 27 Nov 2025 02:22:41 +0000",
        "Message-ID": "<20251127022256.178929-10-bryan.odonoghue@linaro.org>",
        "X-Mailer": "git-send-email 2.51.2",
        "In-Reply-To": "<20251127022256.178929-1-bryan.odonoghue@linaro.org>",
        "References": "<20251127022256.178929-1-bryan.odonoghue@linaro.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "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>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "The DebayerCpu class has a number of variables, embedded structures and\nmethods which are useful to DebayerGpu implementation.\n\nMove relevant variables and methods to base class.\n\nSince we want to call setParams() from the GPUISP and reuse the code in\nthe existing CPUISP as a first step, we need to move all of the\ndependent variables in DebayerCPU to the Debayer base class including\nLookupTable and redCcm_.\n\nThe DebayerEGL class will ultimately be able to consume both the CCM and\nnon-CCM data.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nSigned-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n---\n src/libcamera/software_isp/debayer.cpp     | 149 +++++++++++++++++++++\n src/libcamera/software_isp/debayer.h       |  35 ++++-\n src/libcamera/software_isp/debayer_cpu.cpp |   2 +-\n src/libcamera/software_isp/debayer_cpu.h   |  41 +-----\n 4 files changed, 185 insertions(+), 42 deletions(-)",
    "diff": "diff --git a/src/libcamera/software_isp/debayer.cpp b/src/libcamera/software_isp/debayer.cpp\nindex e9e18c488..1e3f08673 100644\n--- a/src/libcamera/software_isp/debayer.cpp\n+++ b/src/libcamera/software_isp/debayer.cpp\n@@ -18,6 +18,12 @@ namespace libcamera {\n  * \\brief Struct to hold the debayer parameters.\n  */\n \n+/**\n+ * \\fn Debayer::Debayer(const GlobalConfiguration &configuration)\n+ * \\brief Construct a Debayer object\n+ * \\param[in] configuration Global configuration reference\n+ */\n+\n /**\n  * \\var DebayerParams::kRGBLookupSize\n  * \\brief Size of a color lookup table\n@@ -167,6 +173,24 @@ Debayer::~Debayer()\n  */\n \n /**\n+ * \\fn const SharedFD &Debayer::getStatsFD()\n+ * \\brief Get the file descriptor for the statistics.\n+ *\n+ * This file descriptor provides access to the output statistics buffer\n+ * associated with the current debayering process.\n+ *\n+ * \\return The file descriptor pointing to the statistics data.\n+ */\n+\n+/**\n+ * \\fn unsigned int Debayer::frameSize()\n+ * \\brief Get the output frame size.\n+ *\n+ * \\return The total output frame size in bytes as configured for the\n+ * current stream.\n+ */\n+\n+ /**\n  * \\var Signal<FrameBuffer *> Debayer::inputBufferReady\n  * \\brief Signals when the input buffer is ready\n  */\n@@ -176,4 +200,129 @@ Debayer::~Debayer()\n  * \\brief Signals when the output buffer is ready\n  */\n \n+/**\n+ * \\struct Debayer::DebayerInputConfig\n+ * \\brief Structure describing the incoming Bayer parameters.\n+ *\n+ * The DebayerInputConfig structure defines the characteristics of the raw\n+ * Bayer frame being processed, including:\n+ *  - The Bayer pattern dimensions (\\ref patternSize)\n+ *  - Memory layout parameters such as stride and bytes per pixel (\\ref bpp)\n+ *  - A list of supported output pixel formats.\n+ *\n+ * \\var Debayer::DebayerInputConfig::patternSize\n+ * Size of the Bayer pattern in pixels. For standard Bayer formats such as\n+ * BGGR, GRBG, GBRG, and RGGB, this is typically 2×2 pixels.\n+ *\n+ * \\var Debayer::DebayerInputConfig::bpp\n+ * Number of bytes used per pixel in memory. This reflects storage size,\n+ * not precision.\n+ *\n+ * \\var Debayer::DebayerInputConfig::stride\n+ * Line stride in bytes for the Bayer input frame.\n+ *\n+ * \\var Debayer::DebayerInputConfig::outputFormats\n+ * List of pixel formats supported as output for this input configuration.\n+ */\n+\n+/**\n+ * \\struct Debayer::DebayerOutputConfig\n+ * \\brief Structure describing the output frame configuration.\n+ *\n+ * Defines how the output of the debayer process is laid out in memory.\n+ * It includes per-pixel size, stride, and total frame size.\n+ *\n+ * \\var Debayer::DebayerOutputConfig::bpp\n+ * Bytes used per pixel in the output format.\n+ *\n+ * \\var Debayer::DebayerOutputConfig::stride\n+ * Line stride in bytes for the output frame.\n+ *\n+ * \\var Debayer::DebayerOutputConfig::frameSize\n+ * Total frame size in bytes for the output buffer.\n+ */\n+\n+/**\n+ * \\var Debayer::inputConfig_\n+ * \\brief Input configuration parameters for the current debayer operation.\n+ *\n+ * Holds metadata describing the incoming Bayer image layout, including\n+ * pattern size, bytes per pixel, stride, and supported output formats.\n+ * Populated during configuration.\n+ */\n+\n+/**\n+ * \\var Debayer::outputConfig_\n+ * \\brief Output configuration data for the debayered frame.\n+ *\n+ * Contains bytes per pixel, stride, and total frame size for the\n+ * output image buffer. Set during stream configuration.\n+ */\n+\n+/**\n+ * \\var Debayer::red_\n+ * \\brief Lookup table for red channel gain and correction values.\n+ *\n+ * This table provides precomputed per-pixel or per-intensity\n+ * correction values for the red color channel used during debayering.\n+ */\n+\n+/**\n+ * \\var Debayer::green_\n+ * \\brief Lookup table for green channel gain and correction values.\n+ *\n+ * This table provides precomputed per-pixel or per-intensity\n+ * correction values for the green color channel used during debayering.\n+ */\n+\n+/**\n+ * \\var Debayer::blue_\n+ * \\brief Lookup table for blue channel gain and correction values.\n+ *\n+ * This table provides precomputed per-pixel or per-intensity\n+ * correction values for the blue color channel used during debayering.\n+ */\n+\n+/**\n+ * \\var Debayer::redCcm_\n+ * \\brief Red channel Color Correction Matrix (CCM) lookup table.\n+ *\n+ * Contains coefficients for green channel color correction.\n+ */\n+\n+/**\n+ * \\var Debayer::greenCcm_\n+ * \\brief Green channel Color Correction Matrix (CCM) lookup table.\n+ *\n+ * Contains coefficients for green channel color correction.\n+ */\n+\n+/**\n+ * \\var Debayer::blueCcm_\n+ * \\brief Blue channel Color Correction Matrix (CCM) lookup table.\n+ *\n+ * Contains coefficients for blue channel color correction.\n+ */\n+\n+/**\n+ * \\var Debayer::gammaLut_\n+ * \\brief Gamma correction lookup table.\n+ */\n+\n+/**\n+ * \\var Debayer::swapRedBlueGains_\n+ * \\brief Flag indicating whether red and blue channel gains should be swapped.\n+ *\n+ * Used when the Bayer pattern order indicates that red/blue color channels are\n+ * reversed.\n+ */\n+\n+/**\n+ * \\var Debayer::bench_\n+ * \\brief Benchmarking utility instance for performance measurements.\n+ *\n+ * Used internally to track timing and performance metrics during\n+ * debayer processing.\n+ */\n+\n } /* namespace libcamera */\ndiff --git a/src/libcamera/software_isp/debayer.h b/src/libcamera/software_isp/debayer.h\nindex ba033d440..b562985a6 100644\n--- a/src/libcamera/software_isp/debayer.h\n+++ b/src/libcamera/software_isp/debayer.h\n@@ -14,11 +14,14 @@\n #include <stdint.h>\n \n #include <libcamera/base/log.h>\n+#include <libcamera/base/object.h>\n #include <libcamera/base/signal.h>\n \n #include <libcamera/geometry.h>\n #include <libcamera/stream.h>\n \n+#include \"libcamera/internal/global_configuration.h\"\n+#include \"libcamera/internal/software_isp/benchmark.h\"\n #include \"libcamera/internal/software_isp/debayer_params.h\"\n \n namespace libcamera {\n@@ -27,9 +30,10 @@ class FrameBuffer;\n \n LOG_DECLARE_CATEGORY(Debayer)\n \n-class Debayer\n+class Debayer : public Object\n {\n public:\n+\tDebayer (const GlobalConfiguration &configuration) : bench_(configuration) {};\n \tvirtual ~Debayer() = 0;\n \n \tvirtual int configure(const StreamConfiguration &inputCfg,\n@@ -45,9 +49,38 @@ public:\n \n \tvirtual SizeRange sizes(PixelFormat inputFormat, const Size &inputSize) = 0;\n \n+\tvirtual const SharedFD &getStatsFD() = 0;\n+\n+\tunsigned int frameSize() { return outputConfig_.frameSize; }\n+\n \tSignal<FrameBuffer *> inputBufferReady;\n \tSignal<FrameBuffer *> outputBufferReady;\n \n+\tstruct DebayerInputConfig {\n+\t\tSize patternSize;\n+\t\tunsigned int bpp;\n+\t\tunsigned int stride;\n+\t\tstd::vector<PixelFormat> outputFormats;\n+\t};\n+\n+\tstruct DebayerOutputConfig {\n+\t\tunsigned int bpp;\n+\t\tunsigned int stride;\n+\t\tunsigned int frameSize;\n+\t};\n+\n+\tDebayerInputConfig inputConfig_;\n+\tDebayerOutputConfig outputConfig_;\n+\tDebayerParams::LookupTable red_;\n+\tDebayerParams::LookupTable green_;\n+\tDebayerParams::LookupTable blue_;\n+\tDebayerParams::CcmLookupTable redCcm_;\n+\tDebayerParams::CcmLookupTable greenCcm_;\n+\tDebayerParams::CcmLookupTable blueCcm_;\n+\tDebayerParams::LookupTable gammaLut_;\n+\tbool swapRedBlueGains_;\n+\tBenchmark bench_;\n+\n private:\n \tvirtual Size patternSize(PixelFormat inputFormat) = 0;\n };\ndiff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp\nindex b92c6a904..e55599f09 100644\n--- a/src/libcamera/software_isp/debayer_cpu.cpp\n+++ b/src/libcamera/software_isp/debayer_cpu.cpp\n@@ -42,7 +42,7 @@ namespace libcamera {\n  * \\param[in] configuration The global configuration\n  */\n DebayerCpu::DebayerCpu(std::unique_ptr<SwStatsCpu> stats, const GlobalConfiguration &configuration)\n-\t: stats_(std::move(stats)), bench_(configuration)\n+\t: Debayer(configuration), stats_(std::move(stats))\n {\n \t/*\n \t * Reading from uncached buffers may be very slow.\ndiff --git a/src/libcamera/software_isp/debayer_cpu.h b/src/libcamera/software_isp/debayer_cpu.h\nindex aff32491e..ecc4f9dd0 100644\n--- a/src/libcamera/software_isp/debayer_cpu.h\n+++ b/src/libcamera/software_isp/debayer_cpu.h\n@@ -17,16 +17,14 @@\n \n #include <libcamera/base/object.h>\n \n-#include \"libcamera/internal/software_isp/benchmark.h\"\n #include \"libcamera/internal/bayer_format.h\"\n-#include \"libcamera/internal/global_configuration.h\"\n #include \"libcamera/internal/software_isp/swstats_cpu.h\"\n \n #include \"debayer.h\"\n \n namespace libcamera {\n \n-class DebayerCpu : public Debayer, public Object\n+class DebayerCpu : public Debayer\n {\n public:\n \tDebayerCpu(std::unique_ptr<SwStatsCpu> stats, const GlobalConfiguration &configuration);\n@@ -41,21 +39,8 @@ public:\n \tstrideAndFrameSize(const PixelFormat &outputFormat, const Size &size);\n \tvoid process(uint32_t frame, FrameBuffer *input, FrameBuffer *output, DebayerParams params);\n \tSizeRange sizes(PixelFormat inputFormat, const Size &inputSize);\n-\n-\t/**\n-\t * \\brief Get the file descriptor for the statistics\n-\t *\n-\t * \\return the file descriptor pointing to the statistics\n-\t */\n \tconst SharedFD &getStatsFD() { return stats_->getStatsFD(); }\n \n-\t/**\n-\t * \\brief Get the output frame size\n-\t *\n-\t * \\return The output frame size\n-\t */\n-\tunsigned int frameSize() { return outputConfig_.frameSize; }\n-\n private:\n \t/**\n \t * \\brief Called to debayer 1 line of Bayer input data to output format\n@@ -112,19 +97,6 @@ private:\n \ttemplate<bool addAlphaByte, bool ccmEnabled>\n \tvoid debayer10P_RGRG_BGR888(uint8_t *dst, const uint8_t *src[]);\n \n-\tstruct DebayerInputConfig {\n-\t\tSize patternSize;\n-\t\tunsigned int bpp; /* Memory used per pixel, not precision */\n-\t\tunsigned int stride;\n-\t\tstd::vector<PixelFormat> outputFormats;\n-\t};\n-\n-\tstruct DebayerOutputConfig {\n-\t\tunsigned int bpp; /* Memory used per pixel, not precision */\n-\t\tunsigned int stride;\n-\t\tunsigned int frameSize;\n-\t};\n-\n \tint getInputConfig(PixelFormat inputFormat, DebayerInputConfig &config);\n \tint getOutputConfig(PixelFormat outputFormat, DebayerOutputConfig &config);\n \tint setupStandardBayerOrder(BayerFormat::Order order);\n@@ -140,20 +112,11 @@ private:\n \t/* Max. supported Bayer pattern height is 4, debayering this requires 5 lines */\n \tstatic constexpr unsigned int kMaxLineBuffers = 5;\n \n-\tDebayerParams::LookupTable red_;\n-\tDebayerParams::LookupTable green_;\n-\tDebayerParams::LookupTable blue_;\n-\tDebayerParams::CcmLookupTable redCcm_;\n-\tDebayerParams::CcmLookupTable greenCcm_;\n-\tDebayerParams::CcmLookupTable blueCcm_;\n-\tDebayerParams::LookupTable gammaLut_;\n \tdebayerFn debayer0_;\n \tdebayerFn debayer1_;\n \tdebayerFn debayer2_;\n \tdebayerFn debayer3_;\n \tRectangle window_;\n-\tDebayerInputConfig inputConfig_;\n-\tDebayerOutputConfig outputConfig_;\n \tstd::unique_ptr<SwStatsCpu> stats_;\n \tstd::vector<uint8_t> lineBuffers_[kMaxLineBuffers];\n \tunsigned int lineBufferLength_;\n@@ -161,8 +124,6 @@ private:\n \tunsigned int lineBufferIndex_;\n \tunsigned int xShift_; /* Offset of 0/1 applied to window_.x */\n \tbool enableInputMemcpy_;\n-\tbool swapRedBlueGains_;\n-\tBenchmark bench_;\n };\n \n } /* namespace libcamera */\n",
    "prefixes": [
        "v2",
        "09/22"
    ]
}