Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pixel can't play hevc 10 bit file via hardware decoding #3537

Closed
magiclu opened this issue Dec 2, 2017 · 19 comments
Closed

Pixel can't play hevc 10 bit file via hardware decoding #3537

magiclu opened this issue Dec 2, 2017 · 19 comments

Comments

@magiclu
Copy link

magiclu commented Dec 2, 2017

Issue description

device:pixel,can't play hevc 10 bit file via hardware decoding

i dont do android development,plz dont close this issue,it is very related

i bought a pixel phone few weeks ago,system is android 8.0.0 November security patch
i tried few apps vlc,mx player,plex,kodi,i can only play low bitrate file by software decoding(cpu will run hot,and some artifact),can't use hardware decoding.

i can play 8 bit hevc file via hardware decoding,but not 10 bit file

after some search ,i am here
#2587
#2935

they are closed
ojw28 said : Fixed in Pixel Oreo update.

but i still can't watch 10 bit hevc video,so it is not fix,and these issues should not be closed

this phone has come out for a year,and you google still can't fix your own phone?

plz dont close this issue,plz fix it,so i can watch video on my phone

will i be able to watch 10bit hevc video when 8.1 come?

Reproduction steps

try vlc,mx player,plex,kodi,these well known video app can't work well

Version of ExoPlayer being used

plex use exoplayer v2,others not sure

Device(s) and version(s) of Android being used

pixel android 8.0.0 ,November security patch,build number opr3.170623.013

@magiclu
Copy link
Author

magiclu commented Dec 2, 2017

after some research,there is something wrong with
OMX.qcom.video.decoder.hevc in pixel's system

using vlc ,other video player app should be the same problem
link to log:
https://1drv.ms/u/s!AqZqszBvA9vokJlFixnwS9z1NptmUg

i played a 10 bit hevc file, lag
,than i played a normal hevc file, works fine

@ojw28
Copy link
Contributor

ojw28 commented Dec 5, 2017

This issue appears unrelated to ExoPlayer. We will however take a look for any potential issues with the underlying decoder, if you provide adequate reproduction steps. In particular:

  • Please provide a piece of sample content that reproduces this issue, and specific reproduction steps.
  • Please describe in more detail what "can't play" means.

@ojw28 ojw28 changed the title device:pixel,can't play hevc 10 bit file via hardware decoding Pixel can't play hevc 10 bit file via hardware decoding Dec 5, 2017
@magiclu
Copy link
Author

magiclu commented Dec 5, 2017

you can try some videos from
http://jell.yfish.us/

download
jellyfish-3-mbps-hd-hevc-10bit.mkv(cpu can handle this in some video apps.some apps can't)
jellyfish-10-mbps-hd-hevc-10bit.mkv (lag)
jellyfish-20-mbps-hd-hevc-10bit.mkv (lag)
jellyfish-40-mbps-hd-hevc.mkv (high bitrate,but not 10bit video,plays fine,using hardware decoding )

snapdragon 821 should be able to play 4k 10bit hevc video,actually most phone with this soc can do that,like lg g6,and even older phones with snapdragon 820
while pixel can't even play some high bitrate 1080p video, because hardware decoding is not working

"can't play" means some apps can open this file if i wait for a while ,video lag and many blocks
some apps can't even open it

specific reproduction steps: just open the video in these video app

apps i tried:
vlc,mx player,plex,kodi

@ojw28
Copy link
Contributor

ojw28 commented Dec 5, 2017

Thanks for the extra information. It looks to me like the original Pixel and PixelXL devices just don't support HDR in hardware. I also suspect that whether a device is capable of HDR in hardware is more complicated than just what processor chipset it has. I'll double check with the Pixel and platform teams to confirm this.

Whether or not players that attempt software decoding can keep up really depends on those implementations. This is a separate point and is unrelated to either ExoPlayer or the underlying platform.

@magiclu
Copy link
Author

magiclu commented Dec 5, 2017

these are not hdr video,they are just normal none-hdr 10 bit hevc video
like i said,this soc is able to do the decoding in most other phone

@magiclu
Copy link
Author

magiclu commented Dec 5, 2017

10 bit and hdr are not related

@andrewlewis
Copy link
Collaborator

If the decoder declares support for high bit depth formats via its codec capabilities (MediaCodecInfo.CodecCapabilities.profileLevels I guess) then we should investigate why the stream can't be played via ExoPlayer. Please confirm if so.

Otherwise, the stream exceeds the device capabilities, which depend on the build/software as well as the underlying SoC, and this issue is not related to ExoPlayer.

As a general point: supporting high bit depth decoding on devices that can't output in high bit depth seems like a niche feature. On the other hand, high bit depth decoding provides an obvious benefit on devices with HDR displays, which also tend to have wider color gamut. So I think in practice you will find high bit depth and HDR are related, even if technically they are different. I appreciate it's frustrating if you need to play particular files and they can't be decoded efficiently, but it's better to prepare the media so that it's efficient to decode taking into account the playback device.

@magiclu
Copy link
Author

magiclu commented Dec 5, 2017

i checked some forum.people say pixel 2 can play 10 bit hevc file,and it has a normal screen.
they have differnt soc ,butthe original pixel 's soc is able to do the decoding in other phone made by other manufacturers like samsung s7e(people say when this phone came out it can play,the samsung patched it ,so it won't play,maybe some patent issue),lg g6,and many chinese phone's with shitty screen(chinese phone don't care about patent XD,but they will play)
10 bit hevc is within snapdragon 821 and 820's capabilities
the problem should be somewhere in phone's system ,maybe video driver?

