Add ExoMediaDrm.Provider

Allows shared ownership of ExoMediaDrms. Shared ownership will
allow users to pre-create ExoMediaDrms in their apps, as opposed
to having the DrmSessionManager create the ExoMediaDrm.

Issue:#4721
PiperOrigin-RevId: 269305850
This commit is contained in:
aquilescanta 2019-09-16 12:40:05 +01:00 committed by Oliver Woodman
parent c5ceefd609
commit 9face09361
2 changed files with 29 additions and 3 deletions

View File

@ -33,9 +33,20 @@ import java.util.UUID;
*/
public interface ExoMediaDrm<T extends ExoMediaCrypto> {
/**
* @see MediaDrm#EVENT_KEY_REQUIRED
*/
/** {@link ExoMediaDrm} instances provider. */
interface Provider<T extends ExoMediaCrypto> {
/**
* Returns an {@link ExoMediaDrm} instance with acquired ownership for the DRM scheme identified
* by the given UUID.
*
* <p>Each call to this method must have a corresponding call to {@link ExoMediaDrm#release()}
* to ensure correct resource management.
*/
ExoMediaDrm<T> acquireExoMediaDrm(UUID uuid);
}
/** @see MediaDrm#EVENT_KEY_REQUIRED */
@SuppressWarnings("InlinedApi")
int EVENT_KEY_REQUIRED = MediaDrm.EVENT_KEY_REQUIRED;
/**
@ -235,6 +246,16 @@ public interface ExoMediaDrm<T extends ExoMediaCrypto> {
Map<String, String> queryKeyStatus(byte[] sessionId);
/**
* Acquires ownership over this instance, which must be released by calling {@link #release()}.
*/
void acquire();
/**
* Releases ownership of this instance. If a call to this method causes this instance to have no
* acquired ownerships, releases the underlying resources.
*
* <p>Callers of this method must not make any further use of this instance.
*
* @see MediaDrm#release()
*/
void release();

View File

@ -185,6 +185,11 @@ public final class FrameworkMediaDrm implements ExoMediaDrm<FrameworkMediaCrypto
return mediaDrm.queryKeyStatus(sessionId);
}
@Override
public void acquire() {
// TODO: Implement reference counting.
}
@Override
public void release() {
mediaDrm.release();