Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
7cf6aa86
authored
Apr 14, 2015
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Properly document in code how to pass CustomData to PlayReady DRM.
Issue: #339
parent
d9b3582b
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
71 additions
and
7 deletions
demo/src/main/java/com/google/android/exoplayer/demo/DemoUtil.java
demo/src/main/java/com/google/android/exoplayer/demo/player/DashRendererBuilder.java
library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java
demo/src/main/java/com/google/android/exoplayer/demo/DemoUtil.java
View file @
7cf6aa86
...
@@ -35,15 +35,12 @@ import java.net.HttpURLConnection;
...
@@ -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
(
0xEDEF8BA979D64ACE
L
,
0xA3C827DCD51D21ED
L
);
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
;
...
...
demo/src/main/java/com/google/android/exoplayer/demo/player/DashRendererBuilder.java
View file @
7cf6aa86
...
@@ -40,7 +40,6 @@ import com.google.android.exoplayer.dash.mpd.Representation;
...
@@ -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,
...
@@ -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
)
{
...
...
library/src/main/java/com/google/android/exoplayer/drm/StreamingDrmSessionManager.java
View file @
7cf6aa86
...
@@ -29,6 +29,7 @@ import android.os.Handler;
...
@@ -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 {
...
@@ -55,6 +56,24 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
}
}
/**
* UUID for the Widevine DRM scheme.
*/
public
static
final
UUID
WIDEVINE_UUID
=
new
UUID
(
0xEDEF8BA979D64ACE
L
,
0xA3C827DCD51D21ED
L
);
/**
* 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
(
0x9A04F07998404286
L
,
0xAB92E65BE0885F95
L
);
/**
* 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
;
...
@@ -81,6 +100,55 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
...
@@ -81,6 +100,55 @@ public class StreamingDrmSessionManager implements DrmSessionManager {
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
* obtained using {@link com.google.android.exoplayer.ExoPlayer#getPlaybackLooper()}.
* obtained using {@link com.google.android.exoplayer.ExoPlayer#getPlaybackLooper()}.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment