)]}'
{
  "log": [
    {
      "commit": "cc6aec59b86cdc7e26f7d637716c0ad85694931c",
      "tree": "4b0beba8d49f0524a29d58aba2682aa48303c8bc",
      "parents": [
        "4b84e83d3f732589c11f7017757cd7dda09abeae"
      ],
      "author": {
        "name": "Derek Wu",
        "email": "derekwu@google.com",
        "time": "Tue Jul 30 11:59:56 2024 +0000"
      },
      "committer": {
        "name": "Derek Wu",
        "email": "derekwu@google.com",
        "time": "Thu Aug 01 18:03:55 2024 +0000"
      },
      "message": "Refactor JerkTracker and MotionPredictor for better testing.\n\nChanges include renaming forgetFactor to alpha.\n\nTest: atest libinput_tests\nBug: 266747654\nBug: 353161308\nFlag: com.android.input.flags.enable_prediction_pruning_via_jerk_thresholding\nChange-Id: Icd056d36a3d7894c6c9b4b957233002ad961a9a1\n"
    },
    {
      "commit": "5e0e7cf9d7918fac53e21a088e2f7d914cde9b8f",
      "tree": "58476614b8067ea56578eda64f7f8a809858c4e4",
      "parents": [
        "cda4744d221364232c5860397de3b317cc401687"
      ],
      "author": {
        "name": "Derek Wu",
        "email": "derekwu@google.com",
        "time": "Thu Jul 04 11:14:18 2024 +0000"
      },
      "committer": {
        "name": "Derek Wu",
        "email": "derekwu@google.com",
        "time": "Mon Jul 15 08:10:01 2024 +0000"
      },
      "message": "Add smoothing to jerk calculations and updated jerk thresholds.\n\nTest: atest libinput_tests\nTest: atest CtsInputTestCases\nTest: atest MotionPredictorBenchmark MotionPredictorTest\nTest: Using stylus in a drawing app and seeing the jerk logs.\nBug: 266747654\nBug: 353161308\nFlag: com.android.input.flags.enable_prediction_pruning_via_jerk_thresholding\nChange-Id: I3d6c47d94d66e5ff2b33474acbca72daca051242\n"
    },
    {
      "commit": "aaa473120335717706b48434056fca25fa05f930",
      "tree": "771d6d40caa3d2e334317750aa334a0f1c50b595",
      "parents": [
        "a394761fa1511992deb2106aa6b7460b7b850174"
      ],
      "author": {
        "name": "Derek Wu",
        "email": "derekwu@google.com",
        "time": "Tue Mar 26 15:53:44 2024 -0700"
      },
      "committer": {
        "name": "Derek Wu",
        "email": "derekwu@google.com",
        "time": "Sat Mar 30 01:21:44 2024 +0000"
      },
      "message": "Add jerk thresholded pruning.\n\nThis will change MotionPredictor::predict() outputs once\nenable_prediction_pruning_via_jerk_thresholding is enabled.\n\nTest: atest libinput_tests --host with local flag override to enable\nenable_prediction_pruning_via_jerk_thresholding.\nTest: atest CtsInputTestCases\nTest: atest MotionPredictorBenchmark MotionPredictorTest\nBug: 266747654\n\nChange-Id: I11eb1972246468a1f3824656f5ac57e01e0359cd\n"
    },
    {
      "commit": "5a8af506b234685a0749b5753ba205c06688f870",
      "tree": "c7a07b2923c0fcb1d56541a85319ec97d6d0a2f9",
      "parents": [
        "385fe14c9bcda78677ca41cab8ea569cf5e3a4d2"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Aug 31 00:00:47 2023 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Sep 01 13:00:43 2023 -0700"
      },
      "message": "input: handle change in std::span::size type\n\nThe pre-standardized version of std::span in external/libcxx had a\nptrdiff_t size, but the finalized std::span has a size_t size instead.\nAlso, the std::span::index_type typedef is renamed to size_type. Use an\nold-style constructor call to implicitly coerce the size value to the\nproper type.\n\nInsert a cast to avoid a signedness comparison warning.\n\nBug: b/175635923\nTest: treehugger\nChange-Id: I96ccf6d5b54d4118b096f97c901073b4fc2f6f9f\n"
    },
    {
      "commit": "107ce707b5eaf8758806d456d07832c1db477555",
      "tree": "d8c98491a62ffbb262c8a84adf22340770af618f",
      "parents": [
        "1bbb0a93c8fda9f7fe0384b6138030cdebdb3324"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Fri Jul 14 13:07:13 2023 -0700"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Fri Jul 21 17:25:54 2023 -0700"
      },
      "message": "Update motion prediction model.\n\nInput events with no movement (r \u003d 0) are now included in the buffer\nso that the model can accurately determine when the input device has\nbecome stationary, and a noise floor is added to prevent spurious\npredictions when this happens.\n\nBenchmark results:\n  Old:\n    timeRecordAndPredict_mean (ns): 17990\n    timeRecordAndPredict_median (ns): 18024\n    timeRecordAndPredict_min (ns): 17606\n    timeRecordAndPredict_standardDeviation: 345\n  New:\n    timeRecordAndPredict_mean (ns): 38394\n    timeRecordAndPredict_median (ns): 38476\n    timeRecordAndPredict_min (ns): 38083\n    timeRecordAndPredict_standardDeviation: 187\n\nBug: 288354672\nPiperOrigin-RevId: 549064247\nTest: predictions are visible in the motionprediction test app\nTest: atest CtsInputTestCases\nTest: atest MotionPredictorBenchmark MotionPredictorTest\nTest: atest --host libinput_tests\nChange-Id: I6c3917591323d7117c4ee2e91abf6c6004178f19\n"
    },
    {
      "commit": "f84fa49e72f14b14669bf99bad92ed05169e5cf1",
      "tree": "43f9f4304c53b8f5818f152a60257cfc84f3d22e",
      "parents": [
        "5d8faa4526cfe2a1fed4647234fabf5e260120b3"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Mon Jun 26 14:15:15 2023 -0700"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Mon Jun 26 17:25:10 2023 -0700"
      },
      "message": "Move MotionPredictor config to an XML file alongside the model.\n\nTest: atest libinput_tests\nFixes: 266747937\nChange-Id: Ic5ec548d2edc8bad5e8b88aaf8511cd297a89275\n"
    },
    {
      "commit": "dbd14eb7bcfc3255455c343da1b52f99bbd864ff",
      "tree": "dcd7cdebf8a35e34f905ab111475e1f39f8cb68c",
      "parents": [
        "1f428c8affd9ca3951b01e88cb93545f109f78f3"
      ],
      "author": {
        "name": "Cody Heiner",
        "email": "codyheiner@google.com",
        "time": "Thu Mar 30 18:41:45 2023 -0700"
      },
      "committer": {
        "name": "Cody Heiner",
        "email": "codyheiner@google.com",
        "time": "Wed Apr 05 19:31:11 2023 -0700"
      },
      "message": "Add outputLength method\n\nTest: build succeeds, `atest libinput-tests` passes.\n\nBug: 268245099\n\nChange-Id: I030da703a907eef44e85d186144eddc53b5998cc\n"
    },
    {
      "commit": "c065d7b9bb22e918e4bab34b816c25984da8af7c",
      "tree": "0c1698bf233eb4303c54b85fac90806af9852925",
      "parents": [
        "8fc4d9c4b0720f4c6edb4c7295443970359705d0"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Mar 02 14:06:29 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Mar 13 17:42:28 2023 -0700"
      },
      "message": "Look for prediction model in vendor partition\n\nWhen loading the prediction model, we should first check the vendor\npartition, and then, if that doesn\u0027t work, use the system one. This will\nallow OEMs to customize this model.\n\nBug: 210158587\nTest: loaded model into /vendor and deleted from /system, checked that\nprediction works\n\nBug: 271455682\nTest: atest libinput_tests inputflinger_tests\nChange-Id: I0a369e5ec5cec8ac20b66fb4fcf265e7b1dde38a\n"
    },
    {
      "commit": "fd0a68e34b72b7a1daa07f0e5ed0a167d596a343",
      "tree": "96160d4a5d04fc1ca850f0244cec681e3defdd8f",
      "parents": [
        "d3fbc898a508441a7fe2796a260ada810da5d415"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Feb 28 13:25:36 2023 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Sat Mar 04 21:51:07 2023 +0000"
      },
      "message": "Use current directory to load prediction model\n\nBefore this CL, the testing binary could not execute properly when\ninvoked directly. This is because the current working directory does not\nget set.\n\nTo fix this, use the model file from /system/etc when __ANDROID__ is\ndefined, and refer to the current directory for all other cases.\n\nTest: m libinput_tests \u0026\u0026 $ANDROID_HOST_OUT/nativetest64/libinput_tests/libinput_tests\nTest: atest libinput_tests\nTest: atest --host libinput_tests\nBug: 271134652\nChange-Id: I0547ca9666eab153208a581fb60f6bef656b946a\n"
    },
    {
      "commit": "cb3229aaf2233ebb917d967a6e73d48cce1a1480",
      "tree": "ff19ed484f5f0e967f8182d972b8bdea6a4f3802",
      "parents": [
        "da6a448e2dfbfa7f13ce243e9273ceb9bcda4388"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Wed Feb 08 22:50:59 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Feb 09 22:33:05 2023 -0800"
      },
      "message": "Use mmap to read TFLite model.\n\nThe buffers in the model file are used directly by TFLite, and so a\nsmall memory saving can be achieved by backing those memory pages with\nthe file itself.\n\nBug: 267050081\nTest: atest libinput_tests\nChange-Id: I743a3c94477d4bb778b6e0c4b4890a44f4e19aa4\n"
    },
    {
      "commit": "da6a448e2dfbfa7f13ce243e9273ceb9bcda4388",
      "tree": "f7ca67497673677a37a8d7b7d944c4c730084842",
      "parents": [
        "b7f27919553dc4e8f47d5d3c79a5871df3824460"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Feb 07 10:09:57 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Feb 09 22:32:58 2023 -0800"
      },
      "message": "Replace shared libtflite dependency with static library.\n\nThis allows us to only include the ops required to run the model and\nhave the linker strip the rest out, reducing memory overhead.\n\nBug: 267050081\nTest: atest libinput_tests\nChange-Id: I4055a0c8971ed4308ccfa425ab5e5ba560deb58c\n"
    },
    {
      "commit": "9b8926eda5f03ab378fffb49d3c757ecd882c613",
      "tree": "fe59ee99fbe594e1298c62c6d8207ace80b53a7e",
      "parents": [
        "ba75fbf758e90610799975c7c11e15a85c8e614e"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Jan 31 14:50:02 2023 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Mon Feb 06 12:16:34 2023 -0800"
      },
      "message": "Add a simple ring buffer and use it for holding TFLite model inputs.\n\nBug: 167946763\nTest: atest libinput_tests\nChange-Id: I7e50d38ed0c593aebc5fdc6af4b25868505d48bc\n"
    },
    {
      "commit": "8f953ab5a1deea03a6abb4019008bac8c3ea2561",
      "tree": "734c9d8623546798ea2aabf4c81438079ce43abc",
      "parents": [
        "492cf57ab68bdcedb6f3985433183cb5ed15e697"
      ],
      "author": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Tue Dec 06 15:37:07 2022 -0800"
      },
      "committer": {
        "name": "Philip Quinn",
        "email": "pquinn@google.com",
        "time": "Thu Jan 26 15:30:38 2023 -0800"
      },
      "message": "Add TFLite model for motion prediction.\n\nThis model generates probabilistic motion predictions based on a\nsequence of relative input movements. The input movements are converted\ninto polar coordinates (distance and angle) based on an axis that\nfollows the current path. This ensures that the orientation of the\ndevice and of the inputs do not affect the predictions. The orientation\nof the input device is also transformed to be relative to the path axis.\n\nThe test cases verifying model efficacy are consolidated into CTS.\n\nBug: 167946763\nTest: atest libinput_tests\nPiperOrigin-RevId: 492068340\nChange-Id: Icd8d90bd5a7ce79c699bfdb6367a4cbd8130441a\n"
    }
  ]
}
