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

Fyi - Some patches will not required from ExoPlayer 2.9.0 #48

Closed
ojw28 opened this issue Jun 22, 2018 · 4 comments
Closed

Fyi - Some patches will not required from ExoPlayer 2.9.0 #48

ojw28 opened this issue Jun 22, 2018 · 4 comments

Comments

@ojw28
Copy link
Contributor

ojw28 commented Jun 22, 2018

We've been making a bit of an effort to improve support for FireOS devices in vanilla ExoPlayer. This means that from 2.9.0, it should be unnecessary for you to apply the following patches:

FTVPI-1555: Playready header issues
FTVPI-1556: [EXO2] Playready DRM issues on Gen1 and Stick
FTVPI-1557: [EXO2] Playready end of content exception
FTVPI-1558: Workaround to handle platform limitation of max input size
FTVPI-2182: Fix for native crash in Kindle Soho device

Ref:

google/ExoPlayer@a407c02
google/ExoPlayer@78d8330
google/ExoPlayer@04d1d5a
google/ExoPlayer@2043d90

@peddisri
Copy link
Contributor

Thank you so much!!! That really saves some effort on our side to maintain these patches across versions.

@ojw28
Copy link
Contributor Author

ojw28 commented Jun 25, 2018

No worries! If in the future you have fairly self contained fixes, such as the ones ref'd above, feel free to send pull requests to the vanilla ExoPlayer project. I took a look at the other patches you have as well, and concluded:

  • FIREFIVE-123614: Support skipping profile level checks for video - Is a no-op in default configuration
  • FTVPI-2218: Support for disabling snapping video frame release times - Is also a no-op in default configuration
  • FTVPI-1559: [EXO2] Logging support - Is logging only
  • FTVPI-1552: Gen4 Tablet audio latency issues - Is a necessary workaround for playbacks on affected devices
  • FTVPI-2081: Added support for Surround Sound detection for Optical - Is necessary to get surround sound detection working for FireTV, but otherwise optional (stereo playbacks should still work fine without it)
    FTVPI-1553:Dolby passthrough on Gen 1 FireTV - Is necessary to get Dolby passthrough working for Gen1 FireTV, but otherwise optional (stereo playbacks should still work fine without it)

Is that correct? If we were to merge workarounds for the issues that FTVPI-1552 and FTVPI-2081 are for, do you think we'd be closed enough such that the Amazon port of ExoPlayer is no longer necessary? I don't think we'd be keen on ever working around the issue that FTVPI-1553 is for, but presumably at some point it's going to be OK to just serve these devices stereo streams, on account of there not being many of them in use any more.

@peddisri
Copy link
Contributor

FIREFIVE-123614: Support skipping profile level checks for video - Is a no-op in default configuration

  • This was done for a specific customer. Fire TV Gen1 supports decoding their content, but the profile level checks fail. Yes its a no-op in default config.

FTVPI-2218: Support for disabling snapping video frame release times - Is also a no-op in default configuration

  • This is also done for a customer as a workaround who has issues with 24 FPS 4K content. I still need to find the root cause to fix it.

FTVPI-1559: [EXO2] Logging support - Is logging only

  • Yes, but these logs are extremely useful in debugging issues like frame drops, audio/video sync, judder during playback etc. These logs are modular and have configurable levels. So we can define a module say source, decoder, audiosink etc and enable/disable log levels for those modules These logs are very useful in triaging platform issues during development stage. I've solve so many content and platform related issues using these logs. I'd highly recommend to pull in.

FTVPI-2081 - Added support for Surround Sound detection for Optical

  • Absolutely necessary if Fire TV Edition devices need to support Dolby over Optical out. As you already know, optical, unlike HDMI , do not have hot plug and media capability exchange. This is something you would need for other Android devices with Optical out capability. (Even the newly introduce AudioDevice callback feature in M/N wont' help this use case)

All the above changes are minor, and targeted. Now coming back to the two BIG changes.

FTVPI-1552: Gen4 Tablet audio latency issues - Is a necessary workaround for playbacks on affected device

  • Without this, legacy Gen4 Tablets with KK do not play at all. And there are still many of them in field.

FTVPI-1553:Dolby passthrough on Gen 1 FireTV

  • Yes absolutely necessary. The reason being, these devices were developed before L was released (during JB/KK time). Dolby was not integrated into JB/KK. So we did it our way. And now after Android introduced Dolby support in L, we sort of deviated from it. And its too late for us to make it compatible to L unfortunately.

Amazon port of ExoPlayer-
Well, as long as we have to maintain at least one of the patches we can't do away with Amazon's port unfortunately. But it definitely helps us reduce the up-level effort every time you release a version. So
we would appreciate if you can pull in as many changes as you think you can.

@ojw28
Copy link
Contributor Author

ojw28 commented Jun 25, 2018

I suspect FTVPI-1553 only ends up applying to a small number of playbacks. I (think?) you need all three of the following to be true (1) User must be using 4 year old first generation FireTV, (2) Content provider must provide Dolby streams, (3) User must have a Dolby capable setup. So I guess my point with that one is more that at some point it's probably just not worth maintaining, particularly given the consequence of doing so is probably that apps will fallback to stereo streams, rather than playback actually being completely broken. I doubt the combo of (1) and (3) are particularly common :). Just an observation anyway; obviously it's entirely up to you whether you maintain it indefinitely or not :).

We will have a look at whether we can put workarounds for FTVPI-2081 (looks likely) and FTVPI-1552 (less certain, but I acknowledge this is a required workaround), into vanilla ExoPlayer.

Thanks for the information!

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

No branches or pull requests

2 participants