summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/algorithms
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/rkisp1/algorithms')
-rw-r--r--src/ipa/rkisp1/algorithms/agc.cpp27
-rw-r--r--src/ipa/rkisp1/algorithms/agc.h3
2 files changed, 10 insertions, 20 deletions
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index f83a9ba1..da705b14 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -59,7 +59,7 @@ static constexpr double kEvGainTarget = 0.5;
static constexpr double kRelativeLuminanceTarget = 0.4;
Agc::Agc()
- : frameCount_(0), numCells_(0), numHistBins_(0), filteredExposure_(0s)
+ : frameCount_(0), filteredExposure_(0s)
{
supportsRaw_ = true;
}
@@ -82,19 +82,6 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
context.activeState.agc.autoEnabled = !context.configuration.raw;
/*
- * According to the RkISP1 documentation:
- * - versions < V12 have RKISP1_CIF_ISP_AE_MEAN_MAX_V10 entries,
- * - versions >= V12 have RKISP1_CIF_ISP_AE_MEAN_MAX_V12 entries.
- */
- if (context.configuration.hw.revision < RKISP1_V12) {
- numCells_ = RKISP1_CIF_ISP_AE_MEAN_MAX_V10;
- numHistBins_ = RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10;
- } else {
- numCells_ = RKISP1_CIF_ISP_AE_MEAN_MAX_V12;
- numHistBins_ = RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12;
- }
-
- /*
* Define the measurement window for AGC as a centered rectangle
* covering 3/4 of the image width and height.
*/
@@ -186,7 +173,10 @@ void Agc::prepare(IPAContext &context, const uint32_t frame,
/* Produce the luminance histogram. */
params->meas.hst_config.mode = RKISP1_CIF_ISP_HISTOGRAM_MODE_Y_HISTOGRAM;
/* Set an average weighted histogram. */
- Span<uint8_t> weights{ params->meas.hst_config.hist_weight, numHistBins_ };
+ Span<uint8_t> weights{
+ params->meas.hst_config.hist_weight,
+ context.hw->numHistogramBins
+ };
std::fill(weights.begin(), weights.end(), 1);
/* Step size can't be less than 3. */
params->meas.hst_config.histogram_predivider = 4;
@@ -414,8 +404,11 @@ void Agc::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
const rkisp1_cif_isp_stat *params = &stats->params;
ASSERT(stats->meas_type & RKISP1_CIF_ISP_STAT_AUTOEXP);
- Span<const uint8_t> ae{ params->ae.exp_mean, numCells_ };
- Span<const uint32_t> hist{ params->hist.hist_bins, numHistBins_ };
+ Span<const uint8_t> ae{ params->ae.exp_mean, context.hw->numAeCells };
+ Span<const uint32_t> hist{
+ params->hist.hist_bins,
+ context.hw->numHistogramBins
+ };
double iqMean = measureBrightness(hist);
double iqMeanGain = kEvGainTarget * hist.size() / iqMean;
diff --git a/src/ipa/rkisp1/algorithms/agc.h b/src/ipa/rkisp1/algorithms/agc.h
index ce8594f3..fb82a33f 100644
--- a/src/ipa/rkisp1/algorithms/agc.h
+++ b/src/ipa/rkisp1/algorithms/agc.h
@@ -50,9 +50,6 @@ private:
uint64_t frameCount_;
- uint32_t numCells_;
- uint32_t numHistBins_;
-
utils::Duration filteredExposure_;
};