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