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

Offline Widevine DRM reporting (0,0) when calling getLicenseDurationRemainingSec on Android O #3112

Closed
janeriksamsonsen opened this issue Jul 27, 2017 · 13 comments

Comments

@janeriksamsonsen
Copy link

janeriksamsonsen commented Jul 27, 2017

Issue description

We're using the offline DRM functionality of ExoPlayer to allow offline playback of downloaded Dash-content in our app. This is working fine on all Android versions from 4.3 and up to 7.1.2. I updated my Nexus 6P to Android O beta (OPP4.170623.014), and the functionality for querying license-duration seems to be broken. Calling the function OfflineLicenseHelper.getLicenseDurationRemainingSec with a previously downloaded keyset-id always returns a pair with both values set to zero.

Reproduction steps

Download a Widevine DRM-license on Android O and call OfflineLicenseHelper.getLicenseDurationRemainingSec with the given keyset-id. Observe how the values in the returned value is always zero.

Link to test content

Please ask when ready to test, and I can provide a time-limited license-url.

Version of ExoPlayer being used

2.4.4

Device(s) and version(s) of Android being used

Reproduces every time on a Nexus 6p with Android O Beta (OPP4.170623.014)
Problems also present on Nexus 5x

A full bug report captured from the device

Sent in email.

@ojw28
Copy link
Contributor

ojw28 commented Jul 31, 2017

@jefftinker - Sounds like offline DRM reporting might be broken in O on Nexus 6P. Any idea if this has been fixed, and/or if there are covering GTS tests? Thanks.

@janeriksamsonsen
Copy link
Author

Any progress? Problem still present on final release of Android O on Nexus 6p. The remaining LicenseDurationRemaining is always reported as zero seconds. Strange thing is that the DRM-protected content is playable despite of that.

0 = {HashMap$Node@8066} "PersistAllowed" -> "True"
1 = {HashMap$Node@8067} "PlayAllowed" -> "True"
2 = {HashMap$Node@8068} "PlaybackDurationRemaining" -> "9223372036854775807"
3 = {HashMap$Node@8069} "LicenseDurationRemaining" -> "0"
4 = {HashMap$Node@8070} "RenewalServerUrl" ->
5 = {HashMap$Node@8071} "RenewAllowed" -> "True"
6 = {HashMap$Node@8072} "LicenseType" -> "Offline"

@wvpaf
Copy link

wvpaf commented Aug 29, 2017

Looks like another user has determined a 'fix' work around for this. #3150

@wvpaf wvpaf closed this as completed Aug 29, 2017
@janeriksamsonsen
Copy link
Author

This is still a problem on Nexus 6p and Nexus 5x on final version of Android O. Changing rental-duration and playback-duration to small values like 84600 and 10000, does not help as the workaround suggests.

@ojw28 ojw28 reopened this Sep 12, 2017
@ojw28
Copy link
Contributor

ojw28 commented Sep 12, 2017

@wvpaf - Can you please take another look at this?

@rrfrias
Copy link
Collaborator

rrfrias commented Sep 13, 2017

@janeriksamsonsen can you share content + license server URL so that we can investigate. If you need to share it privately and have a Widevine Technical Account Manager contact, share it with them and mention this issue.

@janeriksamsonsen
Copy link
Author

Will share links with you, but need to clarify with legal department first. We don't have a Widevine account manager. Can I send it to the email-address which I submitted the bug-report to?

@rrfrias
Copy link
Collaborator

rrfrias commented Sep 14, 2017

Yes, you can send it to that address.

@janeriksamsonsen
Copy link
Author

@rrfrias - our license server URLs are only valid for a certain amount of time. What would be a good day and time for you to test?

@janeriksamsonsen
Copy link
Author

URLs for content and license sent in email.

Problem is also reproducible in DashWidevineOfflineTest.testWidevineOfflineExpiredLicense(). Reporting is correct for Xperia z1 compact with Android 6.0.1, but fails on Nexus 6p with Android O.

@rrfrias
Copy link
Collaborator

rrfrias commented Sep 26, 2017

Thanks for the URLs and for bringing this to our attention. The duration reporting issue has been fixed in O-MR1.

The duration values set in the policy are uncommon and it might be worthwhile to revisit them and make sure they meet your needs. Usually offline licenses are controlled by rental and playback duration values. In your case rental is set to a limited value, while playback is set to unlimited. Querying could result in ambiguous results. For example "PlaybackDurationRemaining" -> "9223372036854775807" and "LicenseDurationRemaining" -> "0" may indicate either
(a) license/rental duration has expired and so playback is not allowed (in the case where playback has not begun) or
(b) playback has began and even though license/rental duration has expired, playback is still allowed as the playback window has not expired.

If you want more information about duration values and how to configure them please contact widevine-tams@google.com

@wvpaf wvpaf closed this as completed Sep 26, 2017
@janeriksamsonsen
Copy link
Author

Thanks @rrfrias!

@janeriksamsonsen
Copy link
Author

janeriksamsonsen commented Oct 26, 2017

@rrfrias, I've just tested with firmware OPP5.170921.005 for Nexus 6p, but the problem is still present. Is this the same as O-MR1?

However, it seems to be working in the latest Android 8.1 emulator (OPM1.171004.001).

@google google locked and limited conversation to collaborators Jan 25, 2018
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

5 participants