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

AV1 media with 10 or 12 bit depth not playing in supposedly compatible hardware. #190

Closed
hehenaice opened this issue Sep 29, 2021 · 17 comments
Labels
wontfix This will not be worked on

Comments

@hehenaice
Copy link

Just player / exoplayer is facing issues in rendering the playback of some AV1 media.
https://telegra.ph/file/5175f4a78077f082ab981.jpg
The above picture is the first picture my friend sent when I suggested the app.
I don't have access to the above media, so decided to try some other AV1 media I could find.
https://telegra.ph/file/d970bf9dfdacb795660cf.jpg
This is the first one that I found and faced almost the same error as my friend.
On clicking on details this is the output.
I thought av1 10bit is the issue of some sort.
Then I tried this which again is playing fine!
I'm pretty confused.
My device is RMX1931 running A11 which in my opinion has pretty much the ideal media playback hardware. So was hoping if you could look in to this.
Feel free to communicate over Telegram.
Nevertheless I gotta this media player is one of the best in the business.
Hoping to help in any way possible.

@moneytoo
Copy link
Owner

The linked Tears of Steal video is 8 bit. I confirm that decoding 10 or 12 bit videos don't work when using the bundled software decoder (Google's libgav1). However Android 10+ device can have (but do not have to) hardware decoder. If your device is Realme X2 Pro with Snapdragon 855+ then this is indeed weird. (My OnePlus 7 with Snapdragon 855 can play 10 bit AV1 just fine)

@hehenaice
Copy link
Author

hehenaice commented Sep 29, 2021

Okay okay.
My bad.
I was too ignorant to check the metadata
Nevertheless, I got these samples and muxed them to an mkv and tried again.
And yes, it failed again
So yeah, higher bit depth issue.
Here's the error code.

However Android 10+ device can have (but do not have to) hardware decoder. If your device is Realme X2 Pro with Snapdragon 855+ then this is indeed weird. (My OnePlus 7 with Snapdragon 855 can play 10 bit AV1 just fine)

I am speculating it is somehow using the fallback sw decoder.
Any way to force hw decoder?

Is there anyway I can get logs of some sort and give you so that you can look further into it?
Because the error codes don't seem to be very helpful.

@hehenaice hehenaice changed the title Some AV1 media not playing. AV1 media with 10 or 12 bit depth not playing in supposedly compatible hardware. Sep 29, 2021
@moneytoo
Copy link
Owner

You can try this build which doesn't have the sw decoder: Just.Player.v0.64-without_av1_extension.apk

@hehenaice
Copy link
Author

You can try this build which doesn't have the sw decoder: Just.Player.v0.64-without_av1_extension.apk

God damn!
Works without any issues 😂😂
Here's the screenshot.
Okay
So like, what to do now?
Be on this package forever 😂👀?
I'm sure you'll put out some switch based update to force hardware decoding
Or anything you find best.
But thank you!!

@moneytoo
Copy link
Owner

Send me the output or a screenshot of the General tab from the app AIDA64 so I can blacklist it by the device model.

@hehenaice
Copy link
Author

Sure
https://paste.codes/?38e02b4aaf7115af#BMtZu8AnGXsGxKtAF1AtNMoPjNnTweDyXfk45WV8SFEK
Here ya go.
But if you'll have to do on a each device basis wouldn't it be sorta impossible?
Will there be an inclusion of a check to detect hardware decoder presence?

@moneytoo
Copy link
Owner

Ideally, the ExoPlayer detection should work and probably works on majority of devices. You could try replicating this issue in the ExoPlayer demo and reporting it directly to the developers but the inclusion of the AV1 extension requires few more steps and there's a chance that the issue will end up as "device bug".

@hehenaice
Copy link
Author

Okay
Umm
That's sad
Thanks for the support tho!!

@moneytoo
Copy link
Owner

This version include the said blacklisting: Just.Player.v0.64.apk

@hehenaice
Copy link
Author

hehenaice commented Sep 30, 2021

Thank You for this!
Uh
But I might have to create a separate issue regarding frame drops during playback.
It could be solely because of exoplayer itself but lets see.

@moneytoo
Copy link
Owner

I can duplicate this issue with 10 bit AV1 samples from Netflix - 960x540 videos work while 1920x1080 videos use the sw fallback decoder (non functional with 10/12 bit depth). In my previous tests, I tried resolutions lower than full HD. I will try debugging that before reporting it to ExoPlayer.

@moneytoo moneytoo reopened this Sep 30, 2021
@moneytoo
Copy link
Owner

My phone with Snapdragon 855 reports support for AV1 only up to 1920x1072. This is probably also the reason why the playback is choppy (#191). Because of this, I won't use the blacklist and will keep updating the sw AV1 decoder in a hope that it will get better.

@hehenaice
Copy link
Author

Okay then let's see what the future holds
If you need any testing for this, I'm down for it just 'cause this player has high hopes for being one of the default players in the market.

@moneytoo
Copy link
Owner

moneytoo commented Oct 2, 2021

Check the available AV1 decoder capabilities using Codec Info. Seems like the decoder is not HW accelerated, just like on any other Snapdragon SOCs (even 888 doesn't include AV1 decoding). Only the last generation of the top Exynos and Mediatek chips have HW AV1 decoders.

The more I play with it the less I like how the fallback works so I'm going to ask ExoPlayer devs about that (ExoPlayer skips decoder because of a soft error while they try to use decoder which will fail with hard error).

@hehenaice
Copy link
Author

Screenshot_2021-10-03-13-38-46-61_ab294fd345f91be8d730a238f101db72

Yes
It's the same for me.
I just hope the devs don't pass this off as a niche case because of the presence of little to none av1 Encoded legal media.

@moneytoo
Copy link
Owner

moneytoo commented Oct 4, 2021

While Samsung Galaxy S21 (Exynos 2100) should handle at least 4K at 120 fps, possibly even more:

@hehenaice
Copy link
Author

While Samsung Galaxy S21 (Exynos 2100) should handle at least 4K at 120 fps, possibly even more:

I guess it's time to upgrade lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

2 participants