@@ -17,6 +17,8 @@ public:
/* A contrast algorithm must provide the following: */
virtual void setBrightness(double brightness) = 0;
virtual void setContrast(double contrast) = 0;
+ virtual void enableCe(bool enable) = 0;
+ virtual void restoreCe() = 0;
};
} /* namespace RPiController */
@@ -42,6 +42,7 @@ int Contrast::read(const libcamera::YamlObject ¶ms)
{
// enable adaptive enhancement by default
config_.ceEnable = params["ce_enable"].get<int>(1);
+ ceEnable_ = config_.ceEnable;
// the point near the bottom of the histogram to move
config_.loHistogram = params["lo_histogram"].get<double>(0.01);
// where in the range to try and move it to
@@ -65,6 +66,16 @@ void Contrast::setContrast(double contrast)
contrast_ = contrast;
}
+void Contrast::enableCe(bool enable)
+{
+ ceEnable_ = enable;
+}
+
+void Contrast::restoreCe()
+{
+ ceEnable_ = config_.ceEnable;
+}
+
void Contrast::initialise()
{
/*
@@ -150,7 +161,7 @@ void Contrast::process(StatisticsPtr &stats,
* histogram down, and possibly push the end up.
*/
Pwl gammaCurve = config_.gammaCurve;
- if (config_.ceEnable) {
+ if (ceEnable_) {
if (config_.loMax != 0 || config_.hiMax != 0)
gammaCurve = computeStretchCurve(histogram, config_).compose(gammaCurve);
/*
@@ -37,6 +37,8 @@ public:
int read(const libcamera::YamlObject ¶ms) override;
void setBrightness(double brightness) override;
void setContrast(double contrast) override;
+ void enableCe(bool enable) override;
+ void restoreCe() override;
void initialise() override;
void prepare(Metadata *imageMetadata) override;
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;
@@ -46,6 +48,7 @@ private:
double brightness_;
double contrast_;
ContrastStatus status_;
+ double ceEnable_;
};
} /* namespace RPiController */