VP9 and AV1 codec support on ATV

Good morning!

I recently purchased the latest Apple TV and noticed some performance issues when trying to play 4K 60 FPS videos encoded with VP9 or AV1 codecs.

For example, download the following video streams from 4k Costa Rica video

List streams
youtube-dl -F COSTA RICA IN 4K 60fps HDR (ULTRA HD) - YouTube
701 mp4 3840x2160 2160p60 HDR 28033k , mp4_dash container, av01.0.13M.10.0.110.09.16.09.0@28033k, 60fps, video only, 1.02GiB
337 webm 3840x2160 2160p60 HDR 28869k , webm_dash container, vp9.2@28869k, 60fps, video only, 1.05GiB

Download
youtube-dl -f 337 www.youtube.com/watch?v=LXb3EKWsInQ
youtube-dl -f 701 same url

I am getting less than 1 frame per second when trying to play them with Infuse 7. It seems that Infuse is using software playback and processor inside AppleTV is just not powerful enough to handle them.

Native YouTube app however is able to play this video without any issues and “stats for nerds” show that it is using steam ‘337’ aka VP9 @ 60 fps without any dropped frames. I assume that native YouTube app is using hardware acceleration to play VP9 at such high bitrate/framerate.

Would it be possible to add hardware VP9 support for Infuse?

I think VP9 is only supported in all Apple SOC‘s via software decoding. Even the A14 I don’t think has hardware decoding. But that doesn’t mean that software decoding can’t be improved.

I was under impression that CPU in ATV is not powerful enough to decode 60 FPS in 4k, but maybe YouTube app team has done it.

@movie_lover cheers! I did not know that.

I have done a bit more testing with high bitrate YouTube videos (e.g. Real 4K HDR 60fps: LG Jazz HDR UHD (Chromecast Ultra) - YouTube)

VP9 / 2160p / 60Hz / SDR - video plays, but there are a lot of frame drops
VP9 / 2160p / 60Hz / HDR - video does not play. Black screen with a white spinner in the middle
VP9 / 1440p / 60Hz / SDR - video plays properly. I did not notice any issues.
VP9 / 1440p / 60Hz / HDR - video does not play. Black screen with a white spinner in the middle
VP9 / 1080p / 60Hz / SDR - video plays properly. I did not notice any issues.
VP9 / 1080p / 60Hz / HDR - video does not play. Black screen with a white spinner in the middle

Is it a known issue that VP9.2 encoded video with HDR does not play? Can anyone else reproduce the issue?

Today’s 7.3.4 update includes improved performance for both VP9 and AV1.

Hi James,

I have tried 7.3.4 today and it so much better! I have tried several 4k HDR videos encoded with VP9 and AV1.

4k HDR @ 60 fps encoded with AV1 - Plays much better than previously, there are still some frame drops in more complicated scenes (for example when they show palm tree on a beach in Costa Rica video). Unfortunately it does not trigger HDR mode on my TV (all other HDR and Dolby Vision content does it correctly).

4k HDR @ 60 fps encoded with VP9 - It works, but performance is not as good as AV1. Does not trigger HDR mode on my TV. More dropped frames, video can freeze (audio plays, but picture is frozen).

1440p content played with good performance, but HDR was not triggered.

That’s great to hear.

Apple doesn’t include HW decoding capabilities for these videos on their devices, so Infuse will fallback to SW decode which isn’t quite as efficient.

Are you using the original Apple TV 4K, or the newer 2021 model?

I am using a 2021 model. Hopefully software decode will improve over time and we get full performance :slight_smile:

Does infuse trigger HDR correctly for you in AV1/VP9 videos?

Hoping for Apple to support AV1 is IMO pointless. This is clearly demonstrated by their track of record in supporting anything other than H.264 and H.265. Without even considering that ATV is 2 Apple silicon generation behind.

Instead is totally worth spending more time optimizing the Infuse’s SW decoder.

There are several online references that A14/M1 can do it extremely well. Of course, the ATV 2021 with its A12 may not give the same level of flexibility

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.