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
b22783f8
authored
Apr 29, 2020
by
bachinger
Committed by
Oliver Woodman
May 01, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Rename sourceUri to uri
PiperOrigin-RevId: 308918151
parent
284b843d
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
168 additions
and
203 deletions
demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DemoUtil.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/CastPlayerTest.java
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java
library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java
library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java
library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java
library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java
library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java
library/core/src/test/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactoryTest.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DefaultMediaSourceFactoryTest.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/DefaultMediaSourceFactoryTest.java
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultMediaSourceFactoryTest.java
demos/cast/src/main/java/com/google/android/exoplayer2/castdemo/DemoUtil.java
View file @
b22783f8
...
...
@@ -41,19 +41,19 @@ import java.util.List;
// Clear content.
samples
.
add
(
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
"https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd"
)
.
setUri
(
"https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd"
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"Clear DASH: Tears"
).
build
())
.
setMimeType
(
MIME_TYPE_DASH
)
.
build
());
samples
.
add
(
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
"https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8"
)
.
setUri
(
"https://storage.googleapis.com/shaka-demo-assets/angel-one-hls/hls.m3u8"
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"Clear HLS: Angel one"
).
build
())
.
setMimeType
(
MIME_TYPE_HLS
)
.
build
());
samples
.
add
(
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
"https://html5demos.com/assets/dizzy.mp4"
)
.
setUri
(
"https://html5demos.com/assets/dizzy.mp4"
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"Clear MP4: Dizzy"
).
build
())
.
setMimeType
(
MIME_TYPE_VIDEO_MP4
)
.
build
());
...
...
@@ -61,8 +61,7 @@ import java.util.List;
// DRM content.
samples
.
add
(
new
MediaItem
.
Builder
()
.
setSourceUri
(
Uri
.
parse
(
"https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd"
))
.
setUri
(
Uri
.
parse
(
"https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd"
))
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"Widevine DASH cenc: Tears"
).
build
())
.
setMimeType
(
MIME_TYPE_DASH
)
...
...
@@ -71,8 +70,7 @@ import java.util.List;
.
build
());
samples
.
add
(
new
MediaItem
.
Builder
()
.
setSourceUri
(
"https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd"
)
.
setUri
(
"https://storage.googleapis.com/wvmedia/cbc1/h264/tears/tears_aes_cbc1.mpd"
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"Widevine DASH cbc1: Tears"
).
build
())
.
setMimeType
(
MIME_TYPE_DASH
)
...
...
@@ -81,8 +79,7 @@ import java.util.List;
.
build
());
samples
.
add
(
new
MediaItem
.
Builder
()
.
setSourceUri
(
"https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd"
)
.
setUri
(
"https://storage.googleapis.com/wvmedia/cbcs/h264/tears/tears_aes_cbcs.mpd"
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"Widevine DASH cbcs: Tears"
).
build
())
.
setMimeType
(
MIME_TYPE_DASH
)
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
View file @
b22783f8
...
...
@@ -85,7 +85,7 @@ public class DownloadTracker {
}
public
boolean
isDownloaded
(
MediaItem
mediaItem
)
{
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
playbackProperties
).
sourceU
ri
);
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
playbackProperties
).
u
ri
);
return
download
!=
null
&&
download
.
state
!=
Download
.
STATE_FAILED
;
}
...
...
@@ -96,7 +96,7 @@ public class DownloadTracker {
public
void
toggleDownload
(
FragmentManager
fragmentManager
,
MediaItem
mediaItem
,
RenderersFactory
renderersFactory
)
{
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
playbackProperties
).
sourceU
ri
);
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
playbackProperties
).
u
ri
);
if
(
download
!=
null
)
{
DownloadService
.
sendRemoveDownload
(
context
,
DemoDownloadService
.
class
,
download
.
request
.
id
,
/* foreground= */
false
);
...
...
@@ -125,20 +125,19 @@ public class DownloadTracker {
MediaItem
.
PlaybackProperties
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
@C
.
ContentType
int
type
=
Util
.
inferContentTypeWithMimeType
(
playbackProperties
.
sourceUri
,
playbackProperties
.
mimeType
);
Util
.
inferContentTypeWithMimeType
(
playbackProperties
.
uri
,
playbackProperties
.
mimeType
);
switch
(
type
)
{
case
C
.
TYPE_DASH
:
return
DownloadHelper
.
forDash
(
context
,
playbackProperties
.
sourceU
ri
,
dataSourceFactory
,
renderersFactory
);
context
,
playbackProperties
.
u
ri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_SS
:
return
DownloadHelper
.
forSmoothStreaming
(
context
,
playbackProperties
.
sourceU
ri
,
dataSourceFactory
,
renderersFactory
);
context
,
playbackProperties
.
u
ri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_HLS
:
return
DownloadHelper
.
forHls
(
context
,
playbackProperties
.
sourceU
ri
,
dataSourceFactory
,
renderersFactory
);
context
,
playbackProperties
.
u
ri
,
dataSourceFactory
,
renderersFactory
);
case
C
.
TYPE_OTHER
:
return
DownloadHelper
.
forProgressive
(
context
,
playbackProperties
.
sourceU
ri
);
return
DownloadHelper
.
forProgressive
(
context
,
playbackProperties
.
u
ri
);
default
:
throw
new
IllegalStateException
(
"Unsupported type: "
+
type
);
}
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
View file @
b22783f8
...
...
@@ -125,14 +125,14 @@ public class IntentUtil {
if
(
mediaItems
.
size
()
==
1
)
{
MediaItem
.
PlaybackProperties
playbackProperties
=
checkNotNull
(
mediaItems
.
get
(
0
).
playbackProperties
);
intent
.
setAction
(
IntentUtil
.
ACTION_VIEW
).
setData
(
playbackProperties
.
sourceU
ri
);
intent
.
setAction
(
IntentUtil
.
ACTION_VIEW
).
setData
(
playbackProperties
.
u
ri
);
addPlaybackPropertiesToIntent
(
playbackProperties
,
intent
,
/* extrasKeySuffix= */
""
);
}
else
{
intent
.
setAction
(
IntentUtil
.
ACTION_VIEW_LIST
);
for
(
int
i
=
0
;
i
<
mediaItems
.
size
();
i
++)
{
MediaItem
.
PlaybackProperties
playbackProperties
=
checkNotNull
(
mediaItems
.
get
(
i
).
playbackProperties
);
intent
.
putExtra
(
IntentUtil
.
URI_EXTRA
+
(
"_"
+
i
),
playbackProperties
.
sourceU
ri
.
toString
());
intent
.
putExtra
(
IntentUtil
.
URI_EXTRA
+
(
"_"
+
i
),
playbackProperties
.
u
ri
.
toString
());
addPlaybackPropertiesToIntent
(
playbackProperties
,
intent
,
/* extrasKeySuffix= */
"_"
+
i
);
}
}
...
...
@@ -165,7 +165,7 @@ public class IntentUtil {
}
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
uri
)
.
setUri
(
uri
)
.
setStreamKeys
(
downloadRequest
!=
null
?
downloadRequest
.
streamKeys
:
null
)
.
setCustomCacheKey
(
downloadRequest
!=
null
?
downloadRequest
.
customCacheKey
:
null
)
.
setMimeType
(
mimeType
)
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
View file @
b22783f8
...
...
@@ -278,7 +278,7 @@ public class SampleChooserActivity extends AppCompatActivity
if
(
playbackProperties
.
adTagUri
!=
null
)
{
return
R
.
string
.
download_ads_unsupported
;
}
String
scheme
=
playbackProperties
.
sourceU
ri
.
getScheme
();
String
scheme
=
playbackProperties
.
u
ri
.
getScheme
();
if
(!(
"http"
.
equals
(
scheme
)
||
"https"
.
equals
(
scheme
)))
{
return
R
.
string
.
download_scheme_unsupported
;
}
...
...
@@ -457,7 +457,7 @@ public class SampleChooserActivity extends AppCompatActivity
return
new
PlaylistHolder
(
title
,
mediaItems
);
}
else
{
mediaItem
.
set
Source
Uri
(
uri
)
.
setUri
(
uri
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
title
).
build
())
.
setMimeType
(
IntentUtil
.
inferAdaptiveStreamMimeType
(
uri
,
extension
))
.
setTag
(
new
IntentUtil
.
Tag
(
isLive
,
sphericalStereoMode
));
...
...
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java
View file @
b22783f8
...
...
@@ -59,7 +59,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
metadata
.
putString
(
MediaMetadata
.
KEY_TITLE
,
item
.
mediaMetadata
.
title
);
}
MediaInfo
mediaInfo
=
new
MediaInfo
.
Builder
(
item
.
playbackProperties
.
sourceU
ri
.
toString
())
new
MediaInfo
.
Builder
(
item
.
playbackProperties
.
u
ri
.
toString
())
.
setStreamType
(
MediaInfo
.
STREAM_TYPE_BUFFERED
)
.
setContentType
(
item
.
playbackProperties
.
mimeType
)
.
setMetadata
(
metadata
)
...
...
@@ -74,7 +74,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
try
{
JSONObject
mediaItemJson
=
customData
.
getJSONObject
(
KEY_MEDIA_ITEM
);
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
builder
.
set
Source
Uri
(
Uri
.
parse
(
mediaItemJson
.
getString
(
KEY_URI
)));
builder
.
setUri
(
Uri
.
parse
(
mediaItemJson
.
getString
(
KEY_URI
)));
if
(
mediaItemJson
.
has
(
KEY_TITLE
))
{
com
.
google
.
android
.
exoplayer2
.
MediaMetadata
mediaMetadata
=
new
com
.
google
.
android
.
exoplayer2
.
MediaMetadata
.
Builder
()
...
...
@@ -127,7 +127,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
JSONObject
json
=
new
JSONObject
();
json
.
put
(
KEY_TITLE
,
mediaItem
.
mediaMetadata
.
title
);
json
.
put
(
KEY_URI
,
mediaItem
.
playbackProperties
.
sourceU
ri
.
toString
());
json
.
put
(
KEY_URI
,
mediaItem
.
playbackProperties
.
u
ri
.
toString
());
json
.
put
(
KEY_MIME_TYPE
,
mediaItem
.
playbackProperties
.
mimeType
);
if
(
mediaItem
.
playbackProperties
.
drmConfiguration
!=
null
)
{
json
.
put
(
...
...
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/CastPlayerTest.java
View file @
b22783f8
...
...
@@ -232,36 +232,30 @@ public class CastPlayerTest {
@Test
public
void
setMediaItems_callsRemoteMediaClient
()
{
List
<
MediaItem
>
mediaItems
=
new
ArrayList
<>();
String
sourceU
ri1
=
"http://www.google.com/video1"
;
String
sourceU
ri2
=
"http://www.google.com/video2"
;
String
u
ri1
=
"http://www.google.com/video1"
;
String
u
ri2
=
"http://www.google.com/video2"
;
mediaItems
.
add
(
new
MediaItem
.
Builder
()
.
setSourceUri
(
sourceUri1
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
build
());
new
MediaItem
.
Builder
().
setUri
(
uri1
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
());
mediaItems
.
add
(
new
MediaItem
.
Builder
()
.
setSourceUri
(
sourceUri2
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MP4
)
.
build
());
new
MediaItem
.
Builder
().
setUri
(
uri2
).
setMimeType
(
MimeTypes
.
APPLICATION_MP4
).
build
());
castPlayer
.
setMediaItems
(
mediaItems
,
/* startWindowIndex= */
1
,
/* startPositionMs= */
2000L
);
verify
(
mockRemoteMediaClient
)
.
queueLoad
(
queueItemsArgumentCaptor
.
capture
(),
eq
(
1
),
anyInt
(),
eq
(
2000L
),
any
());
MediaQueueItem
[]
mediaQueueItems
=
queueItemsArgumentCaptor
.
getValue
();
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri1
);
assertThat
(
mediaQueueItems
[
1
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri2
);
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri1
);
assertThat
(
mediaQueueItems
[
1
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri2
);
}
@Test
public
void
setMediaItems_doNotReset_callsRemoteMediaClient
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
List
<
MediaItem
>
mediaItems
=
new
ArrayList
<>();
String
sourceU
ri1
=
"http://www.google.com/video1"
;
String
sourceU
ri2
=
"http://www.google.com/video2"
;
mediaItems
.
add
(
builder
.
set
SourceUri
(
sourceU
ri1
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
());
mediaItems
.
add
(
builder
.
set
SourceUri
(
sourceU
ri2
).
setMimeType
(
MimeTypes
.
APPLICATION_MP4
).
build
());
String
u
ri1
=
"http://www.google.com/video1"
;
String
u
ri2
=
"http://www.google.com/video2"
;
mediaItems
.
add
(
builder
.
set
Uri
(
u
ri1
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
());
mediaItems
.
add
(
builder
.
set
Uri
(
u
ri2
).
setMimeType
(
MimeTypes
.
APPLICATION_MP4
).
build
());
int
startWindowIndex
=
C
.
INDEX_UNSET
;
long
startPositionMs
=
2000L
;
...
...
@@ -271,18 +265,18 @@ public class CastPlayerTest {
.
queueLoad
(
queueItemsArgumentCaptor
.
capture
(),
eq
(
0
),
anyInt
(),
eq
(
0L
),
any
());
MediaQueueItem
[]
mediaQueueItems
=
queueItemsArgumentCaptor
.
getValue
();
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri1
);
assertThat
(
mediaQueueItems
[
1
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri2
);
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri1
);
assertThat
(
mediaQueueItems
[
1
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri2
);
}
@Test
public
void
addMediaItems_callsRemoteMediaClient
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
List
<
MediaItem
>
mediaItems
=
new
ArrayList
<>();
String
sourceU
ri1
=
"http://www.google.com/video1"
;
String
sourceU
ri2
=
"http://www.google.com/video2"
;
mediaItems
.
add
(
builder
.
set
SourceUri
(
sourceU
ri1
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
());
mediaItems
.
add
(
builder
.
set
SourceUri
(
sourceU
ri2
).
setMimeType
(
MimeTypes
.
APPLICATION_MP4
).
build
());
String
u
ri1
=
"http://www.google.com/video1"
;
String
u
ri2
=
"http://www.google.com/video2"
;
mediaItems
.
add
(
builder
.
set
Uri
(
u
ri1
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
());
mediaItems
.
add
(
builder
.
set
Uri
(
u
ri2
).
setMimeType
(
MimeTypes
.
APPLICATION_MP4
).
build
());
castPlayer
.
addMediaItems
(
mediaItems
);
...
...
@@ -291,8 +285,8 @@ public class CastPlayerTest {
queueItemsArgumentCaptor
.
capture
(),
eq
(
MediaQueueItem
.
INVALID_ITEM_ID
),
any
());
MediaQueueItem
[]
mediaQueueItems
=
queueItemsArgumentCaptor
.
getValue
();
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri1
);
assertThat
(
mediaQueueItems
[
1
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri2
);
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri1
);
assertThat
(
mediaQueueItems
[
1
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri2
);
}
@SuppressWarnings
(
"ConstantConditions"
)
...
...
@@ -301,12 +295,9 @@ public class CastPlayerTest {
int
[]
mediaQueueItemIds
=
createMediaQueueItemIds
(
/* numberOfIds= */
2
);
List
<
MediaItem
>
mediaItems
=
createMediaItems
(
mediaQueueItemIds
);
fillTimeline
(
mediaItems
,
mediaQueueItemIds
);
String
sourceU
ri
=
"http://www.google.com/video3"
;
String
u
ri
=
"http://www.google.com/video3"
;
MediaItem
anotherMediaItem
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
sourceUri
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
build
();
new
MediaItem
.
Builder
().
setUri
(
uri
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
();
// Add another on position 1
int
index
=
1
;
...
...
@@ -319,7 +310,7 @@ public class CastPlayerTest {
any
());
MediaQueueItem
[]
mediaQueueItems
=
queueItemsArgumentCaptor
.
getValue
();
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
sourceU
ri
);
assertThat
(
mediaQueueItems
[
0
].
getMedia
().
getContentId
()).
isEqualTo
(
u
ri
);
}
@Test
...
...
@@ -477,7 +468,7 @@ public class CastPlayerTest {
for
(
int
mediaQueueItemId
:
mediaQueueItemIds
)
{
MediaItem
mediaItem
=
builder
.
set
Source
Uri
(
"http://www.google.com/video"
+
mediaQueueItemId
)
.
setUri
(
"http://www.google.com/video"
+
mediaQueueItemId
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
setTag
(
mediaQueueItemId
)
.
build
();
...
...
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java
View file @
b22783f8
...
...
@@ -36,7 +36,7 @@ public class DefaultMediaItemConverterTest {
public
void
serialize_deserialize_minimal
()
{
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
MediaItem
item
=
builder
.
set
Source
Uri
(
"http://example.com"
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
();
builder
.
setUri
(
"http://example.com"
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
();
DefaultMediaItemConverter
converter
=
new
DefaultMediaItemConverter
();
MediaQueueItem
queueItem
=
converter
.
toMediaQueueItem
(
item
);
...
...
@@ -50,7 +50,7 @@ public class DefaultMediaItemConverterTest {
MediaItem
.
Builder
builder
=
new
MediaItem
.
Builder
();
MediaItem
item
=
builder
.
set
Source
Uri
(
Uri
.
parse
(
"http://example.com"
))
.
setUri
(
Uri
.
parse
(
"http://example.com"
))
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
build
())
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
setDrmUuid
(
C
.
WIDEVINE_UUID
)
...
...
library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java
View file @
b22783f8
...
...
@@ -32,30 +32,30 @@ import java.util.UUID;
public
final
class
MediaItem
{
/**
* Creates a {@link MediaItem} for the given
source
uri.
* Creates a {@link MediaItem} for the given uri.
*
* @param
sourceUri The sourc
e uri.
* @return An {@link MediaItem} for the given
source
uri.
* @param
uri Th
e uri.
* @return An {@link MediaItem} for the given uri.
*/
public
static
MediaItem
fromUri
(
String
sourceU
ri
)
{
return
new
MediaItem
.
Builder
().
set
SourceUri
(
sourceU
ri
).
build
();
public
static
MediaItem
fromUri
(
String
u
ri
)
{
return
new
MediaItem
.
Builder
().
set
Uri
(
u
ri
).
build
();
}
/**
* Creates a {@link MediaItem} for the given {@link Uri
source
uri}.
* Creates a {@link MediaItem} for the given {@link Uri uri}.
*
* @param
sourceUri The {@link Uri source
uri}.
* @return An {@link MediaItem} for the given
source
uri.
* @param
uri The {@link Uri
uri}.
* @return An {@link MediaItem} for the given uri.
*/
public
static
MediaItem
fromUri
(
Uri
sourceU
ri
)
{
return
new
MediaItem
.
Builder
().
set
SourceUri
(
sourceU
ri
).
build
();
public
static
MediaItem
fromUri
(
Uri
u
ri
)
{
return
new
MediaItem
.
Builder
().
set
Uri
(
u
ri
).
build
();
}
/** A builder for {@link MediaItem} instances. */
public
static
final
class
Builder
{
@Nullable
private
String
mediaId
;
@Nullable
private
Uri
sourceU
ri
;
@Nullable
private
Uri
u
ri
;
@Nullable
private
String
mimeType
;
private
long
clipStartPositionMs
;
private
long
clipEndPositionMs
;
...
...
@@ -99,7 +99,7 @@ public final class MediaItem {
adTagUri
=
playbackProperties
.
adTagUri
;
customCacheKey
=
playbackProperties
.
customCacheKey
;
mimeType
=
playbackProperties
.
mimeType
;
sourceUri
=
playbackProperties
.
sourceU
ri
;
uri
=
playbackProperties
.
u
ri
;
streamKeys
=
playbackProperties
.
streamKeys
;
subtitles
=
playbackProperties
.
subtitles
;
tag
=
playbackProperties
.
tag
;
...
...
@@ -117,28 +117,25 @@ public final class MediaItem {
}
/**
* Sets the optional media id which identifies the media item. If not specified, {@link
*
#setSourceUri} must be called and the string representation of {@link
*
PlaybackProperties#sourceUri} is used as the
media id.
* Sets the optional media id which identifies the media item. If not specified, {@link
#setUri}
*
must be called and the string representation of {@link PlaybackProperties#uri} is used as the
* media id.
*/
public
Builder
setMediaId
(
@Nullable
String
mediaId
)
{
this
.
mediaId
=
mediaId
;
return
this
;
}
/**
* Sets the optional source uri. If not specified, {@link #setMediaId(String)} must be called.
*/
public
Builder
setSourceUri
(
@Nullable
String
sourceUri
)
{
return
setSourceUri
(
sourceUri
==
null
?
null
:
Uri
.
parse
(
sourceUri
));
/** Sets the optional uri. If not specified, {@link #setMediaId(String)} must be called. */
public
Builder
setUri
(
@Nullable
String
uri
)
{
return
setUri
(
uri
==
null
?
null
:
Uri
.
parse
(
uri
));
}
/**
* Sets the optional source {@link Uri}. If not specified, {@link #setMediaId(String)} must be
* called.
* Sets the optional {@link Uri}. If not specified, {@link #setMediaId(String)} must be called.
*/
public
Builder
set
SourceUri
(
@Nullable
Uri
sourceU
ri
)
{
this
.
sourceUri
=
sourceU
ri
;
public
Builder
set
Uri
(
@Nullable
Uri
u
ri
)
{
this
.
uri
=
u
ri
;
return
this
;
}
...
...
@@ -147,7 +144,7 @@ public final class MediaItem {
*
* <p>The mime type may be used as a hint for inferring the type of the media item.
*
* <p>If a {@link PlaybackProperties#
sourceU
ri} is set, the mime type is used to create a {@link
* <p>If a {@link PlaybackProperties#
u
ri} is set, the mime type is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*
* @param mimeType The mime type.
...
...
@@ -210,8 +207,8 @@ public final class MediaItem {
* Sets the optional license server {@link Uri}. If a license uri is set, the {@link
* DrmConfiguration#uuid} needs to be specified as well.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the drm license uri is used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the drm license uri is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setDrmLicenseUri
(
@Nullable
Uri
licenseUri
)
{
drmLicenseUri
=
licenseUri
;
...
...
@@ -222,8 +219,8 @@ public final class MediaItem {
* Sets the optional license server uri as a {@link String}. If a license uri is set, the {@link
* DrmConfiguration#uuid} needs to be specified as well.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the drm license uri is used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the drm license uri is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setDrmLicenseUri
(
@Nullable
String
licenseUri
)
{
drmLicenseUri
=
licenseUri
==
null
?
null
:
Uri
.
parse
(
licenseUri
);
...
...
@@ -250,8 +247,8 @@ public final class MediaItem {
* Sets the {@link UUID} of the protection scheme. If a drm system uuid is set, the {@link
* DrmConfiguration#licenseUri} needs to be set as well.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the drm system uuid is used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the drm system uuid is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setDrmUuid
(
@Nullable
UUID
uuid
)
{
drmUuid
=
uuid
;
...
...
@@ -261,8 +258,8 @@ public final class MediaItem {
/**
* Sets whether the drm configuration is multi session enabled.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the drm multi session flag is used to
*
create a
{@link PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the drm multi session flag is used to create a
* {@link PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setDrmMultiSession
(
boolean
multiSession
)
{
drmMultiSession
=
multiSession
;
...
...
@@ -333,8 +330,8 @@ public final class MediaItem {
*
* <p>{@code null} or an empty {@link List} can be used for a reset.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the stream keys are used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the stream keys are used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setStreamKeys
(
@Nullable
List
<
StreamKey
>
streamKeys
)
{
this
.
streamKeys
=
...
...
@@ -347,7 +344,7 @@ public final class MediaItem {
/**
* Sets the optional custom cache key (only used for progressive streams).
*
* <p>If a {@link PlaybackProperties#
sourceU
ri} is set, the custom cache key is used to create a
* <p>If a {@link PlaybackProperties#
u
ri} is set, the custom cache key is used to create a
* {@link PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setCustomCacheKey
(
@Nullable
String
customCacheKey
)
{
...
...
@@ -360,8 +357,8 @@ public final class MediaItem {
*
* <p>{@code null} or an empty {@link List} can be used for a reset.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the subtitles are used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the subtitles are used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setSubtitles
(
@Nullable
List
<
Subtitle
>
subtitles
)
{
this
.
subtitles
=
...
...
@@ -374,8 +371,8 @@ public final class MediaItem {
/**
* Sets the optional ad tag URI.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the ad tag URI is used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the ad tag URI is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setAdTagUri
(
@Nullable
String
adTagUri
)
{
this
.
adTagUri
=
adTagUri
!=
null
?
Uri
.
parse
(
adTagUri
)
:
null
;
...
...
@@ -385,8 +382,8 @@ public final class MediaItem {
/**
* Sets the optional ad tag {@link Uri}.
*
* <p>If a {@link PlaybackProperties#
sourceUri} is set, the ad tag URI is used to create a
*
{@link
PlaybackProperties} object. Otherwise it will be ignored.
* <p>If a {@link PlaybackProperties#
uri} is set, the ad tag URI is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setAdTagUri
(
@Nullable
Uri
adTagUri
)
{
this
.
adTagUri
=
adTagUri
;
...
...
@@ -398,7 +395,7 @@ public final class MediaItem {
* published in the {@code com.google.android.exoplayer2.Timeline} of the source as {@code
* com.google.android.exoplayer2.Timeline.Window#tag}.
*
* <p>If a {@link PlaybackProperties#
sourceU
ri} is set, the tag is used to create a {@link
* <p>If a {@link PlaybackProperties#
u
ri} is set, the tag is used to create a {@link
* PlaybackProperties} object. Otherwise it will be ignored.
*/
public
Builder
setTag
(
@Nullable
Object
tag
)
{
...
...
@@ -418,10 +415,10 @@ public final class MediaItem {
public
MediaItem
build
()
{
Assertions
.
checkState
(
drmLicenseUri
==
null
||
drmUuid
!=
null
);
@Nullable
PlaybackProperties
playbackProperties
=
null
;
if
(
sourceU
ri
!=
null
)
{
if
(
u
ri
!=
null
)
{
playbackProperties
=
new
PlaybackProperties
(
sourceU
ri
,
u
ri
,
mimeType
,
drmUuid
!=
null
?
new
DrmConfiguration
(
...
...
@@ -438,7 +435,7 @@ public final class MediaItem {
subtitles
,
adTagUri
,
tag
);
mediaId
=
mediaId
!=
null
?
mediaId
:
sourceU
ri
.
toString
();
mediaId
=
mediaId
!=
null
?
mediaId
:
u
ri
.
toString
();
}
return
new
MediaItem
(
Assertions
.
checkNotNull
(
mediaId
),
...
...
@@ -540,8 +537,8 @@ public final class MediaItem {
/** Properties for local playback. */
public
static
final
class
PlaybackProperties
{
/** The
source
{@link Uri}. */
public
final
Uri
sourceU
ri
;
/** The {@link Uri}. */
public
final
Uri
u
ri
;
/**
* The optional mime type of the item, or {@code null} if unspecified.
...
...
@@ -574,7 +571,7 @@ public final class MediaItem {
@Nullable
public
final
Object
tag
;
private
PlaybackProperties
(
Uri
sourceU
ri
,
Uri
u
ri
,
@Nullable
String
mimeType
,
@Nullable
DrmConfiguration
drmConfiguration
,
List
<
StreamKey
>
streamKeys
,
...
...
@@ -582,7 +579,7 @@ public final class MediaItem {
List
<
Subtitle
>
subtitles
,
@Nullable
Uri
adTagUri
,
@Nullable
Object
tag
)
{
this
.
sourceUri
=
sourceU
ri
;
this
.
uri
=
u
ri
;
this
.
mimeType
=
mimeType
;
this
.
drmConfiguration
=
drmConfiguration
;
this
.
streamKeys
=
streamKeys
;
...
...
@@ -602,7 +599,7 @@ public final class MediaItem {
}
PlaybackProperties
other
=
(
PlaybackProperties
)
obj
;
return
sourceUri
.
equals
(
other
.
sourceU
ri
)
return
uri
.
equals
(
other
.
u
ri
)
&&
Util
.
areEqual
(
mimeType
,
other
.
mimeType
)
&&
Util
.
areEqual
(
drmConfiguration
,
other
.
drmConfiguration
)
&&
streamKeys
.
equals
(
other
.
streamKeys
)
...
...
@@ -614,7 +611,7 @@ public final class MediaItem {
@Override
public
int
hashCode
()
{
int
result
=
sourceU
ri
.
hashCode
();
int
result
=
u
ri
.
hashCode
();
result
=
31
*
result
+
(
mimeType
==
null
?
0
:
mimeType
.
hashCode
());
result
=
31
*
result
+
(
drmConfiguration
==
null
?
0
:
drmConfiguration
.
hashCode
());
result
=
31
*
result
+
streamKeys
.
hashCode
();
...
...
library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
View file @
b22783f8
...
...
@@ -213,7 +213,7 @@ public final class Util {
if
(
mediaItem
.
playbackProperties
==
null
)
{
continue
;
}
if
(
isLocalFileUri
(
mediaItem
.
playbackProperties
.
sourceU
ri
))
{
if
(
isLocalFileUri
(
mediaItem
.
playbackProperties
.
u
ri
))
{
return
requestExternalStoragePermission
(
activity
);
}
for
(
int
i
=
0
;
i
<
mediaItem
.
playbackProperties
.
subtitles
.
size
();
i
++)
{
...
...
@@ -241,7 +241,7 @@ public final class Util {
if
(
mediaItem
.
playbackProperties
==
null
)
{
continue
;
}
if
(
isTrafficRestricted
(
mediaItem
.
playbackProperties
.
sourceU
ri
))
{
if
(
isTrafficRestricted
(
mediaItem
.
playbackProperties
.
u
ri
))
{
return
false
;
}
for
(
int
i
=
0
;
i
<
mediaItem
.
playbackProperties
.
subtitles
.
size
();
i
++)
{
...
...
library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java
View file @
b22783f8
...
...
@@ -38,26 +38,26 @@ public class MediaItemTest {
private
static
final
String
URI_STRING
=
"http://www.google.com"
;
@Test
public
void
builder_needs
Source
UriOrMediaId
()
{
public
void
builder_needsUriOrMediaId
()
{
assertThrows
(
NullPointerException
.
class
,
()
->
new
MediaItem
.
Builder
().
build
());
}
@Test
public
void
builderWithUri_sets
Source
Uri
()
{
public
void
builderWithUri_setsUri
()
{
Uri
uri
=
Uri
.
parse
(
URI_STRING
);
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
uri
);
assertThat
(
mediaItem
.
playbackProperties
.
sourceU
ri
.
toString
()).
isEqualTo
(
URI_STRING
);
assertThat
(
mediaItem
.
playbackProperties
.
u
ri
.
toString
()).
isEqualTo
(
URI_STRING
);
assertThat
(
mediaItem
.
mediaId
).
isEqualTo
(
URI_STRING
);
assertThat
(
mediaItem
.
mediaMetadata
).
isNotNull
();
}
@Test
public
void
builderWithUriAsString_sets
Source
Uri
()
{
public
void
builderWithUriAsString_setsUri
()
{
MediaItem
mediaItem
=
MediaItem
.
fromUri
(
URI_STRING
);
assertThat
(
mediaItem
.
playbackProperties
.
sourceU
ri
.
toString
()).
isEqualTo
(
URI_STRING
);
assertThat
(
mediaItem
.
playbackProperties
.
u
ri
.
toString
()).
isEqualTo
(
URI_STRING
);
assertThat
(
mediaItem
.
mediaId
).
isEqualTo
(
URI_STRING
);
}
...
...
@@ -71,10 +71,7 @@ public class MediaItemTest {
@Test
public
void
builderSetMimeType_setsMimeType
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
URI_STRING
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
mimeType
).
isEqualTo
(
MimeTypes
.
APPLICATION_MPD
);
}
...
...
@@ -82,7 +79,7 @@ public class MediaItemTest {
@Test
public
void
builderSetDrmConfig_isNullByDefault
()
{
// Null value by default.
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
drmConfiguration
).
isNull
();
}
...
...
@@ -94,7 +91,7 @@ public class MediaItemTest {
byte
[]
keySetId
=
new
byte
[]
{
1
,
2
,
3
};
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_STRING
)
.
setUri
(
URI_STRING
)
.
setDrmUuid
(
C
.
WIDEVINE_UUID
)
.
setDrmLicenseUri
(
licenseUri
)
.
setDrmLicenseRequestHeaders
(
requestHeaders
)
...
...
@@ -121,7 +118,7 @@ public class MediaItemTest {
Uri
licenseUri
=
Uri
.
parse
(
URI_STRING
);
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_STRING
)
.
setUri
(
URI_STRING
)
.
setDrmUuid
(
C
.
WIDEVINE_UUID
)
.
setDrmLicenseUri
(
licenseUri
)
.
setDrmSessionForClearTypes
(
Arrays
.
asList
(
C
.
TRACK_TYPE_AUDIO
))
...
...
@@ -138,7 +135,7 @@ public class MediaItemTest {
IllegalStateException
.
class
,
()
->
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_STRING
)
.
setUri
(
URI_STRING
)
// missing uuid
.
setDrmLicenseUri
(
Uri
.
parse
(
URI_STRING
))
.
build
());
...
...
@@ -147,7 +144,7 @@ public class MediaItemTest {
@Test
public
void
builderSetCustomCacheKey_setsCustomCacheKey
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setCustomCacheKey
(
"key"
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setCustomCacheKey
(
"key"
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
customCacheKey
).
isEqualTo
(
"key"
);
}
...
...
@@ -159,7 +156,7 @@ public class MediaItemTest {
streamKeys
.
add
(
new
StreamKey
(
0
,
1
,
1
));
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setStreamKeys
(
streamKeys
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setStreamKeys
(
streamKeys
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
streamKeys
).
isEqualTo
(
streamKeys
);
}
...
...
@@ -177,14 +174,14 @@ public class MediaItemTest {
C
.
SELECTION_FLAG_DEFAULT
));
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setSubtitles
(
subtitles
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setSubtitles
(
subtitles
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
subtitles
).
isEqualTo
(
subtitles
);
}
@Test
public
void
builderSetTag_isNullByDefault
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
tag
).
isNull
();
}
...
...
@@ -193,7 +190,7 @@ public class MediaItemTest {
public
void
builderSetTag_setsTag
()
{
Object
tag
=
new
Object
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setTag
(
tag
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setTag
(
tag
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
tag
);
}
...
...
@@ -201,14 +198,14 @@ public class MediaItemTest {
@Test
public
void
builderSetStartPositionMs_setsStartPositionMs
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setClipStartPositionMs
(
1000L
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setClipStartPositionMs
(
1000L
).
build
();
assertThat
(
mediaItem
.
clippingProperties
.
startPositionMs
).
isEqualTo
(
1000L
);
}
@Test
public
void
builderSetStartPositionMs_zeroByDefault
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
build
();
assertThat
(
mediaItem
.
clippingProperties
.
startPositionMs
).
isEqualTo
(
0
);
}
...
...
@@ -223,14 +220,14 @@ public class MediaItemTest {
@Test
public
void
builderSetEndPositionMs_setsEndPositionMs
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setClipEndPositionMs
(
1000L
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setClipEndPositionMs
(
1000L
).
build
();
assertThat
(
mediaItem
.
clippingProperties
.
endPositionMs
).
isEqualTo
(
1000L
);
}
@Test
public
void
builderSetEndPositionMs_timeEndOfSourceByDefault
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
build
();
assertThat
(
mediaItem
.
clippingProperties
.
endPositionMs
).
isEqualTo
(
C
.
TIME_END_OF_SOURCE
);
}
...
...
@@ -239,7 +236,7 @@ public class MediaItemTest {
public
void
builderSetEndPositionMs_timeEndOfSource_setsEndPositionMs
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_STRING
)
.
setUri
(
URI_STRING
)
.
setClipEndPositionMs
(
1000
)
.
setClipEndPositionMs
(
C
.
TIME_END_OF_SOURCE
)
.
build
();
...
...
@@ -258,7 +255,7 @@ public class MediaItemTest {
public
void
builderSetClippingFlags_setsClippingFlags
()
{
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_STRING
)
.
setUri
(
URI_STRING
)
.
setClipRelativeToDefaultPosition
(
true
)
.
setClipRelativeToLiveWindow
(
true
)
.
setClipStartsAtKeyFrame
(
true
)
...
...
@@ -273,8 +270,7 @@ public class MediaItemTest {
public
void
builderSetAdTagUri_setsAdTagUri
()
{
Uri
adTagUri
=
Uri
.
parse
(
URI_STRING
+
"/ad"
);
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setSourceUri
(
URI_STRING
).
setAdTagUri
(
adTagUri
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setAdTagUri
(
adTagUri
).
build
();
assertThat
(
mediaItem
.
playbackProperties
.
adTagUri
).
isEqualTo
(
adTagUri
);
}
...
...
@@ -284,7 +280,7 @@ public class MediaItemTest {
MediaMetadata
mediaMetadata
=
new
MediaMetadata
.
Builder
().
setTitle
(
"title"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_STRING
).
setMediaMetadata
(
mediaMetadata
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setMediaMetadata
(
mediaMetadata
).
build
();
assertThat
(
mediaItem
.
mediaMetadata
).
isEqualTo
(
mediaMetadata
);
}
...
...
@@ -311,7 +307,7 @@ public class MediaItemTest {
.
setMediaId
(
"mediaId"
)
.
setMediaMetadata
(
new
MediaMetadata
.
Builder
().
setTitle
(
"title"
).
build
())
.
setMimeType
(
MimeTypes
.
APPLICATION_MP4
)
.
set
Source
Uri
(
URI_STRING
)
.
setUri
(
URI_STRING
)
.
setStreamKeys
(
Collections
.
singletonList
(
new
StreamKey
(
1
,
0
,
0
)))
.
setSubtitles
(
Collections
.
singletonList
(
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java
View file @
b22783f8
...
...
@@ -52,25 +52,24 @@ import java.util.Map;
* factories:
*
* <ul>
* <li>{@code DashMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#
sourceUri
*
sourceUri} ends in '.mpd' or if its {@link MediaItem.PlaybackProperties#mimeType mimeType
*
field} is
explicitly set to {@link MimeTypes#APPLICATION_MPD} (Requires the <a
* <li>{@code DashMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#
uri uri}
*
ends in '.mpd' or if its {@link MediaItem.PlaybackProperties#mimeType mimeType field} is
* explicitly set to {@link MimeTypes#APPLICATION_MPD} (Requires the <a
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-dash module
* to be added</a> to the app).
* <li>{@code HlsMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#
sourceUri
*
sourceUri} ends in '.m3u8' or if its {@link MediaItem.PlaybackProperties#mimeType mimeType
*
field} is
explicitly set to {@link MimeTypes#APPLICATION_M3U8} (Requires the <a
* <li>{@code HlsMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#
uri uri}
*
ends in '.m3u8' or if its {@link MediaItem.PlaybackProperties#mimeType mimeType field} is
* explicitly set to {@link MimeTypes#APPLICATION_M3U8} (Requires the <a
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-hls module to
* be added</a> to the app).
* <li>{@code SsMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#sourceUri
* sourceUri} ends in '.ism', '.ism/Manifest' or if its {@link
* MediaItem.PlaybackProperties#mimeType mimeType field} is explicitly set to {@link
* MimeTypes#APPLICATION_SS} (Requires the <a
* <li>{@code SsMediaSource.Factory} if the item's {@link MediaItem.PlaybackProperties#uri uri}
* ends in '.ism', '.ism/Manifest' or if its {@link MediaItem.PlaybackProperties#mimeType
* mimeType field} is explicitly set to {@link MimeTypes#APPLICATION_SS} (Requires the <a
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">
* exoplayer-smoothstreaming module to be added</a> to the app).
* <li>{@link ProgressiveMediaSource.Factory} serves as a fallback if the item's {@link
* MediaItem.PlaybackProperties#
sourceUri sourceUri} doesn't match one of the above. It tries
*
to infer the
required extractor by using the {@link
* MediaItem.PlaybackProperties#
uri uri} doesn't match one of the above. It tries to infer the
* required extractor by using the {@link
* com.google.android.exoplayer2.extractor.DefaultExtractorsFactory}. An {@link
* UnrecognizedInputFormatException} is thrown if none of the available extractors can read
* the stream.
...
...
@@ -249,7 +248,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
@C
.
ContentType
int
type
=
Util
.
inferContentTypeWithMimeType
(
mediaItem
.
playbackProperties
.
sourceU
ri
,
mediaItem
.
playbackProperties
.
mimeType
);
mediaItem
.
playbackProperties
.
u
ri
,
mediaItem
.
playbackProperties
.
mimeType
);
@Nullable
MediaSourceFactory
mediaSourceFactory
=
mediaSourceFactories
.
get
(
type
);
Assertions
.
checkNotNull
(
mediaSourceFactory
,
"No suitable media source factory found for content type: "
+
type
);
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java
View file @
b22783f8
...
...
@@ -173,7 +173,7 @@ public final class ExtractorMediaSource extends CompositeMediaSource<Void> {
@Deprecated
@Override
public
ExtractorMediaSource
createMediaSource
(
Uri
uri
)
{
return
createMediaSource
(
new
MediaItem
.
Builder
().
set
Source
Uri
(
uri
).
build
());
return
createMediaSource
(
new
MediaItem
.
Builder
().
setUri
(
uri
).
build
());
}
/**
...
...
@@ -187,7 +187,7 @@ public final class ExtractorMediaSource extends CompositeMediaSource<Void> {
public
ExtractorMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
return
new
ExtractorMediaSource
(
mediaItem
.
playbackProperties
.
sourceU
ri
,
mediaItem
.
playbackProperties
.
u
ri
,
dataSourceFactory
,
extractorsFactory
,
loadErrorHandlingPolicy
,
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java
View file @
b22783f8
...
...
@@ -166,7 +166,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
@Deprecated
@Override
public
ProgressiveMediaSource
createMediaSource
(
Uri
uri
)
{
return
createMediaSource
(
new
MediaItem
.
Builder
().
set
Source
Uri
(
uri
).
build
());
return
createMediaSource
(
new
MediaItem
.
Builder
().
setUri
(
uri
).
build
());
}
/**
...
...
@@ -180,7 +180,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
public
ProgressiveMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
return
new
ProgressiveMediaSource
(
mediaItem
.
playbackProperties
.
sourceU
ri
,
mediaItem
.
playbackProperties
.
u
ri
,
dataSourceFactory
,
extractorsFactory
,
drmSessionManager
,
...
...
library/core/src/test/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactoryTest.java
View file @
b22783f8
...
...
@@ -46,7 +46,7 @@ public final class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withoutMimeType_progressiveSource
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -58,7 +58,7 @@ public final class DefaultMediaSourceFactoryTest {
Object
tag
=
new
Object
();
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
setTag
(
tag
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setTag
(
tag
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -69,7 +69,7 @@ public final class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withPath_progressiveSource
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.mp3"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.mp3"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -80,7 +80,7 @@ public final class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withNull_usesNonNullDefaults
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
...
...
@@ -101,8 +101,7 @@ public final class DefaultMediaSourceFactoryTest {
new
MediaItem
.
Subtitle
(
Uri
.
parse
(
URI_TEXT
),
MimeTypes
.
APPLICATION_TTML
,
"en"
),
new
MediaItem
.
Subtitle
(
Uri
.
parse
(
URI_TEXT
),
MimeTypes
.
APPLICATION_TTML
,
"de"
,
C
.
SELECTION_FLAG_DEFAULT
));
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setSourceUri
(
URI_MEDIA
).
setSubtitles
(
subtitles
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setSubtitles
(
subtitles
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -117,7 +116,7 @@ public final class DefaultMediaSourceFactoryTest {
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
setTag
(
tag
)
.
set
Source
Uri
(
URI_MEDIA
)
.
setUri
(
URI_MEDIA
)
.
setSubtitles
(
Collections
.
singletonList
(
new
MediaItem
.
Subtitle
(
Uri
.
parse
(
URI_TEXT
),
MimeTypes
.
APPLICATION_TTML
,
"en"
)))
...
...
@@ -133,7 +132,7 @@ public final class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
setClipStartPositionMs
(
1000L
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setClipStartPositionMs
(
1000L
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -145,7 +144,7 @@ public final class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
setClipEndPositionMs
(
1000L
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setClipEndPositionMs
(
1000L
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -157,10 +156,7 @@ public final class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
URI_MEDIA
)
.
setClipRelativeToDefaultPosition
(
true
)
.
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setClipRelativeToDefaultPosition
(
true
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -173,7 +169,7 @@ public final class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_MEDIA
)
.
setUri
(
URI_MEDIA
)
.
setClipEndPositionMs
(
C
.
TIME_END_OF_SOURCE
)
.
build
();
...
...
@@ -195,8 +191,7 @@ public final class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withAdTagUri_callsAdsLoader
()
{
Context
applicationContext
=
ApplicationProvider
.
getApplicationContext
();
Uri
adTagUri
=
Uri
.
parse
(
URI_MEDIA
);
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setSourceUri
(
URI_MEDIA
).
setAdTagUri
(
adTagUri
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setAdTagUri
(
adTagUri
).
build
();
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
new
DefaultMediaSourceFactory
(
applicationContext
,
...
...
@@ -212,7 +207,7 @@ public final class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withAdTagUriAdsLoaderNull_playsWithoutAdNoException
()
{
Context
applicationContext
=
ApplicationProvider
.
getApplicationContext
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
setAdTagUri
(
Uri
.
parse
(
URI_MEDIA
)).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setAdTagUri
(
Uri
.
parse
(
URI_MEDIA
)).
build
();
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
new
DefaultMediaSourceFactory
(
applicationContext
,
...
...
@@ -228,7 +223,7 @@ public final class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withAdTagUriProvidersNull_playsWithoutAdNoException
()
{
Context
applicationContext
=
ApplicationProvider
.
getApplicationContext
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
).
setAdTagUri
(
Uri
.
parse
(
URI_MEDIA
)).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setAdTagUri
(
Uri
.
parse
(
URI_MEDIA
)).
build
();
MediaSource
mediaSource
=
DefaultMediaSourceFactory
.
newInstance
(
applicationContext
).
createMediaSource
(
mediaItem
);
...
...
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
View file @
b22783f8
...
...
@@ -313,7 +313,7 @@ public final class DashMediaSource extends BaseMediaSource {
@Deprecated
@Override
public
DashMediaSource
createMediaSource
(
Uri
uri
)
{
return
createMediaSource
(
new
MediaItem
.
Builder
().
set
Source
Uri
(
uri
).
build
());
return
createMediaSource
(
new
MediaItem
.
Builder
().
setUri
(
uri
).
build
());
}
/**
...
...
@@ -339,7 +339,7 @@ public final class DashMediaSource extends BaseMediaSource {
}
return
new
DashMediaSource
(
/* manifest= */
null
,
mediaItem
.
playbackProperties
.
sourceU
ri
,
mediaItem
.
playbackProperties
.
u
ri
,
manifestDataSourceFactory
,
manifestParser
,
chunkSourceFactory
,
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DefaultMediaSourceFactoryTest.java
View file @
b22783f8
...
...
@@ -38,10 +38,7 @@ public class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
URI_MEDIA
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setMimeType
(
MimeTypes
.
APPLICATION_MPD
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -55,7 +52,7 @@ public class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_MEDIA
)
.
setUri
(
URI_MEDIA
)
.
setMimeType
(
MimeTypes
.
APPLICATION_MPD
)
.
setTag
(
tag
)
.
build
();
...
...
@@ -69,7 +66,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withPath_dashSource
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.mpd"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.mpd"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -80,7 +77,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withNull_usesNonNullDefaults
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.mpd"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.mpd"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java
View file @
b22783f8
...
...
@@ -332,7 +332,7 @@ public final class HlsMediaSource extends BaseMediaSource
@Deprecated
@Override
public
HlsMediaSource
createMediaSource
(
Uri
uri
)
{
return
createMediaSource
(
new
MediaItem
.
Builder
().
set
Source
Uri
(
uri
).
build
());
return
createMediaSource
(
new
MediaItem
.
Builder
().
setUri
(
uri
).
build
());
}
/**
...
...
@@ -355,7 +355,7 @@ public final class HlsMediaSource extends BaseMediaSource
new
FilteringHlsPlaylistParserFactory
(
playlistParserFactory
,
streamKeys
);
}
return
new
HlsMediaSource
(
mediaItem
.
playbackProperties
.
sourceU
ri
,
mediaItem
.
playbackProperties
.
u
ri
,
hlsDataSourceFactory
,
extractorFactory
,
compositeSequenceableLoaderFactory
,
...
...
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/DefaultMediaSourceFactoryTest.java
View file @
b22783f8
...
...
@@ -38,10 +38,7 @@ public class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
URI_MEDIA
)
.
setMimeType
(
MimeTypes
.
APPLICATION_M3U8
)
.
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setMimeType
(
MimeTypes
.
APPLICATION_M3U8
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -55,7 +52,7 @@ public class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_MEDIA
)
.
setUri
(
URI_MEDIA
)
.
setMimeType
(
MimeTypes
.
APPLICATION_M3U8
)
.
setTag
(
tag
)
.
build
();
...
...
@@ -69,7 +66,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withPath_hlsSource
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.m3u8"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.m3u8"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -80,7 +77,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withNull_usesNonNullDefaults
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.m3u8"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.m3u8"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
...
...
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java
View file @
b22783f8
...
...
@@ -223,7 +223,7 @@ public final class SsMediaSource extends BaseMediaSource
@Deprecated
@Override
public
SsMediaSource
createMediaSource
(
Uri
uri
)
{
return
createMediaSource
(
new
MediaItem
.
Builder
().
set
Source
Uri
(
uri
).
build
());
return
createMediaSource
(
new
MediaItem
.
Builder
().
setUri
(
uri
).
build
());
}
/**
...
...
@@ -307,7 +307,7 @@ public final class SsMediaSource extends BaseMediaSource
}
return
new
SsMediaSource
(
/* manifest= */
null
,
mediaItem
.
playbackProperties
.
sourceU
ri
,
mediaItem
.
playbackProperties
.
u
ri
,
manifestDataSourceFactory
,
manifestParser
,
chunkSourceFactory
,
...
...
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultMediaSourceFactoryTest.java
View file @
b22783f8
...
...
@@ -40,10 +40,7 @@ public class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
setSourceUri
(
URI_MEDIA
)
.
setMimeType
(
MimeTypes
.
APPLICATION_SS
)
.
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
).
setMimeType
(
MimeTypes
.
APPLICATION_SS
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
assertThat
(
mediaSource
).
isInstanceOf
(
SsMediaSource
.
class
);
}
...
...
@@ -55,7 +52,7 @@ public class DefaultMediaSourceFactoryTest {
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
()
.
set
Source
Uri
(
URI_MEDIA
)
.
setUri
(
URI_MEDIA
)
.
setMimeType
(
MimeTypes
.
APPLICATION_SS
)
.
setTag
(
tag
)
.
build
();
...
...
@@ -69,7 +66,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withIsmPath_smoothstreamingSource
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.ism"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.ism"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -80,7 +77,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withManifestPath_smoothstreamingSource
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
".ism/Manifest"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
".ism/Manifest"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
@@ -91,7 +88,7 @@ public class DefaultMediaSourceFactoryTest {
public
void
createMediaSource_withNull_usesNonNullDefaults
()
{
DefaultMediaSourceFactory
defaultMediaSourceFactory
=
DefaultMediaSourceFactory
.
newInstance
(
ApplicationProvider
.
getApplicationContext
());
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
set
Source
Uri
(
URI_MEDIA
+
"/file.ism"
).
build
();
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_MEDIA
+
"/file.ism"
).
build
();
MediaSource
mediaSource
=
defaultMediaSourceFactory
...
...
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