View Full Version : What settings for hardware compatibility?
ArcticFox
2nd November 2014, 09:57
I know it is very early and there are hardly many if any hardware players but if I wanted to get a head start on reripping my collection to x265 are there any settings I should or shouldn't use to keep compatibility for potential players such as Google Nexus Player or equivalent ARM powered Android device?
benwaggoner
2nd November 2014, 19:49
I know it is very early and there are hardly many if any hardware players but if I wanted to get a head start on reripping my collection to x265 are there any settings I should or shouldn't use to keep compatibility for potential players such as Google Nexus Player or equivalent ARM powered Android device?
There really aren't a lot of portable devices with HEVC decode yet. I think Android 5.0 is going to be the first major platform.
I'd expect the normal Profile and Level constraints to be the key, plus Tier. Main Profile (8-bit only), Main Tier is going to be appropriate for mobile devices in the next year or so. Probably Level 4.0 as well, although we'll also see some UHD-capable devices at Level 5.0, maybe even some 5.1.
mandarinka
4th November 2014, 00:45
Too early to say anything, yet.
For example, some GPU IP vendors for mobile SoCs apparently plan on supporting Main 10 profile, while it is likely some might not, or that it will become a premium feature reserved for higher-end models.
The Android 5.0 platform HEVC support tells us little, since it is probably software-based (maybe there will be hw fallback where avialiable, but that will again depend on the individual SoC...).
benwaggoner
6th November 2014, 19:14
For example, some GPU IP vendors for mobile SoCs apparently plan on supporting Main 10 profile, while it is likely some might not, or that it will become a premium feature reserved for higher-end models.
And even if the SoC vendors support 10-bit decode, they still have only 8-bit image processing pipelines, so it wouldn't really make a quality difference. H.264 gets a nice efficiency boost when encoding in 10-bit even with 8-bit output, but HEVC 8-bit and 10-bit don't have that kind of differential.
The Android 5.0 platform HEVC support tells us little, since it is probably software-based (maybe there will be hw fallback where avialiable, but that will again depend on the individual SoC...).
I would love to know ANYTHING about Android 5.0 HEVC decoder
support. Anyone have any details?
vivan
13th November 2014, 12:35
And even if the SoC vendors support 10-bit decode, they still have only 8-bit image processing pipelines, so it wouldn't really make a quality difference. H.264 gets a nice efficiency boost when encoding in 10-bit even with 8-bit output, but HEVC 8-bit and 10-bit don't have that kind of differential.The most noticeable boost is getting rid of a banding - and it still noticeable even with 8 bit pipelines...
Probably it's possible to use h/w decoder directly, so it should be possible to process video with higher precision.
I would love to know ANYTHING about Android 5.0 HEVC decoder support. Anyone have any details?What does "support" mean?
Built-in software decoder? Well, it won't help with 1080p.
Support for harware decoders? They are already supported.
Mandatory HEVC support for chipmakers? I don't think they could do that.
benwaggoner
13th November 2014, 17:12
The most noticeable boost is getting rid of a banding - and it still noticeable even with 8 bit pipelines...
Probably it's possible to use h/w decoder directly, so it should be possible to process video with higher precision.
That's true with H.264, but appears less so with HEVC. Certainly a 10-bit codec through a 10-bit pipeline should be optimal, but HEVC 8-bit, properly encoded, has a lot less banding than H.264 8-bit.
What does "support" mean?
Built-in software decoder? Well, it won't help with 1080p.
Support for harware decoders? They are already supported.
Mandatory HEVC support for chipmakers? I don't think they could do that.
Android L just shipped with some software HEVC decode, which I've not explored yet. Windows 10 will have HEVC decode as well.
I'd think a current-gen flagship phone probably can decode 1080p HEVC in software. Battery life might not be there, but the compute power is there. Although HEVC might require ~25% more MIP/pixel, the much better threading that WPP provides should make it significantly easier to decode than H.264 on 4+ core systems. And bear in mind the proper comparison is versus the same quality as H.264, not the same bitrate, so the lower bitrates with HEVC will help.
That said, I don't have Windows 10 Preview OR Android L handy to run any tests on. Anyone else?
vivan
13th November 2014, 18:18
That's true with H.264, but appears less so with HEVC. Certainly a 10-bit codec through a 10-bit pipeline should be optimal, but HEVC 8-bit, properly encoded, has a lot less banding than H.264 8-bit.Well, x265 is not a proper encoder, then... so far :)
I'd think a current-gen flagship phone probably can decode 1080p HEVC in software.MX player has software HEVC decoder (based on ffmpeg, probably google will use the same decoder), so I assume perfomance will be similar.
I have Sony Z3c (Snapdragon 801 - 4 cores @ 2.45 Ghz).
I've checked first 3 1080p samples from that topic (http://forum.doom9.org/showthread.php?t=171219), perfomance is far from good.
It cound't handle low bitrate 10bit 1080p AVC too (not as bad, though - it was like 20 fps).
Battery life might not be there, but the compute power is there.And temperature... After 20 minutes of full cpu load it was really hot.
sneaker_ger
13th November 2014, 19:05
Android with HEVC hardware decoding already exists. I don't know if it's through official APIs or "hacks", though.
http://www.cnx-software.com/2014/11/01/smpc-13-3-3-release-adds-h-265-video-playback-and-android-tv-support/
benwaggoner
13th November 2014, 22:58
Android with HEVC hardware decoding already exists. I don't know if it's through official APIs or "hacks", though.
http://www.cnx-software.com/2014/11/01/smpc-13-3-3-release-adds-h-265-video-playback-and-android-tv-support/
I'm pretty sure it would be official. Once you've got a software decoder, there ought to be a straightforward way that gets handed off to a HW decoder when available.
Windows also has DXVA for HEVC APIs as well, although I don't know of any GPUs that take advantage of it yet.
foxyshadis
14th November 2014, 02:22
I'm pretty sure it would be official. Once you've got a software decoder, there ought to be a straightforward way that gets handed off to a HW decoder when available.
Windows also has DXVA for HEVC APIs as well, although I don't know of any GPUs that take advantage of it yet.
I looked through the Lollypop API, and the only mentions were in MediaCodec createDecoderByType() where you now have "video/hevc" as an option. If anyone with a Nexus 6 and the Android dev kit can make a little test program calling MediaCodecInfo.getCapabilitiesForType("video/hevc").getVideoCapabilities() and .getEncoderCapabilities(), run through all the functions in MediaCodecInfo.VideoCapabilities and MediaCodecInfo.EncoderCapabilities to find the limits, that would be awesome. Looping though .profileLevels[] would be sweet too; I notice that HEVCProfileMain10 is defined, so hopefully it's supported.
nevcairiel
14th November 2014, 19:31
Windows also has DXVA for HEVC APIs as well, although I don't know of any GPUs that take advantage of it yet.
Intel Haswell and NVIDIA Maxwell have partial acceleration through the DXVA2 HEVC API. LAV Filters can use it.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.