Files
android/libwvdrmengine/test/demo
Kyle Alexander b705d68631 Update ExoPlayerDemo.apk
Test: Playback of content in ExoPlayerDemo.apk

Bug: 203837661
Change-Id: Ic62b483b92215d2369b05bc2adc33d754ef5de5e
2022-03-23 15:29:57 -07:00
..
2022-03-23 15:29:57 -07:00
2022-03-23 15:29:57 -07:00

ExoPlayerDemo.apk can be used to do end-to-end verification of Modular DRM.

To install, side load ExoPlayerDemo.apk app to your device:

  adb install ExoPlayerDemo.apk

To run, launch ExoPlayer, then choose the clip to play.
   The Widevine-encrypted DASH CENC assets are in the "WIDEVINE DASH (policy tests)"
   section.

   These assets test various configurations of the Key Control Block (KCB)
   with various protections and expirations:

   Security Level Checks:
       SW secure crypto (SW crypto required)
       SW secure decode (SW crypto and decode required)
       HW secure crypto (HW crypto required)
       HW secure decode (HW crypto and decode required)
       HW secure all (HW secure video path required (L1))

   License Timer Policy:
   	30s license (timer stops at 30 seconds, playback should stop)

   HDCP Policies
       HDCP not required (KCB: Observe_HDCP=true && HDCP=not required && DataPath=normal)
       HDCP 1.0 required (KCB: Observe_HDCP=true && HDCP=required && DataPath=normal)
       HDCP 2.0 required (Requires HDCP 2.0+ to play)
       HDCP 2.1 required (Requires HDCP 2.1+ to play)
       HDCP 2.2 required (Requires HDCP 2.2+ to play)
       HDCP no digital output (Output to connected devices not allowed)

   There are also Widevine-encrypted DASH CENC assets for various container
   formats as well.
       Widevine DASH (MP4, H264): Contains cenc and cbcs encryption samples
       Widevine DASH (WebM, VP9): Contains full-sample and sub-sample cenc
           samples
       Widevine DASH (MP4, H265): Contains cenc samples only

Notes:

- The demo app shows up in the launcher as "ExoPlayer"

- The demo app contains a crude adaptive algorithm. It starts at 480p and will not switch up for 15
  seconds. This is expected (and has the benefit of more or less guaranteeing there's at least one
  switch during any playback beyond this length).

- If your device is running KLP or later, and the decoder claims to support adaptive, then ExoPlayer
  will do seamless resolution switching. If the decoder doesn't claim this then you'll still get the
  old nearly-seamless-switch (codec release/re-acquire) behavior.

- The player will attempt to hook into the
  AudioTrack.getTimestamp API to do A/V sync. It will fall back to a legacy approach if
  the API isn't available.