about summary refs log tree commit diff
path: root/users/flokli/ipu6-softisp/libcamera/0021-libcamera-swstats_cpu-Add-support-for-10bpp-IGIG_GBG.patch
diff options
context:
space:
mode:
Diffstat (limited to 'users/flokli/ipu6-softisp/libcamera/0021-libcamera-swstats_cpu-Add-support-for-10bpp-IGIG_GBG.patch')
-rw-r--r--users/flokli/ipu6-softisp/libcamera/0021-libcamera-swstats_cpu-Add-support-for-10bpp-IGIG_GBG.patch131
1 files changed, 0 insertions, 131 deletions
diff --git a/users/flokli/ipu6-softisp/libcamera/0021-libcamera-swstats_cpu-Add-support-for-10bpp-IGIG_GBG.patch b/users/flokli/ipu6-softisp/libcamera/0021-libcamera-swstats_cpu-Add-support-for-10bpp-IGIG_GBG.patch
deleted file mode 100644
index 44985a94e16f..000000000000
--- a/users/flokli/ipu6-softisp/libcamera/0021-libcamera-swstats_cpu-Add-support-for-10bpp-IGIG_GBG.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From f939e68a3ef556e572f0140df6d7ef17d72f457e Mon Sep 17 00:00:00 2001
-From: Marttico <g.martti@gmail.com>
-Date: Wed, 20 Dec 2023 20:26:15 +0100
-Subject: [PATCH 21/25] libcamera: swstats_cpu: Add support for 10bpp
- IGIG_GBGR_IGIG_GRGB input
-
-Add support to SwStatsCpu for 10bpp IGIG_GBGR_IGIG_GRGB input
-generated by the Omnivision ov01a1s sensor.
-
-Co-authored-by: Dennis Bonke <admin@dennisbonke.com>
-Signed-off-by: Dennis Bonke <admin@dennisbonke.com>
-Co-authored-by: Toon Langendam <t.langendam@gmail.com>
-Signed-off-by: Toon Langendam <t.langendam@gmail.com>
-Signed-off-by: Marttico <g.martti@gmail.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- .../internal/software_isp/swstats_cpu.h       |  3 +
- src/libcamera/software_isp/swstats_cpu.cpp    | 76 +++++++++++++++++++
- 2 files changed, 79 insertions(+)
-
-diff --git a/include/libcamera/internal/software_isp/swstats_cpu.h b/include/libcamera/internal/software_isp/swstats_cpu.h
-index e7abc6bb..a47241e1 100644
---- a/include/libcamera/internal/software_isp/swstats_cpu.h
-+++ b/include/libcamera/internal/software_isp/swstats_cpu.h
-@@ -42,6 +42,9 @@ private:
- 	/* Bayer 10 bpp packed */
- 	void statsBGGR10PLine0(const uint8_t *src[]);
- 	void statsGBRG10PLine0(const uint8_t *src[]);
-+	/* IGIG_GBGR_IGIG_GRGB 10 bpp unpacked */
-+	void statsRGBIR10Line0(const uint8_t *src[]);
-+	void statsRGBIR10Line2(const uint8_t *src[]);
- 	void resetStats(void);
- 	void finishStats(void);
- 
-diff --git a/src/libcamera/software_isp/swstats_cpu.cpp b/src/libcamera/software_isp/swstats_cpu.cpp
-index 87550371..96e21be5 100644
---- a/src/libcamera/software_isp/swstats_cpu.cpp
-+++ b/src/libcamera/software_isp/swstats_cpu.cpp
-@@ -187,6 +187,68 @@ void SwStatsCpu::statsGBRG10PLine0(const uint8_t *src[])
- 	statsBayer10P(window_.width, src0, src1, false, stats_);
- }
- 
-+void SwStatsCpu::statsRGBIR10Line0(const uint8_t *src[])
-+{
-+	const uint16_t *src0_16 = (const uint16_t *)src[2] + window_.x;
-+	const uint16_t *src1_16 = (const uint16_t *)src[3] + window_.x;
-+	uint16_t g3, g4;
-+
-+	SWISP_LINARO_START_LINE_STATS(uint16_t)
-+
-+	/* x += 8 sample every other 4x4 block */
-+	for (int x = 0; x < (int)window_.width; x += 8) {
-+		/* IGIG */
-+		//i = src0_16[x];
-+		g2 = src0_16[x + 1];
-+		//i = src0_16[x + 2];
-+		g4 = src0_16[x + 3];
-+
-+		/* GBGR */
-+		g = src1_16[x];
-+		b = src1_16[x + 1];
-+		g3 = src1_16[x + 2];
-+		r = src1_16[x + 3];
-+
-+		g = (g + g2 + g3 + g4) / 4;
-+
-+		/* divide Y by 4 for 10 -> 8 bpp value */
-+		SWISP_LINARO_ACCUMULATE_LINE_STATS(4)
-+	}
-+
-+	SWISP_LINARO_FINISH_LINE_STATS()
-+}
-+
-+void SwStatsCpu::statsRGBIR10Line2(const uint8_t *src[])
-+{
-+	const uint16_t *src0_16 = (const uint16_t *)src[2] + window_.x;
-+	const uint16_t *src1_16 = (const uint16_t *)src[3] + window_.x;
-+	uint16_t g3, g4;
-+
-+	SWISP_LINARO_START_LINE_STATS(uint16_t)
-+
-+	/* x += 8 sample every other 4x4 block */
-+	for (int x = 0; x < (int)window_.width; x += 8) {
-+		/* IGIG */
-+		//i = src0_16[x];
-+		g2 = src0_16[x + 1];
-+		//i = src0_16[x + 2];
-+		g4 = src0_16[x + 3];
-+
-+		/* GRGB */
-+		g = src1_16[x];
-+		r = src1_16[x + 1];
-+		g3 = src1_16[x + 2];
-+		b = src1_16[x + 3];
-+
-+		g = (g + g2 + g3 + g4) / 4;
-+
-+		/* divide Y by 4 for 10 -> 8 bpp value */
-+		SWISP_LINARO_ACCUMULATE_LINE_STATS(4)
-+	}
-+
-+	SWISP_LINARO_FINISH_LINE_STATS()
-+}
-+
- void SwStatsCpu::resetStats(void)
- {
- 	stats_.sumR_ = 0;
-@@ -282,6 +344,20 @@ int SwStatsCpu::configure(const StreamConfiguration &inputCfg)
- 		}
- 	}
- 
-+	if (bayerFormat.bitDepth == 10 &&
-+	    bayerFormat.packing == BayerFormat::Packing::None &&
-+	    bayerFormat.order == BayerFormat::IGIG_GBGR_IGIG_GRGB) {
-+		bpp_ = 16;
-+		patternSize_.height = 4;
-+		patternSize_.width = 4;
-+		y_skip_mask_ = 0x04;
-+		x_shift_ = 0;
-+		swap_lines_ = false;
-+		stats0_ = (SwStats::statsProcessFn)&SwStatsCpu::statsRGBIR10Line0;
-+		stats2_ = (SwStats::statsProcessFn)&SwStatsCpu::statsRGBIR10Line2;
-+		return 0;
-+	}
-+
- 	LOG(SwStats, Info)
- 		<< "Unsupported input format " << inputCfg.pixelFormat.toString();
- 	return -EINVAL;
--- 
-2.43.0
-