)]}'
{
  "commit": "3ed2cbebb758ac7619cc94b33ffafcbcaefc6283",
  "tree": "15c0e12831a383868823d947e8971f6c1c3c62ca",
  "parents": [
    "f931b30a90071d03b710be9ed61d7413f8c369a4"
  ],
  "author": {
    "name": "Ihor Buhaiov",
    "email": "freedbrt@gmail.com",
    "time": "Fri Oct 09 18:25:28 2026 +0200"
  },
  "committer": {
    "name": "Marco Paniconi",
    "email": "marpan@google.com",
    "time": "Tue Oct 13 15:13:17 2026 -0700"
  },
  "message": "rtc: Copy inactive superblocks with whole rows\n\nIn the nonrd path a skip segment superblock is coded as one GLOBALMV\nblock with a zero motion vector, so its prediction is a plain copy of\nthe reference. encode_superblock() built it block by block and plane\nby plane through av1_enc_build_inter_predictor(). On screen\nrecordings with a mostly inactive map, that copy was the top encoder\nfunction in profiles and took 10 to 30 percent of the single thread\nencode time. Copying tall, narrow blocks is slow on memory: a 1440p\nI420 frame takes 0.62 ms in 64x64 blocks and 0.25 ms in whole rows.\n\nWhen a superblock row starts, copy each run of skip segment\nsuperblocks from its reference with whole rows. encode_superblock()\nthen skips the prediction build for these blocks. A block that is not\na zero motion vector copy of the same reference still builds its\nprediction over the copy. The copy is limited to 8 bit buffers and to\nunscaled references with identity global motion. Frames without a\nskip segment, like cyclic refresh frames, skip the row pass.\n\nThe output does not change. Two 2560x1440 screen recordings, speed\n11, screen content, an active map from frame differences, Apple M3\nPro: encoder cycles per frame drop by 6 to 18 percent with 1 thread\nand by 4 to 12 percent with 4 threads and row mt.\n\nChange-Id: I9f7070aed11927a0d9aae4ab851bafaaadcc3563\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bf706109ef5133774966245a573d74407cdb38ca",
      "old_mode": 33188,
      "old_path": "av1/encoder/block.h",
      "new_id": "a9327150ff00eb2ceace3be0cf8941b4134017ab",
      "new_mode": 33188,
      "new_path": "av1/encoder/block.h"
    },
    {
      "type": "modify",
      "old_id": "da817888b03ae6aaafef1dfa42e64d1af21fe738",
      "old_mode": 33188,
      "old_path": "av1/encoder/encodeframe.c",
      "new_id": "3a53e6830f8a8970dd34fde6630baab1faa07f98",
      "new_mode": 33188,
      "new_path": "av1/encoder/encodeframe.c"
    },
    {
      "type": "modify",
      "old_id": "373116c06be244727d9f3829d0ac797eefbacce0",
      "old_mode": 33188,
      "old_path": "av1/encoder/partition_search.c",
      "new_id": "132871c9c6b75726d807096315531cd7e20c8770",
      "new_mode": 33188,
      "new_path": "av1/encoder/partition_search.c"
    }
  ]
}
