mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Allow passing of optional parameters in MediaDrm key requests.
This commit is contained in:
parent
01151c9c65
commit
cf80c4d9cb
@ -279,8 +279,8 @@ public class DashRendererBuilder implements RendererBuilder,
|
|||||||
public static Pair<DrmSessionManager, Boolean> getDrmSessionManagerData(DemoPlayer player,
|
public static Pair<DrmSessionManager, Boolean> getDrmSessionManagerData(DemoPlayer player,
|
||||||
MediaDrmCallback drmCallback) throws UnsupportedSchemeException {
|
MediaDrmCallback drmCallback) throws UnsupportedSchemeException {
|
||||||
StreamingDrmSessionManager streamingDrmSessionManager = new StreamingDrmSessionManager(
|
StreamingDrmSessionManager streamingDrmSessionManager = new StreamingDrmSessionManager(
|
||||||
DemoUtil.WIDEVINE_UUID, player.getPlaybackLooper(), drmCallback, player.getMainHandler(),
|
DemoUtil.WIDEVINE_UUID, player.getPlaybackLooper(), drmCallback, null,
|
||||||
player);
|
player.getMainHandler(), player);
|
||||||
return Pair.create((DrmSessionManager) streamingDrmSessionManager,
|
return Pair.create((DrmSessionManager) streamingDrmSessionManager,
|
||||||
getWidevineSecurityLevel(streamingDrmSessionManager) == SECURITY_LEVEL_1);
|
getWidevineSecurityLevel(streamingDrmSessionManager) == SECURITY_LEVEL_1);
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,7 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder,
|
|||||||
|
|
||||||
public static DrmSessionManager getDrmSessionManager(UUID uuid, DemoPlayer player,
|
public static DrmSessionManager getDrmSessionManager(UUID uuid, DemoPlayer player,
|
||||||
MediaDrmCallback drmCallback) throws UnsupportedSchemeException {
|
MediaDrmCallback drmCallback) throws UnsupportedSchemeException {
|
||||||
return new StreamingDrmSessionManager(uuid, player.getPlaybackLooper(), drmCallback,
|
return new StreamingDrmSessionManager(uuid, player.getPlaybackLooper(), drmCallback, null,
|
||||||
player.getMainHandler(), player);
|
player.getMainHandler(), player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import android.os.HandlerThread;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -61,6 +62,7 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
|
|||||||
private final Handler eventHandler;
|
private final Handler eventHandler;
|
||||||
private final EventListener eventListener;
|
private final EventListener eventListener;
|
||||||
private final MediaDrm mediaDrm;
|
private final MediaDrm mediaDrm;
|
||||||
|
private final HashMap<String, String> optionalKeyRequestParameters;
|
||||||
|
|
||||||
/* package */ final MediaDrmHandler mediaDrmHandler;
|
/* package */ final MediaDrmHandler mediaDrmHandler;
|
||||||
/* package */ final MediaDrmCallback callback;
|
/* package */ final MediaDrmCallback callback;
|
||||||
@ -79,20 +81,33 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
|
|||||||
private byte[] schemePsshData;
|
private byte[] schemePsshData;
|
||||||
private byte[] sessionId;
|
private byte[] sessionId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use the other constructor, passing null as {@code optionalKeyRequestParameters}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public StreamingDrmSessionManager(UUID uuid, Looper playbackLooper, MediaDrmCallback callback,
|
||||||
|
Handler eventHandler, EventListener eventListener) throws UnsupportedSchemeException {
|
||||||
|
this(uuid, playbackLooper, callback, null, eventHandler, eventListener);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param uuid The UUID of the drm scheme.
|
* @param uuid The UUID of the drm scheme.
|
||||||
* @param playbackLooper The looper associated with the media playback thread. Should usually be
|
* @param playbackLooper The looper associated with the media playback thread. Should usually be
|
||||||
* obtained using {@link com.google.android.exoplayer.ExoPlayer#getPlaybackLooper()}.
|
* obtained using {@link com.google.android.exoplayer.ExoPlayer#getPlaybackLooper()}.
|
||||||
* @param callback Performs key and provisioning requests.
|
* @param callback Performs key and provisioning requests.
|
||||||
|
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
|
||||||
|
* to {@link MediaDrm#getKeyRequest(byte[], byte[], String, int, HashMap)}. May be null.
|
||||||
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
|
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
|
||||||
* null if delivery of events is not required.
|
* null if delivery of events is not required.
|
||||||
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
||||||
* @throws UnsupportedSchemeException If the specified DRM scheme is not supported.
|
* @throws UnsupportedSchemeException If the specified DRM scheme is not supported.
|
||||||
*/
|
*/
|
||||||
public StreamingDrmSessionManager(UUID uuid, Looper playbackLooper, MediaDrmCallback callback,
|
public StreamingDrmSessionManager(UUID uuid, Looper playbackLooper, MediaDrmCallback callback,
|
||||||
Handler eventHandler, EventListener eventListener) throws UnsupportedSchemeException {
|
HashMap<String, String> optionalKeyRequestParameters, Handler eventHandler,
|
||||||
|
EventListener eventListener) throws UnsupportedSchemeException {
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
this.optionalKeyRequestParameters = optionalKeyRequestParameters;
|
||||||
this.eventHandler = eventHandler;
|
this.eventHandler = eventHandler;
|
||||||
this.eventListener = eventListener;
|
this.eventListener = eventListener;
|
||||||
mediaDrm = new MediaDrm(uuid);
|
mediaDrm = new MediaDrm(uuid);
|
||||||
@ -250,7 +265,7 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
|
|||||||
KeyRequest keyRequest;
|
KeyRequest keyRequest;
|
||||||
try {
|
try {
|
||||||
keyRequest = mediaDrm.getKeyRequest(sessionId, schemePsshData, mimeType,
|
keyRequest = mediaDrm.getKeyRequest(sessionId, schemePsshData, mimeType,
|
||||||
MediaDrm.KEY_TYPE_STREAMING, null);
|
MediaDrm.KEY_TYPE_STREAMING, optionalKeyRequestParameters);
|
||||||
postRequestHandler.obtainMessage(MSG_KEYS, keyRequest).sendToTarget();
|
postRequestHandler.obtainMessage(MSG_KEYS, keyRequest).sendToTarget();
|
||||||
} catch (NotProvisionedException e) {
|
} catch (NotProvisionedException e) {
|
||||||
onKeysError(e);
|
onKeysError(e);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user