This release drops support for old C compilers, such as Visual Studio 2012
and older, that disallow mixing variable declarations and statements (a C99
feature). It adds support for run-time CPU feature detection for Arm
platforms, as well as support for darwin23 (macOS 14).
- Upgrading:
This release is ABI incompatible with the previous release.
Various new features for rate control library for real-time: SVC parallel
encoding, loopfilter level, support for frame dropping, and screen content.
New callback function send_tpl_gop_stats for vp9 external rate control
library, which can be used to transmit TPL stats for a group of pictures. A
public header vpx_tpl.h is added for the definition of TPL stats used in
this callback.
libwebm is upgraded to libwebm-1.0.0.29-9-g1930e3c.
- Enhancement:
Improvements on Neon optimizations: VoD: 12-35% speed up for bitdepth 8,
68%-151% speed up for high bitdepth.
Improvements on AVX2 and SSE optimizations.
Improvements on LSX optimizations for LoongArch.
42-49% speedup on speed 0 VoD encoding.
Android API level predicates.
- Bug fixes:
Fix to missing prototypes from the rtcd header.
Fix to segfault when total size is enlarged but width is smaller.
Fix to the build for arm64ec using MSVC.
Fix to copy BLOCK_8X8's mi to PICK_MODE_CONTEXT::mic.
Fix to -Wshadow warnings.
Fix to heap overflow in vpx_get4x4sse_cs_neon.
Fix to buffer overrun in highbd Neon subpel variance filters.
Added bitexact encode test script.
Fix to -Wl,-z,defs with Clang's sanitizers.
Fix to decoder stability after error & continued decoding.
Fix to mismatch of VP9 encode with NEON intrinsics with C only version.
Fix to Arm64 MSVC compile vpx_highbd_fdct4x4_neon.
Fix to fragments count before use.
Fix to a case where target bandwidth is 0 for SVC.
Fix mask in vp9_quantize_avx2,highbd_get_max_lane_eob.
Fix to int overflow in vp9_calc_pframe_target_size_one_pass_cbr.
Fix to integer overflow in vp8,ratectrl.c.
Fix to interger overflow in vp9 svc.
Fix to avg_frame_bandwidth overflow.
Fix to per frame qp for temporal layers.
Fix to unsigned integer overflow in sse computation.
Fix to uninitialized mesh feature for BEST mode.
Fix to overflow in highbd temporal_filter.
Fix to unaligned loads w/w==4 in vpx_convolve_copy_neon.
Skip arm64_neon.h workaround w/VS >= 2019.
Fix to c vs avx mismatch of diamond_search_sad().
Fix to c vs intrinsic mismatch of vpx_hadamard_32x32() function.
Fix to a bug in vpx_hadamard_32x32_neon().
Fix to Clang -Wunreachable-code-aggressive warnings.
Fix to a bug in vpx_highbd_hadamard_32x32_neon().
Fix to -Wunreachable-code in mfqe_partition.
Force mode search on 64x64 if no mode is selected.
Fix to ubsan failure caused by left shift of negative.
Fix to integer overflow in calc_pframe_target_size.
Fix to float-cast-overflow in vp8_change_config().
Fix to a null ptr before use.
Conditionally skip using inter frames in speed features.
Remove invalid reference frames.
Disable intra mode search speed features conditionally.
Set nonrd keyframe under dynamic change of deadline for rtc.
Fix to scaled reference offsets.
Set skip_recode=0 in nonrd_pick_sb_modes.
Fix to an edge case when downsizing to one.
Fix to a bug in frame scaling.
Fix to pred buffer stride.
Fix to a bug in simple motion search.
Update frame size in actual encoding.
And build with CMake which doesn't force compiler flags that don't work.
And it avoids a RECONF call.
CMake patch submitted here https://github.com/xiph/vorbis/pull/105
2024-01-17 v3.8.1
This release includes several bug fixes. This release is ABI
compatible with the last release. See
https://aomedia.googlesource.com/aom/+log/v3.8.0..v3.8.1 for all the
commits in this release.
- Bug Fixes
* aomedia:3520: get_cubic_kernel_dbl: Assertion `0 <= x && x < 1'
failed.
* aomedia:3526: alloc_compressor_data() is called during every
aom_codec_control() call on the encoder.
* aomedia:3527: aom/av1/encoder/mcomp.c:1810: av1_full_pixel_search:
Assertion `ms_params->ms_buffers.ref->width ==
ms_params->ms_buffers.src->width' failed.
* aomedia:3534: libaom encoder crashed by AOM_USAGE_ALL_INTRA and
AOM_EFLAG_NO_REF_LAST flags.
* b/310455204: Recreate workers if necessary.
* b/310548198: Update frame size in actual encoding.
* b/314858909: Do not use adaptive error estimate.
* Fix a hang of cmake on arm64 macOS with cmake 3.27.0 or later.
Release v3.8.0 Jelly Bee
2023-11-30 v3.8.0
This release includes new codec interfaces, compression efficiency and
perceptual improvements, speedup and memory optimizations and many bug
fixes. This release is ABI compatible with the last release.
- New Features
* New codec controls:
* AV1E_SET_MAX_CONSEC_FRAME_DROP_CBR: Set the maximum number of
consecutive frame drops allowed for the frame dropper in 1 pass
CBR mode.
* Run-time CPU feature detection for all Arm platforms:
CRC, DotProd, I8MM and SVE CPU feature presence is detected at run
time and code paths making use of these features are selected
dynamically. These code paths provide meaningful performance gains
for standard bitdepth RTC and VoD encoding: up to 10% and 20%
respectively, over the Armv8.0-A baseline build.
* RTC: Frame-dropper support added to the rate control library.
* RTC Rate control improvements for low bitrate and for SVC.
- Compression Efficiency Improvements
* Improved accuracy of cost estimation for loop restoration and
global motion.
* Improved selection of loop restoration unit size - full search up
to (non-realtime) speed 2, retuned static selection at higher
speeds.
* RTC Screen content mode: 3-5% bdrate gains across speeds 7 - 10.
* Good-quality mode: 0.2 - 0.5% bdrate gains across speeds 1 - 4.
- Perceptual Quality Improvements
* RTC Screen: Improved visual quality for scrolling.
* RTC: Improved color quality for both screen and video mode.
- Speedup and Memory Optimizations
* Good-quality, single-thread encoder speedups:
o 15% improvement for speed 5.
o 12% improvement for speed 6.
* Arm standard bitdepth VoD (--good):
o 8% speedup for speeds 0 and 1.
o 20% speedup for speed 2.
o 27% speedup for speed 3.
o 30% speedup for speed 4.
o 38% speedup for speeds 5 and 6.
* Arm high bitdepth VoD (--good):
o 206% speedup for speeds 0 and 1.
o 180% speedup for speed 2.
o 51% speedup for speeds 3 and 4.
o 68% speedup for speed 5.
o 72% speedup for speed 6.
* RTC Screen content: 2-6% speedup across speeds 7-10.
* RTC: 2-3% speedup for temporal layers.
* RTC: Speedups to reference scaling in nonrd pickmode.
* Good-quality mode: Simplified global motion estimation, saving
~1200 lines of code and 1KB of tables while improving quality.
- Bug Fixes
* Fixes to improve libaom stability in case of memory allocation
failures.
* Fixes to SIMD functions (x86 AVX2/SSE2 and ARM Neon).
* b/310457427, b/310766628: Bug fixes to only use rec_sse in CBR
mode.
ffmpeg libraries ie. avcodec, avformat, swscale and postproc were
disabled for emscripten shared compilation as ffmpeg was not built
with position independent code.
Enable pic for ffmpeg, and ultimately enable those libraries
shared compilation.
This release includes new codec interfaces, compression efficiency and
perceptual improvements, speedup and memory optimizations and many bug fixes.
This release is ABI compatible with the last release.
See:
https://aomedia.googlesource.com/aom/+/refs/tags/v3.7.0
It's faster to get the files from git and compress than downloading
the 400 MB+ package.
We don't use download_git which downloads the whole git history of the
given branch. We use git clone and a sparse checkout to only get the
folder we want for the giant repository.
To include the following commit that was causing high CPU usage on
vlc-ios:
miniserver: fix busy loop on socket error
In case of a socket error, the socket was not removed from the select
pool, causing future select() calls to return immediately, and
readFromSSDPSocket() to be called just after on the failing socket. This
was causing a high CPU load.
For specifying the crypto library, use --with-crypto, as the previous
options seem to have been removed and now cause warnings.
The package can now be build without tests without patching Makefile.am,
by using --disable-tests.
The code touched by the UWP patch has gotten a proper UWP treatment
upstream. However, since 1.11.0 the ClearMemory feature is enabled by
default, and uses SecureZeroMemory. Thus, on UWP, add a dependency on
patched MinGW.
The uninitialized variable is ${pcfiledir}, which is actually a special
variable supported by pkg-config, and is meant to make the .pc files
relocatable (1). While this variable is (mostly) meant for Windows,
where no true system-wide installation exists (2), it also works fine
under Linux. So don't patch it away.
1. d97db4fae4/pkg-config.1 (L400)
2. https://bugs.freedesktop.org/show_bug.cgi?id=62018
The bootstrap script just does autoreconf -vif. But we may need to
pass extra paths to autoreconf.
The configure.ac references a m4 folder that doesn't exist. So we create it.
The bootstrap script just does autoreconf --install. But we may need to
pass extra paths to autoreconf.
The configure.ac references a m4 folder that doesn't exist. So we create it.