Takem Google confirms that Android is switching to @videolan’s libdav1d decoder for AV1 video playback!
I first reported back in February that Google plans to roll out a Play System Update that enables libdav1d as Android’s default AV1 software decoder. Yesterday, Arif Dikici, Software Development Manager on the Android Video and Image Codecs team, confirmed the news.
“Android welcomes dav1d, the best AV1 software decoder. It’s official! All Android devices back to Android S received this new codec over the air. Most devices can decode 720p30 in software using dav1d. Apps need to opt into dav1d to benefit for now yet soon it will become the default av1 software decoder.”
The libdav1d codec is available on Android 12+ devices with the March 2024 Google Play System Update or newer. However, the libgav1 codec is still used by default, so apps have to manually opt in to using libdav1d instead. YouTube has already started doing so (though this has led to mixed results for some users).
Compared to libgav1, libdav1d is significantly more efficient and performant at decoding AV1 videos. Of course, a hardware accelerated decoder is still preferred, but many devices don’t have a HW AV1 decoder.
Let me know if you’ve noticed any changes in YouTube following the March 2024 GPSU!
Android S is Android 12 BTW, for those who can’t remember the letters after they got rid of the deserts
Software decoding video of any kind on a phone is a terrible idea, mostly for battery reasons. AV1 should only be available to hardware decode capable chips unless you’re on a desktop or something like that.
Should YouTube send an AV1 stream to a phone without hardware decoding? No. Should a phone without hardware decoding have the ability to play AV1 streams? Yes.
YouTube as a content deliverer is going to care more about using less bandwidth than the devices battery, so if the phone can play it, you bet your ass YouTube will send it.
No. YouTube cares way, way more about user retention and engagement than it does about bandwidth. They will absolutely send the stream that keeps the device running longer and playing more ads.
YouTube makes its money with ads. The more videos a user can watch the more ads YouTube can deliver to the user. Close to 90% (!!!) of all YouTube traffic comes from mobile devices. Therefore it is in YouTubes own interest to allow its users to watch as many videos as possible.
You can be sure that big CDNs will still provide hw-decodeable streams to mobile devices, despite google now offering a performant software decoder on Android. For the same reason twitch not only introduced AV1, but at the same time HEVC as new codec (since HEVC now has broad hw-decode support among mobile devices, unlike AV1).
Funfact: YouTube’s AV1 streams are often considerably larger than the VP9 variant. They are not opting for bandwidth savings currently.
The integration of software decoding is mainly meant as a fallback. As AV1 will become more widespread you will run into cases where there will only be an AV1 encoded version of a video. Not on big platforms like YouTube, but smaller sites. Think the embedded clip in a Wordpress blog or something like that.
Having said that, dav1d is a very very performant software decoder and its impact on battery life is often negligent for the average user.