summaryrefslogtreecommitdiff
path: root/src/ipa/ipu3/ipu3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/ipu3/ipu3.cpp')
-rw-r--r--src/ipa/ipu3/ipu3.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index 4d5b0af1..3713b07b 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -30,6 +30,7 @@
#include "libcamera/internal/mapped_framebuffer.h"
#include "algorithms/algorithm.h"
+#include "algorithms/tone_mapping.h"
#include "ipu3_agc.h"
#include "ipu3_awb.h"
#include "libipa/camera_sensor_helper.h"
@@ -91,6 +92,17 @@
* \brief BDS output size configured by the pipeline handler
*/
+/**
+ * \struct IPAFrameContext::toneMapping
+ * \brief Context for ToneMapping and Gamma control
+ *
+ * \var IPAFrameContext::toneMapping::gammaCorrection
+ * \brief Per-pixel tone mapping implemented as a LUT
+ *
+ * The LUT structure is defined by the IPU3 kernel interface. See
+ * <linux/intel-ipu3.h> struct ipu3_uapi_gamma_corr_lut for further details.
+ */
+
static constexpr uint32_t kMaxCellWidthPerSet = 160;
static constexpr uint32_t kMaxCellHeightPerSet = 56;
@@ -225,6 +237,9 @@ int IPAIPU3::init(const IPASettings &settings,
*ipaControls = ControlInfoMap(std::move(controls), controls::controls);
+ /* Construct our Algorithms */
+ algorithms_.push_back(std::make_unique<algorithms::ToneMapping>());
+
return 0;
}
@@ -423,7 +438,7 @@ void IPAIPU3::fillParams(unsigned int frame, ipu3_uapi_params *params)
algo->prepare(context_, &params_);
if (agcAlgo_->updateControls())
- awbAlgo_->updateWbParameters(params_, agcAlgo_->gamma());
+ awbAlgo_->updateWbParameters(params_);
*params = params_;