An AV1 Progress Update

I've been remiss in not posting more about AV1, partly because I've spent much of my time as a heads-down programmer on the project. At least in my own mind, programming and writing, even technical writing, are vastly different things, and it's hard to do one while concentrating hard on the other.

But with no further ado, here's a quick update on the upcoming AV1 standard.

Are we done yet?

The short answer is no. We're at the point of a soft bitstream freeze, meaning that there will be no more architected changes to the bitstream, but there are bugs left to fix and so some necessary changes left. Since Daala TX (what I was working on until recently) has been moved back to AV2 and won't be making it into AV1, the primary remaining technical work involves finalizing clamping and internal precision in the existing 'scale-managed' transforms, plus whatever else we find as we nail down format testing.

Tim Terriberry just gave a great presentation on AV1 at FOSDEM, a nice video of which is on YouTube.

What's coding performance like?

Short answer: So far, coding efficiency is looking pretty good.

Although video testing is downright tricky (the results of any test are pretty much going to be determined by how the test is set up, what parameters, what video clips, and it's easy to screw this sort of thing up by accident), our own visual testing puts us noticeably on top of HEVC, and Xiph's automated objective testing at AreWeCompressedYet (here's a recent run also shown in the screenshot below) puts AV1 fairly well ahead.

So, are we ahead by 10% or 20% or 30% or 50%? There's going to be endless arguing about the specific number. See again above--- the clips, encoding parameters, and metrics chosen will mostly determine the results. That said, the AV1 toolbox is clearly producing more bit-efficient streams even though the encoder is, frankly, not very well tuned yet. So, if we're ahead now, we're in good shape; that's only going to get better.

If we have to pick a number for press purposes, I'll go with the yearly independent Moscow State University codec comparison tests that are generally well done and, for that reason, widely quoted in the press. It found AV1 to match x264 quality at 55% of the bitrate, and improve on x265 by about 20%.

Isn't the AV1 encoder, like, really really slow?

Oh goodness, yes, unforgivably slow... at the moment.

The encoder available from AOMedia Git is the development and experimentation platform, full of hundreds of 'toolkit' experiments, some that were adopted, many more that weren't. Speed of implementation was never a concern, except where it would make testing to slow to continue at all. It's perfectly useful, but it sure as heck ain't fast.

Although the implementation is slow, that's not inherent to the format. We did care about algorithmic complexity, and thus the eventual speed, and you'll notice the reference decoder is reasonably fast. The slowness is just a problem with the current reference encoder.

To that end, the Xiph folks and Mozilla have already started on a from-scratch encoder (currently named rav1e, the Rust AV1 Encoder) and I expect other groups have started on encoders too.

Oh hey, about our new AV1 encoder!

Did I mention Thomas Daede has begun work on a new AV1 encoder? Rav1e (aka the Rust AV1 Encoder... perhaps it will eventually get renamed to something catchier like maybe 'Gorlpateehecd')

Rav1e will need to be the subject of a few more posts in the near future.

Stream Analyzer

Don't forget to FOSS

It's worth reminding everyone that the AV1 format is Free (in the beer, freedom and puppy senses) and Open, and the reference implementation as well as rav1e are FOSS. So we're finally at the point where 'best' and 'free' are the same video codec. As even Leo Chiariglione argues, there's no going back from here. Web video is finally going to be truly Free for everyone.