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

[Proposal] DRM: add failOnEncryptedAfterClear keySystems option #1490

Closed
wants to merge 1 commit into from

Conversation

peaBerberian
Copy link
Collaborator

@peaBerberian peaBerberian commented Aug 1, 2024

An application reported to us an issue where they couldn't play a content of mixed clear and encrypted contents on PlayReady devices.

After a LOT of attempts at work-arounds, some of them described here, we didn't succeed to actually find a good solution that would both allow smooth transition between Periods and a mix of encrypted and unencrypted content with the provided contents on PlayReady devices.

So I attempted to play the same content with other players:

  • dash.js didn't had a smooth transition between Periods here, it first loaded and played the clear content, then once finished, loaded and played the encrypted content, with a black screen and license request in-between.

  • The shaka-player failed to play the content, I tried to debug it but I did not succeed to make it play the content.

This is very probably an issue with PlayReady (and perhaps with the content? Though I haven't found anything wrong), yet they historically haven't been quick to fix issues we reported, so we may have to provide a perhaps-temporary solution here.

That's why I'm introducing the for-now undocumented (and experimental feature?) keySystems[].failOnEncryptedAfterClear loadVideo option.

When set to true, we'll reload if an encrypted Period is encountered after a clear Period has been played. The logic for now is not perfect with very rare risks of false negatives.

NOTE: I also profited from this commit to add the canFilterProtectionData option to the streams. Previously it was implicitly enabled when the drmSystemId was defined.

@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch 3 times, most recently from fd6bd2b to 0cb72c7 Compare August 1, 2024 12:30
@peaBerberian peaBerberian added the DRM Relative to DRM (EncryptedMediaExtensions) label Aug 2, 2024
@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch from 0cb72c7 to 0ba1b86 Compare August 5, 2024 10:13
@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch from 0ba1b86 to 5c332da Compare August 29, 2024 19:53
@peaBerberian peaBerberian added the Priority: 3 (Low) This issue or PR has a low priority. label Sep 3, 2024
@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch 2 times, most recently from 67f27de to cbbba0e Compare September 4, 2024 17:29
@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch from cbbba0e to a514f70 Compare October 8, 2024 15:01
@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch from a514f70 to 5bd810c Compare November 15, 2024 17:45
An application reported to us an issue where they couldn't play a
content of mixed clear and encrypted contents on PlayReady devices.

After a LOT of attempts at work-arounds, some of them described
[here](#1403), we didn't
succeed to actually find a good solution that would both allow smooth
transition between Periods and a mix of encrypted unencrypted content.

So I attempted to play the same content with other players:

  - dash.js didn't had a smooth transition between Periods here, it
    first loaded and played the clear content, then once finished loaded
    and played the encrypted content with a black screen and license
    request in-between.

  - The shaka-player failed to play the content, I tried to debug it but
    I did not succeed to make it play the content.

This is very probably an issue with PlayReady, yet they historically
haven't been quick to fix issues we reported, so we may have to provide
a perhaps-temporary solution here.

That's why I'm introducing the for-now undocumented (and experimental
feature?) `keySystems[].failOnEncryptedAfterClear` `loadVideo` option.

When set to `true`, we'll reload if an encrypted Period is encountered
after a clear Period has been played. The logic for now is not perfect
with very rare risks of false negatives.

NOTE: I also profited from this commit to add the `canFilterProtectionData`
option to the streams. Previously it was implicitly enabled when the
`drmSystemId` was defined.
@peaBerberian peaBerberian force-pushed the misc/reload-when-initial-Period-is-clear branch from 5bd810c to c7db6e5 Compare November 15, 2024 17:58
@peaBerberian peaBerberian added Priority: 4 (Very low) This issue or PR has a very low priority. and removed Priority: 3 (Low) This issue or PR has a low priority. labels Nov 22, 2024
@peaBerberian
Copy link
Collaborator Author

Closed for now, to see if we need it in the future

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DRM Relative to DRM (EncryptedMediaExtensions) Priority: 4 (Very low) This issue or PR has a very low priority.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant