diff options
author | David Plowman <david.plowman@raspberrypi.com> | 2023-10-10 11:05:09 +0100 |
---|---|---|
committer | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2023-10-24 14:11:16 +0100 |
commit | 0923d50b15c6e5125a4b37f399a7a040062b058d (patch) | |
tree | 21a49fa35b79bdcfa79e00a45d5d3172a5f180d1 | |
parent | 5f2ef63e7a4ad1d6326619f44e469558cfed6390 (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>
-rw-r--r-- | src/ipa/rpi/controller/rpi/alsc.cpp | 22 |
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 ®ions, 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; { |