Commit 433526e0 by aquilescanta Committed by Oliver Woodman

Deprecate DefaultDrmSessionManager factory methods and migrate main demo app

PiperOrigin-RevId: 272643202
parent 737b5cd8
...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.demo; ...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.demo;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.media.MediaDrm;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.util.Pair; import android.util.Pair;
...@@ -40,10 +41,10 @@ import com.google.android.exoplayer2.SimpleExoPlayer; ...@@ -40,10 +41,10 @@ import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.demo.Sample.UriSample; import com.google.android.exoplayer2.demo.Sample.UriSample;
import com.google.android.exoplayer2.drm.DefaultDrmSessionManager; import com.google.android.exoplayer2.drm.DefaultDrmSessionManager;
import com.google.android.exoplayer2.drm.DrmSessionManager; import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto; import com.google.android.exoplayer2.drm.ExoMediaCrypto;
import com.google.android.exoplayer2.drm.FrameworkMediaDrm; import com.google.android.exoplayer2.drm.FrameworkMediaDrm;
import com.google.android.exoplayer2.drm.HttpMediaDrmCallback; import com.google.android.exoplayer2.drm.HttpMediaDrmCallback;
import com.google.android.exoplayer2.drm.UnsupportedDrmException; import com.google.android.exoplayer2.drm.MediaDrmCallback;
import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.DecoderInitializationException; import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.DecoderInitializationException;
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException; import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException;
import com.google.android.exoplayer2.offline.DownloadHelper; import com.google.android.exoplayer2.offline.DownloadHelper;
...@@ -78,8 +79,6 @@ import java.lang.reflect.Constructor; ...@@ -78,8 +79,6 @@ import java.lang.reflect.Constructor;
import java.net.CookieHandler; import java.net.CookieHandler;
import java.net.CookieManager; import java.net.CookieManager;
import java.net.CookiePolicy; import java.net.CookiePolicy;
import java.util.ArrayList;
import java.util.UUID;
/** An activity that plays media using {@link SimpleExoPlayer}. */ /** An activity that plays media using {@link SimpleExoPlayer}. */
public class PlayerActivity extends AppCompatActivity public class PlayerActivity extends AppCompatActivity
...@@ -131,8 +130,6 @@ public class PlayerActivity extends AppCompatActivity ...@@ -131,8 +130,6 @@ public class PlayerActivity extends AppCompatActivity
DEFAULT_COOKIE_MANAGER.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER); DEFAULT_COOKIE_MANAGER.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
} }
private final ArrayList<FrameworkMediaDrm> mediaDrms;
private PlayerView playerView; private PlayerView playerView;
private LinearLayout debugRootView; private LinearLayout debugRootView;
private Button selectTracksButton; private Button selectTracksButton;
...@@ -156,10 +153,6 @@ public class PlayerActivity extends AppCompatActivity ...@@ -156,10 +153,6 @@ public class PlayerActivity extends AppCompatActivity
private AdsLoader adsLoader; private AdsLoader adsLoader;
private Uri loadedAdTagUri; private Uri loadedAdTagUri;
public PlayerActivity() {
mediaDrms = new ArrayList<>();
}
// Activity lifecycle // Activity lifecycle
@Override @Override
...@@ -342,7 +335,6 @@ public class PlayerActivity extends AppCompatActivity ...@@ -342,7 +335,6 @@ public class PlayerActivity extends AppCompatActivity
if (player == null) { if (player == null) {
Intent intent = getIntent(); Intent intent = getIntent();
releaseMediaDrms();
mediaSource = createTopLevelMediaSource(intent); mediaSource = createTopLevelMediaSource(intent);
if (mediaSource == null) { if (mediaSource == null) {
return; return;
...@@ -452,39 +444,30 @@ public class PlayerActivity extends AppCompatActivity ...@@ -452,39 +444,30 @@ public class PlayerActivity extends AppCompatActivity
} }
private MediaSource createLeafMediaSource(UriSample parameters) { private MediaSource createLeafMediaSource(UriSample parameters) {
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
Sample.DrmInfo drmInfo = parameters.drmInfo; Sample.DrmInfo drmInfo = parameters.drmInfo;
if (drmInfo != null) {
int errorStringId = R.string.error_drm_unknown; int errorStringId = R.string.error_drm_unknown;
if (Util.SDK_INT < 18) { DrmSessionManager<ExoMediaCrypto> drmSessionManager = null;
errorStringId = R.string.error_drm_not_supported; if (drmInfo == null) {
} else { drmSessionManager = DrmSessionManager.getDummyDrmSessionManager();
try { } else if (Util.SDK_INT < 18) {
if (drmInfo.drmScheme == null) { errorStringId = R.string.error_drm_unsupported_before_api_18;
} else if (!MediaDrm.isCryptoSchemeSupported(drmInfo.drmScheme)) {
errorStringId = R.string.error_drm_unsupported_scheme; errorStringId = R.string.error_drm_unsupported_scheme;
} else { } else {
MediaDrmCallback mediaDrmCallback =
createMediaDrmCallback(drmInfo.drmLicenseUrl, drmInfo.drmKeyRequestProperties);
drmSessionManager = drmSessionManager =
buildDrmSessionManagerV18( new DefaultDrmSessionManager.Builder()
drmInfo.drmScheme, .setUuidAndExoMediaDrmProvider(drmInfo.drmScheme, FrameworkMediaDrm.DEFAULT_PROVIDER)
drmInfo.drmLicenseUrl, .setMultiSession(drmInfo.drmMultiSession)
drmInfo.drmKeyRequestProperties, .build(mediaDrmCallback);
drmInfo.drmMultiSession);
}
} catch (UnsupportedDrmException e) {
errorStringId =
e.reason == UnsupportedDrmException.REASON_UNSUPPORTED_SCHEME
? R.string.error_drm_unsupported_scheme
: R.string.error_drm_unknown;
}
} }
if (drmSessionManager == null) { if (drmSessionManager == null) {
showToast(errorStringId); showToast(errorStringId);
finish(); finish();
return null; return null;
} }
} else {
drmSessionManager = DrmSessionManager.getDummyDrmSessionManager();
}
DownloadRequest downloadRequest = DownloadRequest downloadRequest =
((DemoApplication) getApplication()) ((DemoApplication) getApplication())
...@@ -497,7 +480,7 @@ public class PlayerActivity extends AppCompatActivity ...@@ -497,7 +480,7 @@ public class PlayerActivity extends AppCompatActivity
} }
private MediaSource createLeafMediaSource( private MediaSource createLeafMediaSource(
Uri uri, String extension, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) { Uri uri, String extension, DrmSessionManager<ExoMediaCrypto> drmSessionManager) {
@ContentType int type = Util.inferContentType(uri, extension); @ContentType int type = Util.inferContentType(uri, extension);
switch (type) { switch (type) {
case C.TYPE_DASH: case C.TYPE_DASH:
...@@ -521,9 +504,8 @@ public class PlayerActivity extends AppCompatActivity ...@@ -521,9 +504,8 @@ public class PlayerActivity extends AppCompatActivity
} }
} }
private DefaultDrmSessionManager<FrameworkMediaCrypto> buildDrmSessionManagerV18( private HttpMediaDrmCallback createMediaDrmCallback(
UUID uuid, String licenseUrl, String[] keyRequestPropertiesArray, boolean multiSession) String licenseUrl, String[] keyRequestPropertiesArray) {
throws UnsupportedDrmException {
HttpDataSource.Factory licenseDataSourceFactory = HttpDataSource.Factory licenseDataSourceFactory =
((DemoApplication) getApplication()).buildHttpDataSourceFactory(); ((DemoApplication) getApplication()).buildHttpDataSourceFactory();
HttpMediaDrmCallback drmCallback = HttpMediaDrmCallback drmCallback =
...@@ -534,10 +516,7 @@ public class PlayerActivity extends AppCompatActivity ...@@ -534,10 +516,7 @@ public class PlayerActivity extends AppCompatActivity
keyRequestPropertiesArray[i + 1]); keyRequestPropertiesArray[i + 1]);
} }
} }
return drmCallback;
FrameworkMediaDrm mediaDrm = FrameworkMediaDrm.newInstance(uuid);
mediaDrms.add(mediaDrm);
return new DefaultDrmSessionManager<>(uuid, mediaDrm, drmCallback, null, multiSession);
} }
private void releasePlayer() { private void releasePlayer() {
...@@ -554,14 +533,6 @@ public class PlayerActivity extends AppCompatActivity ...@@ -554,14 +533,6 @@ public class PlayerActivity extends AppCompatActivity
if (adsLoader != null) { if (adsLoader != null) {
adsLoader.setPlayer(null); adsLoader.setPlayer(null);
} }
releaseMediaDrms();
}
private void releaseMediaDrms() {
for (FrameworkMediaDrm mediaDrm : mediaDrms) {
mediaDrm.release();
}
mediaDrms.clear();
} }
private void releaseAdsLoader() { private void releaseAdsLoader() {
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<string name="error_unrecognized_stereo_mode">Unrecognized stereo mode</string> <string name="error_unrecognized_stereo_mode">Unrecognized stereo mode</string>
<string name="error_drm_not_supported">Protected content not supported on API levels below 18</string> <string name="error_drm_unsupported_before_api_18">Protected content not supported on API levels below 18</string>
<string name="error_drm_unsupported_scheme">This device does not support the required DRM scheme</string> <string name="error_drm_unsupported_scheme">This device does not support the required DRM scheme</string>
......
...@@ -63,7 +63,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -63,7 +63,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
private LoadErrorHandlingPolicy loadErrorHandlingPolicy; private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
/** /**
* Creates a builder with default values. * Creates a builder with default values. The default values are:
* *
* <ul> * <ul>
* <li>{@link #setKeyRequestParameters keyRequestParameters}: An empty map. * <li>{@link #setKeyRequestParameters keyRequestParameters}: An empty map.
...@@ -258,7 +258,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -258,7 +258,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
* @param callback Performs key and provisioning requests. * @param callback Performs key and provisioning requests.
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument * @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
* to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null. * to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null.
* @deprecated Use {@link Builder} instead.
*/ */
@Deprecated
public DefaultDrmSessionManager( public DefaultDrmSessionManager(
UUID uuid, UUID uuid,
ExoMediaDrm<T> exoMediaDrm, ExoMediaDrm<T> exoMediaDrm,
...@@ -281,7 +283,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -281,7 +283,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
* to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null. * to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null.
* @param multiSession A boolean that specify whether multiple key session support is enabled. * @param multiSession A boolean that specify whether multiple key session support is enabled.
* Default is false. * Default is false.
* @deprecated Use {@link Builder} instead.
*/ */
@Deprecated
public DefaultDrmSessionManager( public DefaultDrmSessionManager(
UUID uuid, UUID uuid,
ExoMediaDrm<T> exoMediaDrm, ExoMediaDrm<T> exoMediaDrm,
...@@ -307,7 +311,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -307,7 +311,9 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
* Default is false. * Default is false.
* @param initialDrmRequestRetryCount The number of times to retry for initial provisioning and * @param initialDrmRequestRetryCount The number of times to retry for initial provisioning and
* key request before reporting error. * key request before reporting error.
* @deprecated Use {@link Builder} instead.
*/ */
@Deprecated
public DefaultDrmSessionManager( public DefaultDrmSessionManager(
UUID uuid, UUID uuid,
ExoMediaDrm<T> exoMediaDrm, ExoMediaDrm<T> exoMediaDrm,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment