)]}'
{
  "log": [
    {
      "commit": "af3dc9aadc793c1b00edc003e3fc19a44fdeb574",
      "tree": "3e0fa46717a3a60d9f451aed66f49d4897b80fb7",
      "parents": [
        "d080fa233b0cdaa74f69aee81d5367da46ea1ddd"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Oct 06 15:19:36 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Oct 06 22:34:52 2026 -0700"
      },
      "message": "Update CHANGELOG for v3.15.2\n\nBug: 568453830\nChange-Id: Iaa9accfedfe482fa17d2b10d79915da06318467f\n"
    },
    {
      "commit": "d080fa233b0cdaa74f69aee81d5367da46ea1ddd",
      "tree": "da587eb41c09744e727980a8a3a0b7596157d527",
      "parents": [
        "fa6b080f6815bdcbcd20c1f5630301669fb528c0"
      ],
      "author": {
        "name": "Yuan Tong",
        "email": "tongyuan200097@gmail.com",
        "time": "Thu Sep 24 23:22:37 2026 +0800"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Oct 06 14:48:15 2026 -0700"
      },
      "message": "Allow upscaling without forcing keyframes for GOOD_QUALITY\n\nThe remaining blockers after\nhttps://aomedia-review.googlesource.com/c/aom/+/216241 are only 2 bugs\nin the heavy motion search routines.\n\nThey can be detected and verified by running the updated test case using\n`test_libaom --gtest_filter\u003d*AV1ResolutionChange.RandomInput*` under\nASAN.\n\nChange-Id: Iab55db677c793092fe2eb1bcf640d4534de08dd4\n(cherry picked from commit 4a1378d726fbe71d1ae9b59be0e76bbf48d1f396)\n"
    },
    {
      "commit": "fa6b080f6815bdcbcd20c1f5630301669fb528c0",
      "tree": "785a7827047cd3dce4d32174d80ab6f76ad937da",
      "parents": [
        "b271794619d0b12a4c5051c71716a372923008c5"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Fri Sep 25 15:37:46 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Oct 06 14:45:59 2026 -0700"
      },
      "message": "Simplify ref_yv12[2] in av1_joint_motion_search()\n\nA careful analysis shows that the ref_yv12[2] array in\nav1_joint_motion_search() can be replaced by a single variable\norig_yv12, like the orig_yv12 variable in\nav1_compound_single_motion_search().\n\nOnly xd-\u003eplane[plane].pre[0] needs to be backed up and restored, so a\nsingle variable (orig_yv12) suffices.\n\nChange-Id: I46a0ac488678ce617f74580ed12eddc1e56b6f39\n(cherry picked from commit 34c31c532e45dda358a955a2fbd4d4a8d5c4ad66)\n"
    },
    {
      "commit": "b271794619d0b12a4c5051c71716a372923008c5",
      "tree": "199ea9618bb55178355edac8a7d91c046e706453",
      "parents": [
        "af52815f9a917cf23cce19f128626e591c0ad546"
      ],
      "author": {
        "name": "Erik Språng",
        "email": "sprang@google.com",
        "time": "Tue Sep 01 18:43:23 2026 +0200"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Oct 06 14:32:09 2026 -0700"
      },
      "message": "Allow dynamic upscaling across frames without forcing keyframes\n\nAV1 reference frame scaling supports up to 16x upscaling and 2x\ndownscaling from reference frames. However, when dynamic resolution\nchanges were configured with g_forced_max_frame_width/height in single-\nlayer realtime mode, encoder_set_config was forcing a keyframe\nwhenever new dimensions exceeded the last coded width/height.\n\nThis CL enables dynamic upscaling without forcing keyframes:\n1. In single-pass realtime mode without lookahead (g_lag_in_frames \u003d\u003d 0\n   and g_pass \u003d\u003d AOM_RC_ONE_PASS), and with the maximum frame size\n   declared up front via g_forced_max_frame_width/height, removes\n   keyframe forcing for upscaled dimensions in encoder_set_config as\n   long as reference frame scaling constraints are met. The forced\n   maximum frame size is required since it is what makes the internal\n   buffers large enough for the upscaled frame; without it they are\n   only sized for the current frame size.\n2. Sizes internal buffers (compressor data allocation, segmentation\n   maps, cyclic refresh, active maps, and transform coefficient buffers)\n   using forced_max_frame_width/height when specified, preventing\n   out-of-bounds access upon upscaling.\n3. Updates set_bitstream_level_tier to compute the Sequence Header\n   operating point level index using seq-\u003emax_frame_width/height,\n   ensuring the level\u0027s MaxPicSize accommodates the maximum sequence\n   resolution.\n4. Adds unit tests in test/forced_max_frame_width_height_test.cc to\n   verify dynamic upscaling up to 16x without keyframes and level\n   index calculation.\n5. Updates AV1ResolutionChange.RandomInput, which asserted that every\n   resolution change produces a keyframe. All the resolution changes it\n   performs are in fact within the reference frame scaling limits, so in\n   realtime mode they are now coded as inter frames that scale their\n   references. The test now verifies that behaviour, and that the other\n   modes still force a keyframe.\n\nThis fix will allow us to re-enable the `ReferenceFrameScaling` test\ncase in\nhttps://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/api/video_codecs/test/video_encoder_functional_unittest.cc\n\nBug: webrtc:496266459\nChange-Id: Iee39e485db367e29b7d918ebd0708be72cb69bfe\n(cherry picked from commit bc384518c76b41b0bc2662e11a17e6bf01ecea08)\n"
    },
    {
      "commit": "af52815f9a917cf23cce19f128626e591c0ad546",
      "tree": "9518e7f69f9e61aecf677ec583895fe3295e270e",
      "parents": [
        "ab7db4094b64397873a0e151e223c84f66bf5fe8"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Oct 01 21:57:11 2026 +0000"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Mon Oct 05 11:00:19 2026 -0700"
      },
      "message": "Fix y_stride_src in init_motion_estimation()\n\nFix y_stride_src in init_motion_estimation() to\nderive it from cpi-\u003eunscaled_source when available\ninstead of lookahead-\u003ebuf[0], which can hold a stale\nstride from an earlier slot.\n\nAlso check fpf_y_stride when determining whether\nsearch_site_cfg should be updated.\n\nUnittest added.\n\nBug: 568044446\nChange-Id: I4601459b461d1fc3af354863c4760a31a5277c62\n(cherry picked from commit 12e2b14964e3390dabd08f8d70a752cc905409b2)\n"
    },
    {
      "commit": "ab7db4094b64397873a0e151e223c84f66bf5fe8",
      "tree": "fcc0d71c239be6b0b4bde47fda7f029eb698d79f",
      "parents": [
        "5b9573b5a663ceb51cf1a6f94db2a4b9937e7d2c"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Thu Oct 01 18:57:48 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Fri Oct 02 21:40:27 2026 -0700"
      },
      "message": "linsolve_wiener: Fix integer overflows with double\n\nFix integer overflows in linsolve_wiener() by switching to\ndouble-precision floating point numbers.\n\nBug: oss-fuzz:566951534\nChange-Id: I64b0e9631c85144111dd8adb64a06cc4a61cbfc3\n(cherry picked from commit 9469625e62a151a18f6ab0f3f2850cc4ad9cc9e5)\n"
    },
    {
      "commit": "5b9573b5a663ceb51cf1a6f94db2a4b9937e7d2c",
      "tree": "8193f38f4a0896db81e40a2044f9b40cb429bf16",
      "parents": [
        "51c3d8cfd8f441ae94a751c800a384a4a741c486"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Thu Oct 01 14:28:54 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Thu Oct 01 14:28:54 2026 -0700"
      },
      "message": "Update CHANGELOG and library version for v3.15.2\n\nBug: 568453830\nChange-Id: I0d3950fce5ea7fecd0d099227bb20f2c5a19faf0\n"
    },
    {
      "commit": "51c3d8cfd8f441ae94a751c800a384a4a741c486",
      "tree": "9d4eced474a23793aebd908f7bd25c2c1cd72aec",
      "parents": [
        "1dfb7a15e0ed0933ae3b51c1315e106bbe914947"
      ],
      "author": {
        "name": "Marco Paniconi",
        "email": "marpan@google.com",
        "time": "Thu Oct 01 00:08:11 2026 +0000"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Wed Sep 30 20:56:28 2026 -0700"
      },
      "message": "Fix stale search_site_config in IntraBC motion search\n\nUse av1_get_search_site_config() in rd_pick_intrabc_mode_sb()\nand av1_search_intrabc_nonrd() instead of reading\nsearch_site_cfg[SS_CFG_LOOKAHEAD] directly, and also\ncheck y_stride_src in init_motion_estimation().\n\nFix is suggested by Yuan Tong.\nUnittests written by Yuan Tong.\n\nBug: 568044446\nChange-Id: Id25d82bed48b4fa4bdcc2175af4e6448e2ab05fc\n(cherry picked from commit ae410fe8b7bd45f3cf61dc8f112dc783e2a08089)\n"
    },
    {
      "commit": "1dfb7a15e0ed0933ae3b51c1315e106bbe914947",
      "tree": "c321cc62ab5a7b78340e8860d03eff776b542568",
      "parents": [
        "232361529a307af3312e3dced81f2543e0a1702c"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Mon Aug 31 13:54:08 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Tue Sep 29 18:03:09 2026 -0700"
      },
      "message": "Check frame size is max when frame_size_override\u003d0\n\nIn write_frame_size(), if frame_size_override is 0, frame_width_minus_1\nand frame_height_minus_1 are omitted because they are inferred to be\nequal to the maximum frame width and height in the sequence header.\nReport an error if that is not the case.\n\nRemove a related assertion for reduced_still_picture_hdr\u003d1 in\nwrite_uncompressed_header_obu() because it is replaced by the error\nchecking in write_frame_size().\n\nBug: 555350218\nChange-Id: I24258517258a06f40df6f409ada19ed6d5d3629b\n(cherry picked from commit bfb51847fa03803b0b66467285966de0a143529e)\n"
    },
    {
      "commit": "232361529a307af3312e3dced81f2543e0a1702c",
      "tree": "ae435ef09df180802ebff595e56ff5a4113cd9e0",
      "parents": [
        "6258cbce5ab77d3dba64c03e75a8f087d2fc9769"
      ],
      "author": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Fri Sep 25 17:20:06 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Mon Sep 28 10:42:51 2026 -0700"
      },
      "message": "Add a test for OSS-Fuzz Issue 559019046\n\nSuggested by Yuan Tong in\nhttps://github.com/AOMediaCodec/libavif/pull/1069#discussion_r4090282167\n\nBug: oss-fuzz:559019046\nChange-Id: I1f7e280a1ec7c80a63cf3dee21c880e7d6f2fb23\n(cherry picked from commit 9f9c3f7475793f1a80fc8fb811dbff84549a91df)\n"
    },
    {
      "commit": "6258cbce5ab77d3dba64c03e75a8f087d2fc9769",
      "tree": "e5775999bca41418f7680a32531e05aaae30e478",
      "parents": [
        "44d0a57786f432d933ff64b653347c66f4d0fa1d"
      ],
      "author": {
        "name": "Yunqing Wang",
        "email": "yunqingwang@google.com",
        "time": "Fri Sep 18 16:50:07 2026 -0700"
      },
      "committer": {
        "name": "Wan-Teh Chang",
        "email": "wtc@google.com",
        "time": "Fri Sep 25 11:59:46 2026 -0700"
      },
      "message": "Fix pixel_gradient_info allocation\n\nIn very rare cases, the work thread data needs to be re-allocated, but\nthe condition in is_gradient_caching_for_hog_enabled() is not true.\nThus, this results in no pixel_gradient_info data allocated for work\nthreads and the memory write violation happens. This change fixes this\nissue.\n\nBug: b/559019046\nChange-Id: I38b2285aeffe1732239cb2401b61a3654f386896\n(cherry picked from commit f9a09995618828dba5a3f154f30d60779e4acd33)\n"
    }
  ]
}
