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>
/**
* 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
* required.
......@@ -410,6 +411,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
@Override
@Nullable
public DrmSession<T> acquirePlaceholderSession(Looper playbackLooper) {
assertExpectedPlaybackLooper(playbackLooper);
if (!allowPlaceholderSessions || mediaDrm.getExoMediaCryptoType() == null) {
return null;
}
......@@ -426,6 +428,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
@Override
public DrmSession<T> acquireSession(Looper playbackLooper, DrmInitData drmInitData) {
assertExpectedPlaybackLooper(playbackLooper);
maybeCreateMediaDrmHandler(playbackLooper);
List<SchemeData> schemeDatas = null;
......@@ -461,34 +464,6 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
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
@Nullable
public Class<T> getExoMediaCryptoType(DrmInitData drmInitData) {
......@@ -528,6 +503,35 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
// 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) {
sessions.remove(drmSession);
if (placeholderDrmSession == drmSession) {
......
......@@ -18,6 +18,7 @@ package com.google.android.exoplayer2.drm;
import android.media.MediaDrmException;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import com.google.android.exoplayer2.util.Util;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -110,7 +111,7 @@ public final class DummyExoMediaDrm<T extends ExoMediaCrypto> implements ExoMedi
@Override
public byte[] getPropertyByteArray(String propertyName) {
return new byte[0];
return Util.EMPTY_BYTE_ARRAY;
}
@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