Commit 9f781876 by aquilescanta Committed by Oliver Woodman

Migrate Cast demo app to use DefaultDrmSessionManager.Builder

PiperOrigin-RevId: 272444896
parent bc9a0860
...@@ -29,10 +29,9 @@ import com.google.android.exoplayer2.Timeline; ...@@ -29,10 +29,9 @@ import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Period; import com.google.android.exoplayer2.Timeline.Period;
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.ext.cast.CastPlayer; import com.google.android.exoplayer2.ext.cast.CastPlayer;
import com.google.android.exoplayer2.ext.cast.DefaultMediaItemConverter; import com.google.android.exoplayer2.ext.cast.DefaultMediaItemConverter;
import com.google.android.exoplayer2.ext.cast.MediaItem; import com.google.android.exoplayer2.ext.cast.MediaItem;
...@@ -54,7 +53,6 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory; ...@@ -54,7 +53,6 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.gms.cast.MediaQueueItem; import com.google.android.gms.cast.MediaQueueItem;
import com.google.android.gms.cast.framework.CastContext; import com.google.android.gms.cast.framework.CastContext;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.IdentityHashMap;
import java.util.Map; import java.util.Map;
/** Manages players and an internal media queue for the demo app. */ /** Manages players and an internal media queue for the demo app. */
...@@ -87,7 +85,6 @@ import java.util.Map; ...@@ -87,7 +85,6 @@ import java.util.Map;
private final Listener listener; private final Listener listener;
private final ConcatenatingMediaSource concatenatingMediaSource; private final ConcatenatingMediaSource concatenatingMediaSource;
private final MediaItemConverter mediaItemConverter; private final MediaItemConverter mediaItemConverter;
private final IdentityHashMap<MediaSource, FrameworkMediaDrm> mediaDrms;
private TrackGroupArray lastSeenTrackGroupArray; private TrackGroupArray lastSeenTrackGroupArray;
private int currentItemIndex; private int currentItemIndex;
...@@ -115,7 +112,6 @@ import java.util.Map; ...@@ -115,7 +112,6 @@ import java.util.Map;
currentItemIndex = C.INDEX_UNSET; currentItemIndex = C.INDEX_UNSET;
concatenatingMediaSource = new ConcatenatingMediaSource(); concatenatingMediaSource = new ConcatenatingMediaSource();
mediaItemConverter = new DefaultMediaItemConverter(); mediaItemConverter = new DefaultMediaItemConverter();
mediaDrms = new IdentityHashMap<>();
trackSelector = new DefaultTrackSelector(context); trackSelector = new DefaultTrackSelector(context);
exoPlayer = new SimpleExoPlayer.Builder(context).setTrackSelector(trackSelector).build(); exoPlayer = new SimpleExoPlayer.Builder(context).setTrackSelector(trackSelector).build();
...@@ -185,8 +181,7 @@ import java.util.Map; ...@@ -185,8 +181,7 @@ import java.util.Map;
if (itemIndex == -1) { if (itemIndex == -1) {
return false; return false;
} }
MediaSource removedMediaSource = concatenatingMediaSource.removeMediaSource(itemIndex); concatenatingMediaSource.removeMediaSource(itemIndex);
releaseMediaDrmOfMediaSource(removedMediaSource);
if (currentPlayer == castPlayer) { if (currentPlayer == castPlayer) {
if (castPlayer.getPlaybackState() != Player.STATE_IDLE) { if (castPlayer.getPlaybackState() != Player.STATE_IDLE) {
Timeline castTimeline = castPlayer.getCurrentTimeline(); Timeline castTimeline = castPlayer.getCurrentTimeline();
...@@ -262,9 +257,6 @@ import java.util.Map; ...@@ -262,9 +257,6 @@ import java.util.Map;
currentItemIndex = C.INDEX_UNSET; currentItemIndex = C.INDEX_UNSET;
mediaQueue.clear(); mediaQueue.clear();
concatenatingMediaSource.clear(); concatenatingMediaSource.clear();
for (FrameworkMediaDrm mediaDrm : mediaDrms.values()) {
mediaDrm.release();
}
castPlayer.setSessionAvailabilityListener(null); castPlayer.setSessionAvailabilityListener(null);
castPlayer.release(); castPlayer.release();
localPlayerView.setPlayer(null); localPlayerView.setPlayer(null);
...@@ -413,8 +405,7 @@ import java.util.Map; ...@@ -413,8 +405,7 @@ import java.util.Map;
throw new IllegalArgumentException("mimeType is required"); throw new IllegalArgumentException("mimeType is required");
} }
FrameworkMediaDrm mediaDrm = null; DrmSessionManager<ExoMediaCrypto> drmSessionManager =
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager =
DrmSessionManager.getDummyDrmSessionManager(); DrmSessionManager.getDummyDrmSessionManager();
MediaItem.DrmConfiguration drmConfiguration = item.drmConfiguration; MediaItem.DrmConfiguration drmConfiguration = item.drmConfiguration;
if (drmConfiguration != null) { if (drmConfiguration != null) {
...@@ -425,18 +416,12 @@ import java.util.Map; ...@@ -425,18 +416,12 @@ import java.util.Map;
for (Map.Entry<String, String> requestHeader : drmConfiguration.requestHeaders.entrySet()) { for (Map.Entry<String, String> requestHeader : drmConfiguration.requestHeaders.entrySet()) {
drmCallback.setKeyRequestProperty(requestHeader.getKey(), requestHeader.getValue()); drmCallback.setKeyRequestProperty(requestHeader.getKey(), requestHeader.getValue());
} }
try { drmSessionManager =
mediaDrm = FrameworkMediaDrm.newInstance(drmConfiguration.uuid); new DefaultDrmSessionManager.Builder()
drmSessionManager = .setMultiSession(/* multiSession= */ true)
new DefaultDrmSessionManager<>( .setUuidAndExoMediaDrmProvider(
drmConfiguration.uuid, drmConfiguration.uuid, FrameworkMediaDrm.DEFAULT_PROVIDER)
mediaDrm, .build(drmCallback);
drmCallback,
/* optionalKeyRequestParameters= */ null,
/* multiSession= */ true);
} catch (UnsupportedDrmException e) {
// Do nothing. The track selector will avoid selecting the DRM protected tracks.
}
} }
MediaSource createdMediaSource; MediaSource createdMediaSource;
...@@ -468,16 +453,6 @@ import java.util.Map; ...@@ -468,16 +453,6 @@ import java.util.Map;
default: default:
throw new IllegalArgumentException("mimeType is unsupported: " + mimeType); throw new IllegalArgumentException("mimeType is unsupported: " + mimeType);
} }
if (mediaDrm != null) {
mediaDrms.put(createdMediaSource, mediaDrm);
}
return createdMediaSource; return createdMediaSource;
} }
private void releaseMediaDrmOfMediaSource(MediaSource mediaSource) {
FrameworkMediaDrm mediaDrmToRelease = mediaDrms.remove(mediaSource);
if (mediaDrmToRelease != null) {
mediaDrmToRelease.release();
}
}
} }
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