Package com.castlabs.android.drm
Class DrmConfiguration
- java.lang.Object
-
- com.castlabs.android.drm.DrmConfiguration
-
- All Implemented Interfaces:
Parcelable
- Direct Known Subclasses:
DrmTodayConfiguration
public class DrmConfiguration extends Object implements Parcelable
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 theDrmTodayConfiguration
configuration instead.- See Also:
DrmTodayConfiguration
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface android.os.Parcelable
Parcelable.ClassLoaderCreator<T extends Object>, Parcelable.Creator<T extends Object>
-
-
Field Summary
Fields Modifier and Type Field Description Drm
audioDrm
The DRM system used for audio tracks.static Parcelable.Creator<DrmConfiguration>
CREATOR
Drm
drm
The default DRM system.boolean
forceWidevineL3
If set to true, Widevine L3 will be enforced.boolean
keyRotation
Enforce Key-Rotation support also on older devices before Android M.Bundle
mediaDrmProperties
This bundle contains key-value pairs as the properties of Widevine mediaDrm.String
offlineId
This is used to identify this DRM Configuration and its asset when storing offline keys.boolean
playClearSamplesWithoutKeys
If true, clear samples will be played while the key is fetchedlong
renewalThresholdMs
If set to non-zero and non-negative value then the Widevine license will be automatically renewed beforerenewalThresholdMs
milliseconds of license expiration.Bundle
requestParameters
Bundle that can be used to put additional request (header) parameters that will be send to the DRM backend during license requests.String
url
The proxy URL-
Fields inherited from interface android.os.Parcelable
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE
-
-
Constructor Summary
Constructors Constructor Description DrmConfiguration(String url, boolean playClearSamplesWithoutKeys)
Create a new configuration with an empty offline idDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm)
Create a new configuration using the best available DRM on the deviceDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId)
Create a new configurationDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters)
Create a new configurationDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3)
Create a new configurationDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs)
Create a new configurationDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm, Drm audioDrm, String offlineId, Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs, Bundle mediaDrmProperties)
Create a new configurationDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, Drm drm, String offlineId)
Create a new configurationDrmConfiguration(String url, boolean playClearSamplesWithoutKeys, String offlineId)
Create a new configuration using the best available DRM on the device
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
describeContents()
boolean
equals(Object obj)
SecurityLevel
getSecurityLevel()
int
hashCode()
boolean
renewalEnabled()
Drm
resolvedAudioDrm()
The best available DRM if no explicit DRM was specified.Drm
resolvedDrm()
The best available DRM if no explicit DRM was specifiedString
toString()
void
writeToParcel(Parcel dest, int flags)
-
-
-
Field Detail
-
CREATOR
public static final Parcelable.Creator<DrmConfiguration> CREATOR
-
url
@NonNull public final String url
The proxy URL
-
playClearSamplesWithoutKeys
public final boolean playClearSamplesWithoutKeys
If true, clear samples will be played while the key is fetched
-
offlineId
@Nullable public final String 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
@NonNull public final Drm drm
The default DRM system. This is the requested DRM. If BestAvailable, useresolvedDrm()
to get the one used on the device.
-
audioDrm
@NonNull public final Drm 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
@NonNull public final Bundle 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 keyRotation
Enforce 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 forceWidevineL3
If 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 renewalThresholdMs
If 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
@NonNull public final Bundle 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 Detail
-
DrmConfiguration
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable String offlineId)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable String offlineId)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3)
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
public DrmConfiguration(@NonNull String url, boolean playClearSamplesWithoutKeys, @Nullable Drm drm, @Nullable Drm audioDrm, @Nullable String offlineId, @NonNull Bundle requestParameters, boolean keyRotation, boolean forceWidevineL3, long renewalThresholdMs)
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
public DrmConfiguration(@NonNull 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)
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
mediaDrmProperties
- The properties of mediaDrm
-
-
Method Detail
-
resolvedDrm
@Nullable public Drm 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
@Nullable public Drm 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
@NonNull public SecurityLevel 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
-
describeContents
public int describeContents()
- Specified by:
describeContents
in interfaceParcelable
-
writeToParcel
public void writeToParcel(Parcel dest, int flags)
- Specified by:
writeToParcel
in interfaceParcelable
-
-