From 35df7e2e1e6f049c2cc34a36ed05eb1a8fa4e49e Mon Sep 17 00:00:00 2001 From: Anthony Han Date: Thu, 27 Jun 2019 17:27:24 -0700 Subject: [PATCH] DWB Bias splines ignore default ambient CCT When ambientColorTemperature is set to a default of -1.0f, ambient brightness to bias splines should ignore this values instead of trying to interpolate to towards an actual CCT. Bug: 132047710 Test: atest AmbientLuxTest Change-Id: Ic6da5f80d52a94a29795a76422cc1b964cdf261b --- .../DisplayWhiteBalanceController.java | 6 +++-- .../display/whitebalance/AmbientLuxTest.java | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java b/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java index dd3876d8768b3..02ec10e2d49d3 100644 --- a/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java +++ b/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java @@ -356,13 +356,15 @@ public class DisplayWhiteBalanceController implements float ambientBrightness = mBrightnessFilter.getEstimate(time); - if (mLowLightAmbientBrightnessToBiasSpline != null) { + if (ambientColorTemperature != -1.0f && + mLowLightAmbientBrightnessToBiasSpline != null) { float bias = mLowLightAmbientBrightnessToBiasSpline.interpolate(ambientBrightness); ambientColorTemperature = bias * ambientColorTemperature + (1.0f - bias) * mLowLightAmbientColorTemperature; } - if (mHighLightAmbientBrightnessToBiasSpline != null) { + if (ambientColorTemperature != -1.0f && + mHighLightAmbientBrightnessToBiasSpline != null) { float bias = mHighLightAmbientBrightnessToBiasSpline.interpolate(ambientBrightness); ambientColorTemperature = (1.0f - bias) * ambientColorTemperature + bias diff --git a/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java b/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java index 424142c56b3af..6b0798bdce228 100644 --- a/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java +++ b/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java @@ -359,6 +359,33 @@ public final class AmbientLuxTest { } } + @Test + public void testLowLight_DefaultAmbient() throws Exception { + final float lowerBrightness = 10.0f; + final float upperBrightness = 50.0f; + setBrightnesses(lowerBrightness, upperBrightness); + setBiases(0.0f, 1.0f); + + DisplayWhiteBalanceController controller = + DisplayWhiteBalanceFactory.create(mHandler, mSensorManagerMock, mResourcesSpy); + final float ambientColorTemperature = -1.0f; + setEstimatedColorTemperature(controller, ambientColorTemperature); + controller.mBrightnessFilter = spy(controller.mBrightnessFilter); + + for (float t = 0.0f; t <= 1.0f; t += 0.1f) { + setEstimatedBrightnessAndUpdate(controller, + mix(lowerBrightness, upperBrightness, t)); + assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, + 0.001); + } + + setEstimatedBrightnessAndUpdate(controller, 0.0f); + assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, 0.001); + + setEstimatedBrightnessAndUpdate(controller, upperBrightness + 1.0f); + assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, 0.001); + } + void mockThrottler() { when(mResourcesSpy.getInteger( R.integer.config_displayWhiteBalanceDecreaseDebounce)).thenReturn(0);