)]}'
{
  "commit": "e27f1de1a6c224607f5ff3cd925194a116ae872e",
  "tree": "b366841cf47463a2ac253cd5de39d18022a59f80",
  "parents": [
    "8f67a098b387ad8e1a1b76576fd13f3eba6751cb"
  ],
  "author": {
    "name": "Per K",
    "email": "perkj@webrtc.org",
    "time": "Thu May 28 12:53:24 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu May 28 20:31:59 2026"
  },
  "message": "SCReAMv2: Replace EWMA loss rate filter with asymmetric step filter\n\nReplaces the complex EWMA loss rate filter in SCReAMv2 with an intuitive\nand highly robust Asymmetric Step Filter (leaky bucket counter) to estimate\nthe short-term congestion level of the connection.\n\nThe new filter tracks short-term congestion on RTT boundaries and is normalized\nbetween 0.0 (loss-free) and 1.0 (congested):\n- Increment step (loss RTT): 1.0 / rtts_with_loss_before_backoff (default 3).\n  This ensures exactly 3 consecutive loss RTTs are required to trigger backoff from a clean state.\n- Decrement step (lossless RTT): 1.0 / lossless_rtts_before_clear (default 2).\n  This ensures the filter is fully cleared back to 0.0 after exactly 2 consecutive lossless RTTs.\n\nThe expected drift under 1% uniform random loss is strongly negative (-0.5),\nguaranteeing spurious wireless link losses are filtered out, while a hardcoded\ncongested() helper check protects against floating-point rounding errors across\nvarious tuned parameter values.\n\nAdditional Cleanups:\n- Renamed LossRateEstimator class and files to LossEstimator.\n- Renamed loss_event_rate() getter and variables to congestion_level() and congestion_level_.\n- Simplified scream_v2.cc window growth by checking congestion_level() \u003d\u003d 0.0 directly,\n  removing the redundant loss_event_rate_threshold_increase and loss_event_rate_threshold_discard\n  parameters.\n- Updated all unittests and verified that all integration tests pass.\n\nBug: webrtc:447037083\nChange-Id: Iaf1ac08a5230f6e72af3cb0ed84423dfb6997e39\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/475580\nCommit-Queue: Per Kjellander \u003cperkj@webrtc.org\u003e\nReviewed-by: Björn Terelius \u003cterelius@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#47839}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0f3863f2f2242fd0b0260bdd60f583c6529f3b26",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/BUILD.gn",
      "new_id": "bc4e3e53b6de2a30d0fa3e0e62876e475b353f31",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "52622b57c59a0cfc3bda3f36a8a1aec07ca626be",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/loss_estimator.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6101af7c377062880fd35e94cb6b0a2b542d46c6",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/loss_estimator.h"
    },
    {
      "type": "rename",
      "old_id": "298c147d1664fa0edc13a99e1b9778e716065830",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/loss_rate_estimator_unittest.cc",
      "new_id": "17cb2f43b06e805e40d102b625d35ca713b77b32",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/loss_estimator_unittest.cc",
      "score": 65
    },
    {
      "type": "delete",
      "old_id": "27ead65a8a9a8741e7d76d1b0b7dc89fbb2371af",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/loss_rate_estimator.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "514f643f53eba6dbc5fbae43307e57f7d62fcd96",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/loss_rate_estimator.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "40262cd9c50d81d7c837168060394e54ec395cf8",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/scream_v2.cc",
      "new_id": "a3dc05f905471be9734b9b91b892439eace5a926",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/scream_v2.cc"
    },
    {
      "type": "modify",
      "old_id": "7c13e5aad7a4f2452dff6999b58e2b83d87e8ca8",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/scream_v2.h",
      "new_id": "0d5fd250aea8c83fc8c8bdca103e6f4a0ddc7501",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/scream_v2.h"
    },
    {
      "type": "modify",
      "old_id": "33b2165fc2ee8071c2d1aadd961cda781887e4ec",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/scream_v2_parameters.cc",
      "new_id": "e293905c3b1855b1f19ab7eaecb91f33c96761b4",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/scream_v2_parameters.cc"
    },
    {
      "type": "modify",
      "old_id": "88e12b4e4e7ee6f5d2c88cb750359f2e8dc1e2a4",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/scream_v2_parameters.h",
      "new_id": "a145af29b6ad9fb7f8cfd6b7f57b2fd67547d9bf",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/scream_v2_parameters.h"
    },
    {
      "type": "modify",
      "old_id": "c0a9d0c029c79a64be2ec1b6117cd700c413916c",
      "old_mode": 33188,
      "old_path": "modules/congestion_controller/scream/scream_v2_unittest.cc",
      "new_id": "8a463047d6f64210304dad70e5c696c2510565af",
      "new_mode": 33188,
      "new_path": "modules/congestion_controller/scream/scream_v2_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "087f5d7a8f9dda22c44db7e3435f48589c27def9",
      "old_mode": 33188,
      "old_path": "rtc_tools/rtc_event_log_visualizer/analyze_bwe.cc",
      "new_id": "53b73aa985b8afcc634cbfdb8f160450ea50c660",
      "new_mode": 33188,
      "new_path": "rtc_tools/rtc_event_log_visualizer/analyze_bwe.cc"
    },
    {
      "type": "modify",
      "old_id": "3aa26b4560e567756f87030d265235d274c24a50",
      "old_mode": 33188,
      "old_path": "rtc_tools/rtc_event_log_visualizer/log_scream_simulation.cc",
      "new_id": "d04c1da0514906334fa4459ce8b36641fc5effe2",
      "new_mode": 33188,
      "new_path": "rtc_tools/rtc_event_log_visualizer/log_scream_simulation.cc"
    },
    {
      "type": "modify",
      "old_id": "a9458f69da06c494ceb669b1ad806487586b8711",
      "old_mode": 33188,
      "old_path": "rtc_tools/rtc_event_log_visualizer/log_scream_simulation.h",
      "new_id": "20cc8443efb4460c1dc4a46e7d01208edb1e3f00",
      "new_mode": 33188,
      "new_path": "rtc_tools/rtc_event_log_visualizer/log_scream_simulation.h"
    },
    {
      "type": "modify",
      "old_id": "2300795712befdd0140c9494e49572d1253373d3",
      "old_mode": 33188,
      "old_path": "test/peer_scenario/bwe_integration_tests/scream_test.cc",
      "new_id": "a59edbbbde92809d66b4954d8ca23b804dbfebed",
      "new_mode": 33188,
      "new_path": "test/peer_scenario/bwe_integration_tests/scream_test.cc"
    }
  ]
}
