Commit 82a31eed by aquilescanta Committed by Oliver Woodman

Add a placeholder mode for DefaultDrmSessions

Issue:#4867
PiperOrigin-RevId: 268473094
parent 0cc1e514
...@@ -106,6 +106,7 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T ...@@ -106,6 +106,7 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T
private final ProvisioningManager<T> provisioningManager; private final ProvisioningManager<T> provisioningManager;
private final ReleaseCallback<T> releaseCallback; private final ReleaseCallback<T> releaseCallback;
private final @DefaultDrmSessionManager.Mode int mode; private final @DefaultDrmSessionManager.Mode int mode;
private final boolean isPlaceholderSession;
@Nullable private final HashMap<String, String> optionalKeyRequestParameters; @Nullable private final HashMap<String, String> optionalKeyRequestParameters;
private final EventDispatcher<DefaultDrmSessionEventListener> eventDispatcher; private final EventDispatcher<DefaultDrmSessionEventListener> eventDispatcher;
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy; private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
...@@ -134,8 +135,9 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T ...@@ -134,8 +135,9 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T
* @param provisioningManager The manager for provisioning. * @param provisioningManager The manager for provisioning.
* @param releaseCallback The {@link ReleaseCallback}. * @param releaseCallback The {@link ReleaseCallback}.
* @param schemeDatas DRM scheme datas for this session, or null if an {@code * @param schemeDatas DRM scheme datas for this session, or null if an {@code
* offlineLicenseKeySetId} is provided. * offlineLicenseKeySetId} is provided or if {@code isPlaceholderSession} is true.
* @param mode The DRM mode. * @param mode The DRM mode. Ignored if {@code isPlaceholderSession} is true.
* @param isPlaceholderSession Whether this session is not expected to acquire any keys.
* @param offlineLicenseKeySetId The offline license key set identifier, or null when not using * @param offlineLicenseKeySetId The offline license key set identifier, or null when not using
* offline keys. * offline keys.
* @param optionalKeyRequestParameters The optional key request parameters. * @param optionalKeyRequestParameters The optional key request parameters.
...@@ -152,6 +154,7 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T ...@@ -152,6 +154,7 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T
ReleaseCallback<T> releaseCallback, ReleaseCallback<T> releaseCallback,
@Nullable List<SchemeData> schemeDatas, @Nullable List<SchemeData> schemeDatas,
@DefaultDrmSessionManager.Mode int mode, @DefaultDrmSessionManager.Mode int mode,
boolean isPlaceholderSession,
@Nullable byte[] offlineLicenseKeySetId, @Nullable byte[] offlineLicenseKeySetId,
@Nullable HashMap<String, String> optionalKeyRequestParameters, @Nullable HashMap<String, String> optionalKeyRequestParameters,
MediaDrmCallback callback, MediaDrmCallback callback,
...@@ -167,6 +170,7 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T ...@@ -167,6 +170,7 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T
this.releaseCallback = releaseCallback; this.releaseCallback = releaseCallback;
this.mediaDrm = mediaDrm; this.mediaDrm = mediaDrm;
this.mode = mode; this.mode = mode;
this.isPlaceholderSession = isPlaceholderSession;
if (offlineLicenseKeySetId != null) { if (offlineLicenseKeySetId != null) {
this.offlineLicenseKeySetId = offlineLicenseKeySetId; this.offlineLicenseKeySetId = offlineLicenseKeySetId;
this.schemeDatas = null; this.schemeDatas = null;
...@@ -342,6 +346,10 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T ...@@ -342,6 +346,10 @@ public class DefaultDrmSession<T extends ExoMediaCrypto> implements DrmSession<T
@RequiresNonNull("sessionId") @RequiresNonNull("sessionId")
private void doLicense(boolean allowRetry) { private void doLicense(boolean allowRetry) {
if (isPlaceholderSession) {
state = STATE_OPENED_WITH_KEYS;
return;
}
byte[] sessionId = Util.castNonNull(this.sessionId); byte[] sessionId = Util.castNonNull(this.sessionId);
switch (mode) { switch (mode) {
case DefaultDrmSessionManager.MODE_PLAYBACK: case DefaultDrmSessionManager.MODE_PLAYBACK:
......
...@@ -442,6 +442,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto> ...@@ -442,6 +442,7 @@ public class DefaultDrmSessionManager<T extends ExoMediaCrypto>
/* releaseCallback= */ this::onSessionReleased, /* releaseCallback= */ this::onSessionReleased,
schemeDatas, schemeDatas,
mode, mode,
/* isPlaceholderSession= */ false,
offlineLicenseKeySetId, offlineLicenseKeySetId,
optionalKeyRequestParameters, optionalKeyRequestParameters,
callback, callback,
......
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