summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/controller/rpi
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/raspberrypi/controller/rpi')
-rw-r--r--src/ipa/raspberrypi/controller/rpi/sdn.cpp11
-rw-r--r--src/ipa/raspberrypi/controller/rpi/sdn.hpp5
2 files changed, 13 insertions, 3 deletions
diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.cpp b/src/ipa/raspberrypi/controller/rpi/sdn.cpp
index 825f421f..959bc740 100644
--- a/src/ipa/raspberrypi/controller/rpi/sdn.cpp
+++ b/src/ipa/raspberrypi/controller/rpi/sdn.cpp
@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright (C) 2019, Raspberry Pi (Trading) Limited
+ * Copyright (C) 2019-2021, Raspberry Pi (Trading) Limited
*
* sdn.cpp - SDN (spatial denoise) control algorithm
*/
@@ -23,7 +23,7 @@ LOG_DEFINE_CATEGORY(RPiSdn)
#define NAME "rpi.sdn"
Sdn::Sdn(Controller *controller)
- : Algorithm(controller)
+ : DenoiseAlgorithm(controller), mode_(DenoiseMode::ColourOff)
{
}
@@ -53,6 +53,7 @@ void Sdn::Prepare(Metadata *image_metadata)
status.noise_constant = noise_status.noise_constant * deviation_;
status.noise_slope = noise_status.noise_slope * deviation_;
status.strength = strength_;
+ status.mode = static_cast<std::underlying_type_t<DenoiseMode>>(mode_);
image_metadata->Set("denoise.status", status);
LOG(RPiSdn, Debug)
<< "programmed constant " << status.noise_constant
@@ -60,6 +61,12 @@ void Sdn::Prepare(Metadata *image_metadata)
<< " strength " << status.strength;
}
+void Sdn::SetMode(DenoiseMode mode)
+{
+ // We only distinguish between off and all other modes.
+ mode_ = mode;
+}
+
// Register algorithm with the system.
static Algorithm *Create(Controller *controller)
{
diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.hpp b/src/ipa/raspberrypi/controller/rpi/sdn.hpp
index 486c000d..2371ce04 100644
--- a/src/ipa/raspberrypi/controller/rpi/sdn.hpp
+++ b/src/ipa/raspberrypi/controller/rpi/sdn.hpp
@@ -7,12 +7,13 @@
#pragma once
#include "../algorithm.hpp"
+#include "../denoise_algorithm.hpp"
namespace RPiController {
// Algorithm to calculate correct spatial denoise (SDN) settings.
-class Sdn : public Algorithm
+class Sdn : public DenoiseAlgorithm
{
public:
Sdn(Controller *controller = NULL);
@@ -20,10 +21,12 @@ public:
void Read(boost::property_tree::ptree const &params) override;
void Initialise() override;
void Prepare(Metadata *image_metadata) override;
+ void SetMode(DenoiseMode mode) override;
private:
double deviation_;
double strength_;
+ DenoiseMode mode_;
};
} // namespace RPiController