Monday, May 25, 2026

UPDATE: aom 3.14.1

Here is an update to aom 3.14.1. Build tested with dependencies, chromium, iridium, ungoogled-chromium all fail to build in the same manner. ../../third_party/libaom/source/libaom/av1/encoder/encodetxb.c:279:6: error: conflicting types for 'av1_get_nz_map_contexts_c' 279 | void av1_get_nz_map_contexts_c(const uint8_t *const levels, | ^ ../../third_party/libaom/source/config/linux/arm64-cpu-detect/config/av1_rtcd.h:295:6: note: previous declaration is here 295 | void av1_get_nz_map_contexts_c(const uint8_t *const levels, const int16_t *const scan, const uint16_t eob, const TX_SIZE tx_size, const TX_CLASS tx_class, int8_t *const coeff_contexts); | ^ 1 error generated. 2026-05-22 v3.14.1 This release is ABI compatible with the last release. See https://aomedia.googlesource.com/aom/+log/v3.14.0..v3.14.1 for all the commits in this release. - Bug Fixes * b:513603812: NULL Pointer Dereference in validate_img (av1_cx_iface.c) with 10-bit monochrome input * oss-fuzz:514006304: Increase ctx->cx_data_sz to 2.5x uncomp frame size 2026-05-12 v3.14.0 This release is ABI compatible with the last release. This release includes significant compression efficiency and perceptual quality improvements for layered image encoding, in addition to bug fixes. The `build` directory in the source tree was removed and the original build/cmake directory was moved up one level. If you use the CMake toolchain files in the original build/cmake/toolchains directory, they are now in the cmake/toolchains directory. The unsupported aom_img_fmt_t enum constants AOM_IMG_FMT_AOMYV12 and AOM_IMG_FMT_AOMI420 are deprecated and will be removed in a future release. Do not use them. The new codec controls AV1E_SET_EXTERNAL_RATE_CONTROL (including the new aom_rc_funcs_t struct and the new "aom/aom_ext_ratectrl.h" and "aom/aom_tpl.h" headers) and AV1E_GET_GOP_INFO (including the new aom_gop_info_t struct) have the experimental API status and are NOT part of the stable API. Applications that need the backward compatibility of the stable API must not use AV1E_SET_EXTERNAL_RATE_CONTROL and AV1E_GET_GOP_INFO. - New Features * Tuning modes AOM_TUNE_IQ and AOM_TUNE_SSIMULACRA2 now work with inter-frame encoding modes (good-quality and realtime), enabling efficient layered image encoding. * Variance Boost (deltaq-mode 6) support has been extended to include good-quality and realtime modes. * New value 2 for use_fixed_qp_offsets: disallow the application of per-frame QP offsets, enabling full control of each frame's QP, by adjusting rc_cfg.cq_level between each encoded frame. * Low complexity decode mode (the encoder optimizations that produce encoded bitstreams that can be decoded at low computational complexity) now supports good-quality encoding (speed 1 to 3) for not only vertical videos (608p to 1080p) but also horizontal videos (720p to 1080p). * Realtime encoding with non-zero lookahead is supported, for !REALTME_ONLY_CONFIG. * New AOM_EFLAG_FREEZE_INTERNAL_STATE flag for aom_codec_encode() to encode a frame without updating encoder state such as reference buffers, CDF tables, and rate control state. Useful for speculative encoding. * New aom_matrix_coefficients_t enum constants: - AOM_CICP_MC_IPT_C2 (15): IPT-C2 - AOM_CICP_MC_YCGCO_RE (16): YCgCo-Re - AOM_CICP_MC_YCGCO_RO (17): YCgCo-Ro * New aom_metadata_insert_flags_t enum constants for adding layer-specific metadata OBUs: - AOM_MIF_NON_KEY_FRAME_LAYER_SPECIFIC: Adds layer-specific metadata if it's not a keyframe - AOM_MIF_KEY_FRAME_LAYER_SPECIFIC: Adds layer-specific metadata only if it's a keyframe - AOM_MIF_ANY_FRAME_LAYER_SPECIFIC: Adds layer-specific metadata to any type of frame * Experimental: New codec control AV1E_SET_EXTERNAL_RATE_CONTROL to enable an external rate control library. Not part of the stable API. * Experimental: New codec control AV1E_GET_GOP_INFO to get the GOP structure from the encoder. Not part of the stable API. * New codec control AOME_SET_VALIDATE_HBD_INPUT to validate high bitdepth (HBD) input and ensure that every pixel is within the valid range. The corresponding option for aom_codec_set_option() is "validate-hbd-input". * New codec control AOMD_SET_FRAME_SIZE_LIMIT to set the maximum frame size for a decoder - Compression Efficiency Improvements * When encoding 2-layered images with AOM_TUNE_IQ vs. AOM_TUNE_SSIM: - Good-quality mode: up to 15% gains at similar SSIMULACRA 2 scores. - Realtime mode: up to 30% gains at similar SSIMULACRA 2 scores. * Enable screen detection mode 2 (anti-aliased text and graphics aware) in all-intra mode. * Some minor quantization matrix formula and delta chroma q tweaks for the AOM_TUNE_SSIMULACRA2 tuning mode, with up to 0.2% SSIMULACRA 2 score efficiency gains. * Re-tune and re-work encoder features, achieving coding gains at each speed level and better coding efficiency vs complexity tradeoff (an estimated 20-30% encoder time reduction with about 1-5% vmaf gains). * RTC screen: improvements to quality and scroll detection for high resolutions. - Perceptual Quality Improvements * AOM_TUNE_IQ improves the visual quality of layered image encoding compared to AOM_TUNE_SSIM. * Adaptive sharpness: tweak loop filter sharpness threshold to improve visual quality at QPs 29 and 30. * Improve encoder algorithms in loop restoration, CDEF, temporal filter and rate control, delivering better visual quality. - Speedups * Make Adaptive CDEF more decoder friendly by limiting CDEF application to only regions where high filter strengths are needed. * Encoder complexity is reduced significantly, especially at speed 1 to 3. * Further AArch64 SIMD optimization of filtering algorithms, particularly using Armv8.6 Neon I8MM. * Additional tweaks to AArch64 Neon paths for quantization, SAD, subpel variance and intra-predictors. - Bug Fixes * Commit 4cc0867f: fix multithreading crashes when loop restoration filtering is used by the encoder. * Commit 74aaa1ef: fix AOM_SCALING_MODE crashes when compound mask prediction modes are used by the encoder. * b:502030569: Avoid assertion failure in `read_uncompressed_header` triggered by fuzzed input * b:503197490: Fix an integer overflow in target bits calculation * b:503691210: Avoid reference to uninitialized member variables for multi workers. * b:504317456: Handle buffer pointer in LAP mode to avoid overflow * b:502133197: Avoid a bitread assertion failure in get_av1config_from_obu() Index: Makefile =================================================================== RCS file: /cvs/ports/multimedia/aom/Makefile,v retrieving revision 1.34 diff -u -p -u -p -r1.34 Makefile --- Makefile 9 Apr 2026 11:11:07 -0000 1.34 +++ Makefile 23 May 2026 03:52:46 -0000 @@ -1,11 +1,11 @@ COMMENT= Alliance for Open Media AV1 video codec -V= 3.13.3 +V= 3.14.1 DISTNAME= libaom-$V PKGNAME= aom-$V CATEGORIES= multimedia -SHARED_LIBS= aom 6.0 +SHARED_LIBS= aom 6.1 HOMEPAGE= https://aomedia.org/ SITES= https://storage.googleapis.com/aom-releases/ Index: distinfo =================================================================== RCS file: /cvs/ports/multimedia/aom/distinfo,v retrieving revision 1.28 diff -u -p -u -p -r1.28 distinfo --- distinfo 9 Apr 2026 11:11:07 -0000 1.28 +++ distinfo 23 May 2026 03:52:46 -0000 @@ -1,2 +1,2 @@ -SHA256 (libaom-3.13.3.tar.gz) = RGpK6XQcuPPuuYyUnSX5G0jLK4Vpyul1xLc3OS6QJPw= -SIZE (libaom-3.13.3.tar.gz) = 6256836 +SHA256 (libaom-3.14.1.tar.gz) = RL+Q29I+c01Q5wqMQcKFGTkik4vQ07wu5Wdk0YHVXvU= +SIZE (libaom-3.14.1.tar.gz) = 6368868 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: /cvs/ports/multimedia/aom/patches/patch-CMakeLists_txt,v retrieving revision 1.12 diff -u -p -u -p -r1.12 patch-CMakeLists_txt --- patches/patch-CMakeLists_txt 19 Jan 2026 08:58:47 -0000 1.12 +++ patches/patch-CMakeLists_txt 23 May 2026 03:52:46 -0000 @@ -1,7 +1,7 @@ Index: CMakeLists.txt --- CMakeLists.txt.orig +++ CMakeLists.txt -@@ -905,7 +905,7 @@ if(BUILD_SHARED_LIBS) +@@ -914,7 +914,7 @@ if(BUILD_SHARED_LIBS) # https://clang.llvm.org/docs/AddressSanitizer.html#usage. Similarly, see # https://clang.llvm.org/docs/MemorySanitizer.html#usage. if(NOT Index: patches/patch-aom_ports_ppc_cpudetect_c =================================================================== RCS file: /cvs/ports/multimedia/aom/patches/patch-aom_ports_ppc_cpudetect_c,v retrieving revision 1.5 diff -u -p -u -p -r1.5 patch-aom_ports_ppc_cpudetect_c --- patches/patch-aom_ports_ppc_cpudetect_c 19 Jan 2026 08:58:47 -0000 1.5 +++ patches/patch-aom_ports_ppc_cpudetect_c 23 May 2026 03:52:46 -0000 @@ -1,3 +1,5 @@ +Add PowerPC CPU feature detection support for OpenBSD. + Index: aom_ports/ppc_cpudetect.c --- aom_ports/ppc_cpudetect.c.orig +++ aom_ports/ppc_cpudetect.c Index: patches/patch-build_cmake_aom_configure_cmake =================================================================== RCS file: patches/patch-build_cmake_aom_configure_cmake diff -N patches/patch-build_cmake_aom_configure_cmake --- patches/patch-build_cmake_aom_configure_cmake 26 Feb 2025 10:23:52 -0000 1.14 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ -ARM uses compiler intrinsics, so don't require GNU as. - -Index: build/cmake/aom_configure.cmake ---- build/cmake/aom_configure.cmake.orig -+++ build/cmake/aom_configure.cmake -@@ -194,6 +194,10 @@ elseif(AOM_TARGET_CPU MATCHES "arm") - if(NOT CMAKE_ASM_COMPILER) - set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} "-c -mimplicit-it=always") - endif() -+ elseif(AOM_TARGET_SYSTEM STREQUAL "OpenBSD") -+ if(NOT CMAKE_ASM_COMPILER) -+ set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) -+ endif() - else() - if(NOT CMAKE_ASM_COMPILER) - set(CMAKE_ASM_COMPILER as) Index: patches/patch-cmake_aom_configure_cmake =================================================================== RCS file: patches/patch-cmake_aom_configure_cmake diff -N patches/patch-cmake_aom_configure_cmake --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-cmake_aom_configure_cmake 23 May 2026 03:52:46 -0000 @@ -0,0 +1,16 @@ +ARM uses compiler intrinsics, so don't require GNU as. + +Index: cmake/aom_configure.cmake +--- cmake/aom_configure.cmake.orig ++++ cmake/aom_configure.cmake +@@ -195,6 +195,10 @@ elseif(AOM_TARGET_CPU MATCHES "arm") + if(NOT CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER} "-c -mimplicit-it=always") + endif() ++ elseif(AOM_TARGET_SYSTEM STREQUAL "OpenBSD") ++ if(NOT CMAKE_ASM_COMPILER) ++ set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) ++ endif() + else() + if(NOT CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER as)

No comments:

Post a Comment