Add flags to DrmSessionManager

PiperOrigin-RevId: 253006112
This commit is contained in:
aquilescanta 2019-06-13 12:57:09 +01:00 committed by Toni
parent cc337a3e2d
commit 3fcae68432

View file

@ -16,13 +16,37 @@
package com.google.android.exoplayer2.drm;
import android.os.Looper;
import androidx.annotation.IntDef;
import com.google.android.exoplayer2.drm.DrmInitData.SchemeData;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* Manages a DRM session.
*/
public interface DrmSessionManager<T extends ExoMediaCrypto> {
/** Flags that control the handling of DRM protected content. */
@Documented
@Retention(RetentionPolicy.SOURCE)
@IntDef(
flag = true,
value = {FLAG_PLAY_CLEAR_SAMPLES_WITHOUT_KEYS})
@interface Flags {}
/**
* When this flag is set, clear samples of an encrypted region may be rendered when no keys are
* available.
*
* <p>Encrypted media may contain clear (un-encrypted) regions. For example a media file may start
* with a short clear region so as to allow playback to begin in parallel with key acquisition.
* When this flag is set, consumers of sample data are permitted to access the clear regions of
* encrypted media files when the associated {@link DrmSession} has not yet obtained the keys
* necessary for the encrypted regions of the media.
*/
int FLAG_PLAY_CLEAR_SAMPLES_WITHOUT_KEYS = 1;
/**
* Returns whether the manager is capable of acquiring a session for the given
* {@link DrmInitData}.
@ -45,4 +69,10 @@ public interface DrmSessionManager<T extends ExoMediaCrypto> {
* @return The DRM session.
*/
DrmSession<T> acquireSession(Looper playbackLooper, DrmInitData drmInitData);
/** Returns flags that control the handling of DRM protected content. */
@Flags
default int getFlags() {
return 0;
}
}