AV1 codec update

My previous post was made with the RAV1E and SVTAV1 codecs as they were in mid 2023. Both codecs received significant updates later in 2023. This post looks at the RAV1E 0.7, and SVTAV1 1.8.

As with the previous post, I encoded the same 1000 frame video clip at various presets and quality settings of the two AV1 codecs. I used VMAF to determine the “quality” of each encode.

As an executive summary, while RAV1E would have been an impressive encoder, and the 0.7 is a worthy upgrade, unfortunately, SVTAV1 blows it out of the water. SVTAV1 is far faster, and produces significantly better quality video for the file size. RAV1E falls further behind, at least on the M1 Pro, as RAV1E is essentially unthreaded, while SVTAV1 is well threaded. SVTAV1 encoded video at the same quality, and 30% smaller file size, at 7 times as fast as RAV1E.

RAV1E 0.7

Starting with Rav1E, the encoding quality of version 0.7 seems to be about the same as 0.6, but it encodes significantly faster.

This graph shows the comparative quality:size of RAV1E 0.7. The graph also includes two curves from the previous version of RAV1E, and SVTAV1 S7, and my standard x264 medium. As detailed below, S7 of SVTAV1 encodes significantly faster than any RAV1E preset, and higher quality SVTAV1 presets are significantly better quality than SVTAV1.

This graph shows the RAV1E encoding speed by preset and quality, comparing between RAV1E version 0.7, and 0.6. This graph shows that the encoding speed of 0.7 is almost twice as fast as 0.6. For most quality values, the version 0.7 preset S4 (one of the slower presets) encodes faster than 0.6 preset S9 (the fastest preset). (There are some places in the graph where the speed of encodes at some quality levels/presets are inconsistent. I am fairly sure this is a consequence of my not-terribly-clean encoding environment rather than weirdness in the codec).

It is not clear to me why so many of the RAV1E presets are so close in quailty and encode speed. The S7 preset only encodes about 3% faster than the S6 codec, and produces essentially the same quality video. Why have both? Also, as mentioned above, RAV1E is essentially unthreaded on my M1 Pro, using only 1 (of 8) performance cores. A optimally threaded RAV1E might be able to encode 8 times as fast. As we shall see, even if it were times as fast, RAV1E would not catch up to SVTAV1.

SVTAV1 1.8

I was already impressed with SVTAV1 version 1.6. SVTAV1 1.7 and 1.8 both reported significant speed increases, with the change log for 1.8 noting that on ARM CPUs (like the M1 Pro), it is 4.5-8x faster, with quality improvements.

This first graph shows the comparative quality:size of the various SVTAV1 presets. Also shown are a couple of presets from version 1.6, one RAV1E preset, and old reliable, x264 medium. There have been some, not insignificant quality improvements between SVTAV1 version 1.6 and 1.8.

This second chart shows the encoding speed by preset. SVTAV1 Presets S11 and S12 was consistently encoding 1080p video at more than 100fps. As a comparison x264 medium also encodes at about 100fps, and the M1 Pro hardware H265 encoder encodes at about 170fps. Significantly higher quality presets such as S6 encode at about 20fps. The slowest preset I used with version 1.8 of SVTAV1, S1 was encoding at 4fps, which is still about twice as fast as the fastest RAV1E preset. The chart includes the encoding speed of two version 1.6 presets.

Looking at SVTAV1 further, this chart compares the presets by quality setting, and VMAF. The slower presets produce significantly higher VMAF scores at lower quality settings, but this advantage diminishes as the quality settings get higher.

This chart compares the SVTAV1 presets by quality setting and size. The graph shows that at very high quality settings, the slower presets will produce slightly smaller file sizes, but at lower quality settings, every preset will produce about the same sized output.

So, if you want very high quality video, it may be sufficient to use a faster preset. Meanwhile, if you want a more compressed video at a general file size point, experimenting with a faster preset will give you a pretty good idea of the final encode size.

At this point, it is fair to say, I have become entranced by SVTAV1.

Finally, I return to the chart from my last post, which shows the speed and size of the various codecs and presets when producing a video encode of about VMAF 90. As with the chart in the other post, there is some jankiness to the lines as it is not possible to encode a video based on a specified VMAF score. This chart is also based on total CPU time, which means that the advantage in real-time encoding of well threaded codecs is not shown here. All codecs shown here other than RAV1E are properly threaded. So in practical terms, all codecs other than RAV1E should be almost an order of magnitude better than they are shown.

The chart shows that RAV1E 0.7 (shown as rav1e 2401)is significantly faster than RAV1E 0.6. But SVTAV1 1.8 (shown as svtav1 2401)is on another level. Preset S8 of STVAV1 is faster than any x265 preset, while producing a smaller file size for VMAF90 than the slowest x265 preset.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.