ipa: ipu3: Rework IPAFrameContext
Currently, IPAFrameContext consolidates the values computed by the active state of the algorithms, along with the values applied on the sensor. Moving ahead, we want to have a frame context associated with each incoming request (or frame to be captured). This shouldn't necessarily be tied to "active state" of the algorithms hence: - Rename current IPAFrameContext -> IPAActiveState This will now reflect the latest active state of the algorithms and has nothing to do with any frame-related ops/values. - Re-instate IPAFrameContext with a sub-structure 'sensor' currently storing the exposure and gain value. Adapt the various access to the frame context to the new changes as described above. Subsequently, the re-instated IPAFrameContext will be extended to contain a frame number and ControlList to remember the incoming request controls provided by the application. A ring-buffer will be introduced to store these frame contexts for a certain number of frames. Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
e0766fa205
commit
bab437df1f
8 changed files with 113 additions and 95 deletions
|
@ -42,7 +42,7 @@ int ToneMapping::configure(IPAContext &context,
|
|||
[[maybe_unused]] const IPAConfigInfo &configInfo)
|
||||
{
|
||||
/* Initialise tone mapping gamma value. */
|
||||
context.frameContext.toneMapping.gamma = 0.0;
|
||||
context.activeState.toneMapping.gamma = 0.0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ void ToneMapping::prepare([[maybe_unused]] IPAContext &context,
|
|||
{
|
||||
/* Copy the calculated LUT into the parameters buffer. */
|
||||
memcpy(params->acc_param.gamma.gc_lut.lut,
|
||||
context.frameContext.toneMapping.gammaCorrection.lut,
|
||||
context.activeState.toneMapping.gammaCorrection.lut,
|
||||
IPU3_UAPI_GAMMA_CORR_LUT_ENTRIES *
|
||||
sizeof(params->acc_param.gamma.gc_lut.lut[0]));
|
||||
|
||||
|
@ -87,11 +87,11 @@ void ToneMapping::process(IPAContext &context,
|
|||
*/
|
||||
gamma_ = 1.1;
|
||||
|
||||
if (context.frameContext.toneMapping.gamma == gamma_)
|
||||
if (context.activeState.toneMapping.gamma == gamma_)
|
||||
return;
|
||||
|
||||
struct ipu3_uapi_gamma_corr_lut &lut =
|
||||
context.frameContext.toneMapping.gammaCorrection;
|
||||
context.activeState.toneMapping.gammaCorrection;
|
||||
|
||||
for (uint32_t i = 0; i < std::size(lut.lut); i++) {
|
||||
double j = static_cast<double>(i) / (std::size(lut.lut) - 1);
|
||||
|
@ -101,7 +101,7 @@ void ToneMapping::process(IPAContext &context,
|
|||
lut.lut[i] = gamma * 8191;
|
||||
}
|
||||
|
||||
context.frameContext.toneMapping.gamma = gamma_;
|
||||
context.activeState.toneMapping.gamma = gamma_;
|
||||
}
|
||||
|
||||
} /* namespace ipa::ipu3::algorithms */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue