mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Minimum luminance for backlight in dark scenes (#646)
* Include miminum luminance * Add luminance minimum * Add luminance minimum * fixed missing ; * Add luminance minimum * Add luminance minimum check Check if luminance mimimum is other than default * Add luminance minimum * Add luminance minimum * Add luminance minimum * Add luminance minimum * Add luminance minimum * Safe luminance calculation Former-commit-id: 35a762b18b473a333155acba7a00894204400076
This commit is contained in:
@@ -452,8 +452,9 @@ HslTransform * Hyperion::createHslTransform(const Json::Value & hslConfig)
|
||||
{
|
||||
const double saturationGain = hslConfig.get("saturationGain", 1.0).asDouble();
|
||||
const double luminanceGain = hslConfig.get("luminanceGain", 1.0).asDouble();
|
||||
const double luminanceMinimum = hslConfig.get("luminanceMinimum", 0.0).asDouble();
|
||||
|
||||
return new HslTransform(saturationGain, luminanceGain);
|
||||
return new HslTransform(saturationGain, luminanceGain, luminanceMinimum);
|
||||
}
|
||||
|
||||
RgbChannelTransform* Hyperion::createRgbChannelTransform(const Json::Value& colorConfig)
|
||||
|
@@ -68,6 +68,11 @@
|
||||
"type" : "number",
|
||||
"required" : false,
|
||||
"minimum" : 0.0
|
||||
},
|
||||
"luminanceMinimum" : {
|
||||
"type" : "number",
|
||||
"required" : false,
|
||||
"minimum" : 0.0
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
|
@@ -455,6 +455,7 @@ void JsonClientConnection::handleServerInfoCommand(const Json::Value &)
|
||||
transform["valueGain"] = colorTransform->_hsvTransform.getValueGain();
|
||||
transform["saturationLGain"] = colorTransform->_hslTransform.getSaturationGain();
|
||||
transform["luminanceGain"] = colorTransform->_hslTransform.getLuminanceGain();
|
||||
transform["luminanceMinimum"] = colorTransform->_hslTransform.getLuminanceMinimum();
|
||||
|
||||
Json::Value & threshold = transform["threshold"];
|
||||
threshold.append(colorTransform->_rgbRedTransform.getThreshold());
|
||||
@@ -605,6 +606,11 @@ void JsonClientConnection::handleTransformCommand(const Json::Value &message)
|
||||
colorTransform->_hslTransform.setLuminanceGain(transform["luminanceGain"].asDouble());
|
||||
}
|
||||
|
||||
if (transform.isMember("luminanceMinimum"))
|
||||
{
|
||||
colorTransform->_hslTransform.setLuminanceMinimum(transform["luminanceMinimum"].asDouble());
|
||||
}
|
||||
|
||||
if (transform.isMember("threshold"))
|
||||
{
|
||||
const Json::Value & values = transform["threshold"];
|
||||
|
@@ -35,6 +35,11 @@
|
||||
"required" : false,
|
||||
"minimum" : 0.0
|
||||
},
|
||||
"luminanceMinimum" : {
|
||||
"type" : "number",
|
||||
"required" : false,
|
||||
"minimum" : 0.0
|
||||
},
|
||||
"threshold": {
|
||||
"type": "array",
|
||||
"required": false,
|
||||
|
@@ -4,13 +4,15 @@
|
||||
|
||||
HslTransform::HslTransform() :
|
||||
_saturationGain(1.0),
|
||||
_luminanceGain(1.0)
|
||||
_luminanceGain(1.0),
|
||||
_luminanceMinimum(0.0)
|
||||
{
|
||||
}
|
||||
|
||||
HslTransform::HslTransform(double saturationGain, double luminanceGain) :
|
||||
HslTransform::HslTransform(double saturationGain, double luminanceGain, double luminanceMinimum) :
|
||||
_saturationGain(saturationGain),
|
||||
_luminanceGain(luminanceGain)
|
||||
_luminanceGain(luminanceGain),
|
||||
_luminanceMinimum(luminanceMinimum)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -38,9 +40,19 @@ double HslTransform::getLuminanceGain() const
|
||||
return _luminanceGain;
|
||||
}
|
||||
|
||||
void HslTransform::setLuminanceMinimum(double luminanceMinimum)
|
||||
{
|
||||
_luminanceMinimum = luminanceMinimum;
|
||||
}
|
||||
|
||||
double HslTransform::getLuminanceMinimum() const
|
||||
{
|
||||
return _luminanceMinimum;
|
||||
}
|
||||
|
||||
void HslTransform::transform(uint8_t & red, uint8_t & green, uint8_t & blue) const
|
||||
{
|
||||
if (_saturationGain != 1.0 || _luminanceGain != 1.0)
|
||||
if (_saturationGain != 1.0 || _luminanceGain != 1.0 || _luminanceMinimum != 0.0)
|
||||
{
|
||||
uint16_t hue;
|
||||
float saturation, luminance;
|
||||
@@ -53,9 +65,11 @@ void HslTransform::transform(uint8_t & red, uint8_t & green, uint8_t & blue) con
|
||||
saturation = s;
|
||||
|
||||
float l = luminance * _luminanceGain;
|
||||
if (l < _luminanceMinimum)
|
||||
l = _luminanceMinimum;
|
||||
if (l > 1.0f)
|
||||
luminance = 1.0f;
|
||||
else
|
||||
else
|
||||
luminance = l;
|
||||
|
||||
hsl2rgb(hue, saturation, luminance, red, green, blue);
|
||||
|
Reference in New Issue
Block a user