Commit 656c97f1 by olly Committed by Oliver Woodman

Minor DefaultDrmSessionManager tweaks

PiperOrigin-RevId: 269574864
parent 5df2f142
...@@ -343,7 +343,8 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -343,7 +343,8 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
/** /**
* Sets the mode, which determines the role of sessions acquired from the instance. This must be * Sets the mode, which determines the role of sessions acquired from the instance. This must be
* called before {@link #acquireSession(Looper, DrmInitData)} is called. * called before {@link #acquireSession(Looper, DrmInitData)} or {@link
* #acquirePlaceholderSession(Looper)} is called.
* *
* <p>By default, the mode is {@link #MODE_PLAYBACK} and a streaming license is requested when * <p>By default, the mode is {@link #MODE_PLAYBACK} and a streaming license is requested when
* required. * required.
...@@ -410,6 +411,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -410,6 +411,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
@Override @Override
@Nullable @Nullable
public DrmSession<T> acquirePlaceholderSession(Looper playbackLooper) { public DrmSession<T> acquirePlaceholderSession(Looper playbackLooper) {
assertExpectedPlaybackLooper(playbackLooper);
if (!allowPlaceholderSessions || mediaDrm.getExoMediaCryptoType() == null) { if (!allowPlaceholderSessions || mediaDrm.getExoMediaCryptoType() == null) {
return null; return null;
} }
...@@ -426,6 +428,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -426,6 +428,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
@Override @Override
public DrmSession<T> acquireSession(Looper playbackLooper, DrmInitData drmInitData) { public DrmSession<T> acquireSession(Looper playbackLooper, DrmInitData drmInitData) {
assertExpectedPlaybackLooper(playbackLooper);
maybeCreateMediaDrmHandler(playbackLooper); maybeCreateMediaDrmHandler(playbackLooper);
List<SchemeData> schemeDatas = null; List<SchemeData> schemeDatas = null;
...@@ -461,34 +464,6 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -461,34 +464,6 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
return session; return session;
} }
private DefaultDrmSession<T> createNewDefaultSession(
@Nullable List<SchemeData> schemeDatas, boolean isPlaceholderSession) {
return new DefaultDrmSession<>(
uuid,
mediaDrm,
/* provisioningManager= */ this,
/* releaseCallback= */ this::onSessionReleased,
schemeDatas,
mode,
isPlaceholderSession,
offlineLicenseKeySetId,
optionalKeyRequestParameters,
callback,
Assertions.checkNotNull(playbackLooper),
eventDispatcher,
loadErrorHandlingPolicy);
}
private void maybeCreateMediaDrmHandler(Looper playbackLooper) {
Assertions.checkState(this.playbackLooper == null || this.playbackLooper == playbackLooper);
if (sessions.isEmpty()) {
this.playbackLooper = playbackLooper;
if (mediaDrmHandler == null) {
mediaDrmHandler = new MediaDrmHandler(playbackLooper);
}
}
}
@Override @Override
@Nullable @Nullable
public Class<T> getExoMediaCryptoType(DrmInitData drmInitData) { public Class<T> getExoMediaCryptoType(DrmInitData drmInitData) {
...@@ -528,6 +503,35 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -528,6 +503,35 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
// Internal methods. // Internal methods.
private void assertExpectedPlaybackLooper(Looper playbackLooper) {
Assertions.checkState(this.playbackLooper == null || this.playbackLooper == playbackLooper);
this.playbackLooper = playbackLooper;
}
private void maybeCreateMediaDrmHandler(Looper playbackLooper) {
if (mediaDrmHandler == null) {
mediaDrmHandler = new MediaDrmHandler(playbackLooper);
}
}
private DefaultDrmSession<T> createNewDefaultSession(
@Nullable List<SchemeData> schemeDatas, boolean isPlaceholderSession) {
return new DefaultDrmSession<>(
uuid,
mediaDrm,
/* provisioningManager= */ this,
/* releaseCallback= */ this::onSessionReleased,
schemeDatas,
mode,
isPlaceholderSession,
offlineLicenseKeySetId,
optionalKeyRequestParameters,
callback,
Assertions.checkNotNull(playbackLooper),
eventDispatcher,
loadErrorHandlingPolicy);
}
private void onSessionReleased(DefaultDrmSession<T> drmSession) { private void onSessionReleased(DefaultDrmSession<T> drmSession) {
sessions.remove(drmSession); sessions.remove(drmSession);
if (placeholderDrmSession == drmSession) { if (placeholderDrmSession == drmSession) {
......
...@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.drm; ...@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.drm;
import android.media.MediaDrmException; import android.media.MediaDrmException;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.google.android.exoplayer2.util.Util;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -110,7 +111,7 @@ public final class DummyExoMediaDrm<T extends ExoMediaCrypto> implements ExoMedi ...@@ -110,7 +111,7 @@ public final class DummyExoMediaDrm<T extends ExoMediaCrypto> implements ExoMedi
@Override @Override
public byte[] getPropertyByteArray(String propertyName) { public byte[] getPropertyByteArray(String propertyName) {
return new byte[0]; return Util.EMPTY_BYTE_ARRAY;
} }
@Override @Override
......
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