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
d1d43d62
authored
Dec 06, 2019
by
aquilescanta
Committed by
Oliver Woodman
Dec 09, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add demo app support for attaching DrmSessions to clear content
Issue:#4867 PiperOrigin-RevId: 284262626
parent
45013ece
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
63 additions
and
1 deletions
RELEASENOTES.md
demos/main/src/main/assets/media.exolist.json
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/Sample.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
RELEASENOTES.md
View file @
d1d43d62
...
...
@@ -29,6 +29,7 @@
*
Add
`play`
and
`pause`
methods to
`Player`
.
*
Upgrade Truth dependency from 0.44 to 1.0.
*
Upgrade to JUnit 4.13-rc-2.
*
Add support for attaching DRM sessions to clear content in the demo app.
### 2.11.0 (not yet released) ###
...
...
demos/main/src/main/assets/media.exolist.json
View file @
d1d43d62
...
...
@@ -208,6 +208,13 @@
"uri"
:
"https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs_uhd.mpd"
,
"drm_scheme"
:
"widevine"
,
"drm_license_url"
:
"https://proxy.uat.widevine.com/proxy?provider=widevine_test"
},
{
"name"
:
"WV: Secure and Clear SD & HD (cenc,MP4,H264)"
,
"uri"
:
"https://storage.googleapis.com/exoplayer-test-media-1/widevine/tears_enc_clear_enc.mpd"
,
"drm_scheme"
:
"widevine"
,
"drm_license_url"
:
"https://proxy.uat.widevine.com/proxy?provider=widevine_test"
,
"drm_session_for_clear_types"
:
[
"audio"
,
"video"
]
}
]
},
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
View file @
d1d43d62
...
...
@@ -115,6 +115,7 @@ public class PlayerActivity extends AppCompatActivity
public
static
final
String
DRM_SCHEME_EXTRA
=
"drm_scheme"
;
public
static
final
String
DRM_LICENSE_URL_EXTRA
=
"drm_license_url"
;
public
static
final
String
DRM_KEY_REQUEST_PROPERTIES_EXTRA
=
"drm_key_request_properties"
;
public
static
final
String
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
=
"drm_session_for_clear_types"
;
public
static
final
String
DRM_MULTI_SESSION_EXTRA
=
"drm_multi_session"
;
public
static
final
String
PREFER_EXTENSION_DECODERS_EXTRA
=
"prefer_extension_decoders"
;
public
static
final
String
TUNNELING_EXTRA
=
"tunneling"
;
...
...
@@ -488,6 +489,7 @@ public class PlayerActivity extends AppCompatActivity
new
DefaultDrmSessionManager
.
Builder
()
.
setUuidAndExoMediaDrmProvider
(
drmInfo
.
drmScheme
,
FrameworkMediaDrm
.
DEFAULT_PROVIDER
)
.
setMultiSession
(
drmInfo
.
drmMultiSession
)
.
setUseDrmSessionsForClearContent
(
drmInfo
.
drmSessionForClearTypes
)
.
build
(
mediaDrmCallback
);
}
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/Sample.java
View file @
d1d43d62
...
...
@@ -22,6 +22,7 @@ import static com.google.android.exoplayer2.demo.PlayerActivity.DRM_LICENSE_URL_
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
DRM_MULTI_SESSION_EXTRA
;
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
DRM_SCHEME_EXTRA
;
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
DRM_SCHEME_UUID_EXTRA
;
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
;
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
EXTENSION_EXTRA
;
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
IS_LIVE_EXTRA
;
import
static
com
.
google
.
android
.
exoplayer2
.
demo
.
PlayerActivity
.
SUBTITLE_LANGUAGE_EXTRA
;
...
...
@@ -32,9 +33,11 @@ import static com.google.android.exoplayer2.demo.PlayerActivity.URI_EXTRA;
import
android.content.Intent
;
import
android.net.Uri
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.util.Assertions
;
import
com.google.android.exoplayer2.util.Util
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.UUID
;
/* package */
abstract
class
Sample
{
...
...
@@ -147,24 +150,35 @@ import java.util.UUID;
String
drmLicenseUrl
=
intent
.
getStringExtra
(
DRM_LICENSE_URL_EXTRA
+
extrasKeySuffix
);
String
[]
keyRequestPropertiesArray
=
intent
.
getStringArrayExtra
(
DRM_KEY_REQUEST_PROPERTIES_EXTRA
+
extrasKeySuffix
);
String
[]
drmSessionForClearTypesExtra
=
intent
.
getStringArrayExtra
(
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
+
extrasKeySuffix
);
int
[]
drmSessionForClearTypes
=
toTrackTypeArray
(
drmSessionForClearTypesExtra
);
boolean
drmMultiSession
=
intent
.
getBooleanExtra
(
DRM_MULTI_SESSION_EXTRA
+
extrasKeySuffix
,
false
);
return
new
DrmInfo
(
drmScheme
,
drmLicenseUrl
,
keyRequestPropertiesArray
,
drmMultiSession
);
return
new
DrmInfo
(
drmScheme
,
drmLicenseUrl
,
keyRequestPropertiesArray
,
drmSessionForClearTypes
,
drmMultiSession
);
}
public
final
UUID
drmScheme
;
public
final
String
drmLicenseUrl
;
public
final
String
[]
drmKeyRequestProperties
;
public
final
int
[]
drmSessionForClearTypes
;
public
final
boolean
drmMultiSession
;
public
DrmInfo
(
UUID
drmScheme
,
String
drmLicenseUrl
,
String
[]
drmKeyRequestProperties
,
int
[]
drmSessionForClearTypes
,
boolean
drmMultiSession
)
{
this
.
drmScheme
=
drmScheme
;
this
.
drmLicenseUrl
=
drmLicenseUrl
;
this
.
drmKeyRequestProperties
=
drmKeyRequestProperties
;
this
.
drmSessionForClearTypes
=
drmSessionForClearTypes
;
this
.
drmMultiSession
=
drmMultiSession
;
}
...
...
@@ -173,6 +187,13 @@ import java.util.UUID;
intent
.
putExtra
(
DRM_SCHEME_EXTRA
+
extrasKeySuffix
,
drmScheme
.
toString
());
intent
.
putExtra
(
DRM_LICENSE_URL_EXTRA
+
extrasKeySuffix
,
drmLicenseUrl
);
intent
.
putExtra
(
DRM_KEY_REQUEST_PROPERTIES_EXTRA
+
extrasKeySuffix
,
drmKeyRequestProperties
);
ArrayList
<
String
>
typeStrings
=
new
ArrayList
<>();
for
(
int
type
:
drmSessionForClearTypes
)
{
// Only audio and video are supported.
typeStrings
.
add
(
type
==
C
.
TRACK_TYPE_AUDIO
?
"audio"
:
"video"
);
}
intent
.
putExtra
(
DRM_SESSION_FOR_CLEAR_TYPES_EXTRA
+
extrasKeySuffix
,
typeStrings
.
toArray
(
new
String
[
0
]));
intent
.
putExtra
(
DRM_MULTI_SESSION_EXTRA
+
extrasKeySuffix
,
drmMultiSession
);
}
}
...
...
@@ -207,6 +228,26 @@ import java.util.UUID;
}
}
public
static
int
[]
toTrackTypeArray
(
@Nullable
String
[]
trackTypeStringsArray
)
{
if
(
trackTypeStringsArray
==
null
)
{
return
new
int
[
0
];
}
HashSet
<
Integer
>
trackTypes
=
new
HashSet
<>();
for
(
String
trackTypeString
:
trackTypeStringsArray
)
{
switch
(
Util
.
toLowerInvariant
(
trackTypeString
))
{
case
"audio"
:
trackTypes
.
add
(
C
.
TRACK_TYPE_AUDIO
);
break
;
case
"video"
:
trackTypes
.
add
(
C
.
TRACK_TYPE_VIDEO
);
break
;
default
:
throw
new
IllegalArgumentException
(
"Invalid track type: "
+
trackTypeString
);
}
}
return
Util
.
toArray
(
new
ArrayList
<>(
trackTypes
));
}
public
static
Sample
createFromIntent
(
Intent
intent
)
{
if
(
ACTION_VIEW_LIST
.
equals
(
intent
.
getAction
()))
{
ArrayList
<
String
>
intentUris
=
new
ArrayList
<>();
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
View file @
d1d43d62
...
...
@@ -307,6 +307,7 @@ public class SampleChooserActivity extends AppCompatActivity
String
drmScheme
=
null
;
String
drmLicenseUrl
=
null
;
String
[]
drmKeyRequestProperties
=
null
;
String
[]
drmSessionForClearTypes
=
null
;
boolean
drmMultiSession
=
false
;
ArrayList
<
UriSample
>
playlistSamples
=
null
;
String
adTagUri
=
null
;
...
...
@@ -348,6 +349,15 @@ public class SampleChooserActivity extends AppCompatActivity
reader
.
endObject
();
drmKeyRequestProperties
=
drmKeyRequestPropertiesList
.
toArray
(
new
String
[
0
]);
break
;
case
"drm_session_for_clear_types"
:
ArrayList
<
String
>
drmSessionForClearTypesList
=
new
ArrayList
<>();
reader
.
beginArray
();
while
(
reader
.
hasNext
())
{
drmSessionForClearTypesList
.
add
(
reader
.
nextString
());
}
reader
.
endArray
();
drmSessionForClearTypes
=
drmSessionForClearTypesList
.
toArray
(
new
String
[
0
]);
break
;
case
"drm_multi_session"
:
drmMultiSession
=
reader
.
nextBoolean
();
break
;
...
...
@@ -389,6 +399,7 @@ public class SampleChooserActivity extends AppCompatActivity
Util
.
getDrmUuid
(
drmScheme
),
drmLicenseUrl
,
drmKeyRequestProperties
,
Sample
.
toTrackTypeArray
(
drmSessionForClearTypes
),
drmMultiSession
);
Sample
.
SubtitleInfo
subtitleInfo
=
subtitleUri
==
null
...
...
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