summaryrefslogtreecommitdiff
path: root/src/ipa
diff options
context:
space:
mode:
authorDavid Plowman <david.plowman@raspberrypi.com>2023-10-10 11:05:09 +0100
committerKieran Bingham <kieran.bingham@ideasonboard.com>2023-10-24 14:11:16 +0100
commit0923d50b15c6e5125a4b37f399a7a040062b058d (patch)
tree21a49fa35b79bdcfa79e00a45d5d3172a5f180d1 /src/ipa
parent5f2ef63e7a4ad1d6326619f44e469558cfed6390 (diff)
ipa: rpi: alsc: Do not re-read the alsc.status metadata
This was being re-read in order to determine what LSC gains had been applied. We can just retrieve these numbers from the prevAsyncResults_ instead. This will also enable other future algorithms to manipulate the LSC tables in the alsc.status, without it breaking the core ALSC algorithm here. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/ipa')
-rw-r--r--src/ipa/rpi/controller/rpi/alsc.cpp22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/ipa/rpi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp
index f1ccef87..b7413611 100644
--- a/src/ipa/rpi/controller/rpi/alsc.cpp
+++ b/src/ipa/rpi/controller/rpi/alsc.cpp
@@ -338,14 +338,14 @@ double getCt(Metadata *metadata, double defaultCt)
}
static void copyStats(RgbyRegions &regions, StatisticsPtr &stats,
- AlscStatus const &status)
+ std::array<Array2D<double>, 3> &prevSyncResults)
{
if (!regions.numRegions())
regions.init(stats->awbRegions.size());
- const std::vector<double> &rTable = status.r;
- const std::vector<double> &gTable = status.g;
- const std::vector<double> &bTable = status.b;
+ const std::vector<double> &rTable = prevSyncResults[0].data(); //status.r;
+ const std::vector<double> &gTable = prevSyncResults[1].data(); //status.g;
+ const std::vector<double> &bTable = prevSyncResults[2].data(); //status.b;
for (unsigned int i = 0; i < stats->awbRegions.numRegions(); i++) {
auto r = stats->awbRegions.get(i);
if (stats->colourStatsPos == Statistics::ColourStatsPos::PostLsc) {
@@ -367,18 +367,10 @@ void Alsc::restartAsync(StatisticsPtr &stats, Metadata *imageMetadata)
ct_ = getCt(imageMetadata, ct_);
/*
* We have to copy the statistics here, dividing out our best guess of
- * the LSC table that the pipeline applied to them.
+ * the LSC table that the pipeline applied to them which we get from
+ * prevSyncResults_.
*/
- AlscStatus alscStatus;
- if (stats->colourStatsPos == Statistics::ColourStatsPos::PostLsc &&
- imageMetadata->get("alsc.status", alscStatus) != 0) {
- LOG(RPiAlsc, Warning)
- << "No ALSC status found for applied gains!";
- alscStatus.r.resize(config_.tableSize.width * config_.tableSize.height, 1.0);
- alscStatus.g.resize(config_.tableSize.width * config_.tableSize.height, 1.0);
- alscStatus.b.resize(config_.tableSize.width * config_.tableSize.height, 1.0);
- }
- copyStats(statistics_, stats, alscStatus);
+ copyStats(statistics_, stats, prevSyncResults_);
framePhase_ = 0;
asyncStarted_ = true;
{