mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add a placeholder mode for DefaultDrmSessions
Issue:#4867 PiperOrigin-RevId: 268473094
This commit is contained in:
parent
0cc1e5143b
commit
82a31eed2f
2 changed files with 11 additions and 2 deletions
|
|
@ -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
|
||||||
* @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
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
@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>
|
||||||
/* releaseCallback= */ this::onSessionReleased,
|
/* releaseCallback= */ this::onSessionReleased,
|
||||||
schemeDatas,
|
schemeDatas,
|
||||||
mode,
|
mode,
|
||||||
|
/* isPlaceholderSession= */ false,
|
||||||
offlineLicenseKeySetId,
|
offlineLicenseKeySetId,
|
||||||
optionalKeyRequestParameters,
|
optionalKeyRequestParameters,
|
||||||
callback,
|
callback,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue