AV1 Community

148 readers
6 users here now

All things relating to the AV1 video codec.

founded 1 year ago
MODERATORS
1
 
 

SVT-AV1-PSY v2.2.0

Long time no see! We're back with another exciting release: SVT-AV1-PSY v2.2.0! πŸŽ‰

PSY Updates

Features

  • --tf-strength parameter for manually adjusting temporal filtering strength. By default, reduces temporal filtering strength by 4x
  • --chroma-qm-min & --chroma-qm-max parameters for adjusting quantization matrix flatness for chroma planes
  • --tune 4 - A new Tune called Still Picture has been introduced for AVIF encoding, with promising gains observed over aomenc, aomenc 4:4:4, and mainline SVT-AV1

Quality & Performance

  • Enable 10-bit subpixel motion estimation processing for 10-bit inputs on Preset 3 & below
  • Enable SUPERRES_AUTO_ALL for Tune 3 when superres-mode=4
    • Disables ALT-REF superres for speed and quality
  • Add unipred bias for SSIM full mode decision cost when using Tune 3
  • New perceptual QM curve when using Tune 3
    • Better chroma QM adjustment & better high fidelity performance
  • Vastly improved screen content detection when --scm 2 is set. Currently only enabled in Tune 4

Documentation

  • --help menu correctly prints maximum CRF value (70)
  • Default Tune 2 is better reflected across documentation
  • Updated build documentation
  • Additional featured projects

Bug Fixes

  • Scoped down QM disablement to only affect NEON-enabled systems
  • Scoped down global sharpness features to --sharpness 1, as was the original intention

Mainline Updates

API updates

  • No API changes on this release

Encoder

  • Improve the tradeoffs for the random access mode across presets:
    • Speedup of ~15% across presets M0 - M8 while maintaining similar quality levels
  • Improve the tradeoffs for the low-delay mode across presets
  • Increased temporal resolution setting to 6L for 4k resolutions by default
  • Added ARM optimizations for functions with c_only equivalent yielding an average speedup of ~13% for 4k 10-bit

Cleanup Build & bug fixes & documentation

  • Profile-guided-optimized helper build overhaul
  • Major cleanup and fixing of Neon unit test suite
  • Address stylecheck dependence on public repositories

Support Us

As SVT-AV1-PSY's codebase has become more complex and the encoder's capabilities have increased dramatically, our efforts have scaled in kind. We have poured hours into coding, testing, distributing, and supporting this piece of open-source software entirely for free, and our work isn't stopping any time soon.

If you appreciate the work that we do and you'd like to support us, we are always excited to see code contributions from outside of the core development team. Otherwise, you can support us monetarily via the links below.

Gianni Rosato: Donate

Julio Barba: Donate Soon

BlueSwordM: Coming Soon

Clybius: Coming Soon

Any support you can offer goes a long way, and we sincerely appreciate it. β™₯️

Thanks for using SVT-AV1-PSY! <3

Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.2.0

2
 
 

Give the issue & upvote and comment to show your support - every like helps!

3
 
 

[2.2.0] - 2024-08-19

API updates

  • No API changes on this release

Encoder

  • Improve the tradeoffs for the random access mode across presets:
  • Speedup of ~15% across presets M0 - M8 while maintaining similar quality levels (!2253)
  • Improve the tradeoffs for the low-delay mode across presets (!2260)
  • Increased temporal resolution setting to 6L for 4k resolutions by default
  • Added ARM optimizations for functions with c_only equivalent yielding an average speedup of ~13% for 4k10bit

Cleanup Build and bug fixes and documentation

  • Profile-guided-optimized helper build overhaul
  • Major cleanup and fixing of Neon unit test suite
  • Address stylecheck dependence on public repositories
4
 
 

bdr-ssimu2

Encode, analyze, & plot SSIMULACRA2 scores using a source video file that is encoded with FFmpeg.

This Python script generates BD-Rate (BjΓΈntegaard-Delta Rate) graphs for comparing the performance of different encoding commands. It encodes a source video with various specified Constant Rate Factor (CRF) values, calculates SSIMULACRA2 scores, and plots the results via matplotlib.

Features

  • Encodes a source video using two user-configurable FFmpeg commands
  • Calculates SSIMULACRA2 scores (and soon XPSNR scores as well)
  • Generates BD-Rate curves comparing the two encoding commands
  • Outputs both average and harmonic mean SSIMULACRA2 plots
  • Allows for temporal metric analysis subsampling (sampling every nth frame)

Prerequisites

  • Python 3.x
  • FFmpeg
  • VapourSynth with:
  • Required Python packages:
    • vapoursynth
    • matplotlib
    • tqdm

See more in the linked Git repo's README!

5
 
 

Introducing SVT-AV1-PSY v2.1.0-A

Features

  • New parameter --max-32-tx-size, which restricts block transform sizes to a maximum of 32x32 pixels. This can be useful in very specific scenarios for improving overall efficiency
  • Added support for HDR10+ JSON files via a new --hdr10plus-json parameter (thanks @quietvoid!). In order to build a binary with support for HDR10+, see our PSY Development page.
  • New parameter --adaptive-film-grain, which helps remedy perceptually harmful grain patterns caused by extracting grain from blocks that are too large for a given video resolution. This parameter is enabled by default

Quality & Performance

  • Disabled SSIM-cost transform decisions while keeping SSIM-cost mode decisions, generally improving Tune 3's efficiency & consistency
  • Additional NEON optimizations for ARM platforms, providing a speed increase

Documentation

  • All of the features present in this release have been documented, so associated documentation has been updated accordingly
  • Build documentation updated to reflect the HDR10+ build option

