summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/controller/alsc_status.h
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-03-27 13:20:23 +0100
committerKieran Bingham <kieran.bingham@ideasonboard.com>2023-03-31 13:29:18 +0100
commitaf946958daf38974b614fb1a007366bd78e110fb (patch)
tree39517326b32b6807af80ce1cb00f31feccea95b3 /src/ipa/raspberrypi/controller/alsc_status.h
parentf6cc78b446de8dc03251aa5aab094852bca77285 (diff)
ipa: raspberrypi: Generalise the ALSC algorithm
Remove any hard-coded assumptions about the target hardware platform from the ALSC algorithm. Instead, use the "target" string provided by the camera tuning config and generalised statistics structures to determing parameters such as grid and region sizes. The ALSC calculations use run-time allocated arrays/vectors on every frame. Allocating these might add a non-trivial run-time penalty. Replace these dynamic allocations with a set of reusable pre-allocated vectors during the init phase. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/ipa/raspberrypi/controller/alsc_status.h')
-rw-r--r--src/ipa/raspberrypi/controller/alsc_status.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/ipa/raspberrypi/controller/alsc_status.h b/src/ipa/raspberrypi/controller/alsc_status.h
index e5aa7e37..49a9f4a0 100644
--- a/src/ipa/raspberrypi/controller/alsc_status.h
+++ b/src/ipa/raspberrypi/controller/alsc_status.h
@@ -6,16 +6,17 @@
*/
#pragma once
+#include <vector>
+
/*
* The ALSC algorithm should post the following structure into the image's
* "alsc.status" metadata.
*/
-constexpr unsigned int AlscCellsX = 16;
-constexpr unsigned int AlscCellsY = 12;
-
struct AlscStatus {
- double r[AlscCellsY][AlscCellsX];
- double g[AlscCellsY][AlscCellsX];
- double b[AlscCellsY][AlscCellsX];
+ std::vector<double> r;
+ std::vector<double> g;
+ std::vector<double> b;
+ unsigned int rows;
+ unsigned int cols;
};