)]}'
{
  "commit": "efc3a38d81db2ec422035b221c0e90ec376ac8df",
  "tree": "5a3549d5b315a20da1a262d10337b4d1e182cc00",
  "parents": [
    "ed7618d369e9f5ba4b75da6a79a4284b884b3efd"
  ],
  "author": {
    "name": "Jordan Bayles",
    "email": "jophba@chromium.org",
    "time": "Fri Oct 03 23:59:17 2025"
  },
  "committer": {
    "name": "Jordan Bayles",
    "email": "jophba@chromium.org",
    "time": "Mon Oct 06 22:30:52 2025"
  },
  "message": "[Cast] Refactor ClockOffsetEstimator to use a Kalman filter\n\nThis patch significantly refactors the ClockOffsetEstimator to improve\nthe accuracy and stability of its network latency and clock offset\nestimations. The previous implementation used a simple weighted moving\naverage, which was susceptible to jitter and slow to adapt to changing\nnetwork conditions.\n\nThe core of this change is the introduction of a 1D Kalman filter.\nThis allows the estimator to:\n- More effectively smooth out network jitter, providing a more stable\n  latency estimate.\n- Converge more quickly and accurately to the true latency and offset,\n  even in the presence of noise.\n- Better track clock drift over time.\n\nTo validate this new design, the unit test suite for the\nClockOffsetEstimator has been greatly expanded to cover a wide range\nof realistic and challenging network scenarios, including:\n- High network jitter\n- Continuous clock drift\n- Bursty packet loss\n- Sudden, large latency spikes\n- A mix of audio and video media streams\n\nAdditionally, a new general-purpose Gmock matcher, `EqualsDuration`,\nhas been added to `testing/util` to provide more readable error\nmessages for std::chrono::duration types in unit tests.\n\nBug: b:448199360\n\n\nMerge branch \u0027refactor-event\u0027 into clock_offset_estimator_refactor\n\n\nWIP refactor\n\nChange-Id: I7a3df074a7e421b051191dcbc9503a2b31dd6fea\nReviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/7007555\nReviewed-by: Muyao Xu \u003cmuyaoxu@google.com\u003e\nCommit-Queue: Jordan Bayles \u003cjophba@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "595fba9bb7ed26d9d2fb5fac5c380268f156134e",
      "old_mode": 33188,
      "old_path": "cast/streaming/BUILD.gn",
      "new_id": "70c500dad0907345b6ab540e3138a902f1e0e916",
      "new_mode": 33188,
      "new_path": "cast/streaming/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "e0d8a1ff44df371dddc102da6b332a9b40834bca",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_offset_estimator.h",
      "new_id": "be51abf3b8e3df4232dc024356c3ab744139fbbe",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_offset_estimator.h"
    },
    {
      "type": "modify",
      "old_id": "d7ffe78b6e320e12c84bada0ee088d7bd9cdeb1d",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_offset_estimator_impl.cc",
      "new_id": "49a7002bcb6386338e55218ceeaf4266a31039e4",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_offset_estimator_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "ed28291869d97cfc9355a818c04af111aea10537",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_offset_estimator_impl.h",
      "new_id": "5bf9422522e7998e415b132397e1e4fc3b1f7f57",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_offset_estimator_impl.h"
    },
    {
      "type": "modify",
      "old_id": "dda7f32a19876701fe461416cfdc66b268d66e8b",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_offset_estimator_impl_unittest.cc",
      "new_id": "57660a7e2f17779282200c05f3415d5dec32040b",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_offset_estimator_impl_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "01c77875eafeffaf2bd7b89424012bbfc3a472a7",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/statistics_analyzer_unittest.cc",
      "new_id": "db0e7f686738e1a6f1e3ff6ae8cb97cca0dcda8b",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/statistics_analyzer_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "2138914a80c11be5ecc0f58f39269b4ff58e1b11",
      "old_mode": 33188,
      "old_path": "testing/util/BUILD.gn",
      "new_id": "58e70cea4af4167d2d3bcab0b28adfc13403b819",
      "new_mode": 33188,
      "new_path": "testing/util/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc08442ee17bfcfbaa8d58b5463955ee38e2d0fc",
      "new_mode": 33188,
      "new_path": "testing/util/gmock_matchers.h"
    }
  ]
}
