)]}'
{
  "log": [
    {
      "commit": "5453e990e31cbb50eee06deb2da7876589d61c71",
      "tree": "e62ed24cf88efa728873b99f85f4de397512b83d",
      "parents": [
        "4da8bf24ae391640569e6fd2bc58432da884837d"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 23:23:45 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Wed Nov 11 00:33:21 2026"
      },
      "message": "recon: fix inter chroma prediction for 4:2:2 and 4:4:4\n\n- rmv_uvpred() passed a 1/16th chroma pel mv to mc() for single-reference TIP,\n  whereas it wants 1/8th luma pel.\n- The rmv_uvpred() reference window for non-TIP blocks used b-\u003emv, which is\n  1/8th luma pel, as 1/16th chroma pel.\n- For 8x8 opfl blocks, 4:2:2 chroma uses the refined mvs of the left 4x4\n  subblocks and 4:4:4 chroma uses all of them, each with its own window, so\n  store them rather than discarding all except the first.\n"
    },
    {
      "commit": "4da8bf24ae391640569e6fd2bc58432da884837d",
      "tree": "ec988f28daa81158fe19a64e6f7691eff8e6223d",
      "parents": [
        "a975af820178825ae66bc8510ad3cf8c4ce96a8c"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 23:22:34 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Wed Nov 11 00:19:20 2026"
      },
      "message": "recon: use single-ref chroma prediction for 4xN/Nx4 compound blocks\n\nIn 4:2:0, these are always handled through the sub8x8 coding path, but\nin 4:2:2/4:4:4, they can be fullly separate blocks.\n"
    },
    {
      "commit": "a975af820178825ae66bc8510ad3cf8c4ce96a8c",
      "tree": "77882f549b73c24def790d157b1eedf98dd49859",
      "parents": [
        "049f38f4c23e19b433ff8831edffd32ba25baf22"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 20:53:43 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 21:23:17 2026"
      },
      "message": "CI: add some extra threaded and negstride tests\n\n(Copied from dav1d\u0027s CI.)\n"
    },
    {
      "commit": "049f38f4c23e19b433ff8831edffd32ba25baf22",
      "tree": "ee427b8b2600ad19ea158fbfdd266fb3cd6e5c2b",
      "parents": [
        "ff93883ca86042d8dfa8bde068a4dab74bb8ab9c"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 01:10:04 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 21:23:17 2026"
      },
      "message": "Fix the prefilter data allocation for negative strides\n"
    },
    {
      "commit": "ff93883ca86042d8dfa8bde068a4dab74bb8ab9c",
      "tree": "058f3bdde5d589fd0071170bcd7590f8df1d5c6b",
      "parents": [
        "063d4c1fbdfcb92ac3ffdd60bda3bfee1bc82f2a"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 01:10:04 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 21:23:17 2026"
      },
      "message": "lr: fix the tile row line buffers for negative strides\n"
    },
    {
      "commit": "063d4c1fbdfcb92ac3ffdd60bda3bfee1bc82f2a",
      "tree": "ef11d555eab646bb3144f783452056717f03555b",
      "parents": [
        "2900ee605f95b8197a756f1f6450387d5e92c100"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 01:10:04 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 21:23:17 2026"
      },
      "message": "cdef: fix the line buffer allocation for negative strides\n"
    },
    {
      "commit": "2900ee605f95b8197a756f1f6450387d5e92c100",
      "tree": "249154bb4a5ecea1ec70bce9df967ddbce73a338",
      "parents": [
        "ce6aea4962efde06a1c9beca7b0546660c063eea"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 20:48:27 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 20:50:19 2026"
      },
      "message": "lr: fix chroma filtering for 4:2:2/4:4:4\n\n- Without vertical subsampling, the luma input for cross-component wiener used\n  already-filtered pixels left of the stripe instead of the left edge backup.\n- It also used the first stored row for both rows above the stripe, whereas\n  those are separate rows if luma isn\u0027t vertically subsampled.\n"
    },
    {
      "commit": "ce6aea4962efde06a1c9beca7b0546660c063eea",
      "tree": "1e99edf8f7c5bf2c9f83bc5a7f2fbd65cfea3e7a",
      "parents": [
        "d06c4762ed7b5639a349329b2017a9c516373ab6"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 22:34:08 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 18:54:58 2026"
      },
      "message": "recon: use at most 8 samples per side for chroma BAWP\n\n(This is independent of subsampling.)\n"
    },
    {
      "commit": "d06c4762ed7b5639a349329b2017a9c516373ab6",
      "tree": "ea2e5c5307dab8d161fc963b6bab4c6f873a45cf",
      "parents": [
        "3496f92e89c800be84fe307652924941f868a9a2"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:20:59 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:20:59 2026"
      },
      "message": "Rename sb128 to sbsz\n"
    },
    {
      "commit": "3496f92e89c800be84fe307652924941f868a9a2",
      "tree": "1970611f2c5c00368f520b8f7385efc7510027b5",
      "parents": [
        "b9be037088a2a1bb5e0927c01c6baf7ebb4c429b"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 08 20:22:24 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:09:25 2026"
      },
      "message": "headers: add an enum for the superblock size\n\nsb128 is the log2 of the superblock size in units of 64 pixels; name its\nvalues, which were only described in a comment.\n"
    },
    {
      "commit": "b9be037088a2a1bb5e0927c01c6baf7ebb4c429b",
      "tree": "f5438d8bf114da623ddc4bd846c90c6fd9e78ce1",
      "parents": [
        "50a174bc4cc430a2f4c4d9aa4c618e241d731ba6"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 08 20:22:05 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:09:25 2026"
      },
      "message": "headers: add an enum for the TIP frame mode\n\nThe names are based on TIP_FRAME_MODE in AVM.\n"
    },
    {
      "commit": "50a174bc4cc430a2f4c4d9aa4c618e241d731ba6",
      "tree": "e616f09219c7cb83047e222e7606c95706d35d2a",
      "parents": [
        "7b161ceed059bee98836e8b45990a452ef41b438"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 08 20:21:25 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:09:25 2026"
      },
      "message": "headers: add an enum for optical flow refinement\n\nThe sequence header\u0027s opfl_refine and the frame header\u0027s opfl_refine_type\nshare the same values (the former can additionally signal the type per\nframe). The names are based on OPTFLOW_REFINE_TYPE and\navm_opfl_refine_type in AVM.\n"
    },
    {
      "commit": "7b161ceed059bee98836e8b45990a452ef41b438",
      "tree": "5b595e8f90cb0680c49b347603cf39a7981aa4a6",
      "parents": [
        "80cf96ba35c454bb1f6c39d99df493b4c53ced1a"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 08 20:20:58 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:09:25 2026"
      },
      "message": "headers: add an enum for the sequence header level\n\nThe values and names are those of the SEQ_LEVEL_* enum in AVM.\n"
    },
    {
      "commit": "80cf96ba35c454bb1f6c39d99df493b4c53ced1a",
      "tree": "ded73ad0455a33ead983cab7a70f77b64b552c32",
      "parents": [
        "f9dafbc747e82a9c51ca648bf2108d9fa0f8de7d"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 08 20:20:39 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 10 17:09:18 2026"
      },
      "message": "headers: add an enum for the sequence header profile\n\nThe values and names are those of BITSTREAM_PROFILE in AVM. This also\nreplaces the outdated AV1 description of the profiles.\n"
    },
    {
      "commit": "f9dafbc747e82a9c51ca648bf2108d9fa0f8de7d",
      "tree": "b416e197f603f9b83ec0072607d91c9314e0378a",
      "parents": [
        "5b1a9ac8500655ddd3850bd3b9b208467e69430e"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 22:32:26 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 22:35:23 2026"
      },
      "message": "recon: use multiplication to scale mvs up (since these can be negative)\n"
    },
    {
      "commit": "5b1a9ac8500655ddd3850bd3b9b208467e69430e",
      "tree": "124b193b993d8c0e1e1d2d2328a7120324c30d0e",
      "parents": [
        "8ac305ecd16737fcc91aa6da9fa5fdb396998301"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 18:50:46 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 20:14:34 2026"
      },
      "message": "CI: reject commit messages that advertise LLMs\n\nThe VideoLAN AI policy does not allow commit messages to contain\nadvertising for specific LLM models, such as Co-Authored-By trailers for\nan LLM, so check for these in the style-check job.\n\nFixes #89.\n"
    },
    {
      "commit": "8ac305ecd16737fcc91aa6da9fa5fdb396998301",
      "tree": "46a546e1ecdf5997fe4d6dccc6e77510ac38d0bb",
      "parents": [
        "3f38b33325cf84a449e21498895623d3172b462f"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Nov 07 16:24:03 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 19:31:46 2026"
      },
      "message": "x86/mc: add hv 4x4 path to prep_6/8tap_16bpc\n\nHigh-bitdepth version of 0cd692d0. Benchmark changes runtime of\nregular/sharp from 14.6 or 17.0 cycles to 11.6, so 20-30% faster.\nOverall runtime on whole-sequence decodes is relatively minor\nbecause some postfilters are lacking high-bitdepth SIMD.\n"
    },
    {
      "commit": "3f38b33325cf84a449e21498895623d3172b462f",
      "tree": "0a6e7fbb268a279c8a68fa55eced4602ac5d003e",
      "parents": [
        "c4018d409db43c1f95d813b17cdc125aca498e5c"
      ],
      "author": {
        "name": "Vibhoothi",
        "email": "vibhoothi@tcd.ie",
        "time": "Mon Nov 09 00:41:57 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 18:04:50 2026"
      },
      "message": "obu: derive the GDF block size before parsing gdf_per_block\n\nThe frame header reads gdf_per_block (stored as gdf.enabled +\u003d bit) only\nwhen the frame is larger than the GDF block size, or when loop filters\nare disabled across tiles and there is more than one tile. Section\n5.18.7.9 (GDF params syntax, gdf_params).\n\ndav2d compared the frame size against a fixed 128 (256 for 256x256\nsuperblocks) and computed the real block size (gdf.b64size) only after\nthe bit had been parsed. So the bit was not read in these cases, and the\nrest of the frame header, and with it the tile size fields, were parsed\nat the wrong bit position:\n\n - 64x64 superblocks with gdf_unit_matches_sb_size set and a frame\n   dimension between 65 and 128 (block size is 64, not 128),\n - 64x64 superblocks with a tile boundary on an odd superblock, e.g. two\n   tile columns in a 128 pixel wide frame (block size is 64),\n - disable_loopfilters_across_tiles with more than one tile.\n\nThe result was a decode error (\"Error decoding frame\", or a failed tile\nsize check) for a conformant stream that AVM v1.0.0 decodes.\n"
    },
    {
      "commit": "c4018d409db43c1f95d813b17cdc125aca498e5c",
      "tree": "312d34834c2ac167d1baa23db17c5ad9191d2e90",
      "parents": [
        "ce65b281ed7fcceddb243568ce11f7205137276e"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 13:51:31 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 16:52:54 2026"
      },
      "message": "ipred/cfl_mh_gen_y_444: apply PXSTRIDE() when adjusting pointers\n"
    },
    {
      "commit": "ce65b281ed7fcceddb243568ce11f7205137276e",
      "tree": "ebd2211a2db8dd12da9a6899ea4322b43c43c66d",
      "parents": [
        "4eca4dfa503d3de4258774498a90882132b2675c"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Oct 26 15:02:28 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 16:39:46 2026"
      },
      "message": "x86/refmvs: add AVX2 implementation of fill_gap_traj()\n\nBenchmark results:\n  fill_gap_traj_c:                                    16082.9\n  fill_gap_traj_avx2:                                  3480.6 ( 4.62x)\n"
    },
    {
      "commit": "4eca4dfa503d3de4258774498a90882132b2675c",
      "tree": "c1650aa6b103c005fde30ffb70f5c11cf4221865",
      "parents": [
        "61b313204adcf2fbe9b7a9a3935b511b28d09d7a"
      ],
      "author": {
        "name": "Vibhoothi",
        "email": "vibhoothi@tcd.ie",
        "time": "Sun Nov 08 20:47:59 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 14:16:41 2026"
      },
      "message": "obu: don\u0027t apply tile size limits at seq_level_idx 31\n\nparse_tile_info() derives the minimum number of tile columns from\nmaxTileWidthSb and maxTileAreaSb. For levels 0..21 these come from the\nTile_Width_Scaling_Factor and Tile_Area_Scaling_Factor tables, which the\nlevel \u003e\u003d 14 / level \u003e\u003d 18 adjustments reproduce (checked for both tiers\nand all 22 levels).\n\nThe spec sets maxTileWidthSb \u003d sbCols and maxTileAreaSb \u003d sbCols * sbRows.\n\nFor frames wider than that limit this made min_log2_cols non-zero.\nFor eg, Frame Resolution 8320x64.\n"
    },
    {
      "commit": "61b313204adcf2fbe9b7a9a3935b511b28d09d7a",
      "tree": "e04af2db307f525e7ab5cbbce321fb4969bed9b0",
      "parents": [
        "1a17b2c2658ce9e1dfd84fc1a204fda65bea4029"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Thu Nov 05 04:39:54 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 13:54:11 2026"
      },
      "message": "refmvs: use block-relative positions for spatial candidates from TIP blocks\n\nIf a spatial mv candidate comes from a TIP block, its TIP mv is looked up in\nunits relative to the top/left of that block, whereas we used the absolute\n8x8 position of the candidate. These differ for TIP blocks that don\u0027t start\non an 8x8-aligned position, e.g. the 16x16 block at an odd 4x4 row of an\nuneven 4-way partition. A different mv candidate was then selected. Such blocks\ncan\u0027t be TIP blocks in 4:2:0, where the chroma block of these partitions is\nshared with the parent, so this only affects 4:2:2 and 4:4:4.\n"
    },
    {
      "commit": "1a17b2c2658ce9e1dfd84fc1a204fda65bea4029",
      "tree": "014316709a1c80ae4c4d0e396b0c7b8319a5fbaf",
      "parents": [
        "c16dc678832f1103971ecd049b8d2968cf361c7f"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 11:41:07 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 13:36:20 2026"
      },
      "message": "arm: Add debug printing of all element types from memory pointers\n\nThese are used very seldomly, but adding them doesn\u0027t cost more\nthan the definition of one macro each.\n"
    },
    {
      "commit": "c16dc678832f1103971ecd049b8d2968cf361c7f",
      "tree": "aa502f001933f30c19a0b8a2de454da884b10aad",
      "parents": [
        "89aa9e1416af950e2c1f586520e14c7833934cdf"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 11:40:31 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 13:36:20 2026"
      },
      "message": "arm: Add debug printing of remaining element types\n\nAdd printing of u32, s64, u64, f32 and f64. These might seldom\nbe needed in actual debugging, but include them for completeness\nanyway.\n"
    },
    {
      "commit": "89aa9e1416af950e2c1f586520e14c7833934cdf",
      "tree": "919a7aac258b284ca9bbb3fe511b7692c6d0d1ea",
      "parents": [
        "5ee50ca018114f2dbb3d5a947d6f5a2821e74779"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 11:36:41 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 13:36:20 2026"
      },
      "message": "arm: Store the original value of the stack pointer for debug printouts\n\nDumping the value of the stack pointer like this is probably\nseldom interesting in itself (it can be more interesting if\nrunning under an actual debugger), but as the stack pointer is one\nof the regular numbered GPRs on 32 bit ARM, we dump it for printing.\nIn this case, store the original stack pointer - at this point it\nhas been adjusted by the preceding push.\n"
    },
    {
      "commit": "5ee50ca018114f2dbb3d5a947d6f5a2821e74779",
      "tree": "70b3dea9851227b369961d0b7ebbcfbb10c78596",
      "parents": [
        "897b54521a686183d6278e9ec7a1b0358d1657bd"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 11:36:12 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 13:36:20 2026"
      },
      "message": "arm: Fix stack alignment in the 32 bit debug call_c macro\n"
    },
    {
      "commit": "897b54521a686183d6278e9ec7a1b0358d1657bd",
      "tree": "576dbbfc1e1bacb7410b0e5d9eaf0b549ed42219",
      "parents": [
        "1488ddeb5159044d64ea1db02a37605107e90366"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 11:32:19 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 13:36:20 2026"
      },
      "message": "arm: Fix the code style for the asm debug helpers\n\nPlace the opening brace on a separate line of its own, indent the\nassembly in the CALL_C macros.\n"
    },
    {
      "commit": "1488ddeb5159044d64ea1db02a37605107e90366",
      "tree": "d2794d32306d5210e8fb3e37978a191a96b13f4c",
      "parents": [
        "d795ca4f625f273b63a373daf86a49b81cd94452"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 11:27:11 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Mon Nov 09 13:36:20 2026"
      },
      "message": "arm: Split the C file for asm debug helpers into separate files per architecture\n\nThis was requested when upstreaming the same code to ffmpeg;\nthis allows keeping the amount of changes to this copy of the code\nin ffmpeg minimal.\n"
    },
    {
      "commit": "d795ca4f625f273b63a373daf86a49b81cd94452",
      "tree": "5026cdae809c808c1d510592bfb9e4980b0b4aa3",
      "parents": [
        "ad6cdb05d99fe945cb85d1e20946f9bb08119d9d"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:52:53 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 13:19:13 2026"
      },
      "message": "decode: only store multi-slot key/switch frames in their first slot\n\nLike AVM (av2_frame_clears_multiple_inserted_in_one() and\nav2_skip_reference_buffer_update()), a key or switch frame that refreshes\nmore than one reference slot is only stored in the first (lowest) of\nthem, and the other refreshed slots are emptied.\n\nFixes kf_refresh_all_then_slot0.obu.\n"
    },
    {
      "commit": "ad6cdb05d99fe945cb85d1e20946f9bb08119d9d",
      "tree": "69ae1a208b7b2f43ea8c0c79a679db0ebac17ace",
      "parents": [
        "237229ebfefd4eb8e0e25ad9636803bb93bae0c6"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Nov 06 15:51:09 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 09 13:12:07 2026"
      },
      "message": "db_apply: limit deblocking transform sizes at the right/bottom frame edge\n\nAVM limits the transform size used for deblocking an edge if the 8-aligned\nframe ends within 16 (luma) or 8 (chroma) pixels of it, to 16x16 (luma) or\n8x8 (chroma), so that the filter doesn\u0027t read beyond the frame. This only\napplies to the block right of/below the edge. For luma at the bottom of the\nframe, we already did this; also do it for luma at the right of the frame,\nand for chroma at the right and bottom of the frame, i.e. for 16 long chroma\ntransform edges that overhang by 12 pixels.\n\nFor chroma, this only matters for chroma blocks with a transform of 16 or\nmore which end 4 pixels inside the frame, which only happens for intra\nregions (extended SDP) crossing the frame edge. For luma, it happens e.g.\nfor a 64-wide block with 32-wide transforms which ends 40 pixels inside the\nframe. Reproduce with these samples, made with a locally patched avmenc:\n\n    db_uv_bottom.obu (2 frames, 64x72): chroma at the bottom\n    db_uv_right.obu  (2 frames, 72x64): chroma at the right\n    db_y_right.obu   (3 frames, 232x128): luma at the right\n\n    dav2d -i \u003csample\u003e -q -o - --muxer yuv --threads 1\n\nEach mismatched avmdec in all tested settings (--threads 1, --cpumask 0 and\n--threads 4 --framedelay 2) without, and matches avmdec with its part of\nthis change.\n\nFixes #78.\n"
    },
    {
      "commit": "237229ebfefd4eb8e0e25ad9636803bb93bae0c6",
      "tree": "012435bdf56719ccef7edcdaca32ecf2eafe75fe",
      "parents": [
        "1ff067977ae92b2440a602133ef26fdb66939b78"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 17:23:06 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 08 00:03:31 2026"
      },
      "message": "x86/mc: add a 4x4 hv path to prep_6/8tap\n\nFor 4x4 blocks, both filters have only 4 taps, so only 7 rows have to be\nfiltered horizontally, and only 2 instead of 3 vertical multiplications per\npair of output rows are needed. Chroma blocks of TIP and optical flow are\nusually 4x4, and these are the most common calls to the mct functions, e.g.\n35% of them on A34.\n\nOn the 720p 8bit T2RA streams, single-threaded (perf stat, static release\nbuild, 11 interleaved runs), instructions change by -0.09% on A31, -0.64%\non A33, -0.94% on A34 and -0.76% on A36, and cycles of the fastest run by\n-0.15%, -0.64%, -0.63% and -0.41%, respectively. Output is unchanged.\n"
    },
    {
      "commit": "1ff067977ae92b2440a602133ef26fdb66939b78",
      "tree": "ff1d7e3829d76549c05bb04ab33e842bfed13c61",
      "parents": [
        "2f7c315ced665cfb5d04941d0cbbe81801ec29bb"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Oct 26 15:01:38 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Nov 07 14:40:11 2026"
      },
      "message": "x86/refmvs: add AVX2 implementation of fill_gap_proj()\n\nBenchmark results:\n  fill_gap_proj_c:     26560.6\n  fill_gap_proj_avx2:   7682.5 ( 3.46x)\n"
    },
    {
      "commit": "2f7c315ced665cfb5d04941d0cbbe81801ec29bb",
      "tree": "2c78e631794206ef025e5e09675d53383d73c801",
      "parents": [
        "b379129cc898c0b46c9b71721dd56f8ccbb8d484"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 19:33:33 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Nov 07 02:18:16 2026"
      },
      "message": "Fix 4:2:2 and 4:4:4 block syntax parsing\n\n- CCTX is disabled in 4:2:2/4:4:4 if both chroma block dimensions are 32 or\n  more. The check compared t_dim-\u003emax (a log2 size) against 8, so it was always\n  true, and cctx was read for e.g. 64x64 chroma blocks.\n- The chroma tree partition limits don\u0027t depend on the actual subsampling, so\n  use the 4:2:0 limits for all layouts.\n- In 4:2:2, disallow partitions that lead to chroma block sizes that don\u0027t\n  exist (4x64, 32x128 and 64x256): v for 128x128 and 256x256 in all trees, v\n  for 16x64 and v3 for 32x64 in the chroma and shared trees, and v4a/b for\n  64x64. If that removes a forced split at the right frame edge, square split\n  is coded instead, so skip children outside the frame.\n- The TIP flag is only coded if both block dimensions are at least 8. In 4:2:0,\n  smaller blocks never got here, but 16x4 etc. do in 4:2:2/4:4:4.\n"
    },
    {
      "commit": "b379129cc898c0b46c9b71721dd56f8ccbb8d484",
      "tree": "63fd6c5ef17ce13e507c06c162060aa9bc0b7ee4",
      "parents": [
        "5e16ced1f7735672d75747a5deb952e35419e9e7"
      ],
      "author": {
        "name": "Athulya Raj Raji Mohini",
        "email": "athulyaraj.rajimohini@arm.com",
        "time": "Mon Sep 21 15:38:10 2026"
      },
      "committer": {
        "name": "Athulya Raj Raji Mohini",
        "email": "athulyaraj.rajimohini@arm.com",
        "time": "Fri Nov 06 14:37:28 2026"
      },
      "message": "AArch64: Add Neon ext_warp4x4_8bpc\n\nSpecialize copy, horizontal, vertical, and hv paths for this 4x4 warp\nfilter case.\n\nRelative performance uplifts using checkasm (compiled with Clang-23):\n\nCore           copy        h        v       hv\nCortex-X1:    7.09x    7.69x    9.60x    5.47x\nCortex-X3:    6.50x    8.66x   10.70x    5.19x\nCortex-X4:    7.07x    6.04x    7.90x    4.43x\n\nCortex-A78:  11.95x    8.47x   10.29x    5.53x\nCortex-A715: 14.33x    8.43x   11.42x    5.88x\nCortex-A720: 14.71x    8.30x   10.95x    5.64x\nCortex-A725: 15.29x    8.38x   11.14x    5.52x\n\nCortex-A55:  13.18x    7.82x    9.70x   11.46x\nCortex-A510: 19.85x    5.75x    7.35x   15.49x\nCortex-A520: 17.76x    6.48x    8.52x   14.53x\n"
    },
    {
      "commit": "5e16ced1f7735672d75747a5deb952e35419e9e7",
      "tree": "483f0c97e1ad25974d7f78f5edd0455a31ff7d73",
      "parents": [
        "2313a7579bd8d087ade5ef540e7617944483c0bd"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Fri Nov 06 12:43:42 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Fri Nov 06 12:55:38 2026"
      },
      "message": "aarch64: Fix building deblock.S with armasm64/gas-preprocessor\n\nIt seems like MS armasm64 (from MSVC) dislikes labels with a\nperiod as part of the label names. Rename them to use underscores\ninstad of periods as separator.\n\nThis fixes errors like these:\n\n    src\\libdav2d.a.p\\deblock.obj.asm(1803) : error A2034: unknown opcode: Ltranspose\n            Ltranspose.w8:\n"
    },
    {
      "commit": "2313a7579bd8d087ade5ef540e7617944483c0bd",
      "tree": "80931942219de86dd489bef153c855dae97c50d4",
      "parents": [
        "c8da122c1d09a242e74ff34b3c230e3f5eab501b"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Fri Nov 06 12:19:38 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Fri Nov 06 12:22:55 2026"
      },
      "message": "ipred: Fix compilation with MSVC\n\nc8da122c1d09a242e74ff34b3c230e3f5eab501b broke compilation with\nMSVC.\n\nMSVC has a nonstandard handling of __VA_ARGS__ with macros; when\none macro invokes another macro, __VA_ARGS__ gets treated as one\nsingle parameter and can\u0027t map to more than one parameter in the\ninvoked macro. (In other words, when calling another macro,\n__VA_ARGS__ must map in its entirety to a ... parameter of the\nother macro.)\n\nModern versions of MSVC do implement the correct mode as well,\nbut defaults to the old one for backwards compatibility. To\nchoose the new mode, we\u0027d have to build our code with\n-Zc:preprocessor.\n\nTo avoid the issue, define all the individual parameters to the\nFILTER() macros (so they don\u0027t need to be split up from __VA_ARGS__),\nand define all the fixed parameters to the FILTER_TYPES() macro.\n\nThis fixes errors like this:\n\n    ../src/ipred_tmpl.c(1149): warning C4003: not enough arguments for function-like macro invocation \u0027FILTER_TYPE\u0027\n    ../src/ipred_tmpl.c(1149): error C2059: syntax error: \u0027]\u0027\n\nSee [1], [2] and [3] for more discussion on the matter.\n\n[1] https://stackoverflow.com/a/5134656/3115956\n[2] https://stackoverflow.com/a/7459803/3115956\n[2] https://learn.microsoft.com/en-us/cpp/preprocessor/preprocessor-experimental-overview?view\u003dmsvc-160\n"
    },
    {
      "commit": "c8da122c1d09a242e74ff34b3c230e3f5eab501b",
      "tree": "ef6c3014373c4148d053817859ab70fe0737a20d",
      "parents": [
        "5555b3e7d55c019b91fdbb837a3dd84fb35d70a9"
      ],
      "author": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Thu Nov 05 00:03:09 2026"
      },
      "committer": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Thu Nov 05 20:18:20 2026"
      },
      "message": "cfl/mh: Add cfl_mh_gen_y_{422,444} C implementations\n"
    },
    {
      "commit": "5555b3e7d55c019b91fdbb837a3dd84fb35d70a9",
      "tree": "309cdd208093dca418733cb373dc9c11e8bee385",
      "parents": [
        "cc644c5ef6e3c040e49c718ec1647ecf36518460"
      ],
      "author": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Fri Oct 30 17:39:05 2026"
      },
      "committer": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Thu Nov 05 19:17:17 2026"
      },
      "message": "x86/cfl/mh: Add cfl_mh_gen_y_420_gauss_16bpc AVX2 asm\n\ncheckasm results on skylake:\n  cfl_mh_gen_y_420_gauss_w4_tse0_16bpc_avx2:      99.6 ( 3.68x)\n  cfl_mh_gen_y_420_gauss_w4_tse1_16bpc_avx2:      94.3 ( 3.91x)\n  cfl_mh_gen_y_420_gauss_w8_tse0_16bpc_avx2:     108.4 ( 4.93x)\n  cfl_mh_gen_y_420_gauss_w8_tse1_16bpc_avx2:     102.7 ( 5.23x)\n  cfl_mh_gen_y_420_gauss_w16_tse0_16bpc_avx2:    150.3 ( 5.83x)\n  cfl_mh_gen_y_420_gauss_w16_tse1_16bpc_avx2:    143.4 ( 6.14x)\n  cfl_mh_gen_y_420_gauss_w32_tse0_16bpc_avx2:    227.4 ( 6.90x)\n  cfl_mh_gen_y_420_gauss_w32_tse1_16bpc_avx2:    218.0 ( 7.21x)\n"
    },
    {
      "commit": "cc644c5ef6e3c040e49c718ec1647ecf36518460",
      "tree": "47fe4d41a23da866b038ebbe032d7fe4620fcdac",
      "parents": [
        "b2fd3fafa8a0c487b9d2a3a84a07571c6780124a"
      ],
      "author": {
        "name": "Max Heaton",
        "email": "Max.Heaton@arm.com",
        "time": "Tue Sep 29 10:04:03 2026"
      },
      "committer": {
        "name": "Max Heaton",
        "email": "Max.Heaton@arm.com",
        "time": "Thu Nov 05 13:15:00 2026"
      },
      "message": "AArch64: Add Neon implementation of 8bpc setup_thr_cols_sb64_seg\n\nTranspose the segmap and reuse the common function from\nsetup_thr_rows_sb64_seg.\n\nRelative performance uplifts using checkasm (Clang 22.1.8):\n         Cortex-A510     Cortex-A715     Cortex-X3\n420:           4.27x           4.72x         6.85x\n422:           7.02x           9.30x        12.66x\n444:           6.97x           9.01x        13.58x\n"
    },
    {
      "commit": "b2fd3fafa8a0c487b9d2a3a84a07571c6780124a",
      "tree": "c2625da4adfb975ec85af8a46c37b404cef609cd",
      "parents": [
        "326a357ee072d65ccfee4a48c01dc0f0556fd0ed"
      ],
      "author": {
        "name": "Max Heaton",
        "email": "Max.Heaton@arm.com",
        "time": "Mon Sep 28 09:26:48 2026"
      },
      "committer": {
        "name": "Max Heaton",
        "email": "Max.Heaton@arm.com",
        "time": "Thu Nov 05 13:14:57 2026"
      },
      "message": "AArch64: Add Neon implementation of 8bpc setup_thr_rows_sb64_seg\n\nImplement logic in a common function to be reused by setup_thr_cols.\n\nRelative performance uplifts using checkasm (Clang 22.1.8):\n           Cortex-A510     Cortex-A715     Cortex-X3\n420:             5.18x           5.75x         8.97x\n422:            10.17x          11.60x        17.91x\n444:             9.63x          10.86x        17.00x\n"
    },
    {
      "commit": "326a357ee072d65ccfee4a48c01dc0f0556fd0ed",
      "tree": "c263365ab6c739523bbcc016283b1f0ad13b356a",
      "parents": [
        "c0620ef5a8f3ede8a776cb3302e592b918dd8cbb"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:53:38 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Thu Nov 05 05:11:22 2026"
      },
      "message": "decode: update frame-threading MV dependency trackers for scalable refs\n"
    },
    {
      "commit": "c0620ef5a8f3ede8a776cb3302e592b918dd8cbb",
      "tree": "81fad3d3b04fdffe7850bbd16e617339037bfd0a",
      "parents": [
        "bce607d0171e2d5bb7bda370928b27c7a8d5eb71"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:55:20 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Thu Nov 05 05:11:22 2026"
      },
      "message": "mc: add ext_warp4x4_scaled for warp-MC from scalable references\n"
    },
    {
      "commit": "bce607d0171e2d5bb7bda370928b27c7a8d5eb71",
      "tree": "cc01e4a75bd504fe45a3d6ffaf98525380fb790c",
      "parents": [
        "baa988cb1c10397a2881cb1828a1015880f05ae5"
      ],
      "author": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Mon Nov 02 19:32:42 2026"
      },
      "committer": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Wed Nov 04 21:17:42 2026"
      },
      "message": "x86/cfl/mh_gen_y_420: [16bpc-AVX2] Optmize uniform / vstrip\n\nRight shift after packing, as it all fits in 15 bits.\n"
    },
    {
      "commit": "baa988cb1c10397a2881cb1828a1015880f05ae5",
      "tree": "bc185a0c5651fab3b77d4dd7d6b82a5e880b9d86",
      "parents": [
        "7d634d060b651519e909e3ad4a74ed6b14923707"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 13:46:08 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Wed Nov 04 14:17:49 2026"
      },
      "message": "obu: fix parsing of chroma NS-Wiener frame filters\n\nSee cov_max_pcon.obu which uses this feature.\n"
    },
    {
      "commit": "7d634d060b651519e909e3ad4a74ed6b14923707",
      "tree": "469a98b81a529bcc7af32d9b55c47f3908c419ff",
      "parents": [
        "8bf6ef5d5cfd5f83bd576853274debc85fb674ac"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Wed Nov 04 08:07:01 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Wed Nov 04 11:17:46 2026"
      },
      "message": "ci: Drop the separate aarch64 clang cross build job\n\nBuild build-debian-aarch64-testdata with clang instead, so the QEMU\nmatrix tests the clang build. gcc on aarch64 stays covered with\n--werror by the native build-debian-aarch64 job.\n"
    },
    {
      "commit": "8bf6ef5d5cfd5f83bd576853274debc85fb674ac",
      "tree": "4608240cc1ebd032c28bff48372a22a7610306e1",
      "parents": [
        "d7977301fabf6560828ddd1fd597a4dc0a697702"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 14:26:48 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Wed Nov 04 11:17:46 2026"
      },
      "message": "ci: Drop the duplicate riscv64 gcc build job\n\nbuild-debian-riscv64-testdata already builds the gcc configuration\nwith --werror, and test-debian-riscv64 runs the tests with vlen\u003d256,\nsame as this job did. Keep only the clang build.\n"
    },
    {
      "commit": "d7977301fabf6560828ddd1fd597a4dc0a697702",
      "tree": "af6fd1b9450edc7518a6e77e5b30461f089830ec",
      "parents": [
        "3215ee30a1af55993673cba2daec04c7eb4aa7e5"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 14:26:34 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Wed Nov 04 11:17:46 2026"
      },
      "message": "ci: Build once for the riscv64 and aarch64 QEMU test matrices\n\nEach QEMU matrix entry compiled the same binaries; only QEMU_CPU\ndiffers between them. Build them (including the checkasm binary) once\nper architecture and pass the build directory to the matrix jobs as an\nartifact, which then only run \"meson test --no-rebuild\".\n\nThis relies on the build directory being at the same absolute path in\nthe build and test jobs (/builds/videolan/dav2d on the Docker runners),\nsince Meson stores absolute paths.\n"
    },
    {
      "commit": "3215ee30a1af55993673cba2daec04c7eb4aa7e5",
      "tree": "d777658d80f1cf7dc860ebd0e3331f589aa4ab43",
      "parents": [
        "bc100a1d045f81be6144920ab5ca17c3edb8948d"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 14:25:40 2026"
      },
      "committer": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Wed Nov 04 11:17:46 2026"
      },
      "message": "ci: Merge the ppc64le and loongarch64 build and test jobs\n\nThe test jobs rebuild from scratch and don\u0027t use anything from the\nbuild jobs, so the build jobs only delayed them. The test data tests\ntake a few seconds, so the merged job adds --werror and runs the\nfull test suite in one go.\n"
    },
    {
      "commit": "bc100a1d045f81be6144920ab5ca17c3edb8948d",
      "tree": "459f89e0ef9a367794536591b4959f56d74aaf3d",
      "parents": [
        "73a4811208564c36ef46350cc08d29de1283ceec"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Oct 26 14:59:01 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 19:13:56 2026"
      },
      "message": "x86/refmvs: add AVX2 implementation of tip_smoothen()\n\nBenchmark results:\n  tip_smoothen_ss1_c:    106484.5 +/- 12015.4     35311.7 ns +/- 4727.1\n  tip_smoothen_ss1_avx2:  11521.9 +/- 62.2         3820.8 ns +/- 264.7  ( 9.24x)\n  tip_smoothen_ss2_c:     23897.5 +/- 1961.9       7924.7 ns +/- 858.4\n  tip_smoothen_ss2_avx2:   3981.4 +/- 24.3         1320.3 ns +/- 91.5   ( 6.00x)\n"
    },
    {
      "commit": "73a4811208564c36ef46350cc08d29de1283ceec",
      "tree": "7345c9d511da92cd153a600b31a65cd12f4ff767",
      "parents": [
        "5ea68a08612e1d4cd759324f9a449e8e17394010"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 16:49:14 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 19:00:10 2026"
      },
      "message": "lib: don\u0027t flush the output queue while there\u0027s input left\n\ngen_picture() returns as soon as a picture is ready, so input can still be\nleft when the caller starts draining; e.g. the CLI stops reading after an\nerror, while the last piece of input hasn\u0027t been parsed yet. queue_flush()\nwould then output implicit frames before frames that are still to be parsed,\nand these implicit frames would be output again after them.\n"
    },
    {
      "commit": "5ea68a08612e1d4cd759324f9a449e8e17394010",
      "tree": "3e4d29ee3e21c9ad1624b968a81a61d3de2bfdf1",
      "parents": [
        "1130f69bc77e0a66a3250612865414c0c0824f11"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:43:53 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 18:44:52 2026"
      },
      "message": "decode: keep frame thread slot order in sync on frame submission errors\n\nframe_thread.next advances for every submitted frame, but\ntask_thread.first only advanced when reusing a slot that had a\nsuccessfully scheduled frame. A submission error on a slot that wasn\u0027t\nused before left the two out of sync, so the task scheduler\u0027s notion of\nframe order was wrong, and progress of a reference frame could fail to\ntrigger a rescan of frames depending on it (deadlock).\n\nFound by fuzzing (crash-38b2886c2e, ~20% of runs with 4 threads).\n"
    },
    {
      "commit": "1130f69bc77e0a66a3250612865414c0c0824f11",
      "tree": "1da860fc9248d688790220c7be295a2ed0427a52",
      "parents": [
        "d3796c78c2ae22ddc6b0aca8304f07022e33c9ee"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:41:17 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 18:24:17 2026"
      },
      "message": "decode: fix loop restoration unit storage for multiple units per superblock\n\nIn 4:2:2, chroma superblocks can contain two restoration units\nvertically, e.g. with 64x64 chroma units in 128x128 superblocks (which\nAVM allows, it only requires units to be at least 64 \u003e\u003e ss_ver pixels\nhigh), or 128x128 chroma units in 256x256 superblocks. The second unit\nwas stored in the next 256x256 superblock row (or beyond the end of the\narray, for the last row) at the same unit index, rather than at the\nposition where lr_apply looks it up. Store each unit by the luma\nposition of its top-left corner, like lr_apply\u0027s lookup does. This is\nunchanged for the case of one unit per superblock (all other layouts and\nunit sizes).\n\nRemove the horizontal loop, and assert the vertical loop count is 1 unless\nthis is a chroma plane with 4:2:2 subsampling.\n"
    },
    {
      "commit": "d3796c78c2ae22ddc6b0aca8304f07022e33c9ee",
      "tree": "c03ca248fc10750dd2aa448acad2c3b8bd00c0c2",
      "parents": [
        "36eda9fde3ec5ce6126d0b23c90a95d4d0360324"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 19:33:33 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 18:08:27 2026"
      },
      "message": "obu: fix tile boundary scan for ccso/gdf unit sizes\n\nThe scan for tile boundaries that aren\u0027t aligned to the ccso/gdf unit size\nlooked at col/row_start_sb[0..n-2] instead of [1..n-1].\n"
    },
    {
      "commit": "36eda9fde3ec5ce6126d0b23c90a95d4d0360324",
      "tree": "b08958dd75f4203cc86b2d9b3f27228da17c37e8",
      "parents": [
        "659a20c614005b971c2ff408afc775b0a9854cd8"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Thu Oct 29 21:35:07 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 17:49:59 2026"
      },
      "message": "cdf: apply CDF averaging \u0026 count reset when disable_cdf_update\u003d1\n\nFixes cdf-update-mode_2.obu from #67.\n"
    },
    {
      "commit": "659a20c614005b971c2ff408afc775b0a9854cd8",
      "tree": "a0fc343603bca701b74c359e66b739e26b01c1b9",
      "parents": [
        "c7a06b49aa7d933b12a585120132b8aee22e029a"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 16:49:14 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 16:26:11 2026"
      },
      "message": "tools: don\u0027t stop flushing on errors for corrupt frames\n\nThe main loop continues after EINVAL from dav2d_get_picture(), since this\njust means that this frame was corrupt, but the flush loop stopped at any\nerror, which drops the remaining frames and makes the exit code non-zero.\nSince with frame threading, errors are reported when the frame is output,\nit depends on timing whether an error occurs before or after the end of the\ninput, so the output and exit code of corrupt streams were non-deterministic.\n"
    },
    {
      "commit": "c7a06b49aa7d933b12a585120132b8aee22e029a",
      "tree": "af8a6a18f337b4532c1fc6f80301e2f1f7117128",
      "parents": [
        "ebb72175221b38c6dba7660af4b04467fe76d6af"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 00:06:17 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 16:10:19 2026"
      },
      "message": "obu: only use output pictures to derive the display order hint\n\nLike AVM\u0027s get_disp_order_hint(), the reference frame with the largest\ndisplay order hint, against which the signaled order hint is unwrapped,\nis only searched among reference frames that are output pictures\n(show_immediate or show_implicit). We also used hidden frames, so a\nhidden frame with a large display order hint (e.g. 66 with 7 order hint\nbits) moved the derived display order hint of the next frame (signaled\norder hint 3) to 131 instead of 3, which changes all temporal distances\nand desyncs the decoding of that frame.\n"
    },
    {
      "commit": "ebb72175221b38c6dba7660af4b04467fe76d6af",
      "tree": "0c0b2172304b0e5fe76c6aa6fa5640f0f8f68abc",
      "parents": [
        "27838fea7f4e3f7003f24372b40a1d0e53b38961"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:41:00 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 15:54:10 2026"
      },
      "message": "obu: handle zero temporal distances in global motion like AVM\n\nLike AVM, don\u0027t read global motion parameters for references at the\nsame temporal instant as the current frame (they use the identity\nmodel), and use the identity model as reference if the base model\u0027s\ndistance is zero (instead of dividing by zero).\n"
    },
    {
      "commit": "27838fea7f4e3f7003f24372b40a1d0e53b38961",
      "tree": "49b45b635013db550728179adc7f4c57da21bb4a",
      "parents": [
        "4be3779590ca0b12a5a1d26d25a61c3006889fd4"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 00:06:17 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 14:49:31 2026"
      },
      "message": "recon: no optical flow mv offsets for references at temporal distance 0\n\nLike AVM\u0027s av2_get_optflow_based_mv(), the optical flow refinement does\nnot apply any mv offsets if either reference has the same display order\nhint as the current frame (d0 \u003d\u003d 0 || d1 \u003d\u003d 0); the rest of the optical\nflow prediction (1/16 pel mvs, sub-block size) stays the same. We used a\nweight of +/-1 for such a reference instead, and thus still applied\noffsets. Do the same in opfl_pred() for compound blocks.\n"
    },
    {
      "commit": "4be3779590ca0b12a5a1d26d25a61c3006889fd4",
      "tree": "daf8a49b758a00ec75b01f3b7a3df7ed9bdd2b4f",
      "parents": [
        "652ae8abbc0c7a99a3792720c3b69e04decc96f0"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:44:41 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Tue Nov 03 00:34:19 2026"
      },
      "message": "quant: apply sequence header base delta q offsets\n\nThe sequence header\u0027s base_y_dc/uv_dc/uv_ac delta q offsets were parsed\nbut never used. Like AVM, add them to the frame\u0027s delta q values for\ndequantization, chroma deblocking thresholds (which, like AVM, also\nclamp the chroma qindex before adding the deblocking offset) and the\nlossless derivation (which also requires delta q to be absent). Also,\nwith equal_ac_dc_q, chroma dc delta q values equal the ac ones.\n"
    },
    {
      "commit": "652ae8abbc0c7a99a3792720c3b69e04decc96f0",
      "tree": "7ba4514707e7a9b3fa78819749d414ada42a1b5f",
      "parents": [
        "9b5d2f6ef610e975974187cc92e7cc06cbf3cc53"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 14:21:39 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 20:57:36 2026"
      },
      "message": "fgm: clean up partially-initialized FGM entries during header parsing\n\nFixes crash on crash-ffb7d403c4.obu:\nframe #4: 0x0000000101109e78 libdav2d.1.dylib`generate_scaling(bitdepth\u003d8, points\u003d0x0000613000000250, num\u003d2, scaling\u003d\"..\") at fg_apply_tmpl.c:70:9\n   67  \t        const int ey \u003d points[i+1][1];\n   68  \t        const int dx \u003d ex - bx;\n   69  \t        const int dy \u003d ey - by;\n-\u003e 70  \t        assert(dx \u003e 0);\n   71  \t        const int delta \u003d dy * ((0x10000 + (dx \u003e\u003e 1)) / dx);\n   72  \t        for (int x \u003d 0, d \u003d 0x8000; x \u003c dx; x++) {\n   73  \t            scaling[(bx + x) \u003c\u003c shift_x] \u003d by + (d \u003e\u003e 16);\n(after an error in parse_fgm_header() earlier.)\n"
    },
    {
      "commit": "9b5d2f6ef610e975974187cc92e7cc06cbf3cc53",
      "tree": "1a8b62adb4ab59f627746b4bad6a45ea55279323",
      "parents": [
        "cc696eaa924ea7fb3a4c710ce54f3e38096aa2ac"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:55:50 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 17:42:35 2026"
      },
      "message": "refmvs: disable TMV from scalable references\n"
    },
    {
      "commit": "cc696eaa924ea7fb3a4c710ce54f3e38096aa2ac",
      "tree": "b09bb42a070c293c48fbed881b008a81bba8e426",
      "parents": [
        "121d0d1fbd5a7c24cf6a7d0c088294856474e941"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:49:24 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 17:28:27 2026"
      },
      "message": "obu: fix uniform tile reuse in SVC streams\n\nFixes tile header parsing for resize-mode_2.obu in #67.\n"
    },
    {
      "commit": "121d0d1fbd5a7c24cf6a7d0c088294856474e941",
      "tree": "51bd64f9f02e1aff2f90168272ea29351043b887",
      "parents": [
        "208e40a805a361b264be1e46a2e011510e24429e"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Oct 26 14:56:46 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 14:06:27 2026"
      },
      "message": "x86/refmvs: add AVX2 implementation of tip_fill_holes()\n\nBenchmark results:\n  tip_fill_holes_ss1_c:                               37756.7\n  tip_fill_holes_ss1_avx2:                             6538.0 ( 5.77x)\n  tip_fill_holes_ss2_c:                                9835.9\n  tip_fill_holes_ss2_avx2:                             3284.5 ( 2.72x)\n"
    },
    {
      "commit": "208e40a805a361b264be1e46a2e011510e24429e",
      "tree": "7d18933d7273a071ddbf82304172a207f678c526",
      "parents": [
        "dd0f7ee4ca3d755b4f25bdc5af8561aeb17b43a4"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:52:52 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 13:57:13 2026"
      },
      "message": "decode: disable opfl for scalable references\n"
    },
    {
      "commit": "dd0f7ee4ca3d755b4f25bdc5af8561aeb17b43a4",
      "tree": "b199f8cddf791daa6406e63b1c51649e3200d27f",
      "parents": [
        "ce3130909bb8ebc1f8d534955b2c74bb28d02b48"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:51:14 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 13:35:12 2026"
      },
      "message": "mc: update edge emulation boundary condition to be in 8 luma px units\n\n(The old exact-pixel limit was copied from AV1 and does not match how\nframe boundaries are calculated in AV2.)\n"
    },
    {
      "commit": "ce3130909bb8ebc1f8d534955b2c74bb28d02b48",
      "tree": "4e74fa8a028b773cc5731c44eadc48d01bc181a3",
      "parents": [
        "ca8d497f54fbd98475322a8ef3016f37620a5351"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:46:02 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 13:01:03 2026"
      },
      "message": "obu: only require matching resolutions for CCSO sb_reuse\n\nFor header values, it\u0027s acceptable to have mismatching resolutions.\nWithout this, SVC streams using this feature fail to decode. See e.g.\nresize-mode_2.obu in #67.\n"
    },
    {
      "commit": "ca8d497f54fbd98475322a8ef3016f37620a5351",
      "tree": "700168e364100b2300e93e40774bfe5d6ec72728",
      "parents": [
        "c8a7f54f5825fd6de7f37afecd3aa18d29b9041e"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 14:58:32 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 12:44:13 2026"
      },
      "message": "mv_proj: clip pocdiff to 31 and project large-unto-small\n\nFixes crashes on crash-b019068f50.obu and crash-025ef51934.obu.\n"
    },
    {
      "commit": "c8a7f54f5825fd6de7f37afecd3aa18d29b9041e",
      "tree": "c5c51cdfa1297df60747a32805cd0893d048b99c",
      "parents": [
        "e7c1ef0b0e3ae3e288b512008790bdb809c50f8b"
      ],
      "author": {
        "name": "Gianni",
        "email": "giannirosato@proton.me",
        "time": "Sat Oct 31 20:26:44 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 11:45:26 2026"
      },
      "message": "obu: fix trailing one bit detection in read_extension_bits()\n"
    },
    {
      "commit": "e7c1ef0b0e3ae3e288b512008790bdb809c50f8b",
      "tree": "99cce2fd6952b1fa4f4c0eefe175abe5af9bf419",
      "parents": [
        "30140b563596a1b14aef808ff021c90288948315"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 18:32:48 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 11:38:14 2026"
      },
      "message": "obu: handle leading SEF/TIP OBUs like their regular counterparts\n\nLike OBU_SEF and OBU_TIP (and as in AVM), OBU_LEADING_SEF and\nOBU_LEADING_TIP only contain a frame header: they have no first tile\ngroup flag and no tile data, and a leading SEF is a show-existing-frame.\nWe parsed them as frames with tile data, and a leading TIP output frame\nwith tile data later triggered an assert in dav2d_submit_frame().\n\nFound by fuzzing (crash-fd1aab6fe7) with multithreading+framedelay.\n"
    },
    {
      "commit": "30140b563596a1b14aef808ff021c90288948315",
      "tree": "41b97fb7bd8ea47ddecc6cfd68ae8a86d55b8259",
      "parents": [
        "1ee4e8e1d32fd9838b01b7a3672d98f0bbe73951"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 19:36:11 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 02:58:37 2026"
      },
      "message": "picture: pass input data-props (instead of tile-data) for TIP frames\n\nThis was forgotten in b755565f641e81c96bb5502b50fedd6f0b00fa5d.\n"
    },
    {
      "commit": "1ee4e8e1d32fd9838b01b7a3672d98f0bbe73951",
      "tree": "38cb383531c0558b5b6010b739dabae32af93d12",
      "parents": [
        "a6b111dea24accc5903d07a7d51aada02b4be8e5"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 13:22:27 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 01:47:04 2026"
      },
      "message": "section5: ignore layer configuration OBUs during probing\n\nFixes enable-operating-point-sets_1.obu and enable-lcr_1.obu from #67.\n"
    },
    {
      "commit": "a6b111dea24accc5903d07a7d51aada02b4be8e5",
      "tree": "783b388b49944997fb70e4f281cdb7d4f46103a5",
      "parents": [
        "ef8c27f6c9cc1cb5275053ddd81897a9b5251eee"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 20:08:04 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 00:23:21 2026"
      },
      "message": "obu: require sequence header before parsing fgm header\n\nFixes crash on crash-10db6a79f3.obu:\n    #0 0x10a86aae9 in parse_fgm_hdr obu.c:2176\n    #1 0x10a82c9f6 in dav2d_parse_obus obu.c:2717\n    #2 0x10a808f9a in gen_picture lib.c:479\n    #3 0x10a808d5c in dav2d_get_picture lib.c:521\n    #4 0x109008499 in main dav2d.c:308\n    #5 0x10b26952d in start+0x1cd (dyld:x86_64+0x552d)\n"
    },
    {
      "commit": "ef8c27f6c9cc1cb5275053ddd81897a9b5251eee",
      "tree": "39ebfd790864f1bfb4f748fb93cdd63c77319ba5",
      "parents": [
        "f477aa4e8b389a4b1ed9740457af2112b86b5c78"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 19:09:31 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Nov 02 00:10:20 2026"
      },
      "message": "obu: check explicitly signaled primary ref against n_ref_frames\n\nAlso, if a derived primary ref can not be found, set the primary\nref to none even if one was explicitly signaled.\n\nFixes crashes (look unrelated because this enters uninitialized\ndata) in crash-1ea4ff1d0f.obu.\n"
    },
    {
      "commit": "f477aa4e8b389a4b1ed9740457af2112b86b5c78",
      "tree": "6f2c1427241fceee9f29541beaf3c0f5cbe08b73",
      "parents": [
        "7b22c5f0675ea2db66b7b572d84f1920539bef80"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 21:03:35 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 23:57:26 2026"
      },
      "message": "cli: remove \"annexb\" demuxer from --help output\n\nThis was removed in f5170702.\n"
    },
    {
      "commit": "7b22c5f0675ea2db66b7b572d84f1920539bef80",
      "tree": "e037275d00bd5e82b7dee6f4cc44653d07a5d81f",
      "parents": [
        "30b9045fd3d3e34d1b474f66d89e4c45cdd3ba5d"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 14:32:48 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 23:08:04 2026"
      },
      "message": "lib: don\u0027t output frames that had decoding errors\n\nFrames with decoding errors were output (including film grain applied to\npartially undecoded, uninitialized picture data). Like dav1d, drop them\nand return the decoding error instead.\n\nFound by fuzzing (crash-5c8121c7d8), with the following backtrace:\n    #0 0x110f9c11d in fgy_32x32xn_c filmgrain_tmpl.c:240\n    #1 0x110f95203 in dav2d_apply_grain_row_16bpc fg_apply_tmpl.c:185\n    #2 0x1116444f9 in delayed_fg_task thread_task.c:547\n    #3 0x11162f630 in dav2d_worker_task thread_task.c:585\n    #4 0x7ff80a67e4e0 in _pthread_start+0x7c (libsystem_pthread.dylib:x86_64+0x64e0)\n    #5 0x7ff80a679f6a in thread_start+0xe (libsystem_pthread.dylib:x86_64+0x1f6a)\n"
    },
    {
      "commit": "30b9045fd3d3e34d1b474f66d89e4c45cdd3ba5d",
      "tree": "f2eabb87f591ea8df54db4ac3fe4af930f4a0dec",
      "parents": [
        "560f7ccf14fda847100aec7cecb23a44bd07e40a"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 13:55:30 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:26:46 2026"
      },
      "message": "decode: validate transform partition type while parsing\n\nInvalid tx partitions for a block size were only caught in recon_b(),\nwhich isn\u0027t run in the entropy pass with frame threading, so the\ndeblock mask code would use an invalid (-1) transform size.\n\nFound by fuzzing (crash-72e179e137).\n"
    },
    {
      "commit": "560f7ccf14fda847100aec7cecb23a44bd07e40a",
      "tree": "fa174d387093c80bff20760dd29214dbd7001c7a",
      "parents": [
        "864119ea142d529f1fe2d478a0c9b7b7fdddc743"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 17:33:31 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 22:19:09 2026"
      },
      "message": "decode: abort decoding on invalid warp_ref_idx\n\nFixes ubsan error on crash-16590f779a.obu:\n../src/refmvs.c:571:42: runtime error: signed integer overflow: 168762791 * 64 cannot be represented in type \u0027int\u0027\n"
    },
    {
      "commit": "864119ea142d529f1fe2d478a0c9b7b7fdddc743",
      "tree": "2827295ac5dae239ab3bf4a122e21cf16aa11a96",
      "parents": [
        "20aaa063b0feef335460d2b2026a462aeabef08d"
      ],
      "author": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Sun Nov 01 19:11:37 2026"
      },
      "committer": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Sun Nov 01 22:02:02 2026"
      },
      "message": "x86/cfl/mh_gen_y_420_vstrip: [16bpc - AVX2] Use the correct top path\n\nThis should have been pushed to !945 prior to merging it.\n"
    },
    {
      "commit": "20aaa063b0feef335460d2b2026a462aeabef08d",
      "tree": "ee262c0d0cd2a63820338a8501f5adcd9f9e9774",
      "parents": [
        "2e4c7bf8e0a2c31f2812c4d15d14a00773cfc6fb"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 16:41:59 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 21:54:19 2026"
      },
      "message": "warp: allow get_shear_params() shift value over 32\n\nFixes ubsan errors on crash-16590f779a.obu, crash-471b9c2dc6.obu\nand crash-b019068f50.obu:\n../src/warpmv.c:63:24: runtime error: shift exponent 36 is too large for 32-bit type \u0027int\u0027\n"
    },
    {
      "commit": "2e4c7bf8e0a2c31f2812c4d15d14a00773cfc6fb",
      "tree": "a53efdf6efea1d88de7407d747eb3b5411562582",
      "parents": [
        "251772795ff28bc41faaa1d1dcd77334e874847a"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 13:47:21 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 21:38:59 2026"
      },
      "message": "lib: drop output frames with a duplicate POC instead of asserting\n\nAVM treats non-unique output display order hints as an error. Also\ndon\u0027t assert in output_invisible_frames mode, where hidden and shown\nframes can legitimately share a POC.\n\nFound by fuzzing (crash-430f43d1c7).\n"
    },
    {
      "commit": "251772795ff28bc41faaa1d1dcd77334e874847a",
      "tree": "71fccb0603e22d4c3fc20a461e76e8db4f92ef55",
      "parents": [
        "52fc7913bdbe5825c2fc1a1f0b7c23dc89fc180b"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 12:41:14 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 21:22:57 2026"
      },
      "message": "Add basic S-frame support\n\nFixes global-error-resilient_1.obu and enable-sframe_1-sframe-dist_1.obu\nfrom #67. Restricted S-frame support is not yet implemented.\n"
    },
    {
      "commit": "52fc7913bdbe5825c2fc1a1f0b7c23dc89fc180b",
      "tree": "2d695afa8e194a89b296899e6721bec7111beb28",
      "parents": [
        "07f076347581bcb87f84e753b7ccebc7fd0c749f"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 14:36:08 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 21:07:08 2026"
      },
      "message": "decode: reset intra region state at the start of each tile sbrow\n\nIf decoding failed inside an intra region (of a mixed intra/inter\npartition), t-\u003eintra_region stayed set, and the next superblock decoded\nwith this task context would decode a chroma-only block of root block\nsize, which recursed infinitely in recon_b() (stack overflow) or hit an\nassert:\n\nAssertion failed: (cbs_stage[0] \u003d\u003d cbs_stage[1] || ((cbs_stage[0] \u003d\u003d BS_INVALID || cbs_stage[1] \u003d\u003d BS_INVALID) \u0026\u0026 (lbs \u003d\u003d BS_64x64 \u0026\u0026 (f-\u003ess_ver || f-\u003ess_hor)))), function dav2d_recon_b_8bpc, file recon_tmpl.c, line 3285.\n\nFound by fuzzing (crash-d4a17cb864).\n"
    },
    {
      "commit": "07f076347581bcb87f84e753b7ccebc7fd0c749f",
      "tree": "afa6c624e127ce41176c2f8db38415f8e4c8b168",
      "parents": [
        "58363e323a618408f46f5d503f6428aaffe5d046"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 13:54:51 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 21:00:19 2026"
      },
      "message": "obu: prevent crashes upon missing refs in header parsing\n\nFixes crashes in the following samples:\ncrash-1666e656d2.obu\ncrash-1ea4ff1d0f.obu\ncrash-2584523f92.obu\ncrash-38b2886c2e.obu\ncrash-4ccee0be4d.obu\ncrash-5d7f92ec83.obu\ncrash-71579d06d6.obu\ncrash-716ab19747.obu\ncrash-cd31ba92b2.obu\ncrash-ebc83c02ec.obu\ncrash-fd1aab6fe7.obu\ncrash-fea37d2ab7.obu\n\nAlso fixes #6.\n"
    },
    {
      "commit": "58363e323a618408f46f5d503f6428aaffe5d046",
      "tree": "f02c51b4cf8a0409158e7f7c1550f51eb19b0fc0",
      "parents": [
        "ee03357e3657d38f50f8b6d24fa5e810655d457c"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 17:34:29 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 20:43:14 2026"
      },
      "message": "obu: initiialize secondary reference to \"none\"\n\nFixes uninitialized memory being read when decoding crash-16590f779a.obu.\nThis would sometimes crash:\n* thread #1, queue \u003d \u0027com.apple.main-thread\u0027, stop reason \u003d Out of bounds index\n  * frame #0: 0x00000001005a28c0 libclang_rt.asan_osx_dynamic.dylib`__ubsan_on_report\n    frame #1: 0x000000010059ceae libclang_rt.asan_osx_dynamic.dylib`__ubsan::Diag::~Diag() + 206\n    frame #2: 0x000000010059ffcc libclang_rt.asan_osx_dynamic.dylib`handleOutOfBoundsImpl(__ubsan::OutOfBoundsData*, unsigned long, __ubsan::ReportOptions) + 348\n    frame #3: 0x000000010059fe5c libclang_rt.asan_osx_dynamic.dylib`__ubsan_handle_out_of_bounds + 60\n    frame #4: 0x0000000101763d9c libdav2d.1.dylib`dav2d_submit_frame(c\u003d0x0000630000000400) at decode.c:5586:33\n    frame #5: 0x00000001018f0a79 libdav2d.1.dylib`dav2d_parse_obus(c\u003d0x0000630000000400, in\u003d0x00006300000004a8) at obu.c:3030:24\n    frame #6: 0x00000001018c3d0b libdav2d.1.dylib`gen_picture(c\u003d0x0000630000000400) at lib.c:483:31\n    frame #7: 0x00000001018c3acd libdav2d.1.dylib`dav2d_get_picture(c\u003d0x0000630000000400, out\u003d0x00007ff7bfefec90) at lib.c:525:15\n    frame #8: 0x000000010000449a dav2d`main(argc\u003d5, argv\u003d0x00007ff7bfeff700) at dav2d.c:308:24\n    frame #9: 0x000000010005d52e dyld`start + 462\n"
    },
    {
      "commit": "ee03357e3657d38f50f8b6d24fa5e810655d457c",
      "tree": "1813c4b190ebb3284060fe35328b3986290fa60a",
      "parents": [
        "f517070242bfe5efcabbd087aa7e2da2467fe8a2"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 13:51:29 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 20:34:41 2026"
      },
      "message": "decode: clamp qindex for pc-wiener qstep calculation\n\nLike AVM\u0027s get_q(), use the qindex clamped to the bitdepth\u0027s max for the\nqstep, and fix that max (MAXQ_10_BITS \u003d 255 + 2 * 24, etc.). Fixes an\ninteger overflow with out-of-range qindex values:\n../src/looprestoration.h:110:47: runtime error: signed integer overflow: 2132686176 + 15890784 cannot be represented in type \u0027int\u0027\n\nFound by fuzzing (crash-ddc89cf96d).\n"
    },
    {
      "commit": "f517070242bfe5efcabbd087aa7e2da2467fe8a2",
      "tree": "f5f662a13aa5bbadb7990969602c5644e4653200",
      "parents": [
        "a4c71a0ddeb0695049516beecf5f1562acac892f"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 13:31:25 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 19:16:48 2026"
      },
      "message": "input: remove annexb demuxer\n\nThis is an AV1-leftover that is not used in AV2.\n"
    },
    {
      "commit": "a4c71a0ddeb0695049516beecf5f1562acac892f",
      "tree": "e7dffe45e6e7186dd89fbc1a2beed8d84256c9bc",
      "parents": [
        "0821ef176ed23b5587a423ed38537018fba7ec3b"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 18:18:40 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 18:51:30 2026"
      },
      "message": "decode: abort on coefficient parsing errors\n\nOtherwise, in frame-threaded mode, we will read uninitialized data,\nwhich causes ubsan errors such as:\n../src/recon_tmpl.c:2803:40: runtime error: index 15 out of bounds for type \u0027const int8_t [11][3][32][48]\u0027\non crash-16590f779a.obu.\n"
    },
    {
      "commit": "0821ef176ed23b5587a423ed38537018fba7ec3b",
      "tree": "86651c9727f8877436aaa1ca600aace5d6dda76a",
      "parents": [
        "f7188ee05bbd2b8628c5b80f54afef17eba23b0e"
      ],
      "author": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Wed Oct 21 17:34:53 2026"
      },
      "committer": {
        "name": "Victorien Le Couviour--Tuffet",
        "email": "victorien@videolan.org",
        "time": "Sun Nov 01 18:25:19 2026"
      },
      "message": "x86/cfl/mh: Add cfl_mh_gen_y_420_vstrip_16bpc AVX2 asm\n\ncheckasm results on skylake:\n  cfl_mh_gen_y_420_vstrip_w4_tse0_16bpc_avx2:      95.9 ( 4.37x)\n  cfl_mh_gen_y_420_vstrip_w4_tse1_16bpc_avx2:      93.3 ( 4.49x)\n  cfl_mh_gen_y_420_vstrip_w8_tse0_16bpc_avx2:     107.9 ( 7.63x)\n  cfl_mh_gen_y_420_vstrip_w8_tse1_16bpc_avx2:     102.9 ( 7.99x)\n  cfl_mh_gen_y_420_vstrip_w16_tse0_16bpc_avx2:    161.7 ( 7.85x)\n  cfl_mh_gen_y_420_vstrip_w16_tse1_16bpc_avx2:    152.3 ( 8.33x)\n  cfl_mh_gen_y_420_vstrip_w32_tse0_16bpc_avx2:    258.1 ( 9.06x)\n  cfl_mh_gen_y_420_vstrip_w32_tse1_16bpc_avx2:    242.4 ( 9.61x)\n"
    },
    {
      "commit": "f7188ee05bbd2b8628c5b80f54afef17eba23b0e",
      "tree": "4f63999e9c7f3faf4f42a4e1b8d8be496c5c9331",
      "parents": [
        "60126fd149aa8f43e1f33c8f925297a7ceead594"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 16:26:51 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sun Nov 01 18:11:35 2026"
      },
      "message": "decode: don\u0027t left-shift potentially negative value\n\ncwp_idx can be negative in some situations, leading to:\n../src/decode.c:669:27: runtime error: left shift of negative value -4\nFixes ubsan error on crash-471b9c2dc6.obu.\n"
    },
    {
      "commit": "60126fd149aa8f43e1f33c8f925297a7ceead594",
      "tree": "8756d6c8fc8040406934810be9ca1d1eb7085fe8",
      "parents": [
        "cf6f01fa2884d1fe91faa602d97b04fb69780093"
      ],
      "author": {
        "name": "Gianni",
        "email": "giannirosato@proton.me",
        "time": "Sat Oct 31 22:09:36 2026"
      },
      "committer": {
        "name": "Gianni",
        "email": "giannirosato@proton.me",
        "time": "Sat Oct 31 22:23:56 2026"
      },
      "message": "obu: fix bt.709 sdr \u0026 bt.2100 HLG presets\n\nuse the BT.709 matrix for SDR and the HLG transfer characteristic for\nHLG.\n"
    },
    {
      "commit": "cf6f01fa2884d1fe91faa602d97b04fb69780093",
      "tree": "8e3eaff527f11a5735d90f850ce2fe602aea1f0f",
      "parents": [
        "6df0e5624997e416ebf926febe01762ff110d189"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 11:59:37 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Sat Oct 31 12:05:28 2026"
      },
      "message": "refmvs/splat_warpmv: ignore warp-matrix if force_fullpel_mv\u003d1\n\nFixes Bin_avm_20260430_02ccf8f9d1_v15rc1_tme_T3LB_B203_s0000_e0129_q110.bin\nfrom CTC.\n"
    },
    {
      "commit": "6df0e5624997e416ebf926febe01762ff110d189",
      "tree": "8030adda1efdf2f00e6c63a36c44bc089e59e98d",
      "parents": [
        "8f8db4afd1ad9f04d642857ee73562353f19717d"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 20:12:38 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 23:24:20 2026"
      },
      "message": "decode_sb: prevent splitting 4x8/8x4 mixed-inter blocks at frame edge\n\nFixes Bin_avm_20260430_02ccf8f9d1_v15rc1_tme_T3LB_A202_s0000_e0129_q135.bin\nfrom CTC.\n"
    },
    {
      "commit": "8f8db4afd1ad9f04d642857ee73562353f19717d",
      "tree": "94cda6fc0036dea21b2991dc9557dfe8bef96689",
      "parents": [
        "9d98b586c227e315741f254c7c1ef932ead53e9b"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 19:19:41 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 20:16:32 2026"
      },
      "message": "obu: support profile 3 \u0026 4\n\nThese are defined in AVM as 422/444. The old 2 limit came was a leftover\nfrom AV1.\n"
    },
    {
      "commit": "9d98b586c227e315741f254c7c1ef932ead53e9b",
      "tree": "35dff6bd5da19968eb26465a2f8f852833cb690c",
      "parents": [
        "f1f2678253b8b2f5b7b19f4f0c7e0e0879b05cd6"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 14:02:32 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 20:06:14 2026"
      },
      "message": "x86: remove %if ARCH_X86_64 from avx2/avx512 source files\n"
    },
    {
      "commit": "f1f2678253b8b2f5b7b19f4f0c7e0e0879b05cd6",
      "tree": "7cb7bddd73965e1fd3130f3be30cd185317792de",
      "parents": [
        "604b27a0a27063126b1c10e000c1905be7c2a9ae"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 19:29:27 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 20:00:09 2026"
      },
      "message": "obu: fix conditional reading of max_en/decoder_buffer_delay\n\nFixes timing-info_2.obu from #67.\n"
    },
    {
      "commit": "604b27a0a27063126b1c10e000c1905be7c2a9ae",
      "tree": "a7dcd15fd5f2f5fb5e9db34d9ba81ada88d27849",
      "parents": [
        "c0216be601eac11e7b49b526e24de085957ff68e"
      ],
      "author": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Mon Oct 26 14:52:13 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 19:47:26 2026"
      },
      "message": "x86/refmvs: add AVX2 implementation of tip_projection()\n\nBenchmark results:\n  tip_projection_ss1_c:     71606.3 +/- 4242.0      20248.3 ns +/- 4868.7\n  tip_projection_ss1_avx2:   7414.0 +/- 95.8         2096.5 ns +/- 483.9  ( 9.66x)\n  tip_projection_ss2_c:      8028.0 +/- 2387.3       2270.1 ns +/- 939.6\n  tip_projection_ss2_avx2:   2431.1 +/- 8.6           687.5 ns +/- 158.4  ( 3.30x)\n"
    },
    {
      "commit": "c0216be601eac11e7b49b526e24de085957ff68e",
      "tree": "c0c780448779f650c62dc59e2e7593bac1ed1286",
      "parents": [
        "c682b88e3b815ff6f38866ae1562fed8cb24ffc8"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 16:21:06 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 17:40:48 2026"
      },
      "message": "lr: skip the chroma setup in lr_stripe() for monochrome\n\nFor a monochrome frame, the layout is DAV2D_PIXEL_LAYOUT_I400 (0), so\nlr_stripe() looked up wiener_uv_luma[DAV2D_PIXEL_LAYOUT_I444 - layout],\nindex 3 of a 3-entry array. It also treated the frame as horizontally\nsubsampled and built the chroma lossless mask from lossless_mask_uv,\nwhich can read past the end of the mask buffer in the last SB row.\nNeither result is used without chroma planes, so skip both.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "c682b88e3b815ff6f38866ae1562fed8cb24ffc8",
      "tree": "fc512f8eceaa531cef5af889c358e0111ebbbbe3",
      "parents": [
        "da065450b96655b5b637b02da80edd43f355cd8a"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 15:29:58 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 16:21:25 2026"
      },
      "message": "cli: fix the --inloopfilters help text\n\nThe help listed (no)deblock, (no)cdef and (no)restoration, but the\nparser takes a plus/min-separated list of none, deblock, cdef, ccso,\nwiener, gdf and all, where a leading sign changes the default.\n\nFixes #84.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "da065450b96655b5b637b02da80edd43f355cd8a",
      "tree": "2616c5910b49496634fabd3b36befeff1fff0307",
      "parents": [
        "64120d0d1aa2a628ed683334a997c89bcaab5cd8"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 14:53:48 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 15:54:33 2026"
      },
      "message": "lib: free the CDEF line buffer without worker threads\n\nclose_internal() freed each task context\u0027s cdef_line_buf only in the\nloop that joins worker threads. With one thread there are no workers,\nso the buffer allocated by filter_slice_cdef() leaked on every\ndav2d_close(). Free it for every task context instead.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "64120d0d1aa2a628ed683334a997c89bcaab5cd8",
      "tree": "edfe11ad14bc31c0a0fc8c427b4c27e7bf22865d",
      "parents": [
        "0f0055aa244b5b11ea60ed58c0cb69ec9602a6ec"
      ],
      "author": {
        "name": "Ewout ter Hoeven",
        "email": "15776622+EwoutH@users.noreply.github.com",
        "time": "Fri Oct 30 14:53:23 2026"
      },
      "committer": {
        "name": "Ronald S. Bultje",
        "email": "rsbultje@gmail.com",
        "time": "Fri Oct 30 15:41:03 2026"
      },
      "message": "refmvs: copy 4-byte entries in the load_tmvs row copy\n\nWith tile threading (and no frame threading), load_tmvs copies the last\ntwo rows of the previous SB row into rows -2 and -1 of the tile row\u0027s\nrp_proj buffer, in a head, a 32-aligned middle and a tail part. The head\nand tail size the mv copies with sizeof(mv), which is 8 bytes, but\nrp_proj stores union tmv (4 bytes) since the mv components became\n16-bit. So they copy twice the intended width: into the next tile\ncolumn\u0027s part of the row, and past the end of rp_proj.\n\nWith one thread the extra bytes are overwritten before use. With tile\nthreads, one tile can overwrite projected MVs another tile is already\nusing, so the output changes from run to run.\n\nFixes #82.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    }
  ],
  "next": "0f0055aa244b5b11ea60ed58c0cb69ec9602a6ec"
}
