ReferenceApplication icon indicating copy to clipboard operation
ReferenceApplication copied to clipboard

add multi-DRM use-case

Open jpiesing opened this issue 3 years ago • 11 comments

Now there is one Widevine use-case, we should consider adding the following;

MPD with both PlayReady and Widevine

  • Only PlayReady license requested & installed
  • Only Widevine license requested & installed
  • Both PlayReady and Widevine license requested and installed

Both MSE/EME and native player With and without calling the setActiveDRM method (A.2.27)

jpiesing avatar Dec 01 '22 09:12 jpiesing

From the December 1st IITF meeting, Widevine + native player is not defined. MSE+EME is preferred/required for Widevine. What would be a pass / success? In principle, anything other than a crash would be a pass. Fail with 'DRM not supported' would be a pass. Successful playback would be a pass. Fail with 'no license' might be a pass.

jpiesing avatar Dec 01 '22 09:12 jpiesing

Normal manifest with multiple drm signals

  • use a fully working laurl baked in a mpd, init.mp4/pssh box may carry a non-working placeholder laurl.
  • laurl should point to laurl_pr.php, laurl_wv.php proxy script so that it never changes from the player point of view, script can use up-to-day expressplay token for widevine and microsoft test server for playready.
  • this also gives a hint which drm was selected by the device
  • enable test content for hbbtv1, hbbtv2 and mseeme RefApp modes
AdaptationSet1(video): 3* resolutions (640p, 720p, 1080p)
- <ContentProtection> for Playready and Widevine
AdaptationSet2(audio): 1* bitrate(128Kbit), eng, (aac 48Khz)
- <ContentProtection> for Playready and Widevine
AdaptationSet3(audio): 1* bitrate(128Kbit), fin, (aac 48Khz)
- <ContentProtection> for Playready and Widevine
AdaptationSet4(audio): 1* bitrate(128Kbit), swe, (aac 48Khz)
- <ContentProtection> for Playready and Widevine

Use oipfDrmAgent.setActiveDRM(drmSystemID | "urn:hbbtv:oipfdrm:inactive" | null) method, maybe adding a menu actions to set playready, widevine, inactive, null state? NULL value resumes back to a device's default behaviour.


@jpiesing Do devices automatically reset oipf.setActieveDRM settings if hbbtv app was destroyed (channel switch etc...)?

Something else in mind for manifest structure? One Multi-DRM test manifest as described above and four Set ActiveDRM menu actions should do the job?

Murmur avatar Dec 01 '22 11:12 Murmur

Do devices automatically reset oipf.setActieveDRM settings if hbbtv app was destroyed (channel switch etc...)?

The spec says until ... the application stops for any reason.

Something else in mind for manifest structure? One Multi-DRM test manifest as described above and four Set ActiveDRM menu actions should do the job?

I'll send you an example MPD.

jpiesing avatar Dec 01 '22 14:12 jpiesing

This is what I had in mind, ....

A new tab for "multi-DRM, PlayReady and Widevine" with perhaps the following.

7.1 PlayReady license requested, setActiveDRM not used 7.2 Widevine license requested, setActiveDRM not used 7.3 PlayReady and Widevine licenses both requested, setActiveDRM not used 7.4 PlayReady license requested, setActiveDRM used 7.5 Widevine license requested, setActiveDRM used 7.6 PlayReady and Widevine licenses both requested, setActiveDRM used

jpiesing avatar Dec 01 '22 15:12 jpiesing

@jpiesing ok thanks, saying PlayReady|Widevine|Playready+Widevine license requested means one or both signalled in a <ContentProtection> manifest element and PSSH box in init.mp4 files.

7.6 PlayReady and Widevine licenses both requested, setActiveDRM used Manifest+init.mp4 signalling both drm elements, we actually would like to have? a) Playready+Widevine signalled, setActiveDRM(Playready_sysid) b) Playready+Widevine signalled, setActiveDRM(Widevine_sysid)

Then it's up to a device decision with an optional help of oipfDrmAgent.setActiveDRM() invocation to choose drm system.

This set of tests should not use sendDRMMessage() to override laurl value at runtime, instead manifest should carry a working laurl value, it ok to write a placeholder laurl in init.mp4/pssh box as it's very rigid element in cdn file deliveries.


DRMSystemId values playready=urn:dvb:casystemid:19219 | widevine=urn:dvb:casystemid:19156 | marlin=urn:dvb:casystemid:19188

Currently most drm test cases we already have do signal multiple drm elements (playready, widevine, marlin) but no setActiveDRM() function being used.

Device is instructed to use an appropriate laUrl by invoking oipfDrmAgent.sendDRMMessage(msgType, laUrlOverrideXml, drmSysId) function. This happens before playback is started and after a playback laUrlOverrideXml with an empty laurl field is sent to clear an overridden laurl value.

Murmur avatar Dec 02 '22 08:12 Murmur

See http://refapp.hbbtv.org/staging/catalogue/ 7.1-7.3

bobcampbell-resillion avatar Dec 15 '22 09:12 bobcampbell-resillion

Staging app has 7.1 - 7.6 test cases for oipfDrmAgent.setActiveDRM(sysId) testing.

  • Manifests have a working LaUrl license address, tests cases do not use the laurl-override methods.
  • Widevine manifest has <dashif:laurl>https://...</dashif:laurl> element.
  • Playready manifest has laurl inside the <mspr:pro>,<cenc:pssh> element.
  • None of the init.mp4 segments have PSSH drm box to make sure players don't use it and call the bogus laurl address.
  • At the end of playback oipfDrmAgent.setActiveDRM(null) is invoked to reset the drm to a default state.

https://refapp.hbbtv.org/staging/catalogue/

Murmur avatar Jan 27 '23 07:01 Murmur

I believe this is ready for first feedback @jpiesing @bobcampbell-eurofins documentation to be updated from the information from this ticket

juhajoki avatar Jan 27 '23 08:01 juhajoki

We'll leave this open so people are aware its available and can try it out

bobcampbell-resillion avatar Mar 23 '23 09:03 bobcampbell-resillion

Staging has an updated 7.1 - 7.6 MultiDRM oipfDrmAgent.setActiveDRM(sysid) test cases. https://refapp.hbbtv.org/staging/catalogue/

Manifests don't have an embedded LaUrl anymore, manifest contain just <ContentProtection> elements to signal availability of drm systems.

  • Application is using a laurl override method to submit an active laurl.
  • init segment has just an appropriate PSSH tables (playready only, widevine only, both), previous tests did not write any PSSH tables.

Murmur avatar Apr 25 '23 11:04 Murmur