)]}'
{
  "log": [
    {
      "commit": "fb0a26ad923b58c3663aaa9523992cf779b1563b",
      "tree": "b96c44a7d04643c0e92f3a75a608a78243476ae6",
      "parents": [
        "50ede54a5ca9a63ab6439e04543ac9c183750c06"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Sun Oct 25 04:54:27 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Oct 26 23:50:55 2026"
      },
      "message": "vp9: Fix LAST_FRAME check in get_estimated_pred for SVC\n\nIn get_estimated_pred() (used by ML_BASED_PARTITION), is_key_frame only\nchecked frame_is_intra_only(cm), missing the checks present in\nchoose_partitioning() for SVC keyframes, invalid reference scale, NULL\nLAST_FRAME buffer, differing LAST_FRAME resolution, and disabled\nVP9_LAST_FLAG. When LAST_FRAME was NULL (such as on a newly enabled\nspatial layer in flexible SVC mode), vp9_setup_pre_planes() was a\nno-op, leaving xd-\u003eplane[0].pre[0].buf pointing to a stale/freed\nreference buffer from a previous frame.\n\nAlign the is_key_frame checks in get_estimated_pred() with\nchoose_partitioning(), and avoid enabling nonrd_use_ml_partition\n(ML_BASED_PARTITION) for SVC in realtime mode.\n\nAdded unittest EncodeAPI.SvcGetEstimatedPredStaleReference.\n\nBug: 575903327\nChange-Id: I6293af25a43825f4a8ed579db9be0aaf4366a393\n"
    },
    {
      "commit": "50ede54a5ca9a63ab6439e04543ac9c183750c06",
      "tree": "81dd57418217c0156d8b949f9f547e9f9f7d736f",
      "parents": [
        "23fbf91f68f20573a96c16b8fa5c35f859f423a8"
      ],
      "author": {
        "name": "Filippo Tedeschi",
        "email": "filippotedeschi98@gmail.com",
        "time": "Tue Oct 13 10:23:26 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Mon Oct 26 15:10:30 2026"
      },
      "message": "vp9: fix HBD input validation of flipped images\n\nvalidate_img() reads the stride of each plane of a high bit depth\nimage into an unsigned int. vpx_img_flip() makes the strides negative,\nso for a flipped image the unsigned value is huge and \"src +\u003d stride\"\nmoves the source pointer far outside the allocation after the first\nrow. The read in the pixel value check then crashes. This happens with\nthe default validate_hbd_input setting; the same flipped image encodes\nwithout problems at 8 bits.\n\nUse a signed stride (int). Add tests that encode a flipped and a\nnon-flipped high bit depth image and a flipped 8-bit image.\n\nimage2yuvconfig() also derived the frame border from the image stride\nwith an unsigned width, so a flipped image triggered an implicit sign\nchange (flagged by the integer sanitizer). Review found that the\nborder value is unused by the encoder, so set it to 0 instead.\n\nI used an AI model to help audit this code and prepare the change and\nits test. I reviewed the diff, and the tests were run locally with\nASan and UBSan.\n\nChange-Id: I0fca55418a9894a54487775e57bf5f77e5595929\n"
    },
    {
      "commit": "23fbf91f68f20573a96c16b8fa5c35f859f423a8",
      "tree": "f4ebf5c814ce5dab602b5cf40653723a0f8e8c01",
      "parents": [
        "900b2a52b69e9d4ab72eb855c365da1100c50eb1"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:28:20 2026"
      },
      "committer": {
        "name": "Jonathan Wright",
        "email": "jonathan.wright@arm.com",
        "time": "Mon Oct 26 13:59:50 2026"
      },
      "message": "AArch64: Unroll loop to reduce stack access\n\nAdd a GCC pragma to control loop unrolling in sad16xhx4d_neon_dotprod,\neliminating stack accesses in the ordinary 16x8 and skip 16x16\nkernels. These kernels now match Clang\u0027s zero stack usage, with\nGCC speedups of up to about 10%.\n\nChange-Id: I6517f6bde9a49e089febeac30c6beb884676ed0c\n"
    },
    {
      "commit": "900b2a52b69e9d4ab72eb855c365da1100c50eb1",
      "tree": "c3ce08f4f9b68e9a15d411ff4219b3de84fb4888",
      "parents": [
        "8771e70cb41a6a58276c817f78402007a516e5da"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sat Oct 10 17:29:22 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:20:23 2026"
      },
      "message": "vp8,update_golden_frame_stats: clamp gf_overspend_bits\n\nThis avoids accumulating a negative value, which can result in an\ninteger underflow.\n\nThe `Vp8GfOverspendBitsUnderflow` test uses settings similar to those on\nthe Android platform to cause an underflow in\n`update_golden_frame_stats()`.\n\n```\n[ RUN      ] EncodeAPI.Vp8GfOverspendBitsUnderflow\nvp8/encoder/onyx_if.c:2626:32: runtime error: signed integer overflow:\n  -1999997920 + -199999792 cannot be represented in type \u0027int\u0027\n```\n\nBug: 567288636, 454794528\nChange-Id: I96f3ff9edc8a6a3933d47e295e1c5439910e9473\n"
    },
    {
      "commit": "8771e70cb41a6a58276c817f78402007a516e5da",
      "tree": "84074ff584d9e286f2b64f02da76f281ca238700",
      "parents": [
        "287b895827ef916a2136bc6de2b2b534a11798e5"
      ],
      "author": {
        "name": "Seonglae Cho",
        "email": "sungle3737@gmail.com",
        "time": "Tue Sep 29 11:37:11 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:16:31 2026"
      },
      "message": "vpx_img_flip: do nothing for an empty viewport\n\nWith d_h \u003d\u003d 0 there is no last row to select, and (d_h - 1) * stride\nmoved each plane pointer one row before the allocation.\n\nChange-Id: I3150f356d7fe06bcfeb3f300e74e9ab3106f6995\n"
    },
    {
      "commit": "287b895827ef916a2136bc6de2b2b534a11798e5",
      "tree": "88488c2d54e2b6f95183d1915ca5edf6c268a230",
      "parents": [
        "4ca3a7c68a29207e6d35aa8fc60e4beefd44092f"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:03:07 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "test: Improve SAD speed-test timing precision\n\nKeep fractional milliseconds when measuring SADx4 and SADSkipx4\nspeed tests, and print elapsed times to three decimal places.\n\nChange-Id: I7b1c7ad55d218822a4715a2d39aa9636f560e958\n"
    },
    {
      "commit": "4ca3a7c68a29207e6d35aa8fc60e4beefd44092f",
      "tree": "fc0a53b1489d5a3ebdcf849335b93b25c992258e",
      "parents": [
        "ec7a4f33db6d182ad642a184056287debd7103c0"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:02:33 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "test: Enable Neon dot-product SAD skip tests\n\nFix the HAVE_NEON_DOTPROD guard so the dot-product SAD skip\ntests are instantiated when dot-product support is enabled.\n\nChange-Id: Ic4c6187ebabe3f98380e755ce689c66511ce0b24\n"
    },
    {
      "commit": "ec7a4f33db6d182ad642a184056287debd7103c0",
      "tree": "9732c097c60a354be085b377f7a2cd9ac73a893a",
      "parents": [
        "9ae223c6a67e2d62fc3ce007865d2f250680798f"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:02:22 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "AArch64: Re-order register access for fdct32x32\n\nRe-order register access in the dct_body_*_pass Neon functions\ninto even and odd parts to reduce register pressure and\nreduce stack accesses by 58%-95%. This brings GCC\u0027s stack access\ncounts closer to Clang\u0027s. Fuse the load_cross and scale functions\nto reduce stack accesses in the load helper by 71% with GCC.\nThe changes result in a speedup of 2%-3% in Clang 21 and 14%-18%\nin GCC 15 for the fdct32x32 functions.\n\nChange-Id: Ie114974c951b90db7d830dfdf678a1315d868c25\n"
    },
    {
      "commit": "9ae223c6a67e2d62fc3ce007865d2f250680798f",
      "tree": "d01e0b9abf95f00f882f83e4e51a02b8a072dd28",
      "parents": [
        "c54f0f3422480f6a2fc8e9e4ce6bcff91200ba7c"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:01:56 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "AArch64: Optimize Neon subtract\n\nUse high-half widening intrinsics in the subtraction function to\nhelp GCC use single vector loads. This gives up to 1.3x speedup for\nsubtraction in GCC 15.\n\nChange-Id: I98117d1018467eb07d57716781dcb10497cbdc73\n"
    },
    {
      "commit": "c54f0f3422480f6a2fc8e9e4ce6bcff91200ba7c",
      "tree": "d0b6f6e7689c57fe06d5ec02a9851fe915b0e991",
      "parents": [
        "15466827aa5e820881115c1fd4f7e8797281cc1d"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:01:35 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "AArch64: Optimize Neon sum of squares\n\nUse high-half widening intrinsics in the sum-of-squares function to\nhelp GCC use single vector loads. Reduce register dependencies by\nusing four accumulators. The changes give up to 1.7x and 1.6x speedup\nin GCC 15 and Clang 21, respectively.\n\nChange-Id: I39110335ee32ff7fd2ebd7dca6da1a068e46c338\n"
    },
    {
      "commit": "15466827aa5e820881115c1fd4f7e8797281cc1d",
      "tree": "fd656bba9db79776ce9a57704c4774e64a3ea2c3",
      "parents": [
        "aa334b8423c4e89812184f5eb9f78985e488edc3"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:01:21 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "test: Add sum-of-squares speed test\n\nAdd a disabled sum-of-squares speed test for block sizes from\n4x4 to 128x128.\n\nChange-Id: I694947ff4bd44cc235c8d0b96a4a35f32634d86b\n"
    },
    {
      "commit": "aa334b8423c4e89812184f5eb9f78985e488edc3",
      "tree": "f5ac97e21fcb3f7909e1ddf801708de8af9bb663",
      "parents": [
        "8c9ef99ff058c2059395cab9637dc52ca223a520"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Fri Oct 09 16:01:10 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 25 02:14:00 2026"
      },
      "message": "AArch64: Use 8-bit in vpx_tm_predictor_*_neon\n\nRemove 16-bit widening from the vpx_tm_predictor_*_neon functions,\nwhich gives up to a 1.7x speedup for vpx_tm_predictor_16x16_neon and\nup to a 1.8x speedup for vpx_tm_predictor_32x32_neon with GCC 15 and\nClang 21.\n\nChange-Id: I0107e19928919bcfce051d7db51eb4184af4680c\n"
    },
    {
      "commit": "8c9ef99ff058c2059395cab9637dc52ca223a520",
      "tree": "69cfaf6a5e0a7c8fe395ea2bef19f75a7dc32498",
      "parents": [
        "fb1279dcc6db0cbfb0b6015d0ba7587759c5625a"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Oct 23 05:48:35 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Oct 23 19:55:58 2026"
      },
      "message": "vp9-Force ZEROMV on unscaled SVC references in pick_inter\n\nIn encode_without_recode_loop(), vp9_scale_references() is skipped\nfor 1-pass SVC with non-RD pickmode and\nforce_zero_mode_spatial_ref \u003d 1, except when single_layer_svc is\nenabled with RESIZE_DYNAMIC.\n\nHowever, in vp9_pick_inter_mode(), svc_force_zero_mode was only set on\nscaled references when svc-\u003espatial_layer_id \u003e 0 \u0026\u0026 !gf_temporal_ref.\nWhen resolution is changed externally via vpx_codec_enc_config_set()\nwithin the valid reference scaling ratio (\u003c\u003d 16x upscale),\nspatial_layer_id \u003d\u003d 0 (or frames with gf_temporal_ref set when both\nLAST and GOLDEN are scaled by the same factor) could run motion search\non an unscaled reference buffer, causing an out-of-bounds read.\n\nDisable gf_temporal_ref when GOLDEN_FRAME is scaled, and apply\nsvc_force_zero_mode to scaled references whenever\nvp9_get_scaled_ref_frame() is NULL.\n\nAdded unittest EncodeAPI.SvcResizeUnscaledReferenceMotionSearch.\n\nBug: 575939911\nChange-Id: Ibecb380f44bb97df71c665e5e9583f8fccaf6e15\n"
    },
    {
      "commit": "fb1279dcc6db0cbfb0b6015d0ba7587759c5625a",
      "tree": "1dc8ad76981a01cfcec61e011281446c90a30c38",
      "parents": [
        "634423f3e7beaa6597bc805f91fc985340dbcc1e"
      ],
      "author": {
        "name": "Anish Aggarwal",
        "email": "ishitaaggarwal8@gmail.com",
        "time": "Wed Oct 21 23:16:13 2026"
      },
      "committer": {
        "name": "Anish Aggarwal",
        "email": "ishitaaggarwal8@gmail.com",
        "time": "Wed Oct 21 23:20:17 2026"
      },
      "message": "vp9: validate fb_idx in ctrl_set_svc_ref_frame_config\n\nContext:\nIn SVC bypass mode, caller-supplied frame buffer index arrays\n(lst_fb_idx, gld_fb_idx, alt_fb_idx) are copied into cpi-\u003esvc\nvia ctrl_set_svc_ref_frame_config().\n\nProblem:\nThe indices are copied without validation. During encoding, they index\nref_frame_map[REF_FRAMES] (8 slots) in get_ref_frame_buf_idx(),\nset_ref_sign_bias(), and ref_cnt_fb(). An out-of-range index causes\nan out-of-bounds read/write during encoding, the same defect class as\nthe temporal_layer_id fix in ctrl_set_svc_layer_id.\n\nBefore vs After Verification:\n  Configuration                 | Pre-Patch (HEAD~1)          | Post-Patch\n  ------------------------------+-----------------------------+--------------\n  Standard build / API tests    | OOB indices accepted; first | 0..7 pass:\n                                | inter frame reads map OOB   | VPX_CODEC_OK\n  Invalid index checks          | -1, 8, -2000000 accepted;   | Rejected:\n  (lst/gld/alt_fb_idx)          | crashes with SEGV / OOB     | returns\n                                | memory corruption           | INVALID_PARAM\n\nSolution:\nValidate every index against [0, REF_FRAMES) for each spatial layer\nbefore storing any of them, returning VPX_CODEC_INVALID_PARAM on\ninvalid input. -1 is rejected as well: it marks \"no reference\"\ninternally, but no consumer on this path checks for it, so accepting it\nwould index ref_frame_map[-1]. Add tests to\nEncodeAPI.SvcTestInvalidInputs.\n\nChange-Id: I618bf4301789b7c77774620d5d9c0439fb5fa9e9\n"
    },
    {
      "commit": "634423f3e7beaa6597bc805f91fc985340dbcc1e",
      "tree": "20760136f1cf43e804d7fe626ae57c86cc3a526f",
      "parents": [
        "0a6d123f0c8f9945ff464f7eae961931676d3d2c"
      ],
      "author": {
        "name": "Anish Aggarwal",
        "email": "ishitaaggarwal8@gmail.com",
        "time": "Wed Oct 21 11:55:38 2026"
      },
      "committer": {
        "name": "Anish Aggarwal",
        "email": "ishitaaggarwal8@gmail.com",
        "time": "Wed Oct 21 12:47:02 2026"
      },
      "message": "vp9: validate temporal_layer_id in ctrl_set_svc_layer_id\n\ntemporal_layer_id and temporal_layer_id_per_spatial[] are used to index\nsvc.layer_context[] (VPX_MAX_LAYERS entries) in\nvp9_one_pass_svc_start_layer(). Out-of-range values cause out-of-bounds\nreads/writes during encoding.\n\nValidate data-\u003etemporal_layer_id and each\ndata-\u003etemporal_layer_id_per_spatial[sl] against [0, ts_number_layers)\nbefore storing them in svc.\n\nChange-Id: If9953179d6c2a837fa9142405c7b751637bf5f6c\n"
    },
    {
      "commit": "0a6d123f0c8f9945ff464f7eae961931676d3d2c",
      "tree": "78ffb101d915ee84f4faf7513137bf80e2a69996",
      "parents": [
        "6cf3e2bea2c087025aa38736dfeade970b4085e3"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Oct 16 18:40:17 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Oct 19 21:13:05 2026"
      },
      "message": "vp9: Fix temporal denoiser buffer reallocation on resize\n\nIn vp9_change_config(), resetting and reallocating the\ntemporal denoiser buffers on a resolution change was only\nperformed when cpi-\u003esvc.number_spatial_layers \u003e 1 and\ncpi-\u003eoxcf.noise_sensitivity \u003e 0.\n\nFor single-layer encoding (or when noise_sensitivity is\ntoggled off before resizing and re-enabled afterward),\nincreasing the frame dimensions via vpx_codec_enc_config_set()\nkept the old smaller denoiser buffers allocated, leading to\na heap-buffer-overflow write in vp9_denoiser_denoise().\n\nMove the denoiser reset in vp9_change_config() outside the\ncpi-\u003esvc.number_spatial_layers \u003e 1 check and trigger it when\nnoise_sensitivity \u003e 0 or frame_buffer_initialized is set.\nAlso reset num_ref_frames and num_layers in vp9_denoiser_free(),\nand set initial cfg_.g_w and cfg_.g_h in the test\nOnePassCbrSvc1SL2TL_DenoiseResize.\n\nAdded unittest EncodeAPI.VP9DenoiserResolutionChange.\n\nBug: 573760540\nChange-Id: Ie91d12051429459a410cc95e4c22dd64dc1ef2f4\n"
    },
    {
      "commit": "6cf3e2bea2c087025aa38736dfeade970b4085e3",
      "tree": "6a31e5e739850b7fb7cd6d9c807b3aca49a92882",
      "parents": [
        "37f48364a79f1c887682d78dd6098b914778b6b6"
      ],
      "author": {
        "name": "Filippo Tedeschi",
        "email": "filippotedeschi98@gmail.com",
        "time": "Tue Oct 13 10:23:49 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sun Oct 18 05:10:18 2026"
      },
      "message": "vp9_set_roi_map: reject segment ids \u003e\u003d MAX_SEGMENTS\n\nvp9_set_roi_map() checks the dimensions and the per-segment values but\nnot the contents of the map. vpx_roi_map_t documents the ids as 0-7\nfor VP9, but a larger value is copied to the segmentation map and\nlater used to index per-segment arrays while encoding, for example\nno_pred_segcounts[] in count_segs(). VP8 ignores out-of-range ids when\nit encodes.\n\nReturn VPX_CODEC_INVALID_PARAM if a byte of the map is out of range.\nThe check is done after the early return that disables segmentation,\nso a map that is not going to be used is not validated. Add a test.\n\nI used an AI model to help audit this code and prepare the change and\nits test. I reviewed the diff, and the tests were run locally with\nASan and UBSan.\n\nChange-Id: I436b191bb1087491cf187be3a6d8e9e7bac2b9f4\n"
    },
    {
      "commit": "37f48364a79f1c887682d78dd6098b914778b6b6",
      "tree": "402ba8045099b08cba41e8afe147f1c1a084d4ef",
      "parents": [
        "940d99c8667968b7a1f5234e7159f07b1cda63fb"
      ],
      "author": {
        "name": "clang-format",
        "email": "noreply@google.com",
        "time": "Sun Oct 04 00:28:56 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Oct 16 20:09:11 2026"
      },
      "message": "apply clang-format-21\n\n(Debian clang-format version 21.1.8 (3))\n\nNo options in .clang-format needed to be updated.\n`ConstructorInitializerAllOnOneLineOrOnePerLine` is deprecated, but\nstill functional.\n\nBug: 569277013\nChange-Id: I3acad83be5ee435d729ec5f3faa2dcbfdcd01608\n"
    },
    {
      "commit": "940d99c8667968b7a1f5234e7159f07b1cda63fb",
      "tree": "eb79f09cde134b476c17fd988e8d73a512c44f01",
      "parents": [
        "63bcd588b50bd514c4590edaeae3d70813233ae7"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Oct 16 04:04:52 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Oct 16 17:23:57 2026"
      },
      "message": "vp9: Disallow svc config for 2-pass, remove legacy code\n\nIn VP9, SVC (spatial/temporal layering) is only supported for one-pass\nencoding, and two-pass encoding was already disallowed in ctrl_set_svc()\n(VP9E_SET_SVC) in commits 6c5123a3a and fe1e27249.\n\nHowever, validate_config() did not reject configurations with\nss_number_layers \u003e 1 or ts_number_layers \u003e 1 when g_pass !\u003d\nVPX_RC_ONE_PASS, and still retained the legacy multi-layer branch in\nthe VPX_RC_LAST_PASS stats validation. When vpx_codec_enc_init() was\ncalled with ss_number_layers \u003e 1, g_pass \u003d\u003d VPX_RC_LAST_PASS, and a\nstats buffer where layer 0 had \u003e\u003d 2 packets but total n_packets \u003c\nss_number_layers, computing the EOS packet pointer\n(buf + n_packets - cfg-\u003ess_number_layers + i) underflowed before the\nstart of rc_twopass_stats_in.buf, causing an out-of-bounds heap read.\n\nDisallow (cfg-\u003ess_number_layers \u003e 1 || cfg-\u003ets_number_layers \u003e 1) when\ncfg-\u003eg_pass !\u003d VPX_RC_ONE_PASS in validate_config(), and remove the\nunreachable legacy two-pass multi-layer code in validate_config(),\nvp9_create_compressor(), and vp9_svc_layercontext. Because multi-layer\ntwo-pass configurations are rejected and the legacy two-pass multi-layer\nstats validation code is removed, no separate bounds check in that\nremoved code path is needed.\n\nUpdated EncodeAPI.SvcTestInvalidInputs to verify two-pass multi-layer\ninit is rejected.\n\nBug: 574106931\nChange-Id: Ic612aefa415e05af3c9167a9537e6d38143084da\n"
    },
    {
      "commit": "63bcd588b50bd514c4590edaeae3d70813233ae7",
      "tree": "b87b04e1d0603ab829ad5a3c0e618b3608fd73a3",
      "parents": [
        "6a8917393da96b10f263f77e4dcd0dc7fbbd254b"
      ],
      "author": {
        "name": "Filippo Tedeschi",
        "email": "filippotedeschi98@gmail.com",
        "time": "Tue Oct 06 13:47:19 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Oct 13 19:02:17 2026"
      },
      "message": "vp8, vp9: Validate references in set/copy/get_reference controls\n\nCheck that the Y, U, and V plane pointers are non-NULL before\nconverting to YV12_BUFFER_CONFIG in:\n- VP8 decoder: vp8_set_reference(), vp8_get_reference()\n- VP9 encoder: ctrl_set_reference(), ctrl_copy_reference()\n- VP9 decoder: ctrl_set_reference(), ctrl_copy_reference()\n\nThis prevents NULL pointer dereferences in vpx_yv12_copy_frame()\nand complements the fix in 0a6f769 for bug 564326909. Also check\nreturn values of vp9_set_reference_enc() and\nvp9_copy_reference_enc().\n\nAdded unittests for VP8/VP9 decoder and VP9 encoder.\n\nBug: 564326909\nChange-Id: Idbecd524b7913f4db9b3eaa28b489e702bb7d91d\n"
    },
    {
      "commit": "6a8917393da96b10f263f77e4dcd0dc7fbbd254b",
      "tree": "ff328b05f59b8ebb22fce87d24c3f8f8315f2e09",
      "parents": [
        "2c6ece8c4a73b84eee31d1fb245121c71240e9ea"
      ],
      "author": {
        "name": "Erik Språng",
        "email": "sprang@chromium.org",
        "time": "Sun Oct 11 14:35:42 2026"
      },
      "committer": {
        "name": "Erik Språng",
        "email": "sprang@chromium.org",
        "time": "Tue Oct 13 06:57:17 2026"
      },
      "message": "[vp8] Use unfiltered source frame for PSNR with denoiser\n\nWhen denoising is enabled (noise_sensitivity \u003e 0), vp8_denoiser_filter_uv()\nand vp8_de_noise() modify cpi-\u003eSource in-place during encoding. Previously,\ngenerate_psnr_packet() and internal PSNR stats compared the reconstructed\nframe against cpi-\u003eSource after it had been modified in-place by the\ndenoiser.\n\nPreserve a copy of the unfiltered source frame in cpi-\u003eraw_source_frame\nwhen PSNR calculation and denoising are enabled, and use it as the\nreference frame for PSNR calculation.\n\nChange-Id: If125ac32961c4007ce18944657eda57618a97df0\nBug: 571976041\n"
    },
    {
      "commit": "2c6ece8c4a73b84eee31d1fb245121c71240e9ea",
      "tree": "5a6a01fe56db1437e116f24b3412d90e4ef86102",
      "parents": [
        "ed2a5b572f0f62a72d2e483dd3031841f08fb343"
      ],
      "author": {
        "name": "Erik Språng",
        "email": "sprang@chromium.org",
        "time": "Sun Oct 11 14:31:35 2026"
      },
      "committer": {
        "name": "Erik Språng",
        "email": "sprang@chromium.org",
        "time": "Mon Oct 12 18:04:18 2026"
      },
      "message": "Use unfiltered source frame for PSNR with denoiser\n\nWhen CONFIG_VP9_TEMPORAL_DENOISING is enabled and noise_sensitivity \u003e 0,\nvp9_denoiser_denoise() filters cpi-\u003eSource in-place during encoding.\nPreviously, cpi-\u003eraw_source_frame pointed directly to cpi-\u003eSource unless\nENABLE_KF_DENOISE was defined, causing VPX_CODEC_PSNR_PKT and internal\nPSNR stats to compare the reconstructed frame against the denoised\nsource rather than the original input frame.\n\nPreserve the unfiltered input frame in cpi-\u003eraw_unscaled_source (and\ncpi-\u003eraw_scaled_source when spatial scaling is active) when PSNR\ncalculation and temporal denoising are enabled, and point\ncpi-\u003eraw_source_frame to the unfiltered buffer.\n\nChange-Id: I5035c3407c39f63be7c7832a69c4cc2681361cdf\nBug: 571976041\n"
    },
    {
      "commit": "ed2a5b572f0f62a72d2e483dd3031841f08fb343",
      "tree": "d878ba748e76c72b1f674c1066f55ebb02b3d98e",
      "parents": [
        "0a6f769e44989222d99ded46daa1e9763637cc19"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Oct 08 04:09:30 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Oct 08 05:44:36 2026"
      },
      "message": "vp8: clear cached resolution on thread restart failure\n\nIn vp8_decode(), vp8_peek_si_internal() updates ctx-\u003esi.w and ctx-\u003esi.h\nfrom the keyframe header before restarting decode threads. If\nvp8_decoder_create_threads() or vp8mt_alloc_temp_buffers() fails in the\nrestart_threads block, the setjmp handler returned VPX_CODEC_ERROR\nwithout clearing ctx-\u003esi.w and ctx-\u003esi.h.\n\nOn subsequent decode calls with a keyframe of the same new dimensions,\nresolution_change stayed 0 and frame buffer reallocation was skipped\nwhile temporary multithread row buffers were allocated for the new\nwidth, causing a heap-buffer-overflow in vp8mt_decode_mb_rows().\n\nClear ctx-\u003esi.w and ctx-\u003esi.h in the restart_threads error handler so a\nfull reallocation is triggered on resync.\n\nAdded unittest.\n\nBug: 571147583\nChange-Id: Ic16476a531796751017182a1ef726756353f49d1\n"
    },
    {
      "commit": "0a6f769e44989222d99ded46daa1e9763637cc19",
      "tree": "dbfdba43c9305cf7658d0a99f278ae39c74ddfbe",
      "parents": [
        "021170248a2928c7af57444db8b18bcfe97cbe48"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Sep 29 20:09:45 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Sep 30 18:46:04 2026"
      },
      "message": "vp8: Validate references in vp8e_set/get_reference\n\nCheck that the Y, U, and V plane pointers are non-NULL in\nvp8e_set_reference() and vp8e_get_reference() before\nconverting to YV12_BUFFER_CONFIG.\n\nAdded unittest.\n\nNote that the PoC in the bug report has an error in the fuzz\ndriver: it calls the internal vpx_codec_control_() (bypassing\nthe type-checked vpx_codec_control() macro) and\npasses an int instead of a vpx_ref_frame_t * pointer for\nVP8_SET_REFERENCE.\n\nBug: 564326909\nChange-Id: I2580ca9a53ab67bf06d79cbea0711300d1cf605a\n"
    },
    {
      "commit": "021170248a2928c7af57444db8b18bcfe97cbe48",
      "tree": "c2c37d76e0eb5e734e3501750168a5f7263a03bc",
      "parents": [
        "deaac25491db2edc430c2a71031109b65c23d1f1"
      ],
      "author": {
        "name": "Philipp Hancke",
        "email": "philipp.hancke@googlemail.com",
        "time": "Sun Sep 27 10:00:53 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Sep 29 17:48:26 2026"
      },
      "message": "vp8: document handling of corrupt frames\n\nvpx_codec_decode() can return VPX_CODEC_OK for a corrupted VP8 frame,\ne.g. when data is missing from the last token partition. Document that\ncallers must query VP8D_GET_FRAME_CORRUPTED after every decode.\n\nBug: chromium:561396583\nChange-Id: I07f1e495e81a1ff51bf2502b7a64b8c1744bb764\n"
    },
    {
      "commit": "deaac25491db2edc430c2a71031109b65c23d1f1",
      "tree": "5c939237d27f039c58dd0acea8739d7e16ea4300",
      "parents": [
        "a6d2b2afa63d0a89660c0928d8a263b4d6a2175a"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Sep 28 17:58:01 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Sep 28 21:11:11 2026"
      },
      "message": "vp8: Validate ss_number_layers and factor den in validate_config\n\nAdd range checks in vp8 validate_config() for ss_number_layers\n(1..VPX_SS_MAX_LAYERS) and kf_frame_max_boost_first_factor.den,\nand perform all scalar config range checks before dereferencing\nrc_twopass_stats_in.buf when g_pass \u003d\u003d VPX_RC_LAST_PASS.\n\nAdd unittest.\n\nBug: 564326761\nChange-Id: I57edc6e3f8b51caf666bc40ea20352c2b2b01e64\n"
    },
    {
      "commit": "a6d2b2afa63d0a89660c0928d8a263b4d6a2175a",
      "tree": "34038616dd630fda51d0830c93baa59f68935b29",
      "parents": [
        "5e680f30801d03c21078f8c4b772464752516211"
      ],
      "author": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Wed Sep 23 18:25:17 2026"
      },
      "committer": {
        "name": "Luis Horna Carranza",
        "email": "luis.horna@arm.com",
        "time": "Wed Sep 23 18:25:17 2026"
      },
      "message": "Fix incorrect stride for buffer access\n\nUse the destination stride when accessing the destination buffer in\ncopy_mem64x64 and rd_pick_intra4x4block. Add a copy_mem64x64\nregression test that uses a 16x16 checkerboard and frame buffers with\ndifferent strides.\n\nChange-Id: I3bf8b6232185a76236d879b1c6726192a0faccac\n"
    },
    {
      "commit": "5e680f30801d03c21078f8c4b772464752516211",
      "tree": "b4773bfd7174c61f07d3cdfd3250585cdd816506",
      "parents": [
        "fcc9ba864d5540a94c6dceb859c35d42dfddf50b"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Sep 14 21:35:29 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Sep 16 18:43:00 2026"
      },
      "message": "vp8: propagate worker thread errors in vp8mt_decode_mb_rows\n\nIf a worker thread encounters a bitstream error\n(e.g. truncated/corrupt partition), it longjmps to\nthread_decoding_proc() and records the error code in\nmbd-\u003eerror_info. However, this error was never checked or\npropagated back to the main thread in vp8mt_decode_mb_rows().\n\nAs a result, the multi-threaded decoder treated the corrupted\nframe as successfully decoded and returned a partially written\nframe containing uninitialized or stale memory.\n\nFix is to reset mbd-\u003eerror_info.error_code per frame in\nsetup_decoding_thread_data(), and check each worker thread\u0027s\nerror_info after worker threads finish decoding. If any worker\nencountered an error, propagate it back to the caller and fail\nthe frame.\n\nUnittest added.\n\nBug: 559707641\nChange-Id: I8f50fbc35f0ce6e59718a5e7445b20969133299f\n"
    },
    {
      "commit": "fcc9ba864d5540a94c6dceb859c35d42dfddf50b",
      "tree": "44c55ae1273f1d43ac2c5b95a98bb96b9cb75ce0",
      "parents": [
        "ca46065bc454a67ba7fd499356abc366783e48cd"
      ],
      "author": {
        "name": "Darren Carreras",
        "email": "carrerasdarren@gmail.com",
        "time": "Sat Sep 05 04:12:10 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Sep 15 19:44:47 2026"
      },
      "message": "vpx_image: round chroma height for external odd-height buffers\n\nvpx_img_wrap() leaves external image heights unrounded, but\nvpx_img_set_rect() uses a floor-divided chroma height to locate the\nsecond planar chroma plane. With an odd image height, the second\nplane starts one row early and aliases the last row of the first.\n\nRound the chroma height up when advancing between planar U and V\ndata, and cover the affected 8-bit and high-bit-depth formats with\na regression test.\n\nAssisted-by: OpenAI Codex\nChange-Id: I76fd32297c9e58e273b533606fd98bd683ba8072\n"
    },
    {
      "commit": "ca46065bc454a67ba7fd499356abc366783e48cd",
      "tree": "087a653f3231307b8296308e879d6290bc882687",
      "parents": [
        "836a540f0f10e0d4a8f3b4eda63e8cbdae8a76e9"
      ],
      "author": {
        "name": "Darren Carreras",
        "email": "carrerasdarren@gmail.com",
        "time": "Thu Sep 10 20:59:17 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Sep 15 19:41:00 2026"
      },
      "message": "vpx_img_set_rect: reject vertically flipped images\n\nReplace the flip-and-restore approach from 01a78fbc3 with an early\nfailure when the image has negative luma stride. This follows Wan-Teh\nChang\u0027s request and leaves the descriptor unchanged on rejection.\nExisting rectangle bounds checks remain in place.\n\nReplace the flip/crop commutativity test with ordinary allocated 4x4\nimages covering rejection, unchanged viewport state, normal cropping,\nand cropping after flipping back. Use an even-offset 2x2 crop to make plane\npointer changes observable, snapshot only the used plane pointers, and\ncheck the Y-plane pointer after the final crop. Document the API\nrestriction.\n\nDiscussion: https://chromium-review.googlesource.com/c/webm/libvpx/+/8219547/comment/ea8eaa6a_8fe3b3b2/\n\nTest: five selected VpxImageTest cases pass in a codec-disabled generic\nbuild.\n\nAssisted-by: OpenAI Codex\nChange-Id: I344548df2ca31a3b9ae7f6559675002c139aa79d\n"
    },
    {
      "commit": "836a540f0f10e0d4a8f3b4eda63e8cbdae8a76e9",
      "tree": "50cf0f77b5a3b6c1046773a111414418cc6b35dc",
      "parents": [
        "d2413e2ca11039724ca33bb4d661ca2c94cb501e"
      ],
      "author": {
        "name": "David Sarkisyan",
        "email": "david@srkyn.com",
        "time": "Thu Sep 10 17:05:41 2026"
      },
      "committer": {
        "name": "David Sarkisyan",
        "email": "david@srkyn.com",
        "time": "Thu Sep 10 17:07:27 2026"
      },
      "message": "vp8: clear completed fragment input after decode errors\n\nChange-Id: Id8d3ee8e64079d7907a3d12942a764657f12b64f\nSigned-off-by: David Sarkisyan \u003cdavid@srkyn.com\u003e\n"
    },
    {
      "commit": "d2413e2ca11039724ca33bb4d661ca2c94cb501e",
      "tree": "c00eb2ea25a34bad30a137a1b69943eb377797a2",
      "parents": [
        "5c880e08d21386049adec8e5537c4e726458b563"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Mon Aug 31 20:09:13 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Sep 01 14:12:42 2026"
      },
      "message": "vp8: clamp 16x16 chroma MV instead of returning early\n\nvp8_build_inter16x16_predictors_mb() derives the chroma MV from the\nalready-clamped luma MV and then applies fullpixel_mask. With bitstream\nversion 3 (full_pixel \u003d\u003d 1, mask \u003d\u003d ~7) the round-down can move the\nresult just past the border tap window. The previous bounds check\n(introduced in 8a800b52ea for oss-fuzz:14478) returned early in that case,\nleaving dst_u and dst_v unwritten for the macroblock.\n\nClamp the chroma MV with clamp_uvmv_to_umv_border() instead, mirroring\nwhat the SPLITMV path already does in build_4x4uvmvs(). The clamp uses\nthe same comparisons as the removed check, so output is byte-identical\nwhenever the check would not have fired, while ensuring dst_u/dst_v\nare always written and reference reads remain in bounds.\n\nAdd BuildInterPredictorTest.FullPixelChromaMVAlwaysWritesUV to\ntest/predict_test.cc covering the (0, -152) and (-152, 0) edge MVs.\n\nBug: 504638005\nTAG\u003dagy\nCONV\u003d39df291c-bf9e-4b58-b478-c14f8a300860\n\nChange-Id: I250617babd2ca791b68aa52f9bb6a5ecea86b4c2\n"
    },
    {
      "commit": "5c880e08d21386049adec8e5537c4e726458b563",
      "tree": "f0dbd392bac5016f7de97a3d967921280bfc6e10",
      "parents": [
        "0caef9fd2ef6108ae69025d8e113bca921c09f90"
      ],
      "author": {
        "name": "Philipp Hancke",
        "email": "philipp.hancke@googlemail.com",
        "time": "Thu Aug 27 10:59:56 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Aug 27 16:55:36 2026"
      },
      "message": "vp8: swap denoiser INTRA average instead of copying\n\nupdate_reference_frames() copied a full frame per encoded frame when\ntemporal denoising is on. Every macroblock of the next inter frame\nrewrites the INTRA_FRAME running average anyway before it is read again\nso this can be used for swapping.\n\nVP9 and AV1 already do the same in vp9_denoiser_update_frame_info() and\nav1_denoiser_update_frame_info() respectively (luma only)\n\nNote: kDenoiserOnYOnly still copies, chroma is not written in that mode.\n\nBug: webm:553121434\nChange-Id: I2fc4f927953be1c27e42cb3a9714c67bb3a85e64\n"
    },
    {
      "commit": "0caef9fd2ef6108ae69025d8e113bca921c09f90",
      "tree": "f91c23e7bbc4d407e9b30d78d1ea18d411ba4bc3",
      "parents": [
        "ac888d610ffdd02a98878132be3b2bde8fb0df66"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Aug 26 18:41:09 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Aug 27 16:47:40 2026"
      },
      "message": "vp8: reset above_context in init_encode_frame_mb_context\n\nWhen encoding multiple frames with VP8_TUNE_SSIM,\nxd-\u003eabove_context was not reset during frame context\ninitialization. This caused xd-\u003eabove_context to retain\nan out-of-bounds pointer from the end of the previous\nframe\u0027s macroblock row traversal, leading to a heap buffer\noverflow in vp8_optimize_mby() during build_activity_map().\n\nUnittest added.\n\nBug: 550179428\nChange-Id: I3b33fc3e6d1670c2e5e7952508c9097b48ecf0cf\n"
    },
    {
      "commit": "ac888d610ffdd02a98878132be3b2bde8fb0df66",
      "tree": "88f78506fe8c87c48cef323252a0b96b81885e02",
      "parents": [
        "3ffe23d874a1b454e02be57f3e025d4aa70d6de0"
      ],
      "author": {
        "name": "Max van Amersfort",
        "email": "v.amersfort@gmail.com",
        "time": "Tue Aug 25 12:48:13 2026"
      },
      "committer": {
        "name": "Max van Amersfort",
        "email": "v.amersfort@gmail.com",
        "time": "Wed Aug 26 06:25:03 2026"
      },
      "message": "vp8: reject frames above configured size limit early\n\nChange-Id: I9d1038e9b5cb311433ac940ee16f27b175c1e821\n"
    },
    {
      "commit": "3ffe23d874a1b454e02be57f3e025d4aa70d6de0",
      "tree": "c3716a5d46bb5ceace18c3312f7255f5e2e7412d",
      "parents": [
        "136e7eeefb9c897f796bcf66106f928be79b1178",
        "6df3ec34557879fff673706f4a1d9fbd0f3a6f0e"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Fri Aug 21 14:47:18 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Aug 25 14:44:31 2026"
      },
      "message": "Merge tag \u0027v1.17.0\u0027\n\n2026-08-07 v1.17.0 \"Yellowbilled Duck\"\n\n  This release includes a new encoder control to validate high bitdepth input,\n  additional Neon and AVX2/AVX512 optimizations, support for the C11 standard,\n  and numerous bug fixes.\n\n  - Upgrading:\n    This release is ABI compatible with the previous release.\n\n    ISO C11 standard is now enforced for C files.\n\n    SVC is now strictly disallowed for 2-pass encoding; enabling it will return\n    VPX_CODEC_INVALID_PARAM.\n\n    VP9 High Bitdepth (HBD) input validation is now enabled by default. If the\n    input contains values outside the valid range, the encoder will return\n    VPX_CODEC_INVALID_PARAM. Use the new VP9E_SET_VALIDATE_HBD_INPUT control\n    (or vpxenc --validate-hbd-input\u003d0) to disable this validation.\n\n    VP9 now sets the returned image width (w) and height (h) to the actual\n    width and height, rather than the stride and aligned height. This is a\n    behavior change that may affect applications relying on w being equal to the\n    stride or h being the aligned height.\n\n    Strict validation has been added to some APIs:\n    - Encoders (VP8/VP9) now reject input images with unequal U and V strides.\n    - vpx_img_alloc() and vpx_img_wrap() now strictly validate the image format.\n    - External rate control (RTC) API now validates configuration inputs.\n    - VP9 SVC now validates spatial layer ID input.\n\n  - Enhancement:\n    Added Arm Neon DotProd subpel variance paths.\n    Optimized Neon HBD sadx4d and sad_skipx4d functions.\n    Added AVX2/AVX512 implementations for various vpx_highbd predictor\n    functions.\n    Added support for MSVC v145 (Visual Studio 2026).\n    Added configure option --disable-x86-asm.\n\n  - Bug fixes:\n    Fix to heap buffer overflow / out-of-bounds write in vp9_postproc,\n    vp8-multi-res-encoding, vpx_setup_noise, set_mb_ssim_rdmult_scaling,\n    vp9_change_config (resolution change), vp9_dec_alloc_row_mt_mem (decode\n    coeffs), and vp8_sixtap_predict (LoongArch).\n\n    Fix to integer overflow in vp9-svc (layer resolution, duration),\n    set_mb_ssim_rdmult_scaling, vp8_encode_frame, calc_pframe_target_size,\n    y4minput buffer size calculations, and get_token_alloc.\n\n    Fix to VP8 decoder crash on flush with no fragments.\n    Fix to VP8 decoder potential hang/slowdown with corrupt partition 0 size.\n    Fix to VP9 decoder crash with invalid reference frame index.\n    Fix to VP9 highbitdepth encoder format mismatch.\n    Fix to VP9 float-to-int overflow in validate_config (EOS count) and with\n    zero bitrate.\n\n    Fix to VP8 decoder multithreading corruption flag reset at start of\n    frame.\n\n    Fix to VP8 decoder accepting inter frames on resolution change before\n    keyframe.\n\n    Fix to VP8 encoder reference frame dimension validation.\n    Fix to VP8 encoder temporal layer ID validation.\n    Fix to VP8 encoder missing setjmp in VP8E_SET_SCALEMODE.\n\n    Fix to VP9 SVC encoder crash with dynamic resize and cyclic refresh\n    (aq_mode\u003d3).\n    Fix to VP9 1-pass rate control last_boosted_qindex clamping and\n    VP9E_SET_QUANTIZER_ONE_PASS validation.\n\n    Fix to NV12 x_chroma_shift calculation in vpx_image and image2yuvconfig.\n    Fix to AVX-512 CPU feature detection on older x86 CPUs.\n    Fix to x86_abi_support.asm placing read-only data tables in .rdata for\n    Windows.\n    Fix to configure disabling _FORTIFY_SOURCE on Linux.\n    Fix to file leaks on error paths in vpxdec and video reader/writer\n    utilities.\n\n    Fix to crash/undefined behavior in vpx_img_flip with formats without alpha.\n\nChange-Id: Ic06f746c8d517fcd145f00e50ee6c956f238d100\n"
    },
    {
      "commit": "136e7eeefb9c897f796bcf66106f928be79b1178",
      "tree": "651d837f02e50d8e6f049313359ce04f3688fd4e",
      "parents": [
        "74bcf11247b8fd0ce0f882f9c571a414ef6e2a55"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 24 18:22:29 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 24 18:22:29 2026"
      },
      "message": "vp8cx.h: Document param type of VP9E_SET_VALIDATE_HBD_INPUT\n\nVP9E_SET_VALIDATE_HBD_INPUT takes an int parameter.\n\nBased on a change in libaom:\n 2da1a47e6e Document parameter types of two codec controls\n\nChange-Id: I4f26abe4dd9c28200ffd8bda6416ed1f35ded484\n"
    },
    {
      "commit": "6df3ec34557879fff673706f4a1d9fbd0f3a6f0e",
      "tree": "f83d33a1ba18b3a203e43596b5223042b62417a3",
      "parents": [
        "912ff9ab8f24e3e507095d0cd22a253a6285147e"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Thu Aug 20 16:41:10 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Thu Aug 20 19:06:35 2026"
      },
      "message": "Update CHANGELOG\n\nBug: 521840360\nChange-Id: I1cc90a0a8668bbfcd7e62f113fb3a6968c818fbf\n"
    },
    {
      "commit": "74bcf11247b8fd0ce0f882f9c571a414ef6e2a55",
      "tree": "90850649b90a948ee17f48d6e6a48ff0e6da85b4",
      "parents": [
        "5ae5478f99abbe42101906d955458b3c98b587dd"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Aug 14 20:15:57 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Aug 19 20:55:06 2026"
      },
      "message": "img_alloc_helper: correct UV stride w/external buffers\n\nWhen an external buffer is wrapped using `vpx_img_wrap()`, the width and\nheight are used unmodified. The width is used to set the stride in bytes\nof the Y plane. This is then used to calculate the UV strides, which may\nbe subsampled. When the width is odd, the U \u0026 V strides are rounded up\nwhen subsampling. Previously the calculation did not take this into\naccount, so if the strides were used to allocate external buffers, they\nwould be 1 entry short. This only affected external buffers because when\nthe buffer is allocated internally, it is aligned to a power of 2.\n\nFixes a buffer over read in VP8/VP9 when the strides returned from\n`vpx_img_wrap()` are used to allocate the UV plane buffers for\nsubsampled formats.\n\nBug: 545229683\nChange-Id: Ic91b233859e39f08cad88a82dbff108c8ebcaa2c\n"
    },
    {
      "commit": "912ff9ab8f24e3e507095d0cd22a253a6285147e",
      "tree": "32e848620401c8434cb1450dde994c1a152f5034",
      "parents": [
        "86ecca1d566d4e892e8100933832a9510d68a039"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Aug 06 19:32:40 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Aug 19 18:21:56 2026"
      },
      "message": "configure: don\u0027t disable _FORTIFY_SOURCE\n\nThis was added long ago as an attempt for compatibility across glibc\nversions. Formalizing it in the build was never a great idea as this\nprovides some security benefits. Projects like Gentoo have removed this\nfrom the build flags for some time.\n\nCFLAGS/--extra-cflags can still be used to set these values if needed.\n\nBug: 42330682, 42330852\nChange-Id: Ic4684ea718aa5a8976a3b8b45f2e31ae13d48a29\nFixed: 42330852\n(cherry picked from commit 368c5f89d7cedc67abec628609c9a00c79d89a94)\n"
    },
    {
      "commit": "5ae5478f99abbe42101906d955458b3c98b587dd",
      "tree": "6fede5d7067bad6e4db173206e38f53a00398036",
      "parents": [
        "0a20ac5f032cc6d2ee38873e1f9b0b83dce21a0c"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 17 19:31:09 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 17 22:21:51 2026"
      },
      "message": "deblock_msa: support non-mulitple of 16 widths\n\nThis fixes a test failure in\n`MSA/VpxPostProcDownAndAcrossMbRowTest.CheckCvsAssembly/0` after\nadditional widths were added in:\n 8729fc25e deblock_sse2: support non-mulitple of 16 widths\n\nChange-Id: I11750a24ef8dedbc4bac7b5aa65b1ec69c9717e3\n"
    },
    {
      "commit": "0a20ac5f032cc6d2ee38873e1f9b0b83dce21a0c",
      "tree": "6c933305e41297867e19b8140611dd819b64ed0e",
      "parents": [
        "37d68e6cbafd1f5d9942e83dfe98a85c9d2fc279"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 17 19:27:28 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 17 22:21:51 2026"
      },
      "message": "VpxPostProcDownAndAcrossMbRowTest: add SCOPED_TRACE\n\nThis helps disambiguate failures in the newly added resolutions in:\n 8729fc25e deblock_sse2: support non-mulitple of 16 widths\n\nChange-Id: Ibda78c8f4b462829f5e6f8c7eee0731598ebeb6c\n"
    },
    {
      "commit": "37d68e6cbafd1f5d9942e83dfe98a85c9d2fc279",
      "tree": "4fc2dd86c6c4793dd7edd5dd2e58ce926c02dc27",
      "parents": [
        "8729fc25eaaace0736e6a2e1da3cd307f75446fc"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 17 20:59:40 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Aug 17 21:01:04 2026"
      },
      "message": "deblock_sse2: add stdlib.h for abs()\n\nFixes a build warning under Visual Studio:\n\n```\nvpx_dsp\\x86\\deblock_sse2.c(55): warning C4013: \u0027abs\u0027 undefined; assuming\nextern returning int\n```\n\n+ remove stdio.h, it\u0027s unused\n\nChange-Id: Iba08120d53c74fb8f80953e67814a45826871158\n"
    },
    {
      "commit": "8729fc25eaaace0736e6a2e1da3cd307f75446fc",
      "tree": "840e68533ac918023de669e20990e4f2e543a15e",
      "parents": [
        "01a78fbc3b25c6a9eb227973bd591e9092d6daa1"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Aug 13 21:11:41 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Aug 14 04:01:42 2026"
      },
      "message": "deblock_sse2: support non-mulitple of 16 widths\n\nThis fixes a performance regression after the over read in\ndeblock_sse2.asm was avoided in:\n 0bf066a45 deblock_sse2.asm: use C func w/non-multiple of 16 widths\n\nBug: 539820403\nChange-Id: Ic7ada9bd4ec7a6af2a87b7a4b37e7f87060a1097\nFixed: 539820403\n"
    },
    {
      "commit": "01a78fbc3b25c6a9eb227973bd591e9092d6daa1",
      "tree": "b80dcc75aea0cbaa1852459e0eee9e39490de458",
      "parents": [
        "9cc8e1c18024d6b64422ecb7fdd7a43c8e873908"
      ],
      "author": {
        "name": "Darren Carreras",
        "email": "carrerasdarren@gmail.com",
        "time": "Thu Aug 06 23:55:08 2026"
      },
      "committer": {
        "name": "Darren Carreras",
        "email": "carrerasdarren@gmail.com",
        "time": "Wed Aug 12 18:54:55 2026"
      },
      "message": "vpx_img_set_rect: preserve flipped orientation\n\nvpx_img_set_rect() rebuilds plane pointers from img_data. After\nvpx_img_flip(), using negative strides while walking plane storage can\nleave those pointers before the allocation.\n\nTemporarily normalize the strides while calculating the new viewport,\nthen restore the flipped orientation. Cover all supported image formats\nand the empty-viewport transition.\n\nChange-Id: I6f09cd84cefe8334f93915a10180a18dcc3943eb\n"
    },
    {
      "commit": "9cc8e1c18024d6b64422ecb7fdd7a43c8e873908",
      "tree": "494b7d8efe3913837bcb51465afcf420f3a1d2eb",
      "parents": [
        "e4fbbbf5c0a23d2b9cd9ed117bc1bd4dc76148b5"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Aug 11 15:59:52 2026"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Aug 11 16:15:04 2026"
      },
      "message": "Cast (height - 1) to ptrdiff_t in vpx_img_flip()\n\nvpx_img_flip() casts (height - 1) to `signed` before multiplying it with\nstride. Change the `signed` casts to `ptrdiff_t` casts to avoid\noverflows on 64-bit systems.\n\nSince the img-\u003eplanes[] buffers have been allocated successfully, the\n(height - 1) * stride products can be represented in the `ptrdiff_t`\ntype, so the `ptrdiff_t` casts won\u0027t truncate (height - 1).\n\nChange-Id: I27e0b5de73ff443aebecbd090827a9349a783517\n"
    },
    {
      "commit": "e4fbbbf5c0a23d2b9cd9ed117bc1bd4dc76148b5",
      "tree": "7cbbe69a854fd24f0144c3b135a5039b186cfeaa",
      "parents": [
        "0cfc6da392f48f8337a74d446e522f8258c27283"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Aug 04 17:33:54 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Aug 11 14:47:42 2026"
      },
      "message": "vpx_img_flip: fix chroma height calculation\n\nRound chroma height up for odd display heights to prevent OOB read.\n\nBug: 541725398\nFixed: 541725398\nChange-Id: I8aa78ed2e9d1d4ebfe99892418b8755cbc562cf6\n"
    },
    {
      "commit": "86ecca1d566d4e892e8100933832a9510d68a039",
      "tree": "40564a8d7d1fd48063995e2b5d2145c4cdbeddce",
      "parents": [
        "8b3ce4cfa488a6468b52cb0fba56a5de979bedec"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Fri Aug 07 14:56:10 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Fri Aug 07 15:38:33 2026"
      },
      "message": "Update CHANGELOG for v1.17.0 release\n\nAdd cherry-picked bug fixes to CHANGELOG.\n\nChange-Id: I3e98bc3339024df2045d675521f4dd04c3aea98b\n"
    },
    {
      "commit": "0cfc6da392f48f8337a74d446e522f8258c27283",
      "tree": "139909ddbfe4744b512faa237c4ec7f93de31f1d",
      "parents": [
        "368c5f89d7cedc67abec628609c9a00c79d89a94"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Aug 06 20:19:26 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Aug 06 23:21:26 2026"
      },
      "message": "vp[89]_cx: sanitize g_error_resilient\n\nOnly extract the valid portion of the bitfield when configuring the\nencoder. In VP9 this value is treated as a boolean and a bit is written\nto the bitstream. When given a negative value, a ubsan warning will be\nproduced as the bit is extracted and placed using a shift:\n\n```\nvpx_dsp/bitwriter_buffer.c:48:30: runtime error: left shift of negative\n  value -15728640\n #0 in vpx_wb_write_bit vpx_dsp/bitwriter_buffer.c:48:30\n #1 in write_uncompressed_header vp9/encoder/vp9_bitstream.c:1276:3\n #2 in vp9_pack_bitstream vp9/encoder/vp9_bitstream.c:1425:3\n```\n\nBug: 496807676\nChange-Id: I760e4dc5375f27a8a76a348ce71edbf03c941c93\n"
    },
    {
      "commit": "368c5f89d7cedc67abec628609c9a00c79d89a94",
      "tree": "aab426775e636492df673bd10bee52eec9e9070b",
      "parents": [
        "251f0168c042861763f73b744f0b3583c70431a2"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Aug 06 19:32:40 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Aug 06 19:32:40 2026"
      },
      "message": "configure: don\u0027t disable _FORTIFY_SOURCE\n\nThis was added long ago as an attempt for compatibility across glibc\nversions. Formalizing it in the build was never a great idea as this\nprovides some security benefits. Projects like Gentoo have removed this\nfrom the build flags for some time.\n\nCFLAGS/--extra-cflags can still be used to set these values if needed.\n\nBug: 42330682, 42330852\nChange-Id: Ic4684ea718aa5a8976a3b8b45f2e31ae13d48a29\nFixed: 42330852\n"
    },
    {
      "commit": "8b3ce4cfa488a6468b52cb0fba56a5de979bedec",
      "tree": "df7fc56eb03e9c21967f70c2f7342298ed9f316d",
      "parents": [
        "c69a752a941dff385a6f8360845e9fa9b9b5a923"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 30 02:13:39 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Aug 04 17:26:58 2026"
      },
      "message": "x86_abi_support.asm: use .rdata for win32/win64\n\nInstead of `.rodata`. This fixes a non-zero exit code from nasm 3.0\nwhich cause Visual Studio builds to fail. This also matches x86inc.asm.\n\nBug: 540261859\nFixed: 540261859\nChange-Id: Ic869fb72622f122aa959922539b8956a23ea0069\n(cherry picked from commit 251f0168c042861763f73b744f0b3583c70431a2)\n"
    },
    {
      "commit": "251f0168c042861763f73b744f0b3583c70431a2",
      "tree": "ee67fd686c6f9ccf73c68996bbe569f1760671b4",
      "parents": [
        "3e25f224f5f196e6c115350d2ff778d04b783ab2"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 30 02:13:39 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Aug 04 17:25:17 2026"
      },
      "message": "x86_abi_support.asm: use .rdata for win32/win64\n\nInstead of `.rodata`. This fixes a non-zero exit code from nasm 3.0\nwhich cause Visual Studio builds to fail. This also matches x86inc.asm.\n\nBug: 540261859\nFixed: 540261859\nChange-Id: Ic869fb72622f122aa959922539b8956a23ea0069\n"
    },
    {
      "commit": "3e25f224f5f196e6c115350d2ff778d04b783ab2",
      "tree": "cc438385e5d7e4103a0ebc236841e84ddf69d79a",
      "parents": [
        "67b24f2d3fa51464bd149f84235db9910ac44aae"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jul 31 17:12:49 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jul 31 23:16:56 2026"
      },
      "message": "vp8: fix to denoiser under resize and denoiser toggling\n\nWhen the resolution changes while noise sensitivity (denoiser)\nis disabled, denoiser buffer reallocation is skipped. If the\ndenoiser is then enabled without a resolution change, the denoiser\nkeeps using the old/previous buffers, which results in a\nheap-buffer-overflow.\n\nFix this by always freeing the denoiser in the function\ndealloc_raw_frame_buffers() when resolution changes, and reset\nthe buffer pointers to NULL. This will trigger realloc at the\ncorrect/new resolution when the denoised is re-enabled.\n\nUnittest added.\n\nBug: 540945422\nChange-Id: Ia3d2deeef3a40943d2f2730d4073f8687502fbb6\n"
    },
    {
      "commit": "67b24f2d3fa51464bd149f84235db9910ac44aae",
      "tree": "177918f8a4a2a32ff0366fc967f556b5704f5a7a",
      "parents": [
        "4c81591cffcc012655334ef27f41f2e8d0b7f4c2"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jul 31 04:56:39 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jul 31 21:29:55 2026"
      },
      "message": "vp9-rtc: Fix to cpi-\u003econtent_state_sb_fd on resize\n\nAllocate it based on the initial_width/height. And\nadd a free and set to NULL during the resolution reallocation\nblock in vp9_change_config.\n\nAdded unittest.\n\nBug: 540943267\nChange-Id: Ia8e67b4d52c0fad5a98165007cb2c46c0a5d462f\n"
    },
    {
      "commit": "4c81591cffcc012655334ef27f41f2e8d0b7f4c2",
      "tree": "dce5606702478b93f3482c8beb84915690ee0d19",
      "parents": [
        "4780fac9612992f8584227ea508c298fe8c01d05"
      ],
      "author": {
        "name": "Jingning Han",
        "email": "jingning@google.com",
        "time": "Fri Jul 31 16:51:04 2026"
      },
      "committer": {
        "name": "Jingning Han",
        "email": "jingning@google.com",
        "time": "Fri Jul 31 18:49:49 2026"
      },
      "message": "Apply a clamp to the cumulative bit-rate\n\nBug: webm:497896136\n\nChange-Id: I480d9876e80fb7b07b18a554635974f547d3c2cb\n"
    },
    {
      "commit": "4780fac9612992f8584227ea508c298fe8c01d05",
      "tree": "ff07e566b4256aa618a0fa7af7ea2036e69987b0",
      "parents": [
        "8fdb7c7cfe749b2f1d8c59cd4591f628863099ff"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Jul 27 20:34:24 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jul 28 19:28:35 2026"
      },
      "message": "rename post_proc_sse2.c -\u003e deblock_sse2.c\n\nThis matches the naming scheme used for other architectures. The\nprevious naming became unnecessary after deblock_sse2.asm was removed.\n\nChange-Id: Iaf6802e79c3798f723491498ff15bc62315befcc\n"
    },
    {
      "commit": "8fdb7c7cfe749b2f1d8c59cd4591f628863099ff",
      "tree": "bbb2487d9dda2c99c720ca0f8138261b40039d66",
      "parents": [
        "ade52487a37ef76a0f209bd39bea9fe67d6db4c4"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 02:26:44 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jul 28 19:27:24 2026"
      },
      "message": "port deblock_sse2.asm to intrinsics\n\nThis was done automatically, no additional effort was spent trying to\nfurther optimize the implementations. The restrictions related to column\nsize remain from the assembly; those cases will fall back on the `_c`\nimplementation.\n\nThe VpxPostProcDownAndAcrossMbRowTest speed test is +23.3% / +9.3%\nfaster (x86-64/x86) and the VpxMbPostProcAcrossIpTest speed test is\n+35.6% / +23.7% faster (x86-64/x86) on an AMD Ryzen Threadripper PRO\n5995WX.\n\nChange-Id: I32136e2e9951af69cbe6ee2af3c92b98e72eae34\n"
    },
    {
      "commit": "c69a752a941dff385a6f8360845e9fa9b9b5a923",
      "tree": "620d74dc09eddb27134c4404868a0acba05e21c4",
      "parents": [
        "43200b54677509216f2d5f8d753abd4227721ef8"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Jul 22 17:41:56 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "Check for 1 pass for VP9E_SET_QUANTIZER_ONE_PASS\n\nReturn invalid param if 1 pass is not set.\n\nBug: 533040704\nChange-Id: I5e295e301114173f3fa6b55672e8146940c08feb\n(cherry picked from commit 6ea5ff5b60ecbf2feb8192a82f8ac84f49026b27)\n"
    },
    {
      "commit": "43200b54677509216f2d5f8d753abd4227721ef8",
      "tree": "b9a57e8d24cc74fb2e04dfc81b21d44282a2d36a",
      "parents": [
        "188ebecad57d0c5daad08e61545bc0563428c4a7"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jul 21 03:36:11 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "rtc-vp9: Clamp last_boosted_qindex for 1 pass RC\n\nThe control VP9E_SET_QUANTIZER_ONE_PASS allows user to\nset the QP per frame for 1 pass (which also internally sets\nthe rc-\u003ebest/worst quality to that QP value). But for a\nforced keyframe the RC may be using the rc-\u003elast_boosted_qindex\n(over previous frames) which may not be within\nthe new best/worst quality limits.\n\nBug: 533040704\nChange-Id: I3018af8df840cbd80dad32939b5245f2cb165be4\n(cherry picked from commit 6567abc60cf3ae7dabf20d4542927f84f4a689ef)\n"
    },
    {
      "commit": "188ebecad57d0c5daad08e61545bc0563428c4a7",
      "tree": "96ee9b659b436aa3fdbb68dced5e7c23ffa7734d",
      "parents": [
        "97ee4885ab0b8d87edc000e16cdafce68d52d63f"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jun 30 15:19:40 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "vp8/mt: reset worker mbd-\u003ecorrupted at start of frame\n\nReset for keyframe, or all frames if error concealment\nis enabled.\n\nsetup_decoding_thread_data() copies a fixed list of fields\nfrom the main MACROBLOCKD into each worker\u0027s mb_row_di[i].mbd\nat the start of every frame, but does not reset mbd-\u003ecorrupted.\nThe worker MACROBLOCKDs are allocated once and persist for the\nlife of the decoder, whereas the main thread\u0027s xd-\u003ecorrupted\nis reset at the top of vp8_decode_frame().\n\nIf a worker\u0027s bool decoder runs past the end of its token\npartition on one frame, all subsequent frames are reported as\ncorrupted even when well-formed.\n\nReset mbd-\u003ecorrupted for every worker at the start of each\nframe, mirroring the main-thread reset, but this should only\nbe done for keyframes or when error concealment is enabled.\n\nUnittest added.\n\nBug: 504633668\nChange-Id: I9120410035afedc77c4dbf868bcad5c534d98267\n(cherry picked from commit 8592391cdb3ef142c56d835788d71d6d4de36a63)\n"
    },
    {
      "commit": "97ee4885ab0b8d87edc000e16cdafce68d52d63f",
      "tree": "178559d8fa45e2e788b3747189259393795db6e2",
      "parents": [
        "ad821f4302c873d0361bbae0ce3eda1b9438334f"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Jun 29 23:46:39 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "Fix valgrind failure in SetReferenceSizeValidationVp8\n\nBug: 529425257\nChange-Id: Ia21330a583af3ab7c3d59e9faeabc3eac15375d9\n(cherry picked from commit fcdfe1c29720cbc44a15da63a04e37b000fa5556)\n"
    },
    {
      "commit": "ad821f4302c873d0361bbae0ce3eda1b9438334f",
      "tree": "3e0191f4edd85153c85ab4ed15e2b9756a943d15",
      "parents": [
        "4ebed8f40228884dac0f84288efd7ad8f9d69781"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Jun 25 04:56:11 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "vp8: Validate dimensions when setting reference frame\n\nModifty the vp8_set/get_reference to validate the\ndimensions of the references match the dimensions\nof the internal reference buffer.\n\nAdd unittest.\n\nBug: 526737981\nChange-Id: I81c3ff470fce3f25c6e30c605ddf2a925d682f6a\n(cherry picked from commit 06f21a12ea691de6686ba50bf870ff9875a64e25)\n"
    },
    {
      "commit": "4ebed8f40228884dac0f84288efd7ad8f9d69781",
      "tree": "d1f5e2a612a82b48cbde2181bb724f076e69dc9f",
      "parents": [
        "fb659e05ab10b2bbd7231d3b087021e5614cffbf"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Jun 25 02:59:29 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "vp8: Fix validation of encoder temporal layer IDs\n\nBug: 526739171\n\nChange-Id: I10533da96852e6d0d60f88909318dcf11d940f47\n(cherry picked from commit cd4d2a130e96528af9a278c99ea2501e4986dde5)\n"
    },
    {
      "commit": "fb659e05ab10b2bbd7231d3b087021e5614cffbf",
      "tree": "3e22f0ffe3c5b2c3b1f011ade41ccea5673072a4",
      "parents": [
        "225a04c27087679f42ace01e75a4185cf653b95c"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Jun 24 04:57:31 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "vp9-svc: Fix issue with svc resize and aq_mode\u003d3\n\nFix crash for dynamic resize with cyclic refresh (aq_mode\u003d3)\nand spatial layers. Issue happens when the encoder is resized\nto a larger resolution while aq_mode is disabled (0).\nWhen this resize happens the re-allocation for the svc layer\ncontext buffers (specific to cyclic refresh) was not being done\nbecause aq_mode was not enabled.\n\nFix is to remove the conditional check on aq_mode within\nthe reallocation block of vp9_change_config().\n\nUnittest added.\n\nBug: 526717473\n\nChange-Id: I10478f6a63340aba411b40384939b2056c5bd268\n(cherry picked from commit 91bba32d5cebc0c132bafa78f937643aa41bb7e5)\n"
    },
    {
      "commit": "225a04c27087679f42ace01e75a4185cf653b95c",
      "tree": "22dcfb109fb22f21f0109dca00f473ce9d4e646e",
      "parents": [
        "0d98078f585dba069d7d3b37da287729527654f6"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jun 16 17:43:36 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:20 2026"
      },
      "message": "vp8: clear decoded_key_frame for resolution change\n\nFor resolution change: set decoded_key_frame to\n0 to force successful keyframe at the new resolution,\nbefore any inter frame is accepted.\n\nBug: 504650654\nChange-Id: I89c3fedfb6babfbd24c25da1177e1cfade35de88\n(cherry picked from commit 572f663c893499db9e7f69bb2fec821eae6b1c40)\n"
    },
    {
      "commit": "0d98078f585dba069d7d3b37da287729527654f6",
      "tree": "949ecc59f4565ea0fcd45e2edf6d32fedf026ba8",
      "parents": [
        "a236b6a2f334698fedaf94c16bfc4fdb9cfc3830"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jun 10 22:18:12 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "ivf_video_source.h: fix static analyzer warnings\n\nCheck both `feof()` and `ferror()` after `fread()` in `Begin()`, this\nprevents warnings in `FillFrame()`:\n\n```\nwarning: File position of the stream might be \u0027indeterminate\u0027 after a\n  failed operation. Can cause undefined behavior [unix.Stream]\nwarning: Read function called when stream is in EOF state. Function has\n  no effect [unix.Stream]\n```\n\nNote with `scan-build-19` it is not possible to `ASSERT_EQ/FALSE` both\nchecks as neither will be interpreted correctly, and execution will be\nassumed to be continued. Instead, `ferror()` and `feof()` are manually\nchecked and an explicit `FAIL()` is used.\n\nBug: 474642915\nChange-Id: Ib6382865452f4cbdaa415d344857984927aec3eb\n(cherry picked from commit 41e48324dd06c775d852b2c3d7d5ccc46aa72225)\n"
    },
    {
      "commit": "a236b6a2f334698fedaf94c16bfc4fdb9cfc3830",
      "tree": "2a81589e14a5a5ef908a24ca368746824fb05d00",
      "parents": [
        "98785ea2572909309d9e1f0d737945b4d887f98a"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jun 09 20:54:04 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "vpxdec: fix FILE leak on failure\n\nReorder out file tty check before opening the input file. Fixes a\nclang-19 static analysis warning.\n\nBug: 474642915\nChange-Id: Ib99decca4060f78fce2cd0a413bddcd7b28e3612\n(cherry picked from commit c3e8857e7f909e93d6452ca168eb083a7a8a336a)\n"
    },
    {
      "commit": "98785ea2572909309d9e1f0d737945b4d887f98a",
      "tree": "2d5d70fec343703333494f32a6b26df5ae062f17",
      "parents": [
        "9b301f8660b3ad0d14912d24047dbf8b17a8b574"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jun 09 16:57:07 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "Fix NV12 x_chroma_shift in vpx_image\n\nSet NV12 x_chroma_shift to 1. Adjust stride and\npointer calculations, and remove workarounds.\n\nBUG\u003d520004628\n\nChange-Id: Ica42e96831e5a56e51b8c4429d9ed28e28fb902e\n(cherry picked from commit 5b75082e2fbc952bbd6e92c89536b21fdc738175)\n"
    },
    {
      "commit": "9b301f8660b3ad0d14912d24047dbf8b17a8b574",
      "tree": "07fc9199fb78517fcaeff647e0b19f781a4c46cc",
      "parents": [
        "d4f7c41115942daaa74a1c24f11bc2aedb03ed1b"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jun 09 02:07:13 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "vp8,update_extracfg: add missing setjmp\n\nFixes an assert from a `CHECK_MEM_ERROR` when using\n`VP8E_SET_SCALEMODE`. The additional change modifying the branch\nstructure is to avoid a `-Wclobbered` warning from\n`update_error_state()` when the function is inlined.\n\nBug: 506017558\nChange-Id: Ibd190161251d6bbbd4076beb43c6e4e6745045c8\n(cherry picked from commit 244a62caafec44eb64cb3e5eef81eceb86106153)\n"
    },
    {
      "commit": "d4f7c41115942daaa74a1c24f11bc2aedb03ed1b",
      "tree": "15e8b0634787493ced152e2c2874f9ddb1ee1e6f",
      "parents": [
        "ca8fd49e160ea4f2f1bc93f64e4aa6ee4f49a4b8"
      ],
      "author": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jun 09 17:59:56 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "Only enable avx512 on modern CPUs\n\nAvoid frequency throttling on older Intel CPUs when mixing avx512 and\navx2\n\nBug: 42330501\nChange-Id: I51b29be0b8ff935f67d5da72d12a3013467d0c93\n(cherry picked from commit 1659f4b32e89cf30e9395612c1202a14c6d83996)\n"
    },
    {
      "commit": "ca8fd49e160ea4f2f1bc93f64e4aa6ee4f49a4b8",
      "tree": "f30ae1cc3729bb45bcc2d58b66c9539c2878aa79",
      "parents": [
        "5d72df86652b3ad1bd1f114af6ce6e670e20adbe"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Jun 08 22:42:35 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "vpxdec: fix FILE leak on error\n\nIn `main_loop()` redirect to cleanup code to ensure `outfile` is closed\non error. Fixes some clang-19 static analysis warnings.\n\nBug: 474642915\nChange-Id: I5d1a6a94e56b06fb834dd4277e9268a1059ebf81\n(cherry picked from commit 1defa2a57e7addd0cc3c61fcffc46308f5b1afa4)\n"
    },
    {
      "commit": "5d72df86652b3ad1bd1f114af6ce6e670e20adbe",
      "tree": "84b83a3c6b138d20f59f0e8944c14e2486999546",
      "parents": [
        "8057d8871bb178b38c0c3747e221186b586ac117"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Jun 08 22:31:28 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "vpx_video_(read|writer)_open: fix FILE leaks on error\n\nThis adds missing `fclose()`s in failure paths in\n`vpx_video_reader_open()` and `vpx_video_writer_open()`. Fixes some\nclang-19 static analysis warnings.\n\nBug: 474642915\nChange-Id: Iabe3d5f658e8724692d0b0d55d2ca7f9978b5cbb\n(cherry picked from commit 3c4939bc16b577fd1731a3761b03838f3cbdbf63)\n"
    },
    {
      "commit": "8057d8871bb178b38c0c3747e221186b586ac117",
      "tree": "e81c646507a22382ddbc2d4ef68d6ea458ff0725",
      "parents": [
        "b436bd80d945b084f42c39c7f2b9c55f5f7f2fca"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sat Jun 06 18:02:05 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "Revert VP8 part of \"image2yuvconfig() should calculate ...\"\n\nThis partially reverts commit f662898c395f824058c997885c66c2c4c5e6e69c.\n\nThe VP8 part of the change causes use of uninitialized data in various\nparts of the encoder due to y/uv_width/height including the border after\nthat commit and those values being used instead of\ny/uv_crop_width/height.\n\nBug: 520751602, 517413744\nChange-Id: I9b34fa78a453fb711f3b28bf058e755d1beac746\n(cherry picked from commit 9794f877a3e380ecd57b735b81fe94ab368f6748)\n"
    },
    {
      "commit": "b436bd80d945b084f42c39c7f2b9c55f5f7f2fca",
      "tree": "d2653cb330e968b1cbf604a093dbf5f7347778cb",
      "parents": [
        "664593067be05e68f1e151cb56395ccb6e05886c"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Sat May 30 02:24:59 2026"
      },
      "committer": {
        "name": "Jerome Jiang",
        "email": "jianj@google.com",
        "time": "Tue Jul 28 18:21:19 2026"
      },
      "message": "image2yuvconfig() should calculate uv_crop_width\n\nimage2yuvconfig() should calculate uv_crop_width and uv_crop_height from\ny_crop_width and y_crop_height.\n\nUse the same formula to calculate uv_width and uv_height.\n\nThe VP8 version of image2yuvconfig() also calculated y_width, y_height,\nuv_width, uv_height incorrectly based on img-\u003ed_w and img-\u003ed_h.\n\nThis is a backport from libaom:\n 0607f6bef8 image2yuvconfig() should calculate uv_crop_width\n\nBug: 517413744\nChange-Id: I8c099dbd36fe3c2cf9696868da8331f83c19828b\n(cherry picked from commit f662898c395f824058c997885c66c2c4c5e6e69c)\n"
    },
    {
      "commit": "ade52487a37ef76a0f209bd39bea9fe67d6db4c4",
      "tree": "866616eaf57e41f6110c776292c27027dee36eed",
      "parents": [
        "f433ccffa54582f1ce8814872b03fcf6cc0af8b2"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 18:58:32 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 22:05:40 2026"
      },
      "message": "vpx_highbd_quantize_b_sse2: fix function proto\n\nFixes warning with cl.exe:\n\n```\nvpx_dsp\\x86\\highbd_quantize_intrin_sse2.c(25):\n  warning C4028: formal parameter 3 different from declaration\n```\n\nChange-Id: I699a3c28a2c8481d61be59f00b1085891bf3c975\n"
    },
    {
      "commit": "f433ccffa54582f1ce8814872b03fcf6cc0af8b2",
      "tree": "030e2b4f9d072de4c64d6bb99783c7ca1bd225b9",
      "parents": [
        "b71c17f646ef41488255593ebc0368c8bd98aed8"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 19:01:17 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 22:05:32 2026"
      },
      "message": "vp9_postproc: add missing casts\n\nFixes warnings with cl.exe:\n\n```\nvp9\\common\\vp9_postproc.c(141):\n  warning C4244: \u0027\u003d\u0027: conversion from \u0027int64_t\u0027 to \u0027uint16_t\u0027, possible\n  loss of data\nvp9\\common\\vp9_postproc.c(176):\n  warning C4244: \u0027\u003d\u0027: conversion from \u0027int64_t\u0027 to \u0027uint16_t\u0027, possible\n  loss of data\n```\n\nChange-Id: Iff06b434c35395b8eb7eb7f36d76f6f8ab74a581\n"
    },
    {
      "commit": "b71c17f646ef41488255593ebc0368c8bd98aed8",
      "tree": "b1583c61960ddf3a5bb2e55766807577722c7f5d",
      "parents": [
        "180b535136eeeab958f38275e2e30ec6d3673e58"
      ],
      "author": {
        "name": "Jonathan Wright",
        "email": "jonathan.wright@arm.com",
        "time": "Wed Jul 22 13:35:49 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 19:05:26 2026"
      },
      "message": "Unroll Arm Neon DotProd variance kernels for w \u003e\u003d 32\n\nUnroll the Arm Neon DotProd variance kernels and split the\naccumulators for blocks having width \u003e\u003d 32. This change reduces the\ntime required to execute these kernels by up to 30% on a Neoverse V3\nwhen compiled with Clang 22.\n\nChange-Id: I96e51a2427b893b06fc43f00266d60d695e7fdc4\n"
    },
    {
      "commit": "180b535136eeeab958f38275e2e30ec6d3673e58",
      "tree": "bdd5309151e7c65b7174049b62241806a111220a",
      "parents": [
        "0af5952ed931cd91f04b1936c876710eeb94ee2e"
      ],
      "author": {
        "name": "Jonathan Wright",
        "email": "jonathan.wright@arm.com",
        "time": "Wed Jul 22 11:19:44 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu Jul 23 19:05:26 2026"
      },
      "message": "Arm: Remove unnecessary temporary variables in variance kernels\n\nDecrement the block size directly instead of making a separate loop\ncounter \u0027i\u0027 in Neon and Neon DotProd variance kernels.\n\nChange-Id: I209bd5f13d0f294a54d192f15ec839e223f7a73b\n"
    },
    {
      "commit": "0af5952ed931cd91f04b1936c876710eeb94ee2e",
      "tree": "0ded282601caf0f6f0a5baf71ad646362b171a4a",
      "parents": [
        "6ea5ff5b60ecbf2feb8192a82f8ac84f49026b27"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 22 18:26:52 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 22 19:50:06 2026"
      },
      "message": "vpx_plane_add_noise_msa: handle non-multiple of 16 widths\n\nEven width and height are still assumed, but this passes the tests added\nin:\n a1d48aac7 add_noise_sse2.asm: support non-multiple of 16 width\n\nBug: 499602810\nChange-Id: I30be8897f4b2949ae4f4b8919295b0dd24fde3e0\n"
    },
    {
      "commit": "6ea5ff5b60ecbf2feb8192a82f8ac84f49026b27",
      "tree": "9a0b2bfd7c340ead20b40f56c44a6eb0e2b5a66a",
      "parents": [
        "0bf066a454033bea92a93bc5bde50f92d531b034"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Jul 22 17:41:56 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Jul 22 17:43:38 2026"
      },
      "message": "Check for 1 pass for VP9E_SET_QUANTIZER_ONE_PASS\n\nReturn invalid param if 1 pass is not set.\n\nBug: 533040704\nChange-Id: I5e295e301114173f3fa6b55672e8146940c08feb\n"
    },
    {
      "commit": "0bf066a454033bea92a93bc5bde50f92d531b034",
      "tree": "dad2687840b1fae7ebd40457b7b76113ed09da1a",
      "parents": [
        "d0bddd329ffea6c5d56b54fa87820b9f6c5db2be"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jul 21 02:30:17 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 22 03:38:38 2026"
      },
      "message": "deblock_sse2.asm: use C func w/non-multiple of 16 widths\n\nThis is a quick fix that uses the\n`vpx_post_proc_down_and_across_mb_row_c` when the width is a\nnon-multiple of 16.\n\nImprovements that could be made include using the C function only for\nthe trailing columns, implementing a tail loop, or simplifying the\nmaintenance and moving the function to intrinsics. The latter may\nproduce better code for 64-bit where there are more registers available.\n\nThis change also aligns the `postproc_state.limits_size` to 16. This may\nbe unnecessary if the callers were changed to use `y_crop_width` and\n`uv_crop_width`.\n\nBug: 499602810\nChange-Id: I747a2b74568e8ff0efd7f53255240c0d2b48f40b\n"
    },
    {
      "commit": "d0bddd329ffea6c5d56b54fa87820b9f6c5db2be",
      "tree": "378fa83442a0e90aaafb5eb01078136614f60023",
      "parents": [
        "d85d2298d89c7dd710ce3a038972c114b7b8d3cf"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jul 21 03:02:02 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jul 21 22:16:26 2026"
      },
      "message": "vp8-postproc: fix valgrind uninitialised values\n\nUse the aligned width for allocation of generated_noise_size,\nwhich matches the allocation used for oci-\u003epost_proc_buffer.\nOtherwise vpx_plane_add_noise() will add uninitialized\nnoise to the rightmost columns (for non-multiple of 16 width).\n\nRemove the kVP8FailingTestVectors.\n\nBug: 499602810\n\nChange-Id: I49594f745ecd7a82979c93cd8f33e6a7fa502d28\n"
    },
    {
      "commit": "d85d2298d89c7dd710ce3a038972c114b7b8d3cf",
      "tree": "c13c2bfbc9229cb8ff4c41f24315ae9fce9e6372",
      "parents": [
        "a1d48aac770917f5d3df93947e5876b1a82939a8"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Mon Jul 20 20:57:55 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jul 21 18:48:35 2026"
      },
      "message": "vp9_post_proc_frame: use crop w/h w/vpx_plane_add_noise\n\nThis fixes overreads of the form:\n\n```\n\u003d4030135\u003d\u003d Invalid read of size 1\n\u003d\u003d4030135\u003d\u003d    at 0x473DFC3: ??? (../vpx_dsp/x86/add_noise_sse2.asm:91)\n\u003d\u003d4030135\u003d\u003d    by 0x47E324D: vp9_post_proc_frame (vp9_postproc.c:455)\n```\n\nBug: 499602810\nChange-Id: I121a02262adebb618928b0b7eaa80e7b3be48fc5\n"
    },
    {
      "commit": "a1d48aac770917f5d3df93947e5876b1a82939a8",
      "tree": "5a08d910a11272f3bf7c2d8ad9cffe8a12a22281",
      "parents": [
        "6567abc60cf3ae7dabf20d4542927f84f4a689ef"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 18:21:17 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Tue Jul 21 18:48:35 2026"
      },
      "message": "add_noise_sse2.asm: support non-multiple of 16 width\n\nThis fixes overreads of the form:\n\n```\n\u003d\u003d274295\u003d\u003d Invalid read of size 16\n\u003d\u003d274295\u003d\u003d    at 0x4771788: ??? (../vpx_dsp/x86/add_noise_sse2.asm:61)\n\u003d\u003d274295\u003d\u003d    by 0x481CE89: vp9_post_proc_frame (vp9_postproc.c:452)\n```\n\nBug: 499602810\nChange-Id: Iadfa6a9a5c36dfb9bee24ab5883dbf283d739a07\n"
    },
    {
      "commit": "6567abc60cf3ae7dabf20d4542927f84f4a689ef",
      "tree": "06ce7ff257ca193e8c587ac72e4f23f8376d0cd7",
      "parents": [
        "1019cc56a4938ac9a81b864fff053fcd51db2bec"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jul 21 03:36:11 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jul 21 03:53:53 2026"
      },
      "message": "rtc-vp9: Clamp last_boosted_qindex for 1 pass RC\n\nThe control VP9E_SET_QUANTIZER_ONE_PASS allows user to\nset the QP per frame for 1 pass (which also internally sets\nthe rc-\u003ebest/worst quality to that QP value). But for a\nforced keyframe the RC may be using the rc-\u003elast_boosted_qindex\n(over previous frames) which may not be within\nthe new best/worst quality limits.\n\nBug: 533040704\nChange-Id: I3018af8df840cbd80dad32939b5245f2cb165be4\n"
    },
    {
      "commit": "1019cc56a4938ac9a81b864fff053fcd51db2bec",
      "tree": "91156968780434c0c73109a9f73f5672b40f2f14",
      "parents": [
        "1ef0fcd4b5781657987c3788e6d4bfa261be0933"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jul 17 16:55:57 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Jul 20 21:08:41 2026"
      },
      "message": "Fixes to vp9-mfqe\n\nAvoid processing mfqe for boundary blocks.\nAdd pre-copy to handle return in mfqe.\n\nRemoved 7 resize files in disabled list for\nvp9 postproc, which now pass locally with valgrind.\n\nBug: 499602810\nChange-Id: I207bff53c2f2be4ac190db16a9b0153a437782ea\n"
    },
    {
      "commit": "1ef0fcd4b5781657987c3788e6d4bfa261be0933",
      "tree": "c02d07362a19c5581595b475b0f35592fb6d1b4e",
      "parents": [
        "a6b27ea5560311ceaed5ea478d082917159571b5"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Jul 16 22:07:15 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jul 17 05:09:56 2026"
      },
      "message": "vp9-postproc: disable mfqe for resolution change\n\nmfqe was not meant to be used across frames with\ndifferent resolutions.\n\nThis doesn\u0027t fix the particular issue in the bug below,\nbut it may fix/prevent other related issues.\n\nBug: 499602810\nChange-Id: I18ec32bbdc158225cd58b02346fa990730df4cb5\n"
    },
    {
      "commit": "a6b27ea5560311ceaed5ea478d082917159571b5",
      "tree": "0d34c6714c50d05a97550b66f37346ec0b075fc4",
      "parents": [
        "d0d38acb61e4e8b5efe72117fa24ea9bb1f41365"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 23:48:07 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 23:51:57 2026"
      },
      "message": "post_proctest.cc: add more failing test vectors\n\nThese only surfaced in 32-bit builds running valgrind. Along with the\nfailures in add_noise_sse2.asm, some of the test files fail in\ndeblock_sse2.asm.\n\nBug: 499602810\nChange-Id: Ibb9d13433a80389e7a35eac7baa4ad0611345445\n"
    },
    {
      "commit": "d0d38acb61e4e8b5efe72117fa24ea9bb1f41365",
      "tree": "eacc07fee0b7c3a2eb9943982a6e632753578886",
      "parents": [
        "7f31582e30c8e5416e344a257a526a6026275152"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 20:35:44 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 20:38:38 2026"
      },
      "message": "postproc_test.cc: fix visual studio build error\n\n`std::array::cbegin/cend` don\u0027t decay to `const char*`, though\ngcc/clang support this behavior. Make `GenerateTestParams()` a template\nto support `std::array\u003cconst char*, N\u003e::const_iterator` and `const char*\nconst*`.\n\nBug: 499602810\nChange-Id: I4259d4ee7e56aee0fca5fd007358a446915eb00a\n"
    },
    {
      "commit": "7f31582e30c8e5416e344a257a526a6026275152",
      "tree": "18052f94f77f6fee165891c7dac1750defddd7bd",
      "parents": [
        "f64c742afac59e79ec0e68a72d8e504cb920cb7f"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Thu May 21 16:50:49 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 02:03:25 2026"
      },
      "message": "vp9_postproc: fix buffer size mismatch on resize\n\nWith `VP9D_MFQE` and either `VP9D_DEMACROBLOCK` or `VP9D_DEBLOCK`,\n`post_proc_buffer_int` is used, but was only allocated once. When the\nresolution changed this may have led to an out of bounds access.\n\nThis change ensures `post_proc_buffer_int` and `ppbuf` are of the same\nsize. There may be room to make the allocations smaller, but currently\nthe dimensions are used interchangeably, so the larger aligned size is\npreferred.\n\nThe generated noise buffer receives the same treatment.\n\nBug: 499602810\nChange-Id: Iafd45a0d97c1b662ce38ba3c4c46d3f9095754c3\n"
    },
    {
      "commit": "f64c742afac59e79ec0e68a72d8e504cb920cb7f",
      "tree": "e036976376fac9f1e1e408569bea1064858fa2b3",
      "parents": [
        "c1f98b5fedfc5c302439587341082542d8e4fd2d"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 08 23:33:45 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Wed Jul 15 02:03:15 2026"
      },
      "message": "add postproc_test.cc\n\nThis runs through VP8 and VP9 test vectors and invalid files while\nsetting various combinations of postproc flags. In this change the some\nof the VP8 and VP9 test vectors are disabled as there are some issues\nwith asserts and out of bounds accesses.\n\nBug: 499602810\nChange-Id: I45c6330618e2e8cdb47fbd022a1e82244fcbbe72\n"
    },
    {
      "commit": "c1f98b5fedfc5c302439587341082542d8e4fd2d",
      "tree": "6895bf0c98b133566cdb2eb9deaa103a335bc284",
      "parents": [
        "86c2002a55af13169d0e03f8d7d7460de394faf5"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Jul 10 23:25:38 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Jul 10 23:49:56 2026"
      },
      "message": "vp8_de{block,_noise}: add missing vpx_clear_system_state\n\nAvoids potential NaN results when calculating level in x86 builds.\n\nBug: 499602810\nChange-Id: Ib508525e0b112226674c520bb4eb13ab8aac7b31\n"
    },
    {
      "commit": "86c2002a55af13169d0e03f8d7d7460de394faf5",
      "tree": "a8961de69e3a6e9415cf8b48d01378d964af5fd4",
      "parents": [
        "a82099fb7b5c98b27e974485997ad76b935e05a0"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Jul 10 23:47:18 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Jul 10 23:49:56 2026"
      },
      "message": "vp8,dequantize: add missing short casts\n\nFixes integer sanitizer warnings of the form:\n```\nvp8/decoder/threading.c:240:27: runtime error: implicit conversion from\n  type \u0027int\u0027 of value -45844 (32-bit, signed) to type \u0027short\u0027 changed\n  the value to 19692 (16-bit, signed)\n```\n\nThis matches the behavior of the assembly and should only occur with\ncorrupt bitstreams.\n\nA similar fix was made in `decode_macroblock` in:\n ca42eebf6 vp8/decoder/decodeframe: fix int sanitizer warnings\n\nChange-Id: I3add2afa8f778de87074191fa6ab9476a762635a\n"
    },
    {
      "commit": "a82099fb7b5c98b27e974485997ad76b935e05a0",
      "tree": "844dee256c252c1e1a84241e25c41b7f059b4630",
      "parents": [
        "8592391cdb3ef142c56d835788d71d6d4de36a63"
      ],
      "author": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Jul 10 23:28:09 2026"
      },
      "committer": {
        "name": "James Zern",
        "email": "jzern@google.com",
        "time": "Fri Jul 10 23:30:06 2026"
      },
      "message": "postproc.c: remove unused macro \u0026 prototypes\n\nUse of `RGB_TO_YUV`, `vp8_blit_text`, and `vp8_blit_line` was removed\nin:\n 3f7250958 vp8: remove VP8_SET_DBG* control support\n\nChange-Id: I88cdfb87510ece96daf028f624bbf28953b4ae1b\n"
    },
    {
      "commit": "8592391cdb3ef142c56d835788d71d6d4de36a63",
      "tree": "3f84831f2b9117c9f2868ab15e9ccfa588044121",
      "parents": [
        "fcdfe1c29720cbc44a15da63a04e37b000fa5556"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jun 30 15:19:40 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jun 30 21:58:21 2026"
      },
      "message": "vp8/mt: reset worker mbd-\u003ecorrupted at start of frame\n\nReset for keyframe, or all frames if error concealment\nis enabled.\n\nsetup_decoding_thread_data() copies a fixed list of fields\nfrom the main MACROBLOCKD into each worker\u0027s mb_row_di[i].mbd\nat the start of every frame, but does not reset mbd-\u003ecorrupted.\nThe worker MACROBLOCKDs are allocated once and persist for the\nlife of the decoder, whereas the main thread\u0027s xd-\u003ecorrupted\nis reset at the top of vp8_decode_frame().\n\nIf a worker\u0027s bool decoder runs past the end of its token\npartition on one frame, all subsequent frames are reported as\ncorrupted even when well-formed.\n\nReset mbd-\u003ecorrupted for every worker at the start of each\nframe, mirroring the main-thread reset, but this should only\nbe done for keyframes or when error concealment is enabled.\n\nUnittest added.\n\nBug: 504633668\nChange-Id: I9120410035afedc77c4dbf868bcad5c534d98267\n"
    },
    {
      "commit": "fcdfe1c29720cbc44a15da63a04e37b000fa5556",
      "tree": "aa57c7341864df17014c743cc41ffce254a3a6a0",
      "parents": [
        "06f21a12ea691de6686ba50bf870ff9875a64e25"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Jun 29 23:46:39 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Mon Jun 29 23:48:58 2026"
      },
      "message": "Fix valgrind failure in SetReferenceSizeValidationVp8\n\nBug: 529425257\nChange-Id: Ia21330a583af3ab7c3d59e9faeabc3eac15375d9\n"
    },
    {
      "commit": "06f21a12ea691de6686ba50bf870ff9875a64e25",
      "tree": "d2998429c28434961ac9a9405a18e348fb584963",
      "parents": [
        "cd4d2a130e96528af9a278c99ea2501e4986dde5"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Jun 25 04:56:11 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Fri Jun 26 00:24:42 2026"
      },
      "message": "vp8: Validate dimensions when setting reference frame\n\nModifty the vp8_set/get_reference to validate the\ndimensions of the references match the dimensions\nof the internal reference buffer.\n\nAdd unittest.\n\nBug: 526737981\nChange-Id: I81c3ff470fce3f25c6e30c605ddf2a925d682f6a\n"
    },
    {
      "commit": "cd4d2a130e96528af9a278c99ea2501e4986dde5",
      "tree": "4dd2cd3d1429bd3c3b4812084b8cf6d3f51c2335",
      "parents": [
        "91bba32d5cebc0c132bafa78f937643aa41bb7e5"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Jun 25 02:59:29 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Jun 25 03:00:25 2026"
      },
      "message": "vp8: Fix validation of encoder temporal layer IDs\n\nBug: 526739171\n\nChange-Id: I10533da96852e6d0d60f88909318dcf11d940f47\n"
    },
    {
      "commit": "91bba32d5cebc0c132bafa78f937643aa41bb7e5",
      "tree": "66dacacd7103389418eb42e7f989deb04cc4b07c",
      "parents": [
        "572f663c893499db9e7f69bb2fec821eae6b1c40"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Jun 24 04:57:31 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Wed Jun 24 21:37:36 2026"
      },
      "message": "vp9-svc: Fix issue with svc resize and aq_mode\u003d3\n\nFix crash for dynamic resize with cyclic refresh (aq_mode\u003d3)\nand spatial layers. Issue happens when the encoder is resized\nto a larger resolution while aq_mode is disabled (0).\nWhen this resize happens the re-allocation for the svc layer\ncontext buffers (specific to cyclic refresh) was not being done\nbecause aq_mode was not enabled.\n\nFix is to remove the conditional check on aq_mode within\nthe reallocation block of vp9_change_config().\n\nUnittest added.\n\nBug: 526717473\n\nChange-Id: I10478f6a63340aba411b40384939b2056c5bd268\n"
    },
    {
      "commit": "572f663c893499db9e7f69bb2fec821eae6b1c40",
      "tree": "435c9a5e3b827d93e7c6a583f65d16e08f541682",
      "parents": [
        "41e48324dd06c775d852b2c3d7d5ccc46aa72225"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jun 16 17:43:36 2026"
      },
      "committer": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Tue Jun 16 17:49:45 2026"
      },
      "message": "vp8: clear decoded_key_frame for resolution change\n\nFor resolution change: set decoded_key_frame to\n0 to force successful keyframe at the new resolution,\nbefore any inter frame is accepted.\n\nBug: 504650654\nChange-Id: I89c3fedfb6babfbd24c25da1177e1cfade35de88\n"
    }
  ],
  "next": "41e48324dd06c775d852b2c3d7d5ccc46aa72225"
}
