Class DrmConfiguration

    • Field Detail

      • 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 is null.
      • drm

        @NonNull
        public final Drm drm
        The default DRM system. This is the requested DRM. If BestAvailable, use resolvedDrm() to get the one used on the device.
      • audioDrm

        @NonNull
        public final Drm audioDrm
        The DRM system used for audio tracks. If this is null drm will be used for both video and audio. This is the requested DRM. If BestAvailable, use resolvedAudioDrm() 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 before renewalThresholdMs milliseconds of license expiration. Set to C.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 URL
        playClearSamplesWithoutKeys - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        offlineId - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - The DRM system
        offlineId - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - The DRM system
        audioDrm - The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracks
        offlineId - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - The DRM system
        audioDrm - The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracks
        offlineId - The ID used to identify this asset when storing offline keys
        requestParameters - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - The DRM system
        audioDrm - The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracks
        offlineId - The ID used to identify this asset when storing offline keys
        requestParameters - The bundle with additional request parameters
        keyRotation - Enable key rotation also on older devices
        forceWidevineL3 - 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - The DRM system
        audioDrm - The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracks
        offlineId - The ID used to identify this asset when storing offline keys
        requestParameters - The bundle with additional request parameters
        keyRotation - Enable key rotation also on older devices
        forceWidevineL3 - Force Widevine L3
        renewalThresholdMs - License renewal threshold in milliseconds or C.TIME_UNSET to disable renewals, see renewalThresholdMs
      • 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 URL
        playClearSamplesWithoutKeys - True if clear sample will be played while fetching the key
        drm - The DRM system
        audioDrm - The DRM system used for audio tracks. If this is null, the main drm system will be used also for audio tracks
        offlineId - The ID used to identify this asset when storing offline keys
        requestParameters - The bundle with additional request parameters
        keyRotation - Enable key rotation also on older devices
        forceWidevineL3 - Force Widevine L3
        renewalThresholdMs - License renewal threshold in milliseconds or C.TIME_UNSET to disable renewals, see renewalThresholdMs
        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 or null 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, otherwise false. See renewalThresholdMs
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object