diff --git a/extensions/flac/src/androidTest/assets/bear.flac.0.dump b/extensions/flac/src/androidTest/assets/bear.flac.0.dump index 4e4aa158c7..b03636f2bb 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.0.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/extensions/flac/src/androidTest/assets/bear.flac.1.dump b/extensions/flac/src/androidTest/assets/bear.flac.1.dump index a9e72b0cfc..4e8388dba8 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.1.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/extensions/flac/src/androidTest/assets/bear.flac.2.dump b/extensions/flac/src/androidTest/assets/bear.flac.2.dump index e39aa80f31..0860c36cef 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.2.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/extensions/flac/src/androidTest/assets/bear.flac.3.dump b/extensions/flac/src/androidTest/assets/bear.flac.3.dump index 3a1510e8f9..6f7f72b806 100644 --- a/extensions/flac/src/androidTest/assets/bear.flac.3.dump +++ b/extensions/flac/src/androidTest/assets/bear.flac.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/flv/sample.flv.0.dump b/library/src/androidTest/assets/flv/sample.flv.0.dump index eaefdf24c3..b4129ecb88 100644 --- a/library/src/androidTest/assets/flv/sample.flv.0.dump +++ b/library/src/androidTest/assets/flv/sample.flv.0.dump @@ -10,7 +10,6 @@ track 8: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 @@ -215,7 +214,6 @@ track 9: containerMimeType = null sampleMimeType = video/avc maxInputSize = -1 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mkv/sample.mkv.0.dump b/library/src/androidTest/assets/mkv/sample.mkv.0.dump index 999cb3627f..34bad9b82a 100644 --- a/library/src/androidTest/assets/mkv/sample.mkv.0.dump +++ b/library/src/androidTest/assets/mkv/sample.mkv.0.dump @@ -10,7 +10,6 @@ track 1: containerMimeType = null sampleMimeType = video/avc maxInputSize = -1 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -156,7 +155,6 @@ track 2: containerMimeType = null sampleMimeType = audio/ac3 maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mkv/sample.mkv.1.dump b/library/src/androidTest/assets/mkv/sample.mkv.1.dump index 5bf296a4ad..546c934eff 100644 --- a/library/src/androidTest/assets/mkv/sample.mkv.1.dump +++ b/library/src/androidTest/assets/mkv/sample.mkv.1.dump @@ -10,7 +10,6 @@ track 1: containerMimeType = null sampleMimeType = video/avc maxInputSize = -1 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -124,7 +123,6 @@ track 2: containerMimeType = null sampleMimeType = audio/ac3 maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mkv/sample.mkv.2.dump b/library/src/androidTest/assets/mkv/sample.mkv.2.dump index bad03620d7..ec84908172 100644 --- a/library/src/androidTest/assets/mkv/sample.mkv.2.dump +++ b/library/src/androidTest/assets/mkv/sample.mkv.2.dump @@ -10,7 +10,6 @@ track 1: containerMimeType = null sampleMimeType = video/avc maxInputSize = -1 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -80,7 +79,6 @@ track 2: containerMimeType = null sampleMimeType = audio/ac3 maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mkv/sample.mkv.3.dump b/library/src/androidTest/assets/mkv/sample.mkv.3.dump index d1f3d71efb..ac8d9a2c1c 100644 --- a/library/src/androidTest/assets/mkv/sample.mkv.3.dump +++ b/library/src/androidTest/assets/mkv/sample.mkv.3.dump @@ -10,7 +10,6 @@ track 1: containerMimeType = null sampleMimeType = video/avc maxInputSize = -1 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -36,7 +35,6 @@ track 2: containerMimeType = null sampleMimeType = audio/ac3 maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp3/bear.mp3.0.dump b/library/src/androidTest/assets/mp3/bear.mp3.0.dump index 6e44b4eb72..b66d263c84 100644 --- a/library/src/androidTest/assets/mp3/bear.mp3.0.dump +++ b/library/src/androidTest/assets/mp3/bear.mp3.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/mpeg maxInputSize = 4096 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp3/bear.mp3.1.dump b/library/src/androidTest/assets/mp3/bear.mp3.1.dump index e38a5a327f..2e0b21050c 100644 --- a/library/src/androidTest/assets/mp3/bear.mp3.1.dump +++ b/library/src/androidTest/assets/mp3/bear.mp3.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/mpeg maxInputSize = 4096 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp3/bear.mp3.2.dump b/library/src/androidTest/assets/mp3/bear.mp3.2.dump index 2de2149223..b3cb117cb2 100644 --- a/library/src/androidTest/assets/mp3/bear.mp3.2.dump +++ b/library/src/androidTest/assets/mp3/bear.mp3.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/mpeg maxInputSize = 4096 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp3/bear.mp3.3.dump b/library/src/androidTest/assets/mp3/bear.mp3.3.dump index 2467ddcac3..a2387eb887 100644 --- a/library/src/androidTest/assets/mp3/bear.mp3.3.dump +++ b/library/src/androidTest/assets/mp3/bear.mp3.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/mpeg maxInputSize = 4096 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp4/sample.mp4.0.dump b/library/src/androidTest/assets/mp4/sample.mp4.0.dump index fbf3d5649b..be0a16681c 100644 --- a/library/src/androidTest/assets/mp4/sample.mp4.0.dump +++ b/library/src/androidTest/assets/mp4/sample.mp4.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = video/avc maxInputSize = 36722 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -156,7 +155,6 @@ track 1: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = 294 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp4/sample.mp4.1.dump b/library/src/androidTest/assets/mp4/sample.mp4.1.dump index 35ff36f780..a759e4250a 100644 --- a/library/src/androidTest/assets/mp4/sample.mp4.1.dump +++ b/library/src/androidTest/assets/mp4/sample.mp4.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = video/avc maxInputSize = 36722 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -156,7 +155,6 @@ track 1: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = 294 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp4/sample.mp4.2.dump b/library/src/androidTest/assets/mp4/sample.mp4.2.dump index b17d703a1c..59ee715255 100644 --- a/library/src/androidTest/assets/mp4/sample.mp4.2.dump +++ b/library/src/androidTest/assets/mp4/sample.mp4.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = video/avc maxInputSize = 36722 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -156,7 +155,6 @@ track 1: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = 294 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp4/sample.mp4.3.dump b/library/src/androidTest/assets/mp4/sample.mp4.3.dump index 43bd2c8ddf..a81a4189d9 100644 --- a/library/src/androidTest/assets/mp4/sample.mp4.3.dump +++ b/library/src/androidTest/assets/mp4/sample.mp4.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = video/avc maxInputSize = 36722 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -156,7 +155,6 @@ track 1: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = 294 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump b/library/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump index f6b689d1b5..bf822d9db4 100644 --- a/library/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump +++ b/library/src/androidTest/assets/mp4/sample_fragmented.mp4.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = video/avc maxInputSize = -1 - requiresSecureDecryption = false width = 1080 height = 720 frameRate = -1.0 @@ -156,7 +155,6 @@ track 1: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear.opus.0.dump b/library/src/androidTest/assets/ogg/bear.opus.0.dump index fd13351b74..3826692659 100644 --- a/library/src/androidTest/assets/ogg/bear.opus.0.dump +++ b/library/src/androidTest/assets/ogg/bear.opus.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/opus maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear.opus.1.dump b/library/src/androidTest/assets/ogg/bear.opus.1.dump index f492875dbb..f073d36b27 100644 --- a/library/src/androidTest/assets/ogg/bear.opus.1.dump +++ b/library/src/androidTest/assets/ogg/bear.opus.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/opus maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear.opus.2.dump b/library/src/androidTest/assets/ogg/bear.opus.2.dump index a885114f0c..6e27201631 100644 --- a/library/src/androidTest/assets/ogg/bear.opus.2.dump +++ b/library/src/androidTest/assets/ogg/bear.opus.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/opus maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear.opus.3.dump b/library/src/androidTest/assets/ogg/bear.opus.3.dump index d244d47480..8d4f451698 100644 --- a/library/src/androidTest/assets/ogg/bear.opus.3.dump +++ b/library/src/androidTest/assets/ogg/bear.opus.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/opus maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear.opus.unklen.dump b/library/src/androidTest/assets/ogg/bear.opus.unklen.dump index a8ad2696b2..070c9ef8a6 100644 --- a/library/src/androidTest/assets/ogg/bear.opus.unklen.dump +++ b/library/src/androidTest/assets/ogg/bear.opus.unklen.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/opus maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac.ogg.0.dump b/library/src/androidTest/assets/ogg/bear_flac.ogg.0.dump index 022e61cc51..16816917b7 100644 --- a/library/src/androidTest/assets/ogg/bear_flac.ogg.0.dump +++ b/library/src/androidTest/assets/ogg/bear_flac.ogg.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac.ogg.1.dump b/library/src/androidTest/assets/ogg/bear_flac.ogg.1.dump index 71438d0ad6..fec523f971 100644 --- a/library/src/androidTest/assets/ogg/bear_flac.ogg.1.dump +++ b/library/src/androidTest/assets/ogg/bear_flac.ogg.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac.ogg.2.dump b/library/src/androidTest/assets/ogg/bear_flac.ogg.2.dump index 75326ad5cb..a4a60989ed 100644 --- a/library/src/androidTest/assets/ogg/bear_flac.ogg.2.dump +++ b/library/src/androidTest/assets/ogg/bear_flac.ogg.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac.ogg.3.dump b/library/src/androidTest/assets/ogg/bear_flac.ogg.3.dump index 5194d8e85c..a77575bb0c 100644 --- a/library/src/androidTest/assets/ogg/bear_flac.ogg.3.dump +++ b/library/src/androidTest/assets/ogg/bear_flac.ogg.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump b/library/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump index 022e61cc51..16816917b7 100644 --- a/library/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump +++ b/library/src/androidTest/assets/ogg/bear_flac.ogg.unklen.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump index 78df1d64f2..7be7d02493 100644 --- a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump +++ b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump index 61238c7a41..34f19c6bce 100644 --- a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump +++ b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump index 4c437e1a8f..68484d2cf4 100644 --- a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump +++ b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump index fc55e26061..8b2e7858b0 100644 --- a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump +++ b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump index eda3ede23d..8d398efdb8 100644 --- a/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump +++ b/library/src/androidTest/assets/ogg/bear_flac_noseektable.ogg.unklen.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/x-flac maxInputSize = 768000 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump index 0f65855dd5..536f76adad 100644 --- a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump +++ b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/vorbis maxInputSize = 65025 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump index 5e0fbbca3e..7490773bd5 100644 --- a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump +++ b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/vorbis maxInputSize = 65025 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump index 7201c79858..82ad16e701 100644 --- a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump +++ b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/vorbis maxInputSize = 65025 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump index a73a43bbed..810b66901c 100644 --- a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump +++ b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/vorbis maxInputSize = 65025 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump index e912164175..8e86ca340d 100644 --- a/library/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump +++ b/library/src/androidTest/assets/ogg/bear_vorbis.ogg.unklen.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/vorbis maxInputSize = 65025 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ts/sample.adts.0.dump b/library/src/androidTest/assets/ts/sample.adts.0.dump index 91abd30be0..3325abcfeb 100644 --- a/library/src/androidTest/assets/ts/sample.adts.0.dump +++ b/library/src/androidTest/assets/ts/sample.adts.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/mp4a-latm maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 @@ -611,7 +610,6 @@ track 1: containerMimeType = null sampleMimeType = application/id3 maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ts/sample.ps.0.dump b/library/src/androidTest/assets/ts/sample.ps.0.dump index 7e970a4a60..48127ce1c6 100644 --- a/library/src/androidTest/assets/ts/sample.ps.0.dump +++ b/library/src/androidTest/assets/ts/sample.ps.0.dump @@ -10,7 +10,6 @@ track 192: containerMimeType = null sampleMimeType = audio/mpeg-L2 maxInputSize = 4096 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 @@ -50,7 +49,6 @@ track 224: containerMimeType = null sampleMimeType = video/mpeg2 maxInputSize = -1 - requiresSecureDecryption = false width = 640 height = 426 frameRate = -1.0 diff --git a/library/src/androidTest/assets/ts/sample.ts.0.dump b/library/src/androidTest/assets/ts/sample.ts.0.dump index ec13ee7183..3944516e01 100644 --- a/library/src/androidTest/assets/ts/sample.ts.0.dump +++ b/library/src/androidTest/assets/ts/sample.ts.0.dump @@ -10,7 +10,6 @@ track 2: containerMimeType = null sampleMimeType = video/mpeg2 maxInputSize = -1 - requiresSecureDecryption = false width = 640 height = 426 frameRate = -1.0 @@ -43,7 +42,6 @@ track 3: containerMimeType = null sampleMimeType = audio/mpeg-L2 maxInputSize = 4096 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 @@ -83,7 +81,6 @@ track 21: containerMimeType = null sampleMimeType = application/id3 maxInputSize = -1 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/wav/sample.wav.0.dump b/library/src/androidTest/assets/wav/sample.wav.0.dump index 53fbf52385..9ad01284b7 100644 --- a/library/src/androidTest/assets/wav/sample.wav.0.dump +++ b/library/src/androidTest/assets/wav/sample.wav.0.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = 32768 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/wav/sample.wav.1.dump b/library/src/androidTest/assets/wav/sample.wav.1.dump index dfc13c82a5..ca98cc5cf5 100644 --- a/library/src/androidTest/assets/wav/sample.wav.1.dump +++ b/library/src/androidTest/assets/wav/sample.wav.1.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = 32768 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/wav/sample.wav.2.dump b/library/src/androidTest/assets/wav/sample.wav.2.dump index 4950b5e2eb..da212b220a 100644 --- a/library/src/androidTest/assets/wav/sample.wav.2.dump +++ b/library/src/androidTest/assets/wav/sample.wav.2.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = 32768 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/assets/wav/sample.wav.3.dump b/library/src/androidTest/assets/wav/sample.wav.3.dump index 5aebc1b386..3275ba6ef5 100644 --- a/library/src/androidTest/assets/wav/sample.wav.3.dump +++ b/library/src/androidTest/assets/wav/sample.wav.3.dump @@ -10,7 +10,6 @@ track 0: containerMimeType = null sampleMimeType = audio/raw maxInputSize = 32768 - requiresSecureDecryption = false width = -1 height = -1 frameRate = -1.0 diff --git a/library/src/androidTest/java/com/google/android/exoplayer2/FormatTest.java b/library/src/androidTest/java/com/google/android/exoplayer2/FormatTest.java index 59c9ceadd4..a1a04d8280 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer2/FormatTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer2/FormatTest.java @@ -61,7 +61,7 @@ public final class FormatTest extends TestCase { Format formatToParcel = new Format("id", MimeTypes.VIDEO_MP4, MimeTypes.VIDEO_H264, null, 1024, 2048, 1920, 1080, 24, 90, 2, 6, 44100, C.ENCODING_PCM_24BIT, 1001, 1002, 0, "und", - Format.OFFSET_SAMPLE_RELATIVE, INIT_DATA, drmInitData, false); + Format.OFFSET_SAMPLE_RELATIVE, INIT_DATA, drmInitData); Parcel parcel = Parcel.obtain(); formatToParcel.writeToParcel(parcel, 0); diff --git a/library/src/main/java/com/google/android/exoplayer2/Format.java b/library/src/main/java/com/google/android/exoplayer2/Format.java index 49460a80cd..dfbdecb7d5 100644 --- a/library/src/main/java/com/google/android/exoplayer2/Format.java +++ b/library/src/main/java/com/google/android/exoplayer2/Format.java @@ -104,10 +104,6 @@ public final class Format implements Parcelable { * not applicable. */ public final int maxInputSize; - /** - * Whether the decoder is required to support secure decryption. - */ - public final boolean requiresSecureDecryption; /** * Initialization data that must be provided to the decoder. Will not be null, but may be empty * if initialization data is not required. @@ -203,7 +199,7 @@ public final class Format implements Parcelable { float frameRate, List initializationData) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, NO_VALUE, width, height, frameRate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, 0, - null, OFFSET_SAMPLE_RELATIVE, initializationData, null, false); + null, OFFSET_SAMPLE_RELATIVE, initializationData, null); } public static Format createVideoSampleFormat(String id, String sampleMimeType, String codecs, @@ -219,7 +215,7 @@ public final class Format implements Parcelable { DrmInitData drmInitData) { return new Format(id, null, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, - NO_VALUE, 0, null, OFFSET_SAMPLE_RELATIVE, initializationData, drmInitData, false); + NO_VALUE, 0, null, OFFSET_SAMPLE_RELATIVE, initializationData, drmInitData); } // Audio. @@ -229,8 +225,7 @@ public final class Format implements Parcelable { List initializationData, int selectionFlags, String language) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, channelCount, sampleRate, NO_VALUE, NO_VALUE, - NO_VALUE, selectionFlags, language, OFFSET_SAMPLE_RELATIVE, initializationData, null, - false); + NO_VALUE, selectionFlags, language, OFFSET_SAMPLE_RELATIVE, initializationData, null); } public static Format createAudioSampleFormat(String id, String sampleMimeType, String codecs, @@ -257,7 +252,7 @@ public final class Format implements Parcelable { return new Format(id, null, sampleMimeType, codecs, bitrate, maxInputSize, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, OFFSET_SAMPLE_RELATIVE, initializationData, - drmInitData, false); + drmInitData); } // Text. @@ -266,7 +261,7 @@ public final class Format implements Parcelable { String sampleMimeType, String codecs, int bitrate, int selectionFlags, String language) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, - selectionFlags, language, OFFSET_SAMPLE_RELATIVE, null, null, false); + selectionFlags, language, OFFSET_SAMPLE_RELATIVE, null, null); } public static Format createTextSampleFormat(String id, String sampleMimeType, String codecs, @@ -280,7 +275,7 @@ public final class Format implements Parcelable { long subsampleOffsetUs) { return new Format(id, null, sampleMimeType, codecs, bitrate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, - selectionFlags, language, subsampleOffsetUs, null, drmInitData, false); + selectionFlags, language, subsampleOffsetUs, null, drmInitData); } // Image. @@ -289,7 +284,7 @@ public final class Format implements Parcelable { int bitrate, List initializationData, String language, DrmInitData drmInitData) { return new Format(id, null, sampleMimeType, codecs, bitrate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, 0, language, - OFFSET_SAMPLE_RELATIVE, initializationData, drmInitData, false); + OFFSET_SAMPLE_RELATIVE, initializationData, drmInitData); } // Generic. @@ -298,22 +293,21 @@ public final class Format implements Parcelable { String sampleMimeType, int bitrate) { return new Format(id, containerMimeType, sampleMimeType, null, bitrate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, - 0, null, OFFSET_SAMPLE_RELATIVE, null, null, false); + 0, null, OFFSET_SAMPLE_RELATIVE, null, null); } public static Format createSampleFormat(String id, String sampleMimeType, String codecs, int bitrate, DrmInitData drmInitData) { return new Format(id, null, sampleMimeType, codecs, bitrate, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, NO_VALUE, 0, null, - OFFSET_SAMPLE_RELATIVE, null, drmInitData, false); + OFFSET_SAMPLE_RELATIVE, null, drmInitData); } /* package */ Format(String id, String containerMimeType, String sampleMimeType, String codecs, int bitrate, int maxInputSize, int width, int height, float frameRate, int rotationDegrees, float pixelWidthHeightRatio, int channelCount, int sampleRate, int pcmEncoding, int encoderDelay, int encoderPadding, int selectionFlags, String language, - long subsampleOffsetUs, List initializationData, DrmInitData drmInitData, - boolean requiresSecureDecryption) { + long subsampleOffsetUs, List initializationData, DrmInitData drmInitData) { this.id = id; this.containerMimeType = containerMimeType; this.sampleMimeType = sampleMimeType; @@ -336,7 +330,6 @@ public final class Format implements Parcelable { this.initializationData = initializationData == null ? Collections.emptyList() : initializationData; this.drmInitData = drmInitData; - this.requiresSecureDecryption = requiresSecureDecryption; } /* package */ Format(Parcel in) { @@ -365,21 +358,20 @@ public final class Format implements Parcelable { initializationData.add(in.createByteArray()); } drmInitData = in.readParcelable(DrmInitData.class.getClassLoader()); - requiresSecureDecryption = in.readInt() == 1; } public Format copyWithMaxInputSize(int maxInputSize) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, subsampleOffsetUs, - initializationData, drmInitData, requiresSecureDecryption); + initializationData, drmInitData); } public Format copyWithSubsampleOffsetUs(long subsampleOffsetUs) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, subsampleOffsetUs, - initializationData, drmInitData, requiresSecureDecryption); + initializationData, drmInitData); } public Format copyWithContainerInfo(String id, int bitrate, int width, int height, @@ -387,7 +379,7 @@ public final class Format implements Parcelable { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, subsampleOffsetUs, - initializationData, drmInitData, requiresSecureDecryption); + initializationData, drmInitData); } public Format copyWithManifestFormatInfo(Format manifestFormat, @@ -400,26 +392,24 @@ public final class Format implements Parcelable { String language = this.language == null ? manifestFormat.language : this.language; DrmInitData drmInitData = (preferManifestDrmInitData && manifestFormat.drmInitData != null) || this.drmInitData == null ? manifestFormat.drmInitData : this.drmInitData; - boolean requiresSecureDecryption = this.requiresSecureDecryption - || manifestFormat.requiresSecureDecryption; return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, subsampleOffsetUs, - initializationData, drmInitData, requiresSecureDecryption); + initializationData, drmInitData); } public Format copyWithGaplessInfo(int encoderDelay, int encoderPadding) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, subsampleOffsetUs, - initializationData, drmInitData, requiresSecureDecryption); + initializationData, drmInitData); } public Format copyWithDrmInitData(DrmInitData drmInitData) { return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, language, subsampleOffsetUs, - initializationData, drmInitData, requiresSecureDecryption); + initializationData, drmInitData); } /** @@ -486,7 +476,6 @@ public final class Format implements Parcelable { } Format other = (Format) obj; if (bitrate != other.bitrate || maxInputSize != other.maxInputSize - || requiresSecureDecryption != other.requiresSecureDecryption || width != other.width || height != other.height || frameRate != other.frameRate || rotationDegrees != other.rotationDegrees || pixelWidthHeightRatio != other.pixelWidthHeightRatio @@ -565,7 +554,6 @@ public final class Format implements Parcelable { dest.writeByteArray(initializationData.get(i)); } dest.writeParcelable(drmInitData, 0); - dest.writeInt(requiresSecureDecryption ? 1 : 0); } public static final Creator CREATOR = new Creator() { diff --git a/library/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java b/library/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java index a8f69d4741..c2de99319f 100644 --- a/library/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java @@ -148,8 +148,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media if (allowPassthrough(mimeType) && mediaCodecSelector.getPassthroughDecoderInfo() != null) { return ADAPTIVE_NOT_SEAMLESS | FORMAT_HANDLED; } - MediaCodecInfo decoderInfo = mediaCodecSelector.getDecoderInfo(mimeType, - format.requiresSecureDecryption); + MediaCodecInfo decoderInfo = mediaCodecSelector.getDecoderInfo(mimeType, false); if (decoderInfo == null) { return FORMAT_UNSUPPORTED_SUBTYPE; } diff --git a/library/src/main/java/com/google/android/exoplayer2/drm/DrmInitData.java b/library/src/main/java/com/google/android/exoplayer2/drm/DrmInitData.java index 2b442d9ebe..4ed8c0648f 100644 --- a/library/src/main/java/com/google/android/exoplayer2/drm/DrmInitData.java +++ b/library/src/main/java/com/google/android/exoplayer2/drm/DrmInitData.java @@ -38,6 +38,11 @@ public final class DrmInitData implements Comparator, Parcelable { // Lazily initialized hashcode. private int hashCode; + /** + * Number of {@link SchemeData}s. + */ + public final int schemeDataCount; + /** * @param schemeDatas Scheme initialization data for possibly multiple DRM schemes. */ @@ -66,10 +71,12 @@ public final class DrmInitData implements Comparator, Parcelable { } } this.schemeDatas = schemeDatas; + schemeDataCount = schemeDatas.length; } /* package */ DrmInitData(Parcel in) { schemeDatas = in.createTypedArray(SchemeData.CREATOR); + schemeDataCount = schemeDatas.length; } /** @@ -87,6 +94,16 @@ public final class DrmInitData implements Comparator, Parcelable { return null; } + /** + * Retrieves the {@link SchemeData} at a given index. + * + * @param index index of the scheme to return. + * @return The {@link SchemeData} at the index. + */ + public SchemeData get(int index) { + return schemeDatas[index]; + } + @Override public int hashCode() { if (hashCode == 0) { @@ -160,6 +177,10 @@ public final class DrmInitData implements Comparator, Parcelable { * The initialization data. */ public final byte[] data; + /** + * Whether secure decryption is required. + */ + public final boolean requiresSecureDecryption; /** * @param uuid The {@link UUID} of the DRM scheme, or {@link C#UUID_NIL} if the data is @@ -168,15 +189,28 @@ public final class DrmInitData implements Comparator, Parcelable { * @param data The initialization data. */ public SchemeData(UUID uuid, String mimeType, byte[] data) { + this(uuid, mimeType, data, false); + } + + /** + * @param uuid The {@link UUID} of the DRM scheme, or {@link C#UUID_NIL} if the data is + * universal (i.e. applies to all schemes). + * @param mimeType The mimeType of the initialization data. + * @param data The initialization data. + * @param requiresSecureDecryption Whether secure decryption is required. + */ + public SchemeData(UUID uuid, String mimeType, byte[] data, boolean requiresSecureDecryption) { this.uuid = Assertions.checkNotNull(uuid); this.mimeType = Assertions.checkNotNull(mimeType); this.data = Assertions.checkNotNull(data); + this.requiresSecureDecryption = requiresSecureDecryption; } /* package */ SchemeData(Parcel in) { uuid = new UUID(in.readLong(), in.readLong()); mimeType = in.readString(); data = in.createByteArray(); + requiresSecureDecryption = in.readByte() != 0; } /** @@ -226,6 +260,7 @@ public final class DrmInitData implements Comparator, Parcelable { dest.writeLong(uuid.getLeastSignificantBits()); dest.writeString(mimeType); dest.writeByteArray(data); + dest.writeByte((byte) (requiresSecureDecryption ? 1 : 0)); } @SuppressWarnings("hiding") diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index 3e1cf1ba4c..da66157092 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -315,25 +315,30 @@ public class DashManifestParser extends DefaultHandler **/ protected SchemeData parseContentProtection(XmlPullParser xpp) throws XmlPullParserException, IOException { - SchemeData schemeData = null; + byte[] data = null; + UUID uuid = null; boolean seenPsshElement = false; + boolean requiresSecureDecoder = false; do { xpp.next(); // The cenc:pssh element is defined in 23001-7:2015. if (XmlPullParserUtil.isStartTag(xpp, "cenc:pssh") && xpp.next() == XmlPullParser.TEXT) { seenPsshElement = true; - byte[] data = Base64.decode(xpp.getText(), Base64.DEFAULT); - UUID uuid = PsshAtomUtil.parseUuid(data); - if (uuid != null) { - schemeData = new SchemeData(uuid, MimeTypes.VIDEO_MP4, data); - } + data = Base64.decode(xpp.getText(), Base64.DEFAULT); + uuid = PsshAtomUtil.parseUuid(data); + } else if (XmlPullParserUtil.isStartTag(xpp, "widevine:license")) { + String robustnessLevel = xpp.getAttributeValue(null, "robustness_level"); + requiresSecureDecoder = robustnessLevel != null && robustnessLevel.startsWith("HW"); } } while (!XmlPullParserUtil.isEndTag(xpp, "ContentProtection")); - if (seenPsshElement && schemeData == null) { + if (!seenPsshElement) { + return null; + } else if (uuid != null) { + return new SchemeData(uuid, MimeTypes.VIDEO_MP4, data, requiresSecureDecoder); + } else { Log.w(TAG, "Skipped unsupported ContentProtection element"); return null; } - return schemeData; } /** diff --git a/library/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java index 9a8c21116f..251fef9b1a 100644 --- a/library/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java @@ -18,6 +18,7 @@ package com.google.android.exoplayer2.video; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.drm.DrmInitData; import com.google.android.exoplayer2.drm.DrmSessionManager; import com.google.android.exoplayer2.mediacodec.MediaCodecInfo; import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer; @@ -175,8 +176,13 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { if (!MimeTypes.isVideo(mimeType)) { return FORMAT_UNSUPPORTED_TYPE; } + DrmInitData drmInitData = format.drmInitData; + boolean requiresSecureDecryption = false; + for (int i = 0; i < drmInitData.schemeDataCount; i++) { + requiresSecureDecryption |= drmInitData.get(i).requiresSecureDecryption; + } MediaCodecInfo decoderInfo = mediaCodecSelector.getDecoderInfo(mimeType, - format.requiresSecureDecryption); + requiresSecureDecryption); if (decoderInfo == null) { return FORMAT_UNSUPPORTED_SUBTYPE; } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java index af1823fb29..a077d150b8 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTrackOutput.java @@ -145,7 +145,6 @@ public final class FakeTrackOutput implements TrackOutput, Dumper.Dumpable { .add("containerMimeType", format.containerMimeType) .add("sampleMimeType", format.sampleMimeType) .add("maxInputSize", format.maxInputSize) - .add("requiresSecureDecryption", format.requiresSecureDecryption) .add("width", format.width) .add("height", format.height) .add("frameRate", format.frameRate)