Package com.castlabs.android.drm
Class DrmConfiguration
java.lang.Object
com.castlabs.android.drm.DrmConfiguration
- All Implemented Interfaces:
Parcelable
- Direct Known Subclasses:
DrmTodayConfiguration
Basic DRM configuration that can be used to query keys from a widevine proxy.
Please note that this is not sufficient in combination with DRMToday. To query keys
from DRMToday, please use the
DrmTodayConfiguration
configuration instead.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
A builder implementation to create instances ofDrmConfiguration
sNested classes/interfaces inherited from interface android.os.Parcelable
Parcelable.ClassLoaderCreator<T>, Parcelable.Creator<T>
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal Drm
The DRM system used for audio tracks.static final Parcelable.Creator
<DrmConfiguration> static final DrmConfiguration
final Drm
The default DRM system.final boolean
If set to true, Widevine L3 will be enforced.final boolean
Enforce Key-Rotation support also on older devices before Android M.final Bundle
This bundle contains key-value pairs as the properties of Widevine mediaDrm.final String
This is used to identify this DRM Configuration and its asset when storing offline keys.final boolean
If true, clear samples will be played while the key is fetchedfinal long
If set to non-zero and non-negative value then the Widevine license will be automatically renewed beforerenewalThresholdMs
milliseconds of license expiration.final Bundle
Bundle that can be used to put additional request (header) parameters that will be send to the DRM backend during license requests.final String
The proxy URLFields inherited from interface android.os.Parcelable
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE
-
Constructor Summary
ConstructorsConstructorDescriptionDrmConfiguration
(String url, boolean playClearSamplesWithoutKeys) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs, Bundle mediaDrmProperties) Deprecated.The constructor will have access level protected, useDrmConfiguration.Builder
if not extendingDrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, Drm drm, String offlineId) Deprecated.DrmConfiguration
(String url, boolean playClearSamplesWithoutKeys, String offlineId) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionint
boolean
int
hashCode()
boolean
The best available DRM if no explicit DRM was specified.The best available DRM if no explicit DRM was specifiedtoString()
void
writeToParcel
(Parcel dest, int flags)
-
Field Details
-
CREATOR
-
DEFAULT
-
url
The proxy URL -
playClearSamplesWithoutKeys
public final boolean playClearSamplesWithoutKeysIf true, clear samples will be played while the key is fetched -
offlineId
This is used to identify this DRM Configuration and its asset when storing offline keys. Offline key storage is disabled if this isnull
. -
drm
The default DRM system. This is the requested DRM. If BestAvailable, useresolvedDrm()
to get the one used on the device. -
audioDrm
The DRM system used for audio tracks. If this is nulldrm
will be used for both video and audio. This is the requested DRM. If BestAvailable, useresolvedAudioDrm()
to get the one used on the device. -
requestParameters
Bundle that can be used to put additional request (header) parameters that will be send to the DRM backend during license requests. Note that all values need to be of type String! -
keyRotation
public final boolean keyRotationEnforce Key-Rotation support also on older devices before Android M. This is primarily indented for live content with changing keys where we need to enable session sharing support on older devices to make sure we can rotate keys. -
forceWidevineL3
public final boolean forceWidevineL3If set to true, Widevine L3 will be enforced. Note that this will prevent playback of DRM content where the license requires L1 security. This flag can be set for certain devices that are known to have broken secure decoder implementation to allow Widevine protected content playback. -
renewalThresholdMs
public final long renewalThresholdMsIf set to non-zero and non-negative value then the Widevine license will be automatically renewed beforerenewalThresholdMs
milliseconds of license expiration. Set toC.TIME_UNSET
to disable the license renewal (default). Note:offlineId
has to be set to a non-null and non-empty value as well -
mediaDrmProperties
This bundle contains key-value pairs as the properties of Widevine mediaDrm. Only values which are instances of String or byte[] will be applied and other value types will be ignored.
-
-
Constructor Details
-
DrmConfiguration
Deprecated.Create a new configuration with an empty offline id- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the key
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable String offlineId) Deprecated.Create a new configuration using the best available DRM on the device- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keyofflineId
- The ID used to identify this asset when storing offline keys
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm) Deprecated.Create a new configuration using the best available DRM on the device- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM system
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable String offlineId) Deprecated.Create a new configuration- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM systemofflineId
- The ID used to identify this asset when storing offline keys
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId) Deprecated.Create a new configuration- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM systemaudioDrm
- The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracksofflineId
- The ID used to identify this asset when storing offline keys
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters) Deprecated.Create a new configuration- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM systemaudioDrm
- The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracksofflineId
- The ID used to identify this asset when storing offline keysrequestParameters
- The bundle with additional request parameters
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3) Deprecated.Create a new configuration- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM systemaudioDrm
- The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracksofflineId
- The ID used to identify this asset when storing offline keysrequestParameters
- The bundle with additional request parameterskeyRotation
- Enable key rotation also on older devicesforceWidevineL3
- Force Widevine L3
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs) Deprecated.Create a new configuration- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM systemaudioDrm
- The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracksofflineId
- The ID used to identify this asset when storing offline keysrequestParameters
- The bundle with additional request parameterskeyRotation
- Enable key rotation also on older devicesforceWidevineL3
- Force Widevine L3renewalThresholdMs
- License renewal threshold in milliseconds orC.TIME_UNSET
to disable renewals, seerenewalThresholdMs
-
DrmConfiguration
@Deprecated public DrmConfiguration(@Nullable String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs, @NonNull Bundle mediaDrmProperties) Deprecated.The constructor will have access level protected, useDrmConfiguration.Builder
if not extendingCreate a new configuration- Parameters:
url
- The license server URLplayClearSamplesWithoutKeys
- True if clear sample will be played while fetching the keydrm
- The DRM systemaudioDrm
- The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracksofflineId
- The ID used to identify this asset when storing offline keysrequestParameters
- The bundle with additional request parameterskeyRotation
- Enable key rotation also on older devicesforceWidevineL3
- Force Widevine L3renewalThresholdMs
- License renewal threshold in milliseconds orC.TIME_UNSET
to disable renewals, seerenewalThresholdMs
mediaDrmProperties
- The properties of mediaDrm
-
-
Method Details
-
resolvedDrm
The best available DRM if no explicit DRM was specified- Returns:
- The source DRM or the best available DRM if the source selection is
Drm.BestAvailable
ornull
if no supported DRM was found
-
resolvedAudioDrm
The best available DRM if no explicit DRM was specified.- Returns:
- Selects the audio drm system based on the given selection and the device
-
getSecurityLevel
- Returns:
- the security level for the selected DRM on this device or
SecurityLevel.SOFTWARE
if the selected DRM is not supported by the devices and the security level can not be determined.
-
renewalEnabled
public boolean renewalEnabled()- Returns:
true
if the renewal is enabled in the current configuration, otherwisefalse
. SeerenewalThresholdMs
-
toString
-
describeContents
public int describeContents()- Specified by:
describeContents
in interfaceParcelable
-
writeToParcel
- Specified by:
writeToParcel
in interfaceParcelable
-
hashCode
public int hashCode() -
equals
-
DrmConfiguration.Builder