AV1 is ready for prime time Part 2: Decoding performance

Last Wednesday I wrote about how the SVT-AV1 encoder developed by Intel and Netflix is maturing quickly. Today we’re going to take a look at AV1 decoding performance, the other side of the equation, at both the x86 and Arm platforms.

x86

AVX2 performance also increased a little with dav1d 0.5.0, that was already very fast.

There’s a new decoder in town, libgav1, created by Google. They say it’s mainly optimized for Arm CPUs. A quick test on x86 shows that even single-threaded performance is worse than both dav1d and libaom in pretty much every scenario.

So discarding libgav1 for x86 for now, let’s see how dav1d 0.5.0 compares to libaom. Single-threaded dav1d is between 1.5 and 2.5 faster.

Multi-threaded that increases to 2.3 to 4.5 times.

Arm

Multi-threaded performance increased even more, between 80 and 90% since it’s first release.

So let’s see how the new kid in town is performing. libgav1 is still a lot slower single-threaded than both libaom and dav1d. Multi-threaded it’s approximately on par with libaom, but nowhere near dav1d.

Looking back at dav1d, on a few real world CPUs, we see that low-end CPUs like the Snapdragon 410 still struggle with 1080p decoding. 720p should be very doable though. High-end devices like the Snapdragon 835 can do 1080p decoding at more than 60 fps when spinning up 4 high performance cores. This has an impact on battery life, but for short sequences it shouldn’t matter that much.

Conclusion

I hope to be able to test energy usage and battery life soon. At the moment I unfortunately don’t have the equipment for it.