mirror of
https://github.com/samsonjs/media.git
synced 2026-04-07 11:35:46 +00:00
Minor DefaultDrmSessionManager tweaks
PiperOrigin-RevId: 269574864
This commit is contained in:
parent
5df2f142b4
commit
656c97f122
2 changed files with 35 additions and 30 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue