)]}'
{
  "commit": "2fec64484f0c1355db1dde236c3c205985a30a30",
  "tree": "963a257fc979d222e2cba56015dddbb23895bc43",
  "parents": [
    "bd14a73f81cdb92f7b8098ed026b1c687ee78613"
  ],
  "author": {
    "name": "Henrik Boström",
    "email": "hbos@webrtc.org",
    "time": "Thu Jun 15 10:49:26 2023"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jun 15 12:48:48 2023"
  },
  "message": "Fix L1Tx target bitrate bug when the standard API is used.\n\nThere are now multiple ways to configure VP9 L1Tx:\n- Legacy API: configure legacy SVC and disable encodings, this gets\n  interpreted as disabling spatial layers (non-standard API hack).\n- Standard API: configure scalability_mode. This can be done either\n  with a single encoding or multiple encodings. As long as only one\n  encoding is active we get a single L1Tx ssrc, same as legacy API.\n\nDue to a bug, the ApplySpatialLayerBitrateLimits() logic which tweaks\nbitrates was only applied in the legacy API code path, not the standard\nAPI code path, despite both code paths configuring L1Tx.\n\nThe issue is that IsSimulcastOrMultipleSpatialLayers() was checking if\n`number_of_streams \u003d\u003d 1`. This is true in legacy code path but not\nstandard code path. The fix is to look at\n`numberOfSimulcastStreams \u003d\u003d 1` instead, which is set to the correct\nvalue regardless of code path used.\n\nThis CL adds comments documenting the difference between\n`number_of_streams` and `numberOfSimulcastStreams` to reduce the risk\nof more mistakes like this in the future.\n\nBug: chromium:1455039, b:279161263\nChange-Id: I69789b68cc5d45ef1b3becd310687c8dec8e7c87\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/308722\nReviewed-by: Ilya Nikolaevskiy \u003cilnik@webrtc.org\u003e\nCommit-Queue: Henrik Boström \u003chbos@webrtc.org\u003e\nReviewed-by: Erik Språng \u003csprang@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#40287}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "10bceda0d23b0114493432413b5d1f2744c3175e",
      "old_mode": 33188,
      "old_path": "api/video_codecs/video_codec.h",
      "new_id": "496cfb5e22a0c3a1da9e86fd1ccb95cac3bf1de8",
      "new_mode": 33188,
      "new_path": "api/video_codecs/video_codec.h"
    },
    {
      "type": "modify",
      "old_id": "a89e8a6908fee10eb27e98535ed9ba0c9b070c31",
      "old_mode": 33188,
      "old_path": "pc/BUILD.gn",
      "new_id": "2f671d26943891fdbba24ce313e6057a6ab141c6",
      "new_mode": 33188,
      "new_path": "pc/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "8e86724179d40383078c23dbb2c9363ecd6da15f",
      "old_mode": 33188,
      "old_path": "pc/peer_connection_encodings_integrationtest.cc",
      "new_id": "4ebcc0a17e8b3e5aacb23771f3cfd7ef312bd9f1",
      "new_mode": 33188,
      "new_path": "pc/peer_connection_encodings_integrationtest.cc"
    },
    {
      "type": "modify",
      "old_id": "bc36723d48826cd7bbea6c61c882ecef9a093983",
      "old_mode": 33188,
      "old_path": "video/adaptation/bitrate_constraint.cc",
      "new_id": "2f92095b2b3daa554fbd99772f1314479f60beac",
      "new_mode": 33188,
      "new_path": "video/adaptation/bitrate_constraint.cc"
    },
    {
      "type": "modify",
      "old_id": "f9cb87e3c1b892b7fb517a838763ae6e62361403",
      "old_mode": 33188,
      "old_path": "video/adaptation/bitrate_constraint_unittest.cc",
      "new_id": "8a416db1fa49e6478eb2c1b06c6dbae413028c94",
      "new_mode": 33188,
      "new_path": "video/adaptation/bitrate_constraint_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "0dcbc01ab67e432a09483f505c3fbe44fab399b5",
      "old_mode": 33188,
      "old_path": "video/adaptation/video_stream_encoder_resource_manager.cc",
      "new_id": "46db6867033faaa9be96738d2999a7010af75da7",
      "new_mode": 33188,
      "new_path": "video/adaptation/video_stream_encoder_resource_manager.cc"
    },
    {
      "type": "modify",
      "old_id": "e0de3f7d190010ba6a26809a1fa6eecc81153bdf",
      "old_mode": 33188,
      "old_path": "video/adaptation/video_stream_encoder_resource_manager.h",
      "new_id": "8925157bcfd8600279403ce566b2d7d6e0150bfd",
      "new_mode": 33188,
      "new_path": "video/adaptation/video_stream_encoder_resource_manager.h"
    },
    {
      "type": "modify",
      "old_id": "5a79d58cbfe60046c977b58f6add78a212323685",
      "old_mode": 33188,
      "old_path": "video/config/video_encoder_config.h",
      "new_id": "59c9a39f827f6923f4857a7fe3c26a4ce4553519",
      "new_mode": 33188,
      "new_path": "video/config/video_encoder_config.h"
    },
    {
      "type": "modify",
      "old_id": "44fdbaa86bbbf0acf81451ef1e61060d97b1dfb2",
      "old_mode": 33188,
      "old_path": "video/video_stream_encoder.cc",
      "new_id": "c3d855c1c6c43d91c1a2f79e6edc66ac0f8d807f",
      "new_mode": 33188,
      "new_path": "video/video_stream_encoder.cc"
    }
  ]
}
