)]}'
{
  "commit": "b7cd5ffb57a80883551a69be9fec05e5f4520eb0",
  "tree": "2bd2d765e1aad5ee4d7bbbb1b1b797168d5984c7",
  "parents": [
    "d6e868f44e202eb917503e2e850d7219575878f6"
  ],
  "author": {
    "name": "Erik Språng",
    "email": "sprang@google.com",
    "time": "Thu Oct 08 09:39:43 2026 +0200"
  },
  "committer": {
    "name": "Erik Språng",
    "email": "sprang@google.com",
    "time": "Wed Oct 14 00:03:26 2026 -0700"
  },
  "message": "rtc-svc: Fix refresh and unused ref_idx in set_ref_frame_config\n\nWith AV1E_SET_SVC_REF_FRAME_CONFIG, refresh[] is indexed by buffer slot\nand the ref_idx[] entries of unused references are don\u0027t-cares, but:\n\n- A slot was only refreshed, and its refresh tracked, if a ref_idx[]\n  entry pointed to it.\n- Refreshing a slot that an unused reference pointed to (e.g. slot 0\n  in a zero-initialized config) could make the frame a golden/altref\n  update, which affects rate control and RD decisions.\n- All seven references are signaled, and decoders reject frames with\n  a reference of invalid size, e.g. from another spatial layer. With\n  one spatial layer and no order hints, the bitstream writer replaced\n  unused references, but the encoder did not, which could break frame\n  size signaling.\n\nBuild the refresh mask from refresh[], only classify refreshes of used\nreferences, and without order hints, remap unused references to the\nfirst used one in the encoder instead of the bitstream writer. With\norder hints, unused references also affect decoding (e.g. temporal MV\nprojection), so they are left as configured.\n\nOnly encoders using set_ref_frame_config, directly or via fixed SVC\nmode, are affected. For the affected svc_encoder_rtc layering modes,\nBD-rate changes have no consistent direction (mean -0.02%).\n\nAlso update the aom_svc_ref_frame_config_t comments in aomcx.h to\ndescribe the new behavior.\n\nBug: webrtc:496266459\nChange-Id: I2bb6a2274c0a441af54709928edec6a4f8661be0\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "23d10a26f5e567b98f6695eca18803865c3105ad",
      "old_mode": 33188,
      "old_path": "aom/aomcx.h",
      "new_id": "b7e08869414fc0b8e740ee2b552d76186b2cf25b",
      "new_mode": 33188,
      "new_path": "aom/aomcx.h"
    },
    {
      "type": "modify",
      "old_id": "69751959e9d39617a7abd735251bad41904dfd83",
      "old_mode": 33188,
      "old_path": "av1/encoder/bitstream.c",
      "new_id": "efac97a0367068d433b7dc971564a5ba007d673d",
      "new_mode": 33188,
      "new_path": "av1/encoder/bitstream.c"
    },
    {
      "type": "modify",
      "old_id": "d660b39dcee70f894149e1f8a0380a239003d9b4",
      "old_mode": 33188,
      "old_path": "av1/encoder/encode_strategy.c",
      "new_id": "02be53f2279c09e5eb3fefcbdfe1ffef8baa85c5",
      "new_mode": 33188,
      "new_path": "av1/encoder/encode_strategy.c"
    },
    {
      "type": "modify",
      "old_id": "0250f97d44dffeb0cd9301815071a1f4230f0c1f",
      "old_mode": 33188,
      "old_path": "av1/encoder/encoder.c",
      "new_id": "5a606d304aaa8ea22754b0cf80830b93bbd026d5",
      "new_mode": 33188,
      "new_path": "av1/encoder/encoder.c"
    },
    {
      "type": "modify",
      "old_id": "0f549a14fc42d1fbb3ae7724c8f2a1981106aa39",
      "old_mode": 33188,
      "old_path": "av1/encoder/svc_layercontext.c",
      "new_id": "732bc22bb9ea149816a43f666f45fab9fac8ed51",
      "new_mode": 33188,
      "new_path": "av1/encoder/svc_layercontext.c"
    },
    {
      "type": "modify",
      "old_id": "1b564e95c09dec7cbf89bb2c9b86279b6f3fbd79",
      "old_mode": 33188,
      "old_path": "test/encode_api_test.cc",
      "new_id": "352a51c633c9ada510be89541acaa33ed165bf3d",
      "new_mode": 33188,
      "new_path": "test/encode_api_test.cc"
    }
  ]
}
