High-Efficiency Video Coding (HEVC), also known as H.265, is a video compression standard, regarded by many as the successor to the AVC (H.264) standard. It was developed following the same concepts as H.264 and manages to provide substantially higher video quality than H.264 at the same bit rate. HEVC videos are slowly replacing AVC videos on the Internet. Major websites have already added support for HEVC videos. Some have even got one step further and already disabled AVC videos support. While AVC playback is supported out-of-the-box, even on older Android devices, playing HEVC videos on Android can be tricky.
HEVC Playback
Videos in HEVC format are compressed. In order to be able to play these videos, they must first be decoded. Decoding can be done by the CPU of the device (known as software decoding) or by using a special chip, designed to carry out this task quickly and efficiently (known as hardware decoding). Decoding both AVC and HEVC videos is very demanding in terms of processing power and software decoding can be very slow on some CPUs.
Nearly all Android devices manufactured after 2011 feature some sort of a hardware AVC decoder, which allows them to play most videos encoded using AVC fluidly. However, things are different regarding the relatively new HEVC standard. Most devices produced before 2014 do not have an HEVC decoding chip. Even newer devices can lack an HEVC hardware decoder, especially budget devices.
Find out if your device has Hardware HEVC Decoding support
The easiest way to find out if your device supports hardware HEVC decoding is using an App that displays codec information, like Media Codec Info. On the Codec List Tab of Media Codec Info App, check for the following:
- OMX.qualcomm.hevc.decoder on Qualcomm chipsets
- OMX.MEDIATEK.HEVC.DECODER on Mediatek chip-sets
- OMX.Exynos.hevc.dec on Exynos chip-sets
If you find one of the above codecs in the list, your device supports hardware HEVC video decoding. Hardware decoding capabilities though vary between devices. For example, UHD video decoding is only available on latest generation devices.
Playing HEVC Videos using Software Decoding
HEVC software decoding can be done on Android using Google’s HEVC software decoder or FFmpeg.
1. Google’s HEVC Software Decoder
Google advertises HEVC as a supported media format on Android from version 5.0. Support is available through Google’s software decoding implementation. However, this software decoder is not guaranteed by Google to be available on all devices running Android 5.x and up. You can easily check if your device has this decoder available using the Media Codec Info App mentioned above. Search for OMX.google.hevc.decoder in the Codec List tab. If you have this decoder available, you should be able to play HEVC videos through the stock video player App of your device. Google’s HEVC decoder supports HEVC Main Profile Level 3 on Mobile devices and Main Profile Level 4.1 on Android TV. It is optimized for the Android platform and can be faster than FFMpeg based decoding in some scenarios.
Don’t miss:ย Looking for a Free Professional Video Editor for Android? Try MOCR!
2. FFmpeg Decoding
FFmpeg is usually found pre-installed on custom ROMs like LineageOS. It is implemented as an OMX decoding plugin for Android’s MediaCodec and it enables decoding of a big number of media formats that are officially considered unsupported by Android. Although this FFmpeg implementation packs support for HEVC decoding, most often it is disabled in favor of Google’s Software Decoder on newer ROMs. FFmpeg’s decoder can be quite slow even with low bit-rate videos.
Another way to utilize FFmpeg for decoding HEVC videos is using a Video Player that packs its own implementation of FFmpeg inside. The best one available for HEVC, is MX Player. MX Player’s decoders
are optimized for each CPU architecture, for example taking advantage of NEON instruction support when available. It’s FFmpeg implementation is probably the fastest available.
MX Player provides three types of decoding support:
- SW: This will make use of MX Player’s internal software decoders (FFmpeg). It is generally the slowest implementation and it is used as a fallback when HW and HW+ are not available.
- HW: HW will use the device’s native decoders for videos. If your device packs hardware decoding support for HEVC videos (and the video player is supported by the hardware decoder), it will be used for playback.
- HW+: This is a special decoding implementation. It uses a custom media framework (built in MX Player) and enables some extra hardware decoding capabilities on several devices. Decoding does not make use of Android’s native software/hardware implementations. Not all devices are supported though. Usually, unsupported devices have a heavily modified Android media framework by the manufacturer. In this case, installing an aftermarket ROM, if available, might enable this feature. If your device is supported, enabling HW+ might speed up HEVC decoding significantly.
The decoding implementation used can be changed during playback of the video file.
If you need to rely on SW decoding implementation, you can tweak some settings to get better performance. You can find decoder configuration options by opening the App settings and clicking Decoder. Make sure you set the CPU core limit to the number of CPUs of your device for maximum performance. Also, you can enable Use speedup tricks option. Lastly, try disabling deinterlacing if it is enabled since this makes high use of CPU processing power.
It turns out that the best solution to enable HEVC playback capabilities to a device that does not support hardware decoding is installing MX Player. This player will use the maximum of a device’s processing power to decode video files.
Device Requirements for HEVC Software Decoding
There is no standard way of measuring device requirements for software decoding of HEVC videos. Devices with same hardware characteristics can behave differently since decoding performance can be affected by several factors. The best way to find out what your device can handle is conducting some playback tests.
Following is a list of links to HEVC videos. These videos are categorized by bit-rate and resolution, two major factors affecting decoding speed. Best practice is to start testing videos from the start of the list which are less demanding. You could also try playing videos both using the native Android player (if your device packs native software decoding support) and MX Player. Also, please note that, although 10-bit and 4K UHD videos are available at the end of the list, decoding them in software is very demanding and most devices cannot handle the task. They are provided mostly for research purposes.
NOTE
720p videos are provided through Elecard. 1080p videos of 400 and 500 Kbps bit-rate and the 4K UHD video are from x265.com. All other videos are provided through jell.yfish.us. The last site provides videos originally for testing HTPC playback capabilities.
- Tears of Steel
Resolution: 1080p (1920×1080)
Bit-rate: 400 Kbps
Download - Tractor
Resolution: 1080p (1920×1080)
Bit-rate: 500 Kbps
Download - Jellyfish
Resolution: 1080p (1920×1080)
Bit-rate: 3 Mbps
Download - Jellyfish
Resolution: 1080p (1920×1080)
Bit-rate: 5 Mbps
Download - Jellyfish 10-bit
Resolution: 1080p (1920×1080)
Bit-rate: 3 Mbps
Download - Big Buck Bunny 4K UHD
Resolution: 4K UHD (3840×2160)
Bit-rate: 3 Mbps
Download
Also read:ย Stream Media from PC to Android with VLC Media Player
If you experiment with above videos using software decoding, please share your results with us in the comments section below!
Join The Discussion: