)]}'
{
  "commit": "aa0877a5b5bbf9db42892ab22c1df0fdf6a540ed",
  "tree": "a1bce866889a7179b62a8d72326d1822f14b8cf8",
  "parents": [
    "f24ae71bc72894d16ef4b85900f872240c76aa0d"
  ],
  "author": {
    "name": "Erik Språng",
    "email": "sprang@webrtc.org",
    "time": "Mon Sep 21 13:23:19 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Sep 22 10:24:03 2026"
  },
  "message": "Per temporal layer rate control in the V2 libaom AV1 encoder.\n\nThe encoder reported every frame as belonging to temporal layer 0, so\nlibaom ran a single rate control context for the whole stream and sized\nevery frame against the same budget regardless of how the bitrate was\ndistributed across the layers. The per frame budget was communicated by\nscaling the frame duration, which left the duration meaning something\nother than the interval between frames.\n\nSignal the real temporal id instead, declare the layer configuration to\nlibaom, and derive the cumulative layer bitrates and frame rate factors\nit expects via the new TemporalLayerRateTracker. Cbr::duration is now\npassed through verbatim, and the meaning of both Cbr fields is spelled\nout in video_encoder_interface.h.\n\nThe existing rate control tests are adjusted to allow the total to\novershoot by what the keyframes were actually allowed, which the\nmicrosecond precision duration no longer leaves room for.\n\nThis is a precursor to\nhttps://webrtc-review.git.corp.google.com/c/src/+/503780\n\nBug: webrtc:496266459\nChange-Id: Ic9183a9757d624293148ec28af0b6adfcd0f2e1c\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/504280\nCommit-Queue: Erik Språng \u003csprang@webrtc.org\u003e\nReviewed-by: Sergey Silkin \u003cssilkin@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48659}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a4f67c8f41aa6083e8833c03d3febec4912b453e",
      "old_mode": 33188,
      "old_path": "api/video_codecs/test/video_encoder_rate_control_unittest.cc",
      "new_id": "abc4ca002f753c2c5f6e3774f44f66abf1351c0b",
      "new_mode": 33188,
      "new_path": "api/video_codecs/test/video_encoder_rate_control_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "a851ec8636c5d3fbad715014d0f0563399c5fea8",
      "old_mode": 33188,
      "old_path": "api/video_codecs/video_encoder_interface.h",
      "new_id": "20c5fce553e61e69bcece1e63a5db900ef843e31",
      "new_mode": 33188,
      "new_path": "api/video_codecs/video_encoder_interface.h"
    },
    {
      "type": "modify",
      "old_id": "d2737270063130e27a6782a69cd7ceced8296a57",
      "old_mode": 33188,
      "old_path": "modules/video_coding/BUILD.gn",
      "new_id": "cde90cbde12f7e24ee725167d4d72d3fd36c9f3e",
      "new_mode": 33188,
      "new_path": "modules/video_coding/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "3364d51bd262b2d40a007c28c447d22dfa72a573",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/av1/libaom_av1_encoder_v2.cc",
      "new_id": "028449e809be56a55551bf46ef92ebfae20d27da",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/av1/libaom_av1_encoder_v2.cc"
    },
    {
      "type": "modify",
      "old_id": "b1756af4b42bd87a051066ad7557730dfd71eb52",
      "old_mode": 33188,
      "old_path": "modules/video_coding/codecs/av1/libaom_av1_encoder_v2.h",
      "new_id": "b94f08a75c3e1330c74c8932443ce6cea9359d66",
      "new_mode": 33188,
      "new_path": "modules/video_coding/codecs/av1/libaom_av1_encoder_v2.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4316f1131bddd87d5738038269f75411be42c842",
      "new_mode": 33188,
      "new_path": "modules/video_coding/utility/temporal_layer_rate_tracker.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d029a3c105e55e8c3fca899bf359d671266bb01",
      "new_mode": 33188,
      "new_path": "modules/video_coding/utility/temporal_layer_rate_tracker.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f97d597c199ec1c0072f751a9840777e520793c4",
      "new_mode": 33188,
      "new_path": "modules/video_coding/utility/temporal_layer_rate_tracker_unittest.cc"
    }
  ]
}
