ipa: libipa: Pass a reference instead of pointer to Algorithm::process()

Frame contexts will become the core component of IPA modules, always
available to functions of the algorithms. To indicate and prepare for
this, turn the frame context pointer passed to Algorithm::process() into
a reference.

The RkISP1 IPA module doesn't use frame contexts yet, so pass a dummy
context for now.

While at it, drop an unneeded [[maybe_unused]] from Agc::process() and
add a missing parameter documentation for the frameContext argument to
Awb::process().

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart 2022-07-21 13:13:04 +01:00
parent 024d16b7db
commit 2101af47e4
15 changed files with 23 additions and 19 deletions

View file

@ -417,7 +417,7 @@ bool Af::afIsOutOfFocus(IPAContext &context)
*
* [1] Hill Climbing Algorithm, https://en.wikipedia.org/wiki/Hill_climbing
*/
void Af::process(IPAContext &context, [[maybe_unused]] IPAFrameContext *frameContext,
void Af::process(IPAContext &context, [[maybe_unused]] IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats)
{
/* Evaluate the AF buffer length */

View file

@ -32,7 +32,7 @@ public:
void prepare(IPAContext &context, ipu3_uapi_params *params) override;
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
void process(IPAContext &context, IPAFrameContext *frameContext,
void process(IPAContext &context, IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats) override;
private:

View file

@ -183,13 +183,13 @@ utils::Duration Agc::filterExposure(utils::Duration exposureValue)
* \param[in] yGain The gain calculated based on the relative luminance target
* \param[in] iqMeanGain The gain calculated based on the relative luminance target
*/
void Agc::computeExposure(IPAContext &context, IPAFrameContext *frameContext,
void Agc::computeExposure(IPAContext &context, IPAFrameContext &frameContext,
double yGain, double iqMeanGain)
{
const IPASessionConfiguration &configuration = context.configuration;
/* Get the effective exposure and gain applied on the sensor. */
uint32_t exposure = frameContext->sensor.exposure;
double analogueGain = frameContext->sensor.gain;
uint32_t exposure = frameContext.sensor.exposure;
double analogueGain = frameContext.sensor.gain;
/* Use the highest of the two gain estimates. */
double evGain = std::max(yGain, iqMeanGain);
@ -323,7 +323,7 @@ double Agc::estimateLuminance(IPAActiveState &activeState,
* Identify the current image brightness, and use that to estimate the optimal
* new exposure and gain for the scene.
*/
void Agc::process(IPAContext &context, [[maybe_unused]] IPAFrameContext *frameContext,
void Agc::process(IPAContext &context, IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats)
{
/*

View file

@ -28,14 +28,14 @@ public:
~Agc() = default;
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
void process(IPAContext &context, IPAFrameContext *frameContext,
void process(IPAContext &context, IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats) override;
private:
double measureBrightness(const ipu3_uapi_stats_3a *stats,
const ipu3_uapi_grid_config &grid) const;
utils::Duration filterExposure(utils::Duration currentExposure);
void computeExposure(IPAContext &context, IPAFrameContext *frameContext,
void computeExposure(IPAContext &context, IPAFrameContext &frameContext,
double yGain, double iqMeanGain);
double estimateLuminance(IPAActiveState &activeState,
const ipu3_uapi_grid_config &grid,

View file

@ -387,7 +387,7 @@ void Awb::calculateWBGains(const ipu3_uapi_stats_3a *stats)
/**
* \copydoc libcamera::ipa::Algorithm::process
*/
void Awb::process(IPAContext &context, [[maybe_unused]] IPAFrameContext *frameContext,
void Awb::process(IPAContext &context, [[maybe_unused]] IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats)
{
calculateWBGains(stats);

View file

@ -40,7 +40,7 @@ public:
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
void prepare(IPAContext &context, ipu3_uapi_params *params) override;
void process(IPAContext &context, IPAFrameContext *frameContext,
void process(IPAContext &context, IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats) override;
private:

View file

@ -78,7 +78,7 @@ void ToneMapping::prepare([[maybe_unused]] IPAContext &context,
* The tone mapping look up table is generated as an inverse power curve from
* our gamma setting.
*/
void ToneMapping::process(IPAContext &context, [[maybe_unused]] IPAFrameContext *frameContext,
void ToneMapping::process(IPAContext &context, [[maybe_unused]] IPAFrameContext &frameContext,
[[maybe_unused]] const ipu3_uapi_stats_3a *stats)
{
/*

View file

@ -20,7 +20,7 @@ public:
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
void prepare(IPAContext &context, ipu3_uapi_params *params) override;
void process(IPAContext &context, IPAFrameContext *frameContext,
void process(IPAContext &context, IPAFrameContext &frameContext,
const ipu3_uapi_stats_3a *stats) override;
private: