diff options
author | 2024-04-02 01:30:21 -0700 | |
---|---|---|
committer | 2024-04-03 02:06:33 -0700 | |
commit | ae8dfc2ac6f1630b0022630f30dadf3f9f228a2a (patch) | |
tree | 7924f2771b1172f5f3c3db007be4f9b0f5a53301 | |
parent | a47327bcc96486f622bfef7062b682873f635282 (diff) |
Update jerk thresholds for prediction pruning.
Jerk thresholds are higher, which means less predictions are pruned.
Test: atest libinput_tests with local flag override to enable
enable_prediction_pruning_via_jerk_thresholding.
Test: atest CtsInputTestCases
Test: atest MotionPredictorBenchmark MotionPredictorTest
Test: Using stylus in a drawing app and seeing the predictions
Bug: 266747654
Change-Id: I430c4cd79bfe62a339b6c14964d7d7a91facf6c2
-rw-r--r-- | data/etc/input/motion_predictor_config.xml | 8 | ||||
-rw-r--r-- | libs/input/tests/MotionPredictor_test.cpp | 12 |
2 files changed, 9 insertions, 11 deletions
diff --git a/data/etc/input/motion_predictor_config.xml b/data/etc/input/motion_predictor_config.xml index a20993f924..c3f2fedc71 100644 --- a/data/etc/input/motion_predictor_config.xml +++ b/data/etc/input/motion_predictor_config.xml @@ -33,11 +33,9 @@ <distance-noise-floor>0.2</distance-noise-floor> <!-- The low and high jerk thresholds for prediction pruning. - The jerk thresholds are based on normalized dt = 1 calculations, and - are taken from Jetpacks MotionEventPredictor's KalmanPredictor - implementation (using its ACCURATE_LOW_JANK and ACCURATE_HIGH_JANK). + The jerk thresholds are based on normalized dt = 1 calculations. --> - <low-jerk>0.1</low-jerk> - <high-jerk>0.2</high-jerk> + <low-jerk>1.0</low-jerk> + <high-jerk>1.1</high-jerk> </motion-predictor> diff --git a/libs/input/tests/MotionPredictor_test.cpp b/libs/input/tests/MotionPredictor_test.cpp index dc38feffd6..b8f1caa068 100644 --- a/libs/input/tests/MotionPredictor_test.cpp +++ b/libs/input/tests/MotionPredictor_test.cpp @@ -291,12 +291,12 @@ TEST_WITH_FLAGS( MotionPredictor predictor(/*predictionTimestampOffsetNanos=*/0, []() { return true /*enable prediction*/; }); - // Jerk is medium (1.5 normalized, which is halfway between LOW_JANK and HIGH_JANK) - predictor.record(getMotionEvent(DOWN, 0, 4, 20ms)); - predictor.record(getMotionEvent(MOVE, 0, 6.25, 30ms)); - predictor.record(getMotionEvent(MOVE, 0, 9.4, 40ms)); - predictor.record(getMotionEvent(MOVE, 0, 13.6, 50ms)); - predictor.record(getMotionEvent(MOVE, 0, 19, 60ms)); + // Jerk is medium (1.05 normalized, which is halfway between LOW_JANK and HIGH_JANK) + predictor.record(getMotionEvent(DOWN, 0, 5.2, 20ms)); + predictor.record(getMotionEvent(MOVE, 0, 11.5, 30ms)); + predictor.record(getMotionEvent(MOVE, 0, 22, 40ms)); + predictor.record(getMotionEvent(MOVE, 0, 37.75, 50ms)); + predictor.record(getMotionEvent(MOVE, 0, 59.8, 60ms)); std::unique_ptr<MotionEvent> predicted = predictor.predict(82 * NSEC_PER_MSEC); EXPECT_NE(nullptr, predicted); // Halfway between LOW_JANK and HIGH_JANK means that half of the predictions |