diff --git a/RELEASENOTES.md b/RELEASENOTES.md index cff7ef660b..d53734b96c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -269,6 +269,10 @@ ([#7011](https://github.com/google/ExoPlayer/issues/7011), [#6725](https://github.com/google/ExoPlayer/issues/6725), [#7066](https://github.com/google/ExoPlayer/issues/7066)). + * Remove support for `cbc1` and `cens` encrytion schemes. Support for + these schemes was removed from the Android platform from API level 30, + and the range of API levels for which they are supported is too small to + be useful. * Remove generic types from DRM components. * Test utils: Add `TestExoPlayer`, a utility class with APIs to create `SimpleExoPlayer` instances with fake components for testing. diff --git a/demos/main/src/main/assets/media.exolist.json b/demos/main/src/main/assets/media.exolist.json index d21c58e0cc..ce1854db85 100644 --- a/demos/main/src/main/assets/media.exolist.json +++ b/demos/main/src/main/assets/media.exolist.json @@ -124,18 +124,6 @@ "drm_scheme": "widevine", "drm_license_uri": "https://proxy.uat.widevine.com/proxy?provider=widevine_test" }, - { - "name": "Secure (cbc1)", - "uri": "https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd", - "drm_scheme": "widevine", - "drm_license_uri": "https://proxy.uat.widevine.com/proxy?provider=widevine_test" - }, - { - "name": "Secure UHD (cbc1)", - "uri": "https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1_uhd.mpd", - "drm_scheme": "widevine", - "drm_license_uri": "https://proxy.uat.widevine.com/proxy?provider=widevine_test" - }, { "name": "Secure (cbcs)", "uri": "https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd", diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java index a593943e57..3f75500a2b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java @@ -585,12 +585,16 @@ public class DefaultDrmSessionManager implements DrmSessionManager { if (schemeType == null || C.CENC_TYPE_cenc.equals(schemeType)) { // If there is no scheme information, assume patternless AES-CTR. return true; - } else if (C.CENC_TYPE_cbc1.equals(schemeType) - || C.CENC_TYPE_cbcs.equals(schemeType) - || C.CENC_TYPE_cens.equals(schemeType)) { - // API support for AES-CBC and pattern encryption was added in API 24. However, the + } else if (C.CENC_TYPE_cbcs.equals(schemeType)) { + // Support for cbcs (AES-CBC with pattern encryption) was added in API 24. However, the // implementation was not stable until API 25. return Util.SDK_INT >= 25; + } else if (C.CENC_TYPE_cbc1.equals(schemeType) || C.CENC_TYPE_cens.equals(schemeType)) { + // Support for cbc1 (AES-CTR with pattern encryption) and cens (AES-CBC without pattern + // encryption) was also added in API 24 and made stable from API 25, however support was + // removed from API 30. Since the range of API levels for which these modes are usable is too + // small to be useful, we don't indicate support on any API level. + return false; } // Unknown schemes, assume one of them is supported. return true; diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java index d25836eee3..fe0a2fcbfa 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java @@ -74,20 +74,6 @@ public final class CommonEncryptionDrmTest { .run(); } - @Test - public void cbc1SchemeTypeV25() { - if (Util.SDK_INT < 25) { - // cbc1 support was added in API 24, but it is stable from API 25 onwards. - // See [internal: b/65634809]. - // Pass. - return; - } - testRunner - .setStreamName("test_widevine_h264_scheme_cbc1") - .setManifestUrl(DashTestData.WIDEVINE_SCHEME_CBC1) - .run(); - } - @Test public void cbcsSchemeTypeV25() { if (Util.SDK_INT < 25) { @@ -101,9 +87,4 @@ public final class CommonEncryptionDrmTest { .setManifestUrl(DashTestData.WIDEVINE_SCHEME_CBCS) .run(); } - - @Test - public void censSchemeTypeV25() { - // TODO: Implement once content is available. Track [internal: b/31219813]. - } } diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestData.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestData.java index 2033ef3096..c148010fdb 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestData.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestData.java @@ -45,8 +45,6 @@ import com.google.android.exoplayer2.util.Util; // Widevine encrypted content manifests using different common encryption schemes. public static final String WIDEVINE_SCHEME_CENC = BASE_URL_COMMON_ENCRYPTION + "tears-cenc.mpd"; - public static final String WIDEVINE_SCHEME_CBC1 = - BASE_URL_COMMON_ENCRYPTION + "tears-aes-cbc1.mpd"; public static final String WIDEVINE_SCHEME_CBCS = BASE_URL_COMMON_ENCRYPTION + "tears-aes-cbcs.mpd";