The release of the SVT-AV1 2.0 (Scalable Video Technology AV1) library with implementations of the encoder and decoder of the AV1 video encoding format has been published. The project was created by Intel in partnership with Netflix to achieve a level of performance suitable for on-the-fly video transcoding and use in video-on-demand (VOD) services. Currently, development is carried out under the auspices of the Open Media Alliance (AOMedia), which oversees the development of the AV1 video encoding format. Previously, the project was developed within the framework of the OpenVisualCloud project, which also develops SVT-HEVC and SVT-VP9 encoders. The code is distributed under the BSD license.
SVT-AV1 can be assembled for systems based on any architecture for which there is a compiler that supports the C99 standard, but the best performance is achieved on x86_64 systems, for which assembly optimizations based on SIMD instructions are used (it is desirable to have AVX2 support in the CPU, but as the minimum is sufficient and SS2). Memory consumption depends on the number of processor cores used during encoding, regulated by the “-lp” option. Due to the complexity of the algorithms used in AV1, encoding this format requires significantly more resources than other formats, which does not allow the use of the standard AV1 encoder for real-time transcoding. For example, the stock encoder from the AV1 project requires 5721, 5869 and 658 times more calculations compared to the x264 ("main" profile), x264 ("high" profile) and libvpx-vp9 encoders.
Among the changes in the new SVT-AV1 release:
- A transition has been made to a new version numbering, according to which the first digit in the version will change with each API/ABI change.
- Changes have been made to the API related to the transition to the end of stream indication (EOS - End Of Stream) in the last frame instead of using an empty frame, which eliminated the delay in waiting for an extra frame. The API change is already reflected in the FFmpeg codebase.
- The three-pass variable bitrate mode (3-pass VBR) has been removed, and is now replaced by a multi-pass VBR mechanism. VBR multi-pass mode has been reduced to two passes to ensure integration with FFmpeg.
- Optimizations have been added to the encoder, as a result of which the compression efficiency of the M9-M13 presets has increased by 1-4%, and the memory consumption of the M5 preset has decreased by 20-35% in LP 8 mode and by 1-5% in other modes. Memory consumption in other presets decreased by 1-5%.
- Optimization of quality/speed compromises has been carried out for presets that set a high level of quality. The reference quality MR preset has been accelerated by 100%.
- ARM-specific optimizations have been added to C-only functions.
Additionally, we can note the release of the dav1d 1.4.1 project, within which the VideoLAN and FFmpeg communities are developing a library with the implementation of an alternative free decoder for the AV1 video encoding format. The dav1d library supports all the features of AV1, including advanced types of subsampling and all color depth control parameters stated in the specification (8, 10 and 12 bits). The key feature of dav1d is its focus on achieving the highest possible decoding performance and ensuring high-quality work in multi-threaded mode. The project code is written in C (C99) with assembly inserts (NASM/GAS) and is distributed under the BSD license. Support for x86, x86_64, ARMv7 and ARMv8 architectures, and operating systems FreeBSD, Linux, Windows, macOS, Android and iOS has been implemented.
Version dav1d 1.4 is notable for supporting the new Loongarch and RISC-V architectures, as well as introducing additional optimizations based on AVX-512 instructions, accelerating the operation of 6tap filters on ARM systems, increasing the efficiency of multi-threaded work and reducing the size of binary data on ARM64, ARM32 and RISC-systems V. Fixed vulnerability CVE-2024-1580, which caused an out-of-bounds write due to an integer overflow when processing very large frame sizes.
Source: opennet.ru
