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

Tizen 2016 seems to require duplicate sessions #813

Closed
chrisfillmore opened this issue May 17, 2017 · 9 comments
Closed

Tizen 2016 seems to require duplicate sessions #813

chrisfillmore opened this issue May 17, 2017 · 9 comments
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this platform: TV/STB Issues affecting smart TV or set-top box platforms status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@chrisfillmore
Copy link
Contributor

chrisfillmore commented May 17, 2017

Hello,

I'm working on adding Tizen support to Shaka. One of the updates required will be to allow creating new sessions with duplicate initData. I have a 2016 model Tizen TV (this is EME 0.1b) that I'm working with, and can confirm that I don't achieve playback if the duplicate initData is suppressed.

I have read over #576 and #580, and the spec, but my understanding of the problem overall is not so strong -- I don't know exactly why we have multiple needkey events to begin with. Is this for different tracks (video/audio/text)? I'm also not certain why Tizen needs a license request for each needkey event, but this is information I received directly from the Samsung web engine team.

It seems there might be a use case for disabling the behaviour which suppresses duplicate initData, so I propose adding a player config param ignoreDuplicateInitData which defaults to true.

Thoughts? I will need to add some similar behaviour one way or the other, so I'd like it to be done in a way that I can contribute the change back to Shaka.

@joeyparrish
Copy link
Member

Hrm... that's odd. It's not clear to me why this duplicate init data would be needed. Duplicate init data leads to duplicate license requests (and therefore extra license server traffic), duplicate sessions (and therefore extra resource consumption in DRM hardware), and (normally) no effect on playback. So we're strongly inclined to filter this out.

I recognize that an option would solve the problem without affecting other browsers, but it would require UA detection in every app to set it correctly.

Plus, I am still skeptical of Tizen's behavior. If this is a quirk of Tizen's EME implementation that requires multiple sessions for the same keys, I would really like to understand more about it before we act.

@joeyparrish joeyparrish self-assigned this May 17, 2017
@joeyparrish joeyparrish changed the title Add ignoreDuplicateInitData config? Tizen seems to require duplicate sessions May 17, 2017
@joeyparrish joeyparrish added type: bug Something isn't working correctly type: external An issue with an external dependency; not our issue; sometimes kept open for tracking labels May 17, 2017
@chrisfillmore
Copy link
Contributor Author

I've asked Samsung to comment, either on this ticket or by email. I'll pass on the info if it ends up in my inbox.

@joeyparrish
Copy link
Member

Thank you! I hope we hear from them, one way or the other.

@joeyparrish
Copy link
Member

Based on our private email exchange, I believe this is a bug in Samsung's EME implementation. I don't believe we could work around this without creating duplicate sessions and generating extra traffic for the license server. This is something I would prefer to avoid. It would be preferable for Samsung to fix the platform.

@chrisfillmore
Copy link
Contributor Author

Agreed, thanks.

@joeyparrish joeyparrish reopened this Jul 26, 2017
@chrisfillmore chrisfillmore changed the title Tizen seems to require duplicate sessions Tizen 2016 seems to require duplicate sessions Aug 8, 2017
@joeyparrish joeyparrish removed type: bug Something isn't working correctly type: enhancement New feature or request labels Aug 24, 2017
@joeyparrish joeyparrish removed their assignment Nov 22, 2017
@joeyparrish joeyparrish added the platform: TV/STB Issues affecting smart TV or set-top box platforms label Jul 17, 2018
@kevinscroggins-youi
Copy link

@joeyparrish Any updates on this front? In my experience Samsung generally has no plans to fix issues on older platforms, so this will probably remain as an indefinite issue. I am also experiencing PlayReady DRM playback failures on a 2016 Tizen TV and this issue seems to be directly related. Non-DRM streams work fine. It would be nice to have the option to have some sort of work-around to getting this working, even in spite of the consequences!

@chrisfillmore
Copy link
Contributor Author

@kevinscroggins-youi my team also investigated workarounds to this issue and concluded that there was no suitable solution, so we dropped support for 2016 model TV's. Your only option would be to fork Shaka and create a custom hack specifically for these TV's. Samsung will almost certainly not fix this bug.

@kevinscroggins-youi
Copy link

@chrisfillmore Totally understandable, I will probably give this a shot as we would like to try and support 2016 TVs as well if there is a possibility of a workaround. Thank you for the follow up!

@kevinscroggins-youi
Copy link

I spent some time experimenting with getting DASH w/ PlayReady DRM to work on a Tizen 2016 TV with no luck. I managed to get Shaka to ignore duplicate initialization data but it seems like the entire application execution locks up whenever it tries to retrieve the actual video stream from the content server based on the logs. Despite the polyfills for EME 0.1b to support the Toshiba TV, the draft version of EME 0.1b that is present on the 2016 (and 2015) Tizen TVs is different and seemingly entirely non-functional. I believe the only way to get any DRM encrypted content to play on this TV is through the use of embedded PlayReady object data in the manifest. I know this is the case with the standard Tizen AVPlay API and NaCl C++ media player interfaces as well (shy of hooking up your own code or library to their elementary streams to handle DRM yourself for the NaCl C++ interface). It may be possible that the 2015/2016 EME works, but without better support from Samsung and actual debugging capabilities, I'm not sure it would be feasible to get this feature to work. It is possible to obtain device logs using a custom serial cable and the factory menus but it mostly contains a ton of useless information. I researched several other HTML5 players as well, and no one else supports DRM on 2016 TVs or lower either.

@joeyparrish joeyparrish added type: bug Something isn't working correctly flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this and removed type: external An issue with an external dependency; not our issue; sometimes kept open for tracking labels Mar 13, 2020
@shaka-bot shaka-bot added this to the v2.6 milestone Mar 13, 2020
joeyparrish pushed a commit that referenced this issue Mar 20, 2020
`'webkitneedkey'` events are fired with the same `event.initData` for
the video and audio tracks, and a new session is needed for each.

Closes #813 (duplicate sessions required on Tizen)
Closes #2447 (polyfills broken on Tizen)
Closes #2448 (PlayReady broken on Tizen)

Backported to v2.5.x

Change-Id: Id790147633572f42c87b91de500a4c9574557948
@shaka-project shaka-project locked and limited conversation to collaborators May 12, 2020
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Apr 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
flag: seeking PR We are actively seeking PRs for this; we do not currently expect the core team will resolve this platform: TV/STB Issues affecting smart TV or set-top box platforms status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

4 participants