)]}'
{
  "commit": "5e4b07dc9799142a1a1ea2796ec034f2d6313c61",
  "tree": "4c47b34946c28dc42f25ecca2ec788b128d412c1",
  "parents": [
    "cb0b87d6c2dda00b534149b0f27559bf8fa6eecb",
    "047d8cf6168feafe1300eb6902000dd1a03d5549"
  ],
  "author": {
    "name": "Wan-Teh Chang",
    "email": "wtc@google.com",
    "time": "Thu May 14 12:40:45 2026 -0700"
  },
  "committer": {
    "name": "Wan-Teh Chang",
    "email": "wtc@google.com",
    "time": "Thu May 14 12:40:45 2026 -0700"
  },
  "message": "Merge tag \u0027v3.14.0\u0027 into main branch\n\nRelease v3.14.0 Pinkie Pie\n\n2026-05-12 v3.14.0\n  This release is ABI compatible with the last release.\n\n  This release includes significant compression efficiency and\n  perceptual quality improvements for layered image encoding, in\n  addition to bug fixes.\n\n  The `build` directory in the source tree was removed and the original\n  build/cmake directory was moved up one level. If you use the CMake\n  toolchain files in the original build/cmake/toolchains directory,\n  they are now in the cmake/toolchains directory.\n\n  The unsupported aom_img_fmt_t enum constants AOM_IMG_FMT_AOMYV12 and\n  AOM_IMG_FMT_AOMI420 are deprecated and will be removed in a future\n  release. Do not use them.\n\n  The new codec controls AV1E_SET_EXTERNAL_RATE_CONTROL (including the\n  new aom_rc_funcs_t struct and the new \"aom/aom_ext_ratectrl.h\" and\n  \"aom/aom_tpl.h\" headers) and AV1E_GET_GOP_INFO (including the new\n  aom_gop_info_t struct) have the experimental API status and are NOT\n  part of the stable API. Applications that need the backward\n  compatibility of the stable API must not use\n  AV1E_SET_EXTERNAL_RATE_CONTROL and AV1E_GET_GOP_INFO.\n\n  - New Features\n    * Tuning modes AOM_TUNE_IQ and AOM_TUNE_SSIMULACRA2 now work with\n      inter-frame encoding modes (good-quality and realtime), enabling\n      efficient layered image encoding.\n    * Variance Boost (deltaq-mode 6) support has been extended to\n      include good-quality and realtime modes.\n    * New value 2 for use_fixed_qp_offsets: disallow the application of\n      per-frame QP offsets, enabling full control of each frame\u0027s QP, by\n      adjusting rc_cfg.cq_level between each encoded frame.\n    * Low complexity decode mode (the encoder optimizations that produce\n      encoded bitstreams that can be decoded at low computational\n      complexity) now supports good-quality encoding (speed 1 to 3) for\n      not only vertical videos (608p to 1080p) but also horizontal\n      videos (720p to 1080p).\n    * Realtime encoding with non-zero lookahead is supported, for\n      !REALTME_ONLY_CONFIG.\n    * New AOM_EFLAG_FREEZE_INTERNAL_STATE flag for aom_codec_encode() to\n      encode a frame without updating encoder state such as reference\n      buffers, CDF tables, and rate control state. Useful for\n      speculative encoding.\n    * New aom_matrix_coefficients_t enum constants:\n      - AOM_CICP_MC_IPT_C2 (15): IPT-C2\n      - AOM_CICP_MC_YCGCO_RE (16): YCgCo-Re\n      - AOM_CICP_MC_YCGCO_RO (17): YCgCo-Ro\n    * New aom_metadata_insert_flags_t enum constants for adding\n      layer-specific metadata OBUs:\n      - AOM_MIF_NON_KEY_FRAME_LAYER_SPECIFIC: Adds layer-specific\n        metadata if it\u0027s not a keyframe\n      - AOM_MIF_KEY_FRAME_LAYER_SPECIFIC: Adds layer-specific metadata\n        only if it\u0027s a keyframe\n      - AOM_MIF_ANY_FRAME_LAYER_SPECIFIC: Adds layer-specific metadata\n        to any type of frame\n    * Experimental: New codec control AV1E_SET_EXTERNAL_RATE_CONTROL to\n      enable an external rate control library. Not part of the stable\n      API.\n    * Experimental: New codec control AV1E_GET_GOP_INFO to get the GOP\n      structure from the encoder. Not part of the stable API.\n    * New codec control AOME_SET_VALIDATE_HBD_INPUT to validate high\n      bitdepth (HBD) input and ensure that every pixel is within the\n      valid range. The corresponding option for aom_codec_set_option()\n      is \"validate-hbd-input\".\n    * New codec control AOMD_SET_FRAME_SIZE_LIMIT to set the maximum\n      frame size for a decoder\n\n  - Compression Efficiency Improvements\n    * When encoding 2-layered images with AOM_TUNE_IQ vs. AOM_TUNE_SSIM:\n      - Good-quality mode: up to 15% gains at similar SSIMULACRA 2\n        scores.\n      - Realtime mode: up to 30% gains at similar SSIMULACRA 2 scores.\n    * Enable screen detection mode 2 (anti-aliased text and graphics\n      aware) in all-intra mode.\n    * Some minor quantization matrix formula and delta chroma q tweaks\n      for the AOM_TUNE_SSIMULACRA2 tuning mode, with up to 0.2%\n      SSIMULACRA 2 score efficiency gains.\n    * Re-tune and re-work encoder features, achieving coding gains at\n      each speed level and better coding efficiency vs complexity\n      tradeoff (an estimated 20-30% encoder time reduction with about\n      1-5% vmaf gains).\n    * RTC screen: improvements to quality and scroll detection for high\n      resolutions.\n\n  - Perceptual Quality Improvements\n    * AOM_TUNE_IQ improves the visual quality of layered image encoding\n      compared to AOM_TUNE_SSIM.\n    * Adaptive sharpness: tweak loop filter sharpness threshold to\n      improve visual quality at QPs 29 and 30.\n    * Improve encoder algorithms in loop restoration, CDEF, temporal\n      filter and rate control, delivering better visual quality.\n\n  - Speedups\n    * Make Adaptive CDEF more decoder friendly by limiting CDEF\n      application to only regions where high filter strengths are\n      needed.\n    * Encoder complexity is reduced significantly, especially at speed\n      1 to 3.\n    * Further AArch64 SIMD optimization of filtering algorithms,\n      particularly using Armv8.6 Neon I8MM.\n    * Additional tweaks to AArch64 Neon paths for quantization, SAD,\n      subpel variance and intra-predictors.\n\n  - Bug Fixes\n    * Commit 4cc0867f: fix multithreading crashes when loop restoration\n      filtering is used by the encoder.\n    * Commit 74aaa1ef: fix AOM_SCALING_MODE crashes when compound mask\n      prediction modes are used by the encoder.\n    * b:502030569: Avoid assertion failure in `read_uncompressed_header`\n      triggered by fuzzed input\n    * b:503197490: Fix an integer overflow in target bits calculation\n    * b:503691210: Avoid reference to uninitialized member variables for\n      multi workers.\n    * b:504317456: Handle buffer pointer in LAP mode to avoid overflow\n    * b:502133197: Avoid a bitread assertion failure in\n      get_av1config_from_obu()\n\nBug: 510033563\nChange-Id: Ia226ddeec21bb9d68ae29bbab8da36712ffc9df7\n",
  "tree_diff": []
}