https://forum.videolan.org/viewtopic.php?f=35&t=141304

12-02 23:34:54.382 I/ACodec ( 7907): [OMX.qcom.video.decoder.hevc] forcing the release of codec 12-02 23:34:54.606 E/ACodec ( 7907): OMX.qcom.video.decoder.hevc
dev from vlc said :Hardware seems to reject the 10bits version

i am chinese. i can download torrents easily.and i have downloaded a lot of hevc 10 bit video from

https://uniteam.co

,these pro encoders said 10bit encoding can increase video quality in the same file size compare to normal hevc encoding,even played on normal screen,so they made many hevc 10 bit video

@ojw28
Copy link
Contributor

ojw28 commented Dec 5, 2017

10bit encoding can increase video quality in the same file size compare to normal hevc encoding,even played on normal screen

Any idea how, out of interest? If the graphics output path is 8 bit then the extra 2 bits will have to be dropped at some point. It's not immediately clear to me why having the extra depth up to that point would be useful.

That question aside, this issue really boils down to whether the original Pixel is supposed to support 10-bit decoding in hardware. As already stated, I think that inferring support based only on the chipset is probably an over-simplification, and there are likely to be more factors involved. We're following up internally, and will update this issue when we have an answer. Thanks.

@magiclu
Copy link
Author

magiclu commented Dec 6, 2017

Any idea how, out of interest?

i forget where i read that,maybe it can retain image quality after compression,better image quality in dark scene
they do video compression,their goal is to reduce the size of the video while remain the most video quality
btw you need to register to see the whole forum

@sandersaares
Copy link

Perhaps slightly related to the "why 10-bit" question, here is an interesting paper by the encoder company Ateme about using 10-bit encoding even on 8-bit content: http://x264.nl/x264/10bit_02-ateme-why_does_10bit_save_bandwidth.pdf

@tonihei tonihei closed this as completed Jan 2, 2018
@magiclu
Copy link
Author

magiclu commented Jan 3, 2018

@ojw28
@tonihei
why it is closed?i just updated my phone to the latest update,january 5,2018,still the same,not fixed

@tonihei
Copy link
Collaborator

tonihei commented Jan 3, 2018

Closed it because it was marked as a question and got answered.
@ojw28 Is there still something we can do about it?

@magiclu
Copy link
Author

magiclu commented Jan 3, 2018

@tonihei
should be marked as device specific issue
after pixel can play 10bit hevc video like other phones with the same soc,you guys can close this issue

I think that inferring support based only on the chipset is probably an over-simplification, and there are likely to be more factors involved. We're following up internally, and will update this issue when we have an answer.

i thought this issue is on your to-do list

@tonihei
Copy link
Collaborator

tonihei commented Jan 3, 2018

Re-open it then :)

@ojw28
Copy link
Contributor

ojw28 commented Jan 3, 2018

@andrewlewis - Did we establish the original Pixel not supporting 10bit hevc was intentional?

@ojw28 ojw28 assigned andrewlewis and unassigned ojw28 Jan 3, 2018
@andrewlewis
Copy link
Collaborator

I've filed an internal bug to ask about this [reference: b/71528571] and will update this if/when we get a reply.

There is no standard way to get 10-bit output on these devices so even if this feature can be supported the output would be in 8-bit (but that sounds fine if the request is just to be able to decode these streams at all).

@WireCrazii

This comment has been minimized.

@ojw28
Copy link
Contributor

ojw28 commented May 11, 2018

We were able to confirm with the Pixel team that decoding 10-bit hevc is not enabled on Pixel 1, and that this is a known property of the device rather than a bug.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants