Much Ado About Not Much (HEVC Support in Android)

Much has been made about Google’s support for HEVC in Android, including I hate to say, by me. A recent look at the Android spec while preparing for a Streaming Media Workshop, however, seems to indicate that this support is practically irrelevant. Here’s why.

If you click over to the Android Supported Media Formats page, you’ll see details regarding the supported codecs. For HEVC, Android supports Main Profile Level 3 for mobile devices and Main Profile Level 4.1 for Android TV.

Figure 1. Android support for HEVC is defined in this table.
For mobile devices, it tops out at Main Profile Level 3.

As you probably know, levels define certain file-related limits, including resolution and frame rate. This allows a vendor like Google to define the limits of codec support, typically so they can configure the hardware on a device to play a certain level. As you can see from the chart from Wikipedia below, certainly, it would take a less capable CPU to play Level 1 (176×144@15 fps) than level 5 (4,096×2,160@30 fps).Figure 2. HEVC levels and limits.

As a video producer, if I know a device supports only a certain HEVC Level, I don’t encode beyond those specs. For HEVC on Android mobile devices, that’s Level 3, which maxes out at 960×540@30 fps and isn’t sufficient for most OTT shops. With popular devices like the Samsung Galaxy S9 offering a 1080 pixel vertical display resolution, and some tablets going even higher, you would expect to be able to stream 1080p video to these devices. By comparison, Apple’s support for HEVC to iOS devices extends up to Level 5, good for 4K @ 30 fps.

Complicating Google’s HEVC support even further is that Chrome for Android doesn’t seem to play HEVC-encoded videos, even Level 3 or under, which may rule out many browser-based deployment cases. This statement is backed by my own limited tests, plus the report shown below from www.caniuse.com. Again, with Apple Macs and mobile devices, Safari provides native playback of HEVC encoded content, simplifying distribution for all producers.

Figure 3. CanIUse says no go for HEVC on Android and full speed ahead for iOS Safari.

Of course, any hardware vendor can supply HEVC decode in addition to what Google supplies in the OS. While useful in some instances, this support is obviously of limited value to producers supporting a broad swath of Android devices.

Unless I’m reading something wrong, which is certainly possible, Google’s HEVC support is inadequate for most uses and difficult to access. So while you can technically say that the Android platform supports HEVC, it’s much ado about not much support. In most cases, H.264 or VP9 are both better choices.

About Jan Ozer

Avatar photo
I help companies train new technical hires in streaming media-related positions; I also help companies optimize their codec selections and encoding stacks and evaluate new encoders and codecs. I am a contributing editor to Streaming Media Magazine, writing about codecs and encoding tools. I have written multiple authoritative books on video encoding, including Video Encoding by the Numbers: Eliminate the Guesswork from your Streaming Video (https://amzn.to/3kV6R1j) and Learn to Produce Video with FFmpeg: In Thirty Minutes or Less (https://amzn.to/3ZJih7e). I have multiple courses relating to streaming media production, all available at https://bit.ly/slc_courses. I currently work as www.netint.com as a Senior Director in Marketing.

Check Also

Video Codec Quick Reference Guide

This article provides a quick reference for video codec details from H.264 to LCEVC, excluding …

Replace Bitrate Viewer with FFBitrateViewer

Recently I was asked to visually illustrate the data rate difference between two HEVC files, …

B-Frames, Ultra Low-Latency Encoding, and Parking Lot Rules

One of my sweetest memories of bringing up our two daughters was weekly trips to …

2 comments

  1. It’s alway happen. Codec war. It make more resource for media streaming infrastructure.
    It will be great if apple support VP9, but it hard to happen. End user will not understand and face some little trouble to play high compress video. I mean to install external video player to open it.

  2. Higher level support needs more CPU in turn more power. Maybe mobile OS provider can add a check like “if device is charging” (either through charger or power bank) then support higher level (on top of device compatibility check)

Leave a Reply

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