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.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility methods for the demo application.
|
* Utility methods for the demo application.
|
||||||
*/
|
*/
|
||||||
public class DemoUtil {
|
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_DASH = 0;
|
||||||
public static final int TYPE_SS = 1;
|
public static final int TYPE_SS = 1;
|
||||||
public static final int TYPE_OTHER = 2;
|
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.UtcTimingElement;
|
||||||
import com.google.android.exoplayer.dash.mpd.UtcTimingElementResolver;
|
import com.google.android.exoplayer.dash.mpd.UtcTimingElementResolver;
|
||||||
import com.google.android.exoplayer.dash.mpd.UtcTimingElementResolver.UtcTimingCallback;
|
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.RendererBuilder;
|
||||||
import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilderCallback;
|
import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilderCallback;
|
||||||
import com.google.android.exoplayer.drm.DrmSessionManager;
|
import com.google.android.exoplayer.drm.DrmSessionManager;
|
||||||
@ -364,9 +363,9 @@ public class DashRendererBuilder implements RendererBuilder,
|
|||||||
public static Pair<DrmSessionManager, Boolean> getDrmSessionManagerData(DemoPlayer player,
|
public static Pair<DrmSessionManager, Boolean> getDrmSessionManagerData(DemoPlayer player,
|
||||||
MediaDrmCallback drmCallback) throws UnsupportedDrmException {
|
MediaDrmCallback drmCallback) throws UnsupportedDrmException {
|
||||||
try {
|
try {
|
||||||
StreamingDrmSessionManager streamingDrmSessionManager = new StreamingDrmSessionManager(
|
StreamingDrmSessionManager streamingDrmSessionManager =
|
||||||
DemoUtil.WIDEVINE_UUID, player.getPlaybackLooper(), drmCallback, null,
|
StreamingDrmSessionManager.newWidevineInstance(player.getPlaybackLooper(), drmCallback,
|
||||||
player.getMainHandler(), player);
|
null, player.getMainHandler(), player);
|
||||||
return Pair.create((DrmSessionManager) streamingDrmSessionManager,
|
return Pair.create((DrmSessionManager) streamingDrmSessionManager,
|
||||||
getWidevineSecurityLevel(streamingDrmSessionManager) == SECURITY_LEVEL_1);
|
getWidevineSecurityLevel(streamingDrmSessionManager) == SECURITY_LEVEL_1);
|
||||||
} catch (UnsupportedSchemeException e) {
|
} catch (UnsupportedSchemeException e) {
|
||||||
|
@ -29,6 +29,7 @@ import android.os.Handler;
|
|||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.UUID;
|
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_PROVISION = 0;
|
||||||
private static final int MSG_KEYS = 1;
|
private static final int MSG_KEYS = 1;
|
||||||
|
|
||||||
@ -80,6 +99,55 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
|
|||||||
private byte[] schemePsshData;
|
private byte[] schemePsshData;
|
||||||
private byte[] sessionId;
|
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 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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user