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

Low resolution on HD streams since v2.18.2 #693

Closed
1 task
donchummar opened this issue Oct 4, 2023 · 11 comments
Closed
1 task

Low resolution on HD streams since v2.18.2 #693

donchummar opened this issue Oct 4, 2023 · 11 comments
Assignees

Comments

@donchummar
Copy link

donchummar commented Oct 4, 2023

Version

Media3 1.1.1

More version details

I observed the identical behavior described in this GitHub issue: google/ExoPlayer#10898. It appears that you maintain a list of devices that bypass certain performance points. I conducted a test by including the device model in the list, and this resolved the issue. I am including the relevant code below for your reference.

MediaCodecInfo

 private static boolean needsIgnorePerformancePointsWorkaround() {
   // See https://github.com/google/ExoPlayer/issues/10898 and [internal ref: b/267324685].
   return /* Chromecast with Google TV */ Util.DEVICE.equals("sabrina")
       || Util.DEVICE.equals("boreal")
       /* Lenovo Tablet M10 FHD Plus */
       || Util.MODEL.startsWith("Lenovo TB-X605")
       || Util.MODEL.startsWith("Lenovo TB-X606")
       || Util.MODEL.startsWith("Lenovo TB-X616")
    // Added by me 
       || Util.MODEL.startsWith("SM-T733");
 }  

Devices that reproduce the issue

Galaxy Tab S7 FE
Model name : SM-T733

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Not tested

Reproduction steps

Play widewine drm asset with more than 30fps

Expected result

It should select max resolution available

Actual result

Stuck with lowest resolution available

Media

.

Bug Report

@microkatz
Copy link
Contributor

Hi @donchummar,

Could you provide additional details of the content you were trying to play? Can you provide the resolutions and framerates that were available. The resolution and framerate you expected to be playable and the actual resultant selection?

Thanks!

@microkatz microkatz self-assigned this Oct 5, 2023
@donchummar
Copy link
Author

donchummar commented Oct 6, 2023

The content i am playing having multiple resolution available
480x270 with framerate 50/1
640x360 with framerate 50/1
960x540 with framerate 50/1
1920x1080 with framerate 50/1
1280x720 with framerate 50/1

with latest exo player version on that samsung galaxy s7 fe tab , its selecting 480x270 with framerate 50/1 instead of 1920x1080 with framerate 50/1

But when i add the device to needsIgnorePerformancePointsWorkaround , it is picking up 1920x1080 with framerate 50/1

@tidoemanuele
Copy link
Contributor

tidoemanuele commented Oct 17, 2023

@donchummar Unfortunately, if you add the Galaxy S7 to that function, it may attempt to play content at the highest resolution.
This could lead to several issues, including overheating, excessive battery drain, and, of course, rendering performance problems.
I hope that the needsIgnorePerformancePointsWorkaround will be eliminated and replaced with a more refined logic. Ideally, this new logic would allow us to set a tolerance value that would give some consideration to the PerformancePoints without completely disregarding them.
This is significant because the Galaxy S7 or another device may handle 1280x720@50 smoothly, but could encounter difficulties when attempting to handle 1920x1080@50.

@donchummar
Copy link
Author

@tidoemanuele Can you provide a approximate time frame of getting it fixed with a more refined logic. because we are blocked by this issue for going with our next release since galaxy s7 is one of the popular device on market.

Thanks

@tidoemanuele
Copy link
Contributor

tidoemanuele commented Oct 18, 2023

@donchummar I wrote my own CustomMediaCodecVideoRenderer following the @tonihei explanation on how I can do it my way:
google/ExoPlayer#10898 (comment)
But this is not the player team vision so as you I would like to have an official solution coming directly from the player team.

@microkatz
Copy link
Contributor

@donchummar

Thank you for your patience and continued discussion here for a solution. We are still working on figuring out an official solution for this type of problem.

One thing that could help is what was the encoding of the content you were trying to play? You described the resolutions and framerates here but did not say what codec was of your content.

@donchummar
Copy link
Author

donchummar commented Oct 19, 2023

we have been trying to play dash avc drm protected and stuck on lowest resoluton, if not drm protected its working fine and able to play 1080p (HLS)

copybara-service bot pushed a commit that referenced this issue Oct 23, 2023
Some devices supporting Performance Points for decoder coverage are missing coverage over the CDD requirements for H264. For these cases ExoPlayer should fall back to legacy resolution and frame rate support checks. If there is an H264 stream evaluated as a `PerformancePointCoverageResult` of `COVERAGE_RESULT_NO`, then ExoPlayer checks for coverage of the [720p CDD requirement](https://source.android.com/docs/compatibility/10/android-10-cdd#5_3_4_h_264).

Issue: google/ExoPlayer#10898

Issue: #693
PiperOrigin-RevId: 575768836
copybara-service bot pushed a commit to google/ExoPlayer that referenced this issue Oct 23, 2023
Some devices supporting Performance Points for decoder coverage are missing coverage over the CDD requirements for H264. For these cases ExoPlayer should fall back to legacy resolution and frame rate support checks. If there is an H264 stream evaluated as a `PerformancePointCoverageResult` of `COVERAGE_RESULT_NO`, then ExoPlayer checks for coverage of the [720p CDD requirement](https://source.android.com/docs/compatibility/10/android-10-cdd#5_3_4_h_264).

Issue: #10898

Issue: androidx/media#693
PiperOrigin-RevId: 575768836
@microkatz
Copy link
Contributor

Hello @donchummar,

I pushed the commit 4515a0c into the main branch that should hopefully address your issue. Please let me know if that helps!

@donchummar
Copy link
Author

@microkatz Thanks you so much for the fix , i have verified and it working perfectly fine with this commit, does it comes with upcoming 1.2.0 release ?

@microkatz
Copy link
Contributor

@donchummar

I am sorry but the 1.2.0 release had already been cut. The commit may be pulled into a bug fix release of 1.2.1 and I can message here if that becomes the the case.

@microkatz
Copy link
Contributor

I'm going to close this issue as the fix did solve the problem. Please open up a new issue if it did not or you have additional questions.

@androidx androidx locked and limited conversation to collaborators Jan 1, 2024
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

3 participants