)]}'
{
  "commit": "ed4ef92cbfa88f7cd356906e926141bdbefc3aad",
  "tree": "15e5ff555991ff098eee9c41cb6883c6994ff1df",
  "parents": [
    "efc3a38d81db2ec422035b221c0e90ec376ac8df"
  ],
  "author": {
    "name": "Jordan Bayles",
    "email": "jophba@chromium.org",
    "time": "Fri Oct 10 18:40:05 2025"
  },
  "committer": {
    "name": "Openscreen LUCI CQ",
    "email": "openscreen-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Oct 14 18:24:19 2025"
  },
  "message": "Refactor: Improve ClockDriftSmoother with EMA filter\n\nReplaces the ClockDriftSmoother\u0027s weighted-average logic with a more\nrobust exponential moving average (EMA) filter. This provides more\nstable and predictable smoothing of the clock offset.\n\nThis change also includes:\n- A new, comprehensive unit test suite for the ClockDriftSmoother.\n- A change to `ClockDriftSmoother::Current()` to return `std::optional`\n  to make the uninitialized state explicit and improve call-site safety.\n- A new `ExpectDurationNear` test helper to simplify duration\n  comparisons in tests, replacing the more verbose `EXPECT_THAT` with\n  `EqualsDuration`.\n\nThe `receiver.cc` implementation is updated to safely handle the\noptional return value from the smoother.\n\nBug: 298085631\nChange-Id: I9ae5816c6a6586bed99774a5b3ce21bd01f888be\nReviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/7032428\nReviewed-by: Muyao Xu \u003cmuyaoxu@google.com\u003e\nCommit-Queue: Jordan Bayles \u003cjophba@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70c500dad0907345b6ab540e3138a902f1e0e916",
      "old_mode": 33188,
      "old_path": "cast/streaming/BUILD.gn",
      "new_id": "9d161a5ffa3c91b60d29cc0f2f975b420d52dd42",
      "new_mode": 33188,
      "new_path": "cast/streaming/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "55eba4114fc1de948745e90fa2bdf152893a4b56",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_drift_smoother.cc",
      "new_id": "90cd10cd9011969ef10268604f18d1fdb7e1c015",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_drift_smoother.cc"
    },
    {
      "type": "modify",
      "old_id": "31339cf62f16a731d8eeccbf4f10d7637a0d74d8",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_drift_smoother.h",
      "new_id": "4ea8bd3e128266d483d39c5d7bf85afe8c9057d9",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_drift_smoother.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "934f6a55261dcf49ec4edf210bbf5e4b6580ffa0",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_drift_smoother_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "57660a7e2f17779282200c05f3415d5dec32040b",
      "old_mode": 33188,
      "old_path": "cast/streaming/impl/clock_offset_estimator_impl_unittest.cc",
      "new_id": "a826bf36eaa422aafc99c49d43e7dd54fd5db0ab",
      "new_mode": 33188,
      "new_path": "cast/streaming/impl/clock_offset_estimator_impl_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "a164d0bd205e404f9783b82ae6b29d8ab223f972",
      "old_mode": 33188,
      "old_path": "cast/streaming/public/receiver.cc",
      "new_id": "95a1c4ffee36282d002d21c6cab1ea834949a1a7",
      "new_mode": 33188,
      "new_path": "cast/streaming/public/receiver.cc"
    },
    {
      "type": "modify",
      "old_id": "58e70cea4af4167d2d3bcab0b28adfc13403b819",
      "old_mode": 33188,
      "old_path": "testing/util/BUILD.gn",
      "new_id": "7457de4dd9f368eb105c70ed46a6bd48b6cb30f9",
      "new_mode": 33188,
      "new_path": "testing/util/BUILD.gn"
    },
    {
      "type": "rename",
      "old_id": "bc08442ee17bfcfbaa8d58b5463955ee38e2d0fc",
      "old_mode": 33188,
      "old_path": "testing/util/gmock_matchers.h",
      "new_id": "0909c92eac43f92f229d0f07873a2fe8b0292688",
      "new_mode": 33188,
      "new_path": "testing/util/chrono_test_helpers.h",
      "score": 66
    }
  ]
}