Bug Fixes

  • Disabled quantization matrices for presets 5 and higher due to a visual consistency bug (#56)

Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.1.0-A

6
 
 

SVT-AV1 2.1.0 just released, how does it compare to SVT-AV1 2.0.0? Well-known encoder Trix attempts to answer this question with metrics, graphs, and detailed analysis.

7
 
 

[2.1.0] - 2024-05-17

API updates

  • One config parameter added within the padding size. Config param structure size remains unchanged
  • Presets 6 and 12 are now pointing to presets 7 and 13 respectively due to the lack of spacing between the presets
  • Further preset shuffling is being discussed in #2152

Encoder

  • Added variance boost support to improve visual quality for the tune vq mode
  • Improve the tradeoffs for the random access mode across presets:
  • Speedup of 12-40% presets M0, M3, M5 and M6 while maintaining similar quality levels
  • Improved the compression efficiency of presets M11-M13 by 1-2% (!2213)
  • Added ARM optimizations for functions with c_only equivalent

Cleanup Build and bug fixes and documentation

  • Use nasm as a default assembler and yasm as a fallback
  • Fix performance regression for systems with multiple processor groups
  • Enable building SvtAv1ApiTests and SvtAv1E2ETests for arm
  • Added variance boost documentation
  • Added a mailmap file to map duplicate git generated emails to the appropriate author
8
 
 

Hi there! We're back with a new micro-release format to announce some exciting changes in SVT-AV1-PSY v2.0.0-A! πŸŽ‰

PSY Updates

Features

  • The CRF range, previously capped at 63, has been extended to a maximum value of 70. It can also be incremented in quarter increments of 0.25
  • New option: --enable-dlf 2 for a slower, more accurate deblocking loop filter
  • New option: --qp-scale-compress-strength (0 to 3) which sets a strength for the QP scale algorithm to compress values across all temporal layers. Higher values result in more consistent video quality
  • New option: --frame-luma-bias (0 to 100) enables experimental frame-level luma bias to improve quality in dark scenes by adjusting frame-level QP based on average luminance across each frame

Quality & Performance

  • A temporal layer qindex offset has been added to Tune 3 for more consistent quality across frames when encoding
  • Minor speed bump to Preset 8
  • Dynamic delta_q_res switching implemented to help reduce signaling overhead, which should improve quality especially at CRF β‰₯40
  • Other general improvements to Tune 3

Documentation

  • PNG images have been replaced with smaller lossless WebP images, resulting in faster loading & repository cloning times.
  • More consistent & thorough PSY Development page, including build instructions

Bug Fixes

  • Help menu formatting adjusted for less frequent underlining
  • --progress 2 no longer reports the same information as --progress 3

Other

  • Introducing PSY Micro-releases! Each micro-release will be marked with a letter, bringing a bundle of new features & improvements. The release letter will reset back to the initial A each time our mainline version is updated. More info can be found in this project's README & the PSY Development page

Thanks for using SVT-AV1-PSY! β™₯️

Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.0.0-A

9
 
 

From the GitHub releases:

Hello, everyone! We've been hard at work enhancing SVT-AV1 with our additions to the encoder improving visual fidelity. Little by little, we are working on trying to bring many of them to mainline! For the time being, I want to note that major SVT-AV1-PSY releases & mainline releases are not the same, and the codebases differ due to our changes; the version numbers may be identical, but the versions themselves are not, which is disclosed within the encoder's version information. With that, we're excited to announce SVT-AV1-PSY v2.0.0! πŸŽ‰

PSY Updates

Variance boost

  • Moved varboost delta-q adjusting code to happen before TPL, giving TPL the opportunity to work with more accurate superblock delta-q priors, and produce better final rdmult lambda values
    • Fixed rare cases of pulsing at high CRFs (>=40) and strengths (3-4)
    • 2% avg. bitrate reduction for comparable image quality
  • Added an alternative boosting curve (--enable-alt-curve), with different variance/strength tradeoffs
  • Refactored boost code so it internally works with native q-step ratios
  • Removed legacy variance boosting method based on 64x64 values
    • Parameter --new-variance-octile -> --variance-octile

Excitingly, a var-boost mainline merge has been marked with the highest priority issue label by the mainline development team, so we may see this in mainline SVT-AV1 soon! Congrats @juliobbv! πŸŽ‰

Other

  • Presets got faster, so in addition to Preset -2, we have an even slower Preset -3
  • --sharpness now accepts negative values
  • The SVT-AV1-PSY encoder now supports Dolby Vision encoding via Dolby Vision RPUs. To build with Dolby Vision support, install libdovi & pass --enable-libdovi to ./build.sh on macOS/Linux (or enable-libdovi to ./build.bat on Windows).

Mainline Updates

Major API updates

  • Changed the API signaling the End Of Stream (EOS) with the last frame vs with an empty frame
  • OPT_LD_LATENCY2 making the change above is kept in the code to help devs with integration
  • The support of this API change has been merged to ffmpeg with a 2.0 version check
  • Removed the 3-pass VBR mode which changed the calling mechanism of multi-pass VBR
  • Moved to a new versioning scheme where the project major version will be updated every time API/ABI is changed

Encoder

  • Improve the tradeoffs for the random access mode across presets:
  • Speedup presets MR by ~100% and improved quality along with tradeoff improvements across the higher quality presets (!2179,#2158)
  • Improved the compression efficiency of presets M9-M13 by 1-4% (!2179)
  • Simplified VBR multi-pass to use 2 passes to allow integration with ffmpeg
  • Continued adding ARM optimizations for functions with c_only equivalent
  • Replaced the 3-pass VBR with a 2-pass VBR to ease the multi-pass integration with ffmpeg
  • Memory savings of 20-35% for LP 8 mode in preset M6 and below and 1-5% in other modes / presets
  • Film grain table support via --fgs-table (already in SVT-AV1-PSY) (link)
  • Disable film grain denoise by default (already in SVT-AV1-PSY) (link)

Cleanup, bug fixes & documentation

  • Various cleanups and functional bug fixes
  • Update the documentation to reflect the rate control

Thanks for using SVT-AV1-PSY! β™₯️

Full Changelog: https://github.com/gianni-rosato/svt-av1-psy/commits/v2.0.0

10
7
submitted 5 months ago* (last edited 5 months ago) by [email protected] to c/[email protected]
 
 

[2.0.0] - 2024-03-13

Major API updates

  • Changed the API signaling the End Of Stream (EOS) with the last frame vs with an empty frame
  • OPT_LD_LATENCY2 making the change above is kept in the code to help devs with integration
  • The support of this API change has been merged to ffmpeg with a 2.0 version check
  • Removed the 3-pass VBR mode which changed the calling mechanism of multi-pass VBR
  • Moved to a new versioning scheme where the project major version will be updated every time API/ABI is changed

Encoder

  • Improve the tradeoffs for the random access mode across presets:
  • Speedup presets MR by ~100% and improved quality along with tradeoff improvements across the higher quality presets (!2179,#2158)
  • Improved the compression efficiency of presets M9-M13 by 1-4% (!2179)
  • Simplified VBR multi-pass to use 2 passes to allow integration with ffmpeg
  • Continued adding ARM optimizations for functions with c_only equivalent
  • Replaced the 3-pass VBR with a 2-pass VBR to ease the multi-pass integration with ffmpeg
  • Memory savings of 20-35% for LP 8 mode in preset M6 and below and 1-5% in other modes / presets

Cleanup and bug fixes and documentation

  • Various cleanups and functional bug fixes
  • Update the documentation to reflect the rate control changes
11
 
 

It's official that Android will be rolling out dav1d to replace libgav1 as a system wide codec on Android 14 devices, though there is potential for it to be supported as far back as Android 10. Finally, libgav1 is no more!

12
 
 

Does anyone know how to determine the level of grain synth used in an encoded video? I have .webms that I've encoded with ffmpeg and svt-av1 but I don't have that grain synth information anymore.

In fact it would be nice if I could just see any other information about an encoded video (rate factor, preset used, etc). These details don't appear when using mediainfo so I presume they are lost and unknowable. But grain synth occurs at decode time, so that should still be something I can figure out, right?

13
 
 

Some big changes have been introduced in SVT-AV1-PSY, courtesy of Clybius, the author of aom-av1-lavish! Here is the changelog:

Feature Additions

  • Tune 3 A new tune based on Tune 2 (SSIM) called SSIM with Subjective Quality Tuning. Generally harms metric performance in exchange for better visual fidelity.
  • --sharpness A parameter for modifying loopfilter deblock sharpness and rate distortion to improve visual fidelity. The default is 0 (no sharpness).

Modified Defaults

  • Default 10-bit color depth. Might still produce 8-bit video when given an 8-bit input.
  • Disable film grain denoising by default, as it often harms visual fidelity.
  • Default to Tune 2 instead of Tune 1, as it reliably outperforms Tune 1 on most metrics.
  • Enable quantization matrices by default.
  • Set minimum QM level to 0 by default.

That's all, folks! Keep an eye on the master branch for more changes in the future!

14
 
 

Introduced in April 2021 was the initial Vulkan Video support for a new video encode/decode API built around Vulkan. That initial Vulkan Video support was catered to H.264 and H.265 while finally with today's Vulkan 1.3.277 release there is a new extension introduced for AV1 video decoding.

15
 
 

Today, we have a very exciting development - Aviator, the Linux GUI for AV1 encoding, has switched to an in-house custom fork of SVT-AV1 dubbed SVT-AV1-PSY!

Featuring development efforts from BlueSwordM (author of the previous custom fork), myself (Gianni), and others, this change will enable us to have much more control over the encoder's development so that it aligns most effectively with Aviator's number one priority: visual quality.

So far, SVT-AV1-PSY's most noteworthy feature is a variance boost patch that appreciably improves intra- and inter-frame fidelity consistency across wide range of content. Visual fidelity per bit is estimated to have increased by up to 5% with this patch, which currently isn't present in mainline SVT-AV1.

Even though this patch should inevitably make it to mainline, the gains from having more direct control are already being realized as we can implement features like this flexibly at a pace we decide.

Aside from that, FFmpeg has been updated to version 6.1, the SCM toggle has been replaced with a more useful Open GOP toggle, and the README has been modified to reflect some of these more recent changes with regard to SVT-AV1-PSY.

Thank you for using Aviator, and happy encoding!

Aviator can be downloaded on Flathub, where 0.5.0 will be available soon.

16
 
 

This blog post on the Codec Wiki by encoder Trix presents extensive benchmarking of SVT-AV1 1.8.0 on animated content using both objective metrics and subjective image comparisons (the subjective part is coming soon). Short high-quality anime clips were encoded directly with SVT-AV1 across a range of settings. SSIMULACRA2 visual quality scores and encoding speeds were measured for each encode, along with bits per pixel to calculate encoding efficiency. The results are presented through graphs showing metric scores and speed, alongside comparison images enabling subjective evaluation of visual quality (again, comparison images coming soon for subjective analysis). This rigorous testing methodology provides insightful analysis of how SVT-AV1 performs when encoding animation.

17
 
 

This program generates an AV1 video encoding command for use with Av1an, a chunked AV1 encoding tool for use with aomenc, SVT-AV1, and rav1e.

This tool takes in the video resolution, frame rate, desired encoder, speed preset, and target bitrate range as command line arguments. Based on these parameters, it calculates settings like tile columns/rows, lag-in-frames, CRF, and encoder speed preset. Then, it injects these into a generated encoding command string.

The output is a full Av1an command that can be run to encode a video based on the specified settings.

18
 
 

Encoder

Improve the tradeoffs for the random access mode across presets: Speedup CRF presets M6 to M0 by 17-53% while maintaining similar quality levels Re-adjust CRF presets M7 to M13 for better quality with BD-rate gains ranging from 1-4% Improve the quality and speed of the 1-pass VBR mode Improve Multi Pass VBR algorithm for better quality with BD-rate gains of ~3% on average More details on the per preset improvements can be found in MR !2143

Add API allowing to update bitrate / CRF and Key_frame placement during the encoding session for CBR lowdelay mode and CRF Random Access mode ARM Neon SIMD optimizations for most critical kernels allowing for a 4.5-8x fps speedup vs the c implementation

Cleanup and bug fixes and documentation

Various cleanups and functional bug fixes Update the documentation for preset options and individual features

19
 
 

Huge improvements for AV1 users over the last stable HandBrake release.

20
 
 

I think with the weight of Apple finally behind AV1 it is as blessed of a format as anything can be. Sisvel be damned.

And, a new media engine now includes support for AV1 decode, providing more efficient and high-quality video experiences from streaming services.

I do not see AV1 encode support on this chip's announcement, however.

21
5
submitted 9 months ago* (last edited 6 months ago) by [email protected] to c/[email protected]
 
 

Another aom psy fork, by me, utilizing patches from the unmaintained psy fork and its popular lavish fork, as well as original changes. It's overall closer to mainline, as I have decided against applying a lot of patches that I found to be more harmful than beneficial for efficiency when applied to current mainline aomenc. If you're missing parameters from aomenc-lavish, please request them with a short explanation, I might add them, currently I have only applied those that I am interested in using myself. Other suggestions are welcome as well.

I plan to frequently merge mainline changes into this fork.

Defaults are much improved, something like a simple --end-usage=q --threads=16 --tune-content=psy --cpu-used=4 --cq-level=20 should provide very good results.

22
 
 

In the world of AV1 encoding, achieving high-quality, efficient compression often requires intricate knowledge & fine-tuning of confounding parameters (aom-av1-lavish ... looking at you, wink). This difficulty is compounded by the fact that you are faced with three open-source encoding options that are all compelling for different reasons. This can make tapping into AV1's potential a daunting task for novice and even intermediate users.

That's where rav1ator-cli comes in. I have attempted to distill weeks (months?) of community parameter testing & expertise into an easy-to-use interactive command line interface. With just a few prompts, rav1ator-cli guides you through choosing an encoder & selecting settings to achieve maximum perceptual efficiency at any speed or quality setting you prefer. Adding in the ability to specify custom parameters, rav1ator-cli provides a smooth on-ramp for newcomers while remaining flexible enough for power users.

Here are some of rav1ator-cli's standout features that make it a superb encoding tool: rAV1ator CLI can:

  • Check if it is installed & up to date on its own without a package manager
  • Download AVX2-optimized encoder binaries compiled with -O3 -flto in most cases & allow the user to install them with detailed instructions
  • Encode with x264, x265, aomenc, SVT-AV1, or rav1e & set a speed preset, CRF/quality value, FFmpeg parameters, and encoder parameters
  • Use pre-defined encoding parameters that are provided so you can say goodbye to cargo culting
  • Generate Av1an encoding commands with the user's chosen settings & run them to encode a provided input video to an MKV output
  • Encode from scratch, or resume a previous rav1ator-cli encode
  • Engage with rich interactivity featuring spinners, prompts, dropdowns, & other glitz
  • Error check downloads by checking hashes on the downloaded binaries for security & convenience

This tool is Linux only. If you'd like to install: These instructions are for Arch Linux specifically, but if you have all the dependencies, you can skip to Step 3 & it'll work on any distro (I'm assuming this includes WSL, too).

  1. Update your system before doing anything. On Arch:
sudo pacman -Syu
  1. Install yay (Arch only) by running the following commands:
sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/yay.git
cd yay &amp;&amp; makepkg -si
  1. Next, you'll want to install all of rav1ator-cli's dependencies. You can do that by running:
yay -Sy rust ffmpeg python mkvtoolnix-cli vapoursynth gum numactl l-smash vapoursynth-plugin-lsmashsource av1an ffms2
  1. Install rav1ator-cli:
curl -sOJ https://raw.githubusercontent.com/gianni-rosato/rav1ator-cli/main/rav1ator-cli &amp;&amp; chmod +x rav1ator-cli
sudo cp rav1ator-cli /usr/local/bin

Thank you for looking at rAV1ator CLI! You can see demos as well as more info on the project at either link below. GitHub | Codec Wiki

Connect with me: https://discord.gg/bbQD5MjDr3

23
 
 

Hey AV1 Enthusiasts, encoders, and newbies alike,

I remember being completely new to the world of multimedia codec technology, and being totally lost on where to begin learning. To address this, I've decided to create a server tailored toward new learners. If you're looking to deepen your knowledge of multimedia codecs, particularly AV1, or you believe you have valuable insights to share, we've got an amazing community waiting for you.

I am thrilled to invite you to the AV1 for Dummies Discord server, a place dedicated to demystifying the fascinating world of AV1 encoding & beyond. Whether you're a seasoned codec professional or just dipping your toes into this field, there's something here for everyone.

Alongside this, I'm publicly announcing the Codec Wiki, a place where you can read about anything codec-related for hours on end. This wiki aims to demystify the realm of multimedia compression while connecting codec enthusiasts to create a sink of knowledge for the benefit of everyone. It is still under heavy development, so please heed this as you take in the information available on the site. If you have any questions or concerns, the place to ask is in the AV1 for Dummies server.

What's in it for you?

  • πŸ“š Learning Resources: Access encoding tools, their developers, and an entire wiki dedicated to AV1 & other multimedia codecs.
  • πŸ’¬ Engaging Conversations: Join lively discussions, ask questions, and share insights with fellow codec enthusiasts.
  • πŸ§™β€β™‚οΈ Expert Insights: Seasoned experts with rich codec experience are available to discuss your needs with you as you learn.
  • 🎲 Fun Challenges: Participate in codec-related contests and games to make learning enjoyable. (coming soon)
  • πŸ“Œ Organized Topics: We have dedicated channels to ensure focused discussions, and a forum for asking & answering burning questions.

Ready to dive in? Here's the invite link: discord.gg/bbQD5MjDr3

We're all about respect and open-mindedness, creating a safe space for everyone to learn and grow. Come say hello, introduce yourself, and be a part of our growing community!

Let's learn, explore, and master the intricacies of AV1 and multimedia codecs together. Join us at "AV1 for Dummies" & unlock the world of AV1!

See you there! πŸš€ ps: I posted this on Reddit as well, but this was not automatically also posted to Lemmy - I did that manually, as I like Lemmy more ;)

24
25
 
 

Updated SVT-AV1 to 1.7.0, which features rebalanced presets & more massive speed improvements In light of SVT-AV1's speedy development, Preset 7 is now high enough quality to be featured as Aviator's default speed preset "Copy Audio" now disables other audio options in the GUI New "Adaptive SCM" toggle (explained in tooltip) Small fixes & adjustments

Download for Linux on Flathub!

view more: next β€Ί