diff options
author | Danesh M <daneshm90@gmail.com> | 2015-12-22 13:34:51 -0800 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2015-12-22 13:53:05 -0800 |
commit | da7ac01bea5ed4f52de09a1e481fb48a1b6fc95d (patch) | |
tree | 56fd3fd44e74d225d6bfb87507014121942397c5 /services/core/java/com/android/server/display | |
parent | 0f7990648453e2290a9cbedd1b17373a62776228 (diff) | |
download | frameworks_base-da7ac01bea5ed4f52de09a1e481fb48a1b6fc95d.zip frameworks_base-da7ac01bea5ed4f52de09a1e481fb48a1b6fc95d.tar.gz frameworks_base-da7ac01bea5ed4f52de09a1e481fb48a1b6fc95d.tar.bz2 |
Add config_autoBrightnessAmbientLightHorizon overlay
CYNGNOS-1475
Change-Id: I92bf8cfbb0eebb746622de123d3e065f4e47ed97
Diffstat (limited to 'services/core/java/com/android/server/display')
-rw-r--r-- | services/core/java/com/android/server/display/AutomaticBrightnessController.java | 36 | ||||
-rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerController.java | 5 |
2 files changed, 23 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java index 575701a..bac4fd1 100644 --- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java +++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java @@ -55,19 +55,12 @@ class AutomaticBrightnessController { // auto-brightness adjustment setting. private static final float SCREEN_AUTO_BRIGHTNESS_ADJUSTMENT_MAX_GAMMA = 3.0f; - // Period of time in which to consider light samples in milliseconds. - private static final int AMBIENT_LIGHT_HORIZON = 10000; - // Hysteresis constraints for brightening or darkening. // The recent lux must have changed by at least this fraction relative to the // current ambient lux before a change will be considered. private static final float BRIGHTENING_LIGHT_HYSTERESIS = 0.10f; private static final float DARKENING_LIGHT_HYSTERESIS = 0.20f; - // The intercept used for the weighting calculation. This is used in order to keep all possible - // weighting values positive. - private static final int WEIGHTING_INTERCEPT = AMBIENT_LIGHT_HORIZON; - // How long the current sensor reading is assumed to be valid beyond the current time. // This provides a bit of prediction, as well as ensures that the weight for the last sample is // non-zero, which in turn ensures that the total weight is non-zero. @@ -198,6 +191,13 @@ class AutomaticBrightnessController { // Night mode color temperature adjustments private final LiveDisplayController mLiveDisplay; + // Period of time in which to consider light samples in milliseconds. + private int mAmbientLightHorizon; + + // The intercept used for the weighting calculation. This is used in order to keep all possible + // weighting values positive. + private int mWeightingIntercept; + private final Context mContext; public AutomaticBrightnessController(Context context, Callbacks callbacks, Looper looper, @@ -205,7 +205,7 @@ class AutomaticBrightnessController { int brightnessMin, int brightnessMax, float dozeScaleFactor, int lightSensorRate, long brighteningLightDebounceConfig, long darkeningLightDebounceConfig, boolean resetAmbientLuxAfterWarmUpConfig, - LiveDisplayController ldc) { + int ambientLightHorizon, LiveDisplayController ldc) { mContext = context; mCallbacks = callbacks; mTwilight = LocalServices.getService(TwilightManager.class); @@ -220,9 +220,11 @@ class AutomaticBrightnessController { mDarkeningLightDebounceConfig = darkeningLightDebounceConfig; mResetAmbientLuxAfterWarmUpConfig = resetAmbientLuxAfterWarmUpConfig; mLiveDisplay = ldc; + mAmbientLightHorizon = ambientLightHorizon; + mWeightingIntercept = ambientLightHorizon; mHandler = new AutomaticBrightnessHandler(looper); - mAmbientLightRingBuffer = new AmbientLightRingBuffer(mLightSensorRate); + mAmbientLightRingBuffer = new AmbientLightRingBuffer(mLightSensorRate, mAmbientLightHorizon); if (!DEBUG_PRETEND_LIGHT_SENSOR_ABSENT) { mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); @@ -319,7 +321,7 @@ class AutomaticBrightnessController { private void applyLightSensorMeasurement(long time, float lux) { mRecentLightSamples++; - mAmbientLightRingBuffer.prune(time - AMBIENT_LIGHT_HORIZON); + mAmbientLightRingBuffer.prune(time - mAmbientLightHorizon); mAmbientLightRingBuffer.push(time, lux); // Remember this sample value. @@ -370,14 +372,14 @@ class AutomaticBrightnessController { return sum / totalWeight; } - private static float calculateWeight(long startDelta, long endDelta) { + private float calculateWeight(long startDelta, long endDelta) { return weightIntegral(endDelta) - weightIntegral(startDelta); } - // Evaluates the integral of y = x + WEIGHTING_INTERCEPT. This is always positive for the + // Evaluates the integral of y = x + mWeightIntercept. This is always positive for the // horizon we're looking at and provides a non-linear weighting for light samples. - private static float weightIntegral(long x) { - return x * (x * 0.5f + WEIGHTING_INTERCEPT); + private float weightIntegral(long x) { + return x * (x * 0.5f + mWeightingIntercept); } private long nextAmbientLightBrighteningTransition(long time) { @@ -406,7 +408,7 @@ class AutomaticBrightnessController { private void updateAmbientLux() { long time = SystemClock.uptimeMillis(); - mAmbientLightRingBuffer.prune(time - AMBIENT_LIGHT_HORIZON); + mAmbientLightRingBuffer.prune(time - mAmbientLightHorizon); updateAmbientLux(time); } @@ -666,8 +668,8 @@ class AutomaticBrightnessController { private int mEnd; private int mCount; - public AmbientLightRingBuffer(long lightSensorRate) { - mCapacity = (int) Math.ceil(AMBIENT_LIGHT_HORIZON * BUFFER_SLACK / lightSensorRate); + public AmbientLightRingBuffer(long lightSensorRate, int ambientLightHorizon) { + mCapacity = (int) Math.ceil(ambientLightHorizon * BUFFER_SLACK / lightSensorRate); mRingLux = new float[mCapacity]; mRingTime = new long[mCapacity]; } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 38c4180..0d795dd 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -321,6 +321,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call com.android.internal.R.integer.config_autoBrightnessDarkeningLightDebounce); boolean autoBrightnessResetAmbientLuxAfterWarmUp = resources.getBoolean( com.android.internal.R.bool.config_autoBrightnessResetAmbientLuxAfterWarmUp); + int ambientLightHorizon = resources.getInteger( + com.android.internal.R.integer.config_autoBrightnessAmbientLightHorizon); if (mUseSoftwareAutoBrightnessConfig) { int[] lux = resources.getIntArray( @@ -358,7 +360,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call lightSensorWarmUpTimeConfig, screenBrightnessRangeMinimum, mScreenBrightnessRangeMaximum, dozeScaleFactor, lightSensorRate, brighteningLightDebounce, darkeningLightDebounce, - autoBrightnessResetAmbientLuxAfterWarmUp, mLiveDisplayController); + autoBrightnessResetAmbientLuxAfterWarmUp, ambientLightHorizon, + mLiveDisplayController); } } |