Add fixed read only 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: If54b924223255c068fff26f8b6f21cdd31799aea
diff --git a/libs/input/MotionPredictor.cpp b/libs/input/MotionPredictor.cpp
index c4e3ff6..1df88dd 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 @@
// 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_prediction_pruning_via_jerk_thresholding()) {
+ // 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 b48b0fb..e041c51 100644
--- a/libs/input/input_flags.aconfig
+++ b/libs/input/input_flags.aconfig
@@ -128,3 +128,12 @@
description: "Enable fling scrolling to be stopped by putting a finger on the touchpad again"
bug: "281106755"
}
+
+flag {
+ name: "enable_prediction_pruning_via_jerk_thresholding"
+ namespace: "input"
+ description: "Enable prediction pruning based on jerk thresholds."
+ bug: "266747654"
+ is_fixed_read_only: true
+
+}