Class DefaultDrmSessionManager.Builder
- java.lang.Object
-
- com.google.android.exoplayer2.drm.DefaultDrmSessionManager.Builder
-
- Enclosing class:
- DefaultDrmSessionManager
public static final class DefaultDrmSessionManager.Builder extends Object
Builder forDefaultDrmSessionManager
instances.See
Builder()
for the list of default values.
-
-
Constructor Summary
Constructors Constructor Description Builder()
Creates a builder with default values.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DefaultDrmSessionManager
build(MediaDrmCallback mediaDrmCallback)
Builds aDefaultDrmSessionManager
instance.DefaultDrmSessionManager.Builder
setKeyRequestParameters(Map<String,String> keyRequestParameters)
Sets the key request parameters to pass as the last argument toExoMediaDrm.getKeyRequest(byte[], List, int, HashMap)
.DefaultDrmSessionManager.Builder
setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy)
Sets theLoadErrorHandlingPolicy
for key and provisioning requests.DefaultDrmSessionManager.Builder
setMultiSession(boolean multiSession)
Sets whether this session manager is allowed to acquire multiple simultaneous sessions.DefaultDrmSessionManager.Builder
setPlayClearSamplesWithoutKeys(boolean playClearSamplesWithoutKeys)
Sets whether clear samples within protected content should be played when keys for the encrypted part of the content have yet to be loaded.DefaultDrmSessionManager.Builder
setSessionKeepaliveMs(long sessionKeepaliveMs)
Sets the time to keepDrmSessions
alive when they're not in use.DefaultDrmSessionManager.Builder
setUseDrmSessionsForClearContent(@com.google.android.exoplayer2.C.TrackType int... useDrmSessionsForClearContentTrackTypes)
Sets whether this session manager should attachDrmSessions
to the clear sections of the media content.DefaultDrmSessionManager.Builder
setUuidAndExoMediaDrmProvider(UUID uuid, ExoMediaDrm.Provider exoMediaDrmProvider)
Sets the UUID of the DRM scheme and theExoMediaDrm.Provider
to use.
-
-
-
Constructor Detail
-
Builder
public Builder()
Creates a builder with default values. The default values are:keyRequestParameters
: An empty map.UUID
:C.WIDEVINE_UUID
.ExoMediaDrm.Provider
:FrameworkMediaDrm.DEFAULT_PROVIDER
.multiSession
:false
.useDrmSessionsForClearContent
: No tracks.playClearSamplesWithoutKeys
:false
.LoadErrorHandlingPolicy
:DefaultLoadErrorHandlingPolicy
.
-
-
Method Detail
-
setKeyRequestParameters
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setKeyRequestParameters(@Nullable Map<String,String> keyRequestParameters)
Sets the key request parameters to pass as the last argument toExoMediaDrm.getKeyRequest(byte[], List, int, HashMap)
. May be null if not parameters need to be passed.Custom data for PlayReady should be set under
DefaultDrmSessionManager.PLAYREADY_CUSTOM_DATA_KEY
.- Parameters:
keyRequestParameters
- A map with parameters.- Returns:
- This builder.
-
setUuidAndExoMediaDrmProvider
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setUuidAndExoMediaDrmProvider(UUID uuid, ExoMediaDrm.Provider exoMediaDrmProvider)
Sets the UUID of the DRM scheme and theExoMediaDrm.Provider
to use.- Parameters:
uuid
- The UUID of the DRM scheme.exoMediaDrmProvider
- TheExoMediaDrm.Provider
.- Returns:
- This builder.
-
setMultiSession
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setMultiSession(boolean multiSession)
Sets whether this session manager is allowed to acquire multiple simultaneous sessions.Users should pass false when a single key request will obtain all keys required to decrypt the associated content.
multiSession
is required when content uses key rotation.- Parameters:
multiSession
- Whether this session manager is allowed to acquire multiple simultaneous sessions.- Returns:
- This builder.
-
setUseDrmSessionsForClearContent
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setUseDrmSessionsForClearContent(@com.google.android.exoplayer2.C.TrackType int... useDrmSessionsForClearContentTrackTypes)
Sets whether this session manager should attachDrmSessions
to the clear sections of the media content.Using
DrmSessions
for clear content avoids the recreation of decoders when transitioning between clear and encrypted sections of content.- Parameters:
useDrmSessionsForClearContentTrackTypes
- The track types (C.TRACK_TYPE_AUDIO
and/orC.TRACK_TYPE_VIDEO
) for which to use aDrmSession
regardless of whether the content is clear or encrypted.- Returns:
- This builder.
- Throws:
IllegalArgumentException
- IfuseDrmSessionsForClearContentTrackTypes
contains track types other thanC.TRACK_TYPE_AUDIO
andC.TRACK_TYPE_VIDEO
.
-
setPlayClearSamplesWithoutKeys
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setPlayClearSamplesWithoutKeys(boolean playClearSamplesWithoutKeys)
Sets whether clear samples within protected content should be played when keys for the encrypted part of the content have yet to be loaded.- Parameters:
playClearSamplesWithoutKeys
- Whether clear samples within protected content should be played when keys for the encrypted part of the content have yet to be loaded.- Returns:
- This builder.
-
setLoadErrorHandlingPolicy
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy loadErrorHandlingPolicy)
Sets theLoadErrorHandlingPolicy
for key and provisioning requests.- Parameters:
loadErrorHandlingPolicy
- ALoadErrorHandlingPolicy
.- Returns:
- This builder.
-
setSessionKeepaliveMs
@CanIgnoreReturnValue public DefaultDrmSessionManager.Builder setSessionKeepaliveMs(long sessionKeepaliveMs)
Sets the time to keepDrmSessions
alive when they're not in use.It can be useful to keep sessions alive during playback of short clear sections of media (e.g. ad breaks) to avoid opening new DRM sessions (and re-requesting keys) at the transition back into secure content. This assumes the secure sections before and after the clear section are encrypted with the same keys.
Defaults to
DefaultDrmSessionManager.DEFAULT_SESSION_KEEPALIVE_MS
. PassC.TIME_UNSET
to disable keep-alive.- Parameters:
sessionKeepaliveMs
- The time to keepDrmSession
s alive before fully releasing, in milliseconds. Must be > 0 orC.TIME_UNSET
to disable keep-alive.- Returns:
- This builder.
-
build
public DefaultDrmSessionManager build(MediaDrmCallback mediaDrmCallback)
Builds aDefaultDrmSessionManager
instance.
-
-