InputResampling: Don't extrapolate for very low frame rates.
In very low framerate situations, extrapolation is generally going to either cause no benefit or make a mistake. We can safely turn it off with no user-visible negative impact. BUG=https://buganizer.corp.google.com/u/0/issues/24550942 TEST=Scrolled very slowly and saw mispredictions on Angler. With change, saw the log message that the mispredictions were suppressed. Change-Id: Ic9747d3ff098d7918047ada2ed1c2d21282c65b0
This commit is contained in:
parent
b0127aadaf
commit
de18f6c32a
@ -51,6 +51,10 @@ static const nsecs_t RESAMPLE_LATENCY = 5 * NANOS_PER_MS;
|
|||||||
// Minimum time difference between consecutive samples before attempting to resample.
|
// Minimum time difference between consecutive samples before attempting to resample.
|
||||||
static const nsecs_t RESAMPLE_MIN_DELTA = 2 * NANOS_PER_MS;
|
static const nsecs_t RESAMPLE_MIN_DELTA = 2 * NANOS_PER_MS;
|
||||||
|
|
||||||
|
// Maximum time difference between consecutive samples before attempting to resample
|
||||||
|
// by extrapolation.
|
||||||
|
static const nsecs_t RESAMPLE_MAX_DELTA = 20 * NANOS_PER_MS;
|
||||||
|
|
||||||
// Maximum time to predict forward from the last known state, to avoid predicting too
|
// Maximum time to predict forward from the last known state, to avoid predicting too
|
||||||
// far into the future. This time is further bounded by 50% of the last time delta.
|
// far into the future. This time is further bounded by 50% of the last time delta.
|
||||||
static const nsecs_t RESAMPLE_MAX_PREDICTION = 8 * NANOS_PER_MS;
|
static const nsecs_t RESAMPLE_MAX_PREDICTION = 8 * NANOS_PER_MS;
|
||||||
@ -724,7 +728,7 @@ void InputConsumer::resampleTouchState(nsecs_t sampleTime, MotionEvent* event,
|
|||||||
nsecs_t delta = future.eventTime - current->eventTime;
|
nsecs_t delta = future.eventTime - current->eventTime;
|
||||||
if (delta < RESAMPLE_MIN_DELTA) {
|
if (delta < RESAMPLE_MIN_DELTA) {
|
||||||
#if DEBUG_RESAMPLING
|
#if DEBUG_RESAMPLING
|
||||||
ALOGD("Not resampled, delta time is %lld ns.", delta);
|
ALOGD("Not resampled, delta time is too small: %lld ns.", delta);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -736,7 +740,12 @@ void InputConsumer::resampleTouchState(nsecs_t sampleTime, MotionEvent* event,
|
|||||||
nsecs_t delta = current->eventTime - other->eventTime;
|
nsecs_t delta = current->eventTime - other->eventTime;
|
||||||
if (delta < RESAMPLE_MIN_DELTA) {
|
if (delta < RESAMPLE_MIN_DELTA) {
|
||||||
#if DEBUG_RESAMPLING
|
#if DEBUG_RESAMPLING
|
||||||
ALOGD("Not resampled, delta time is %lld ns.", delta);
|
ALOGD("Not resampled, delta time is too small: %lld ns.", delta);
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
} else if (delta > RESAMPLE_MAX_DELTA) {
|
||||||
|
#if DEBUG_RESAMPLING
|
||||||
|
ALOGD("Not resampled, delta time is too large: %lld ns.", delta);
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user