Properly document in code how to pass CustomData to PlayReady DRM.
Issue: #339
This commit is contained in:
parent
d9b3582baa
commit
7cf6aa86d2
@ -35,15 +35,12 @@ import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Utility methods for the demo application.
|
||||
*/
|
||||
public class DemoUtil {
|
||||
|
||||
public static final UUID WIDEVINE_UUID = new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL);
|
||||
|
||||
public static final int TYPE_DASH = 0;
|
||||
public static final int TYPE_SS = 1;
|
||||
public static final int TYPE_OTHER = 2;
|
||||
|
@ -40,7 +40,6 @@ import com.google.android.exoplayer.dash.mpd.Representation;
|
||||
import com.google.android.exoplayer.dash.mpd.UtcTimingElement;
|
||||
import com.google.android.exoplayer.dash.mpd.UtcTimingElementResolver;
|
||||
import com.google.android.exoplayer.dash.mpd.UtcTimingElementResolver.UtcTimingCallback;
|
||||
import com.google.android.exoplayer.demo.DemoUtil;
|
||||
import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilder;
|
||||
import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilderCallback;
|
||||
import com.google.android.exoplayer.drm.DrmSessionManager;
|
||||
@ -364,9 +363,9 @@ public class DashRendererBuilder implements RendererBuilder,
|
||||
public static Pair<DrmSessionManager, Boolean> getDrmSessionManagerData(DemoPlayer player,
|
||||
MediaDrmCallback drmCallback) throws UnsupportedDrmException {
|
||||
try {
|
||||
StreamingDrmSessionManager streamingDrmSessionManager = new StreamingDrmSessionManager(
|
||||
DemoUtil.WIDEVINE_UUID, player.getPlaybackLooper(), drmCallback, null,
|
||||
player.getMainHandler(), player);
|
||||
StreamingDrmSessionManager streamingDrmSessionManager =
|
||||
StreamingDrmSessionManager.newWidevineInstance(player.getPlaybackLooper(), drmCallback,
|
||||
null, player.getMainHandler(), player);
|
||||
return Pair.create((DrmSessionManager) streamingDrmSessionManager,
|
||||
getWidevineSecurityLevel(streamingDrmSessionManager) == SECURITY_LEVEL_1);
|
||||
} catch (UnsupportedSchemeException e) {
|
||||
|
@ -29,6 +29,7 @@ import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
@ -55,6 +56,24 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* UUID for the Widevine DRM scheme.
|
||||
*/
|
||||
public static final UUID WIDEVINE_UUID = new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL);
|
||||
|
||||
/**
|
||||
* UUID for the PlayReady DRM scheme.
|
||||
* <p>
|
||||
* Note that PlayReady is unsupported by most Android devices, with the exception of Android TV
|
||||
* devices, which do provide support.
|
||||
*/
|
||||
public static final UUID PLAYREADY_UUID = new UUID(0x9A04F07998404286L, 0xAB92E65BE0885F95L);
|
||||
|
||||
/**
|
||||
* The key to use when passing CustomData to a PlayReady instance in an optional parameter map.
|
||||
*/
|
||||
public static final String PLAYREADY_CUSTOM_DATA_KEY = "PRCustomData";
|
||||
|
||||
private static final int MSG_PROVISION = 0;
|
||||
private static final int MSG_KEYS = 1;
|
||||
|
||||
@ -80,6 +99,55 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
|
||||
private byte[] schemePsshData;
|
||||
private byte[] sessionId;
|
||||
|
||||
/**
|
||||
* Instantiates a new instance using the Widevine scheme.
|
||||
*
|
||||
* @param playbackLooper The looper associated with the media playback thread. Should usually be
|
||||
* obtained using {@link com.google.android.exoplayer.ExoPlayer#getPlaybackLooper()}.
|
||||
* @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
|
||||
* 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.
|
||||
*/
|
||||
public static StreamingDrmSessionManager newWidevineInstance(Looper playbackLooper,
|
||||
MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters,
|
||||
Handler eventHandler, EventListener eventListener) throws UnsupportedSchemeException {
|
||||
return new StreamingDrmSessionManager(WIDEVINE_UUID, playbackLooper, callback,
|
||||
optionalKeyRequestParameters, eventHandler, eventListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new instance using the PlayReady scheme.
|
||||
* <p>
|
||||
* Note that PlayReady is unsupported by most Android devices, with the exception of Android TV
|
||||
* devices, which do provide support.
|
||||
*
|
||||
* @param playbackLooper The looper associated with the media playback thread. Should usually be
|
||||
* obtained using {@link com.google.android.exoplayer.ExoPlayer#getPlaybackLooper()}.
|
||||
* @param callback Performs key and provisioning requests.
|
||||
* @param customData Optional custom data to include in requests generated by the instance.
|
||||
* @param eventHandler A handler to use when delivering events to {@code eventListener}. 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.
|
||||
*/
|
||||
public static StreamingDrmSessionManager newPlayReadyInstance(Looper playbackLooper,
|
||||
MediaDrmCallback callback, String customData, Handler eventHandler,
|
||||
EventListener eventListener) throws UnsupportedSchemeException {
|
||||
HashMap<String, String> optionalKeyRequestParameters;
|
||||
if (!TextUtils.isEmpty(customData)) {
|
||||
optionalKeyRequestParameters = new HashMap<String, String>();
|
||||
optionalKeyRequestParameters.put(PLAYREADY_CUSTOM_DATA_KEY, customData);
|
||||
} else {
|
||||
optionalKeyRequestParameters = null;
|
||||
}
|
||||
return new StreamingDrmSessionManager(PLAYREADY_UUID, playbackLooper, callback,
|
||||
optionalKeyRequestParameters, eventHandler, eventListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param uuid The UUID of the drm scheme.
|
||||
* @param playbackLooper The looper associated with the media playback thread. Should usually be
|
||||
|
Loading…
x
Reference in New Issue
Block a user