summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Derek Wu <derekwu@google.com> 2024-03-20 13:53:40 -0700
committer Derek Wu <derekwu@google.com> 2024-03-20 16:48:35 -0700
commit1af8b968a8cd93d2642d9a8bf84f23a8db9d016e (patch)
treee0ab39ae8b118230f2383e03a8b8637ac90bebe4
parent0c81eb0a8749c606007b08c07d0c03acd5e30b39 (diff)
Add flag to enable jerk prediction pruning.
For now this flag will simply allow all motion predictions (no-op). Test: atest libinput_tests Bug: 266747654 Change-Id: I7f8254bb4ea6702fecbb8cd8cfa568dbd06e4f37
-rw-r--r--libs/input/MotionPredictor.cpp13
-rw-r--r--libs/input/input_flags.aconfig7
2 files changed, 19 insertions, 1 deletions
diff --git a/libs/input/MotionPredictor.cpp b/libs/input/MotionPredictor.cpp
index c4e3ff6dee..e836a4c92f 100644
--- a/libs/input/MotionPredictor.cpp
+++ b/libs/input/MotionPredictor.cpp
@@ -22,17 +22,21 @@
#include <cmath>
#include <cstddef>
#include <cstdint>
+#include <limits>
#include <string>
#include <vector>
#include <android-base/logging.h>
#include <android-base/strings.h>
#include <android/input.h>
+#include <com_android_input_flags.h>
#include <attestation/HmacKeyManager.h>
#include <ftl/enum.h>
#include <input/TfLiteMotionPredictor.h>
+namespace input_flags = com::android::input::flags;
+
namespace android {
namespace {
@@ -197,7 +201,14 @@ std::unique_ptr<MotionEvent> MotionPredictor::predict(nsecs_t timestamp) {
// device starts to speed up, but avoids producing noisy predictions as it slows down.
break;
}
- // TODO(b/266747654): Stop predictions if confidence is < some threshold.
+ if (input_flags::enable_jerk_prediction_pruning()) {
+ // TODO(b/266747654): Stop predictions if confidence is < some threshold
+ // Arbitrarily high pruning index, will correct once jerk thresholding is implemented.
+ const size_t upperBoundPredictionIndex = std::numeric_limits<size_t>::max();
+ if (i > upperBoundPredictionIndex) {
+ break;
+ }
+ }
const TfLiteMotionPredictorSample::Point predictedPoint =
convertPrediction(axisFrom, axisTo, predictedR[i], predictedPhi[i]);
diff --git a/libs/input/input_flags.aconfig b/libs/input/input_flags.aconfig
index b48b0fb924..c1f5e2a53b 100644
--- a/libs/input/input_flags.aconfig
+++ b/libs/input/input_flags.aconfig
@@ -128,3 +128,10 @@ flag {
description: "Enable fling scrolling to be stopped by putting a finger on the touchpad again"
bug: "281106755"
}
+
+flag {
+ name: "enable_jerk_prediction_pruning"
+ namespace: "input"
+ description: "Enable prediction pruning based on jerk thresholds."
+ bug: "266747654"
+}