summaryrefslogtreecommitdiff
path: root/src/ipa/simple/algorithms/blc.cpp
diff options
context:
space:
mode:
authorMilan Zamazal <mzamazal@redhat.com>2024-12-03 10:38:13 +0100
committerKieran Bingham <kieran.bingham@ideasonboard.com>2024-12-03 14:30:18 +0000
commit2a9b0b34f8cb2295cd41a5340a9d26231dcd3e4b (patch)
tree4d59287880d6a4dd97523d40ae787c2f5316c819 /src/ipa/simple/algorithms/blc.cpp
parenta43ea7ff70e332ffe6b852a0aaeeb9aa877663cf (diff)
libcamera: software_isp: Actually apply black level from tuning data
The black level obtained from the tuning file in software ISP is retrieved in init (because this is the standard algorithm method with access to tuning data) and stored into context. But the context gets reset in configure and the black level is lost and never applied. Let's store the black level from the tuning file into an algorithm instance variable and put it into the context only later in configure. This is similar to what rkisp1 IPA does with the values obtained from the tuning file. Fixes: 41e3d61c745153779ed5a38634d7266bffd60d61 ("libcamera: software_isp: Clear IPA context on configure and stop") Signed-off-by: Milan Zamazal <mzamazal@redhat.com> Tested-by: Robert Mader <robert.mader@collabora.com> Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/ipa/simple/algorithms/blc.cpp')
-rw-r--r--src/ipa/simple/algorithms/blc.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/simple/algorithms/blc.cpp
index b4e32fe1..1d7d370b 100644
--- a/src/ipa/simple/algorithms/blc.cpp
+++ b/src/ipa/simple/algorithms/blc.cpp
@@ -21,7 +21,8 @@ BlackLevel::BlackLevel()
{
}
-int BlackLevel::init(IPAContext &context, const YamlObject &tuningData)
+int BlackLevel::init([[maybe_unused]] IPAContext &context,
+ const YamlObject &tuningData)
{
auto blackLevel = tuningData["blackLevel"].get<int16_t>();
if (blackLevel.has_value()) {
@@ -29,7 +30,7 @@ int BlackLevel::init(IPAContext &context, const YamlObject &tuningData)
* Convert 16 bit values from the tuning file to 8 bit black
* level for the SoftISP.
*/
- context.configuration.black.level = blackLevel.value() >> 8;
+ definedLevel_ = blackLevel.value() >> 8;
}
return 0;
}
@@ -37,6 +38,8 @@ int BlackLevel::init(IPAContext &context, const YamlObject &tuningData)
int BlackLevel::configure(IPAContext &context,
[[maybe_unused]] const IPAConfigInfo &configInfo)
{
+ if (definedLevel_.has_value())
+ context.configuration.black.level = definedLevel_;
context.activeState.blc.level =
context.configuration.black.level.value_or(255);
return 0;