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
a04f1d17
authored
Sep 27, 2021
by
ibaker
Committed by
bachinger
Sep 28, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Migrate usages of MediaItem.PlaybackProperties to LocalConfiguration
PiperOrigin-RevId: 399206106
parent
e373e0cb
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
257 additions
and
258 deletions
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/PlayerActivity.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
docs/analytics.md
docs/playlists.md
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/media2/src/main/java/com/google/android/exoplayer2/ext/media2/DefaultMediaItemConverter.java
library/common/src/main/java/com/google/android/exoplayer2/Timeline.java
library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
library/common/src/test/java/com/google/android/exoplayer2/TimelineTest.java
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.java
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
library/core/src/main/java/com/google/android/exoplayer2/offline/ProgressiveDownloader.java
library/core/src/main/java/com/google/android/exoplayer2/offline/SegmentDownloader.java
library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java
library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceFactory.java
library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java
library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java
library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java
library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadHelperTest.java
library/core/src/test/java/com/google/android/exoplayer2/source/SilenceMediaSourceTest.java
library/core/src/test/java/com/google/android/exoplayer2/source/SinglePeriodTimelineTest.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/DashMediaSourceTest.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/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaSourceTest.java
library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspMediaSource.java
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/offline/SsDownloader.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultMediaSourceFactoryTest.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSourceTest.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/TimelineAsserts.java
demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java
View file @
a04f1d17
...
@@ -98,7 +98,7 @@ public class DownloadTracker {
...
@@ -98,7 +98,7 @@ public class DownloadTracker {
}
}
public
boolean
isDownloaded
(
MediaItem
mediaItem
)
{
public
boolean
isDownloaded
(
MediaItem
mediaItem
)
{
@Nullable
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
playbackProperties
).
uri
);
@Nullable
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
localConfiguration
).
uri
);
return
download
!=
null
&&
download
.
state
!=
Download
.
STATE_FAILED
;
return
download
!=
null
&&
download
.
state
!=
Download
.
STATE_FAILED
;
}
}
...
@@ -110,7 +110,7 @@ public class DownloadTracker {
...
@@ -110,7 +110,7 @@ public class DownloadTracker {
public
void
toggleDownload
(
public
void
toggleDownload
(
FragmentManager
fragmentManager
,
MediaItem
mediaItem
,
RenderersFactory
renderersFactory
)
{
FragmentManager
fragmentManager
,
MediaItem
mediaItem
,
RenderersFactory
renderersFactory
)
{
@Nullable
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
playbackProperties
).
uri
);
@Nullable
Download
download
=
downloads
.
get
(
checkNotNull
(
mediaItem
.
localConfiguration
).
uri
);
if
(
download
!=
null
&&
download
.
state
!=
Download
.
STATE_FAILED
)
{
if
(
download
!=
null
&&
download
.
state
!=
Download
.
STATE_FAILED
)
{
DownloadService
.
sendRemoveDownload
(
DownloadService
.
sendRemoveDownload
(
context
,
DemoDownloadService
.
class
,
download
.
request
.
id
,
/* foreground= */
false
);
context
,
DemoDownloadService
.
class
,
download
.
request
.
id
,
/* foreground= */
false
);
...
@@ -223,7 +223,7 @@ public class DownloadTracker {
...
@@ -223,7 +223,7 @@ public class DownloadTracker {
widevineOfflineLicenseFetchTask
=
widevineOfflineLicenseFetchTask
=
new
WidevineOfflineLicenseFetchTask
(
new
WidevineOfflineLicenseFetchTask
(
format
,
format
,
mediaItem
.
playbackProperties
.
drmConfiguration
,
mediaItem
.
localConfiguration
.
drmConfiguration
,
httpDataSourceFactory
,
httpDataSourceFactory
,
/* dialogHelper= */
this
,
/* dialogHelper= */
this
,
helper
);
helper
);
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java
View file @
a04f1d17
...
@@ -88,22 +88,22 @@ public class IntentUtil {
...
@@ -88,22 +88,22 @@ public class IntentUtil {
Assertions
.
checkArgument
(!
mediaItems
.
isEmpty
());
Assertions
.
checkArgument
(!
mediaItems
.
isEmpty
());
if
(
mediaItems
.
size
()
==
1
)
{
if
(
mediaItems
.
size
()
==
1
)
{
MediaItem
mediaItem
=
mediaItems
.
get
(
0
);
MediaItem
mediaItem
=
mediaItems
.
get
(
0
);
MediaItem
.
PlaybackProperties
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
MediaItem
.
LocalConfiguration
localConfiguration
=
checkNotNull
(
mediaItem
.
localConfiguration
);
intent
.
setAction
(
ACTION_VIEW
).
setData
(
mediaItem
.
playbackProperties
.
uri
);
intent
.
setAction
(
ACTION_VIEW
).
setData
(
mediaItem
.
localConfiguration
.
uri
);
if
(
mediaItem
.
mediaMetadata
.
title
!=
null
)
{
if
(
mediaItem
.
mediaMetadata
.
title
!=
null
)
{
intent
.
putExtra
(
TITLE_EXTRA
,
mediaItem
.
mediaMetadata
.
title
);
intent
.
putExtra
(
TITLE_EXTRA
,
mediaItem
.
mediaMetadata
.
title
);
}
}
addPlaybackPropertiesToIntent
(
playbackProperties
,
intent
,
/* extrasKeySuffix= */
""
);
addPlaybackPropertiesToIntent
(
localConfiguration
,
intent
,
/* extrasKeySuffix= */
""
);
addClippingPropertiesToIntent
(
addClippingPropertiesToIntent
(
mediaItem
.
clippingProperties
,
intent
,
/* extrasKeySuffix= */
""
);
mediaItem
.
clippingProperties
,
intent
,
/* extrasKeySuffix= */
""
);
}
else
{
}
else
{
intent
.
setAction
(
ACTION_VIEW_LIST
);
intent
.
setAction
(
ACTION_VIEW_LIST
);
for
(
int
i
=
0
;
i
<
mediaItems
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mediaItems
.
size
();
i
++)
{
MediaItem
mediaItem
=
mediaItems
.
get
(
i
);
MediaItem
mediaItem
=
mediaItems
.
get
(
i
);
MediaItem
.
PlaybackProperties
playbackProperties
=
MediaItem
.
LocalConfiguration
localConfiguration
=
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
intent
.
putExtra
(
URI_EXTRA
+
(
"_"
+
i
),
playbackProperties
.
uri
.
toString
());
intent
.
putExtra
(
URI_EXTRA
+
(
"_"
+
i
),
localConfiguration
.
uri
.
toString
());
addPlaybackPropertiesToIntent
(
playbackProperties
,
intent
,
/* extrasKeySuffix= */
"_"
+
i
);
addPlaybackPropertiesToIntent
(
localConfiguration
,
intent
,
/* extrasKeySuffix= */
"_"
+
i
);
addClippingPropertiesToIntent
(
addClippingPropertiesToIntent
(
mediaItem
.
clippingProperties
,
intent
,
/* extrasKeySuffix= */
"_"
+
i
);
mediaItem
.
clippingProperties
,
intent
,
/* extrasKeySuffix= */
"_"
+
i
);
if
(
mediaItem
.
mediaMetadata
.
title
!=
null
)
{
if
(
mediaItem
.
mediaMetadata
.
title
!=
null
)
{
...
@@ -185,20 +185,20 @@ public class IntentUtil {
...
@@ -185,20 +185,20 @@ public class IntentUtil {
}
}
private
static
void
addPlaybackPropertiesToIntent
(
private
static
void
addPlaybackPropertiesToIntent
(
MediaItem
.
PlaybackProperties
playbackProperties
,
Intent
intent
,
String
extrasKeySuffix
)
{
MediaItem
.
LocalConfiguration
localConfiguration
,
Intent
intent
,
String
extrasKeySuffix
)
{
intent
intent
.
putExtra
(
MIME_TYPE_EXTRA
+
extrasKeySuffix
,
playbackProperties
.
mimeType
)
.
putExtra
(
MIME_TYPE_EXTRA
+
extrasKeySuffix
,
localConfiguration
.
mimeType
)
.
putExtra
(
.
putExtra
(
AD_TAG_URI_EXTRA
+
extrasKeySuffix
,
AD_TAG_URI_EXTRA
+
extrasKeySuffix
,
playbackProperties
.
adsConfiguration
!=
null
localConfiguration
.
adsConfiguration
!=
null
?
playbackProperties
.
adsConfiguration
.
adTagUri
.
toString
()
?
localConfiguration
.
adsConfiguration
.
adTagUri
.
toString
()
:
null
);
:
null
);
if
(
playbackProperties
.
drmConfiguration
!=
null
)
{
if
(
localConfiguration
.
drmConfiguration
!=
null
)
{
addDrmConfigurationToIntent
(
playbackProperties
.
drmConfiguration
,
intent
,
extrasKeySuffix
);
addDrmConfigurationToIntent
(
localConfiguration
.
drmConfiguration
,
intent
,
extrasKeySuffix
);
}
}
if
(!
playbackProperties
.
subtitles
.
isEmpty
())
{
if
(!
localConfiguration
.
subtitles
.
isEmpty
())
{
checkState
(
playbackProperties
.
subtitles
.
size
()
==
1
);
checkState
(
localConfiguration
.
subtitles
.
size
()
==
1
);
MediaItem
.
Subtitle
subtitle
=
playbackProperties
.
subtitles
.
get
(
0
);
MediaItem
.
Subtitle
subtitle
=
localConfiguration
.
subtitles
.
get
(
0
);
intent
.
putExtra
(
SUBTITLE_URI_EXTRA
+
extrasKeySuffix
,
subtitle
.
uri
.
toString
());
intent
.
putExtra
(
SUBTITLE_URI_EXTRA
+
extrasKeySuffix
,
subtitle
.
uri
.
toString
());
intent
.
putExtra
(
SUBTITLE_MIME_TYPE_EXTRA
+
extrasKeySuffix
,
subtitle
.
mimeType
);
intent
.
putExtra
(
SUBTITLE_MIME_TYPE_EXTRA
+
extrasKeySuffix
,
subtitle
.
mimeType
);
intent
.
putExtra
(
SUBTITLE_LANGUAGE_EXTRA
+
extrasKeySuffix
,
subtitle
.
language
);
intent
.
putExtra
(
SUBTITLE_LANGUAGE_EXTRA
+
extrasKeySuffix
,
subtitle
.
language
);
...
...
demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java
View file @
a04f1d17
...
@@ -323,7 +323,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -323,7 +323,7 @@ public class PlayerActivity extends AppCompatActivity
}
}
MediaItem
.
DrmConfiguration
drmConfiguration
=
MediaItem
.
DrmConfiguration
drmConfiguration
=
checkNotNull
(
mediaItem
.
playbackProperties
).
drmConfiguration
;
checkNotNull
(
mediaItem
.
localConfiguration
).
drmConfiguration
;
if
(
drmConfiguration
!=
null
)
{
if
(
drmConfiguration
!=
null
)
{
if
(
Util
.
SDK_INT
<
18
)
{
if
(
Util
.
SDK_INT
<
18
)
{
showToast
(
R
.
string
.
error_drm_unsupported_before_api_18
);
showToast
(
R
.
string
.
error_drm_unsupported_before_api_18
);
...
@@ -335,7 +335,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -335,7 +335,7 @@ public class PlayerActivity extends AppCompatActivity
return
Collections
.
emptyList
();
return
Collections
.
emptyList
();
}
}
}
}
hasAds
|=
mediaItem
.
playbackProperties
.
adsConfiguration
!=
null
;
hasAds
|=
mediaItem
.
localConfiguration
.
adsConfiguration
!=
null
;
}
}
if
(!
hasAds
)
{
if
(!
hasAds
)
{
releaseAdsLoader
();
releaseAdsLoader
();
...
@@ -496,7 +496,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -496,7 +496,7 @@ public class PlayerActivity extends AppCompatActivity
for
(
MediaItem
item
:
IntentUtil
.
createMediaItemsFromIntent
(
intent
))
{
for
(
MediaItem
item
:
IntentUtil
.
createMediaItemsFromIntent
(
intent
))
{
@Nullable
@Nullable
DownloadRequest
downloadRequest
=
DownloadRequest
downloadRequest
=
downloadTracker
.
getDownloadRequest
(
checkNotNull
(
item
.
playbackProperties
).
uri
);
downloadTracker
.
getDownloadRequest
(
checkNotNull
(
item
.
localConfiguration
).
uri
);
if
(
downloadRequest
!=
null
)
{
if
(
downloadRequest
!=
null
)
{
MediaItem
.
Builder
builder
=
item
.
buildUpon
();
MediaItem
.
Builder
builder
=
item
.
buildUpon
();
builder
builder
...
@@ -506,7 +506,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -506,7 +506,7 @@ public class PlayerActivity extends AppCompatActivity
.
setMimeType
(
downloadRequest
.
mimeType
)
.
setMimeType
(
downloadRequest
.
mimeType
)
.
setStreamKeys
(
downloadRequest
.
streamKeys
);
.
setStreamKeys
(
downloadRequest
.
streamKeys
);
@Nullable
@Nullable
MediaItem
.
DrmConfiguration
drmConfiguration
=
item
.
playbackProperties
.
drmConfiguration
;
MediaItem
.
DrmConfiguration
drmConfiguration
=
item
.
localConfiguration
.
drmConfiguration
;
if
(
drmConfiguration
!=
null
)
{
if
(
drmConfiguration
!=
null
)
{
builder
.
setDrmConfiguration
(
builder
.
setDrmConfiguration
(
drmConfiguration
drmConfiguration
...
@@ -526,7 +526,7 @@ public class PlayerActivity extends AppCompatActivity
...
@@ -526,7 +526,7 @@ public class PlayerActivity extends AppCompatActivity
@Nullable
@Nullable
private
static
Map
<
String
,
String
>
getDrmRequestHeaders
(
MediaItem
item
)
{
private
static
Map
<
String
,
String
>
getDrmRequestHeaders
(
MediaItem
item
)
{
MediaItem
.
DrmConfiguration
drmConfiguration
=
item
.
playbackProperties
.
drmConfiguration
;
MediaItem
.
DrmConfiguration
drmConfiguration
=
item
.
localConfiguration
.
drmConfiguration
;
return
drmConfiguration
!=
null
?
drmConfiguration
.
licenseRequestHeaders
:
null
;
return
drmConfiguration
!=
null
?
drmConfiguration
.
licenseRequestHeaders
:
null
;
}
}
}
}
demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java
View file @
a04f1d17
...
@@ -249,12 +249,12 @@ public class SampleChooserActivity extends AppCompatActivity
...
@@ -249,12 +249,12 @@ public class SampleChooserActivity extends AppCompatActivity
if
(
playlistHolder
.
mediaItems
.
size
()
>
1
)
{
if
(
playlistHolder
.
mediaItems
.
size
()
>
1
)
{
return
R
.
string
.
download_playlist_unsupported
;
return
R
.
string
.
download_playlist_unsupported
;
}
}
MediaItem
.
PlaybackProperties
playbackProperties
=
MediaItem
.
LocalConfiguration
localConfiguration
=
checkNotNull
(
playlistHolder
.
mediaItems
.
get
(
0
).
playbackProperties
);
checkNotNull
(
playlistHolder
.
mediaItems
.
get
(
0
).
localConfiguration
);
if
(
playbackProperties
.
adsConfiguration
!=
null
)
{
if
(
localConfiguration
.
adsConfiguration
!=
null
)
{
return
R
.
string
.
download_ads_unsupported
;
return
R
.
string
.
download_ads_unsupported
;
}
}
String
scheme
=
playbackProperties
.
uri
.
getScheme
();
String
scheme
=
localConfiguration
.
uri
.
getScheme
();
if
(!(
"http"
.
equals
(
scheme
)
||
"https"
.
equals
(
scheme
)))
{
if
(!(
"http"
.
equals
(
scheme
)
||
"https"
.
equals
(
scheme
)))
{
return
R
.
string
.
download_scheme_unsupported
;
return
R
.
string
.
download_scheme_unsupported
;
}
}
...
...
docs/analytics.md
View file @
a04f1d17
...
@@ -215,7 +215,7 @@ new PlaybackStatsListener(
...
@@ -215,7 +215,7 @@ new PlaybackStatsListener(
/* keepHistory= */ false, (eventTime, playbackStats) -> {
/* keepHistory= */ false, (eventTime, playbackStats) -> {
Object mediaTag =
Object mediaTag =
eventTime.timeline.getWindow(eventTime.windowIndex, new Window())
eventTime.timeline.getWindow(eventTime.windowIndex, new Window())
.mediaItem.
playbackProperties
.tag;
.mediaItem.
localConfiguration
.tag;
// Report playbackStats with mediaTag metadata.
// Report playbackStats with mediaTag metadata.
});
});
~~~
~~~
...
...
docs/playlists.md
View file @
a04f1d17
...
@@ -124,8 +124,8 @@ custom tags, then an implementation might look like:
...
@@ -124,8 +124,8 @@ custom tags, then an implementation might look like:
public void onMediaItemTransition(
public void onMediaItemTransition(
@Nullable MediaItem mediaItem, @MediaItemTransitionReason int reason) {
@Nullable MediaItem mediaItem, @MediaItemTransitionReason int reason) {
@Nullable CustomMetadata metadata = null;
@Nullable CustomMetadata metadata = null;
if (mediaItem != null && mediaItem.
playbackProperties
!= null) {
if (mediaItem != null && mediaItem.
localConfiguration
!= null) {
metadata = (CustomMetadata) mediaItem.
playbackProperties
.tag;
metadata = (CustomMetadata) mediaItem.
localConfiguration
.tag;
}
}
updateUiForPlayingMediaItem(metadata);
updateUiForPlayingMediaItem(metadata);
}
}
...
...
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java
View file @
a04f1d17
...
@@ -52,8 +52,8 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
...
@@ -52,8 +52,8 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
@Override
@Override
public
MediaQueueItem
toMediaQueueItem
(
MediaItem
mediaItem
)
{
public
MediaQueueItem
toMediaQueueItem
(
MediaItem
mediaItem
)
{
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
Assertions
.
checkNotNull
(
mediaItem
.
localConfiguration
);
if
(
mediaItem
.
playbackProperties
.
mimeType
==
null
)
{
if
(
mediaItem
.
localConfiguration
.
mimeType
==
null
)
{
throw
new
IllegalArgumentException
(
"The item must specify its mimeType"
);
throw
new
IllegalArgumentException
(
"The item must specify its mimeType"
);
}
}
MediaMetadata
metadata
=
new
MediaMetadata
(
MediaMetadata
.
MEDIA_TYPE_MOVIE
);
MediaMetadata
metadata
=
new
MediaMetadata
(
MediaMetadata
.
MEDIA_TYPE_MOVIE
);
...
@@ -61,9 +61,9 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
...
@@ -61,9 +61,9 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
metadata
.
putString
(
MediaMetadata
.
KEY_TITLE
,
mediaItem
.
mediaMetadata
.
title
.
toString
());
metadata
.
putString
(
MediaMetadata
.
KEY_TITLE
,
mediaItem
.
mediaMetadata
.
title
.
toString
());
}
}
MediaInfo
mediaInfo
=
MediaInfo
mediaInfo
=
new
MediaInfo
.
Builder
(
mediaItem
.
playbackProperties
.
uri
.
toString
())
new
MediaInfo
.
Builder
(
mediaItem
.
localConfiguration
.
uri
.
toString
())
.
setStreamType
(
MediaInfo
.
STREAM_TYPE_BUFFERED
)
.
setStreamType
(
MediaInfo
.
STREAM_TYPE_BUFFERED
)
.
setContentType
(
mediaItem
.
playbackProperties
.
mimeType
)
.
setContentType
(
mediaItem
.
localConfiguration
.
mimeType
)
.
setMetadata
(
metadata
)
.
setMetadata
(
metadata
)
.
setCustomData
(
getCustomData
(
mediaItem
))
.
setCustomData
(
getCustomData
(
mediaItem
))
.
build
();
.
build
();
...
@@ -128,15 +128,15 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
...
@@ -128,15 +128,15 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
}
}
private
static
JSONObject
getMediaItemJson
(
MediaItem
mediaItem
)
throws
JSONException
{
private
static
JSONObject
getMediaItemJson
(
MediaItem
mediaItem
)
throws
JSONException
{
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
Assertions
.
checkNotNull
(
mediaItem
.
localConfiguration
);
JSONObject
json
=
new
JSONObject
();
JSONObject
json
=
new
JSONObject
();
json
.
put
(
KEY_TITLE
,
mediaItem
.
mediaMetadata
.
title
);
json
.
put
(
KEY_TITLE
,
mediaItem
.
mediaMetadata
.
title
);
json
.
put
(
KEY_URI
,
mediaItem
.
playbackProperties
.
uri
.
toString
());
json
.
put
(
KEY_URI
,
mediaItem
.
localConfiguration
.
uri
.
toString
());
json
.
put
(
KEY_MIME_TYPE
,
mediaItem
.
playbackProperties
.
mimeType
);
json
.
put
(
KEY_MIME_TYPE
,
mediaItem
.
localConfiguration
.
mimeType
);
if
(
mediaItem
.
playbackProperties
.
drmConfiguration
!=
null
)
{
if
(
mediaItem
.
localConfiguration
.
drmConfiguration
!=
null
)
{
json
.
put
(
json
.
put
(
KEY_DRM_CONFIGURATION
,
KEY_DRM_CONFIGURATION
,
getDrmConfigurationJson
(
mediaItem
.
playbackProperties
.
drmConfiguration
));
getDrmConfigurationJson
(
mediaItem
.
localConfiguration
.
drmConfiguration
));
}
}
return
json
;
return
json
;
}
}
...
@@ -152,11 +152,11 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
...
@@ -152,11 +152,11 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
@Nullable
@Nullable
private
static
JSONObject
getPlayerConfigJson
(
MediaItem
mediaItem
)
throws
JSONException
{
private
static
JSONObject
getPlayerConfigJson
(
MediaItem
mediaItem
)
throws
JSONException
{
if
(
mediaItem
.
playbackProperties
==
null
if
(
mediaItem
.
localConfiguration
==
null
||
mediaItem
.
playbackProperties
.
drmConfiguration
==
null
)
{
||
mediaItem
.
localConfiguration
.
drmConfiguration
==
null
)
{
return
null
;
return
null
;
}
}
MediaItem
.
DrmConfiguration
drmConfiguration
=
mediaItem
.
playbackProperties
.
drmConfiguration
;
MediaItem
.
DrmConfiguration
drmConfiguration
=
mediaItem
.
localConfiguration
.
drmConfiguration
;
String
drmScheme
;
String
drmScheme
;
if
(
C
.
WIDEVINE_UUID
.
equals
(
drmConfiguration
.
scheme
))
{
if
(
C
.
WIDEVINE_UUID
.
equals
(
drmConfiguration
.
scheme
))
{
...
...
extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/CastPlayerTest.java
View file @
a04f1d17
...
@@ -423,7 +423,7 @@ public class CastPlayerTest {
...
@@ -423,7 +423,7 @@ public class CastPlayerTest {
.
onMediaItemTransition
(
.
onMediaItemTransition
(
mediaItemCaptor
.
capture
(),
eq
(
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
mediaItemCaptor
.
capture
(),
eq
(
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
assertThat
(
mediaItemCaptor
.
getAllValues
().
get
(
1
).
playbackProperties
.
tag
).
isEqualTo
(
3
);
assertThat
(
mediaItemCaptor
.
getAllValues
().
get
(
1
).
localConfiguration
.
tag
).
isEqualTo
(
3
);
}
}
@SuppressWarnings
(
"deprecation"
)
// Verifies deprecated callback being called correctly.
@SuppressWarnings
(
"deprecation"
)
// Verifies deprecated callback being called correctly.
...
@@ -533,7 +533,7 @@ public class CastPlayerTest {
...
@@ -533,7 +533,7 @@ public class CastPlayerTest {
verify
(
mockRemoteMediaClient
)
verify
(
mockRemoteMediaClient
)
.
queueInsertItems
(
.
queueInsertItems
(
queueItemsArgumentCaptor
.
capture
(),
queueItemsArgumentCaptor
.
capture
(),
eq
((
int
)
mediaItems
.
get
(
index
).
playbackProperties
.
tag
),
eq
((
int
)
mediaItems
.
get
(
index
).
localConfiguration
.
tag
),
any
());
any
());
MediaQueueItem
[]
mediaQueueItems
=
queueItemsArgumentCaptor
.
getValue
();
MediaQueueItem
[]
mediaQueueItems
=
queueItemsArgumentCaptor
.
getValue
();
...
@@ -677,7 +677,7 @@ public class CastPlayerTest {
...
@@ -677,7 +677,7 @@ public class CastPlayerTest {
Timeline
currentTimeline
=
castPlayer
.
getCurrentTimeline
();
Timeline
currentTimeline
=
castPlayer
.
getCurrentTimeline
();
for
(
int
i
=
0
;
i
<
mediaItems
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mediaItems
.
size
();
i
++)
{
assertThat
(
currentTimeline
.
getWindow
(
/* windowIndex= */
i
,
window
).
uid
)
assertThat
(
currentTimeline
.
getWindow
(
/* windowIndex= */
i
,
window
).
uid
)
.
isEqualTo
(
mediaItems
.
get
(
i
).
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItems
.
get
(
i
).
localConfiguration
.
tag
);
}
}
}
}
...
@@ -696,8 +696,8 @@ public class CastPlayerTest {
...
@@ -696,8 +696,8 @@ public class CastPlayerTest {
.
onMediaItemTransition
(
.
onMediaItemTransition
(
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
assertThat
(
mediaItemCaptor
.
getValue
().
playbackProperties
.
tag
)
assertThat
(
mediaItemCaptor
.
getValue
().
localConfiguration
.
tag
)
.
isEqualTo
(
mediaItem
.
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItem
.
localConfiguration
.
tag
);
}
}
@Test
@Test
...
@@ -801,10 +801,10 @@ public class CastPlayerTest {
...
@@ -801,10 +801,10 @@ public class CastPlayerTest {
.
onMediaItemTransition
(
.
onMediaItemTransition
(
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
assertThat
(
mediaItemCaptor
.
getAllValues
().
get
(
0
).
playbackProperties
.
tag
)
assertThat
(
mediaItemCaptor
.
getAllValues
().
get
(
0
).
localConfiguration
.
tag
)
.
isEqualTo
(
mediaItem1
.
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItem1
.
localConfiguration
.
tag
);
assertThat
(
mediaItemCaptor
.
getAllValues
().
get
(
1
).
playbackProperties
.
tag
)
assertThat
(
mediaItemCaptor
.
getAllValues
().
get
(
1
).
localConfiguration
.
tag
)
.
isEqualTo
(
mediaItem2
.
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItem2
.
localConfiguration
.
tag
);
}
}
@Test
@Test
...
@@ -886,10 +886,10 @@ public class CastPlayerTest {
...
@@ -886,10 +886,10 @@ public class CastPlayerTest {
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_PLAYLIST_CHANGED
));
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
List
<
MediaItem
>
capturedMediaItems
=
mediaItemCaptor
.
getAllValues
();
List
<
MediaItem
>
capturedMediaItems
=
mediaItemCaptor
.
getAllValues
();
assertThat
(
capturedMediaItems
.
get
(
0
).
playbackProperties
.
tag
)
assertThat
(
capturedMediaItems
.
get
(
0
).
localConfiguration
.
tag
)
.
isEqualTo
(
mediaItem1
.
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItem1
.
localConfiguration
.
tag
);
assertThat
(
capturedMediaItems
.
get
(
1
).
playbackProperties
.
tag
)
assertThat
(
capturedMediaItems
.
get
(
1
).
localConfiguration
.
tag
)
.
isEqualTo
(
mediaItem2
.
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItem2
.
localConfiguration
.
tag
);
}
}
@Test
@Test
...
@@ -1012,8 +1012,8 @@ public class CastPlayerTest {
...
@@ -1012,8 +1012,8 @@ public class CastPlayerTest {
.
onMediaItemTransition
(
.
onMediaItemTransition
(
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_SEEK
));
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_SEEK
));
inOrder
.
verify
(
mockListener
,
never
()).
onPositionDiscontinuity
(
any
(),
any
(),
anyInt
());
inOrder
.
verify
(
mockListener
,
never
()).
onPositionDiscontinuity
(
any
(),
any
(),
anyInt
());
assertThat
(
mediaItemCaptor
.
getValue
().
playbackProperties
.
tag
)
assertThat
(
mediaItemCaptor
.
getValue
().
localConfiguration
.
tag
)
.
isEqualTo
(
mediaItem2
.
playbackProperties
.
tag
);
.
isEqualTo
(
mediaItem2
.
localConfiguration
.
tag
);
}
}
@Test
@Test
...
@@ -1144,7 +1144,7 @@ public class CastPlayerTest {
...
@@ -1144,7 +1144,7 @@ public class CastPlayerTest {
.
onMediaItemTransition
(
.
onMediaItemTransition
(
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_AUTO
));
mediaItemCaptor
.
capture
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_AUTO
));
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
inOrder
.
verify
(
mockListener
,
never
()).
onMediaItemTransition
(
any
(),
anyInt
());
assertThat
(
mediaItemCaptor
.
getValue
().
playbackProperties
.
tag
).
isEqualTo
(
2
);
assertThat
(
mediaItemCaptor
.
getValue
().
localConfiguration
.
tag
).
isEqualTo
(
2
);
}
}
@Test
@Test
...
@@ -1788,9 +1788,9 @@ public class CastPlayerTest {
...
@@ -1788,9 +1788,9 @@ public class CastPlayerTest {
int
streamType
=
streamTypes
[
i
];
int
streamType
=
streamTypes
[
i
];
long
durationMs
=
durationsMs
[
i
];
long
durationMs
=
durationsMs
[
i
];
MediaInfo
.
Builder
mediaInfoBuilder
=
MediaInfo
.
Builder
mediaInfoBuilder
=
new
MediaInfo
.
Builder
(
mediaItem
.
playbackProperties
.
uri
.
toString
())
new
MediaInfo
.
Builder
(
mediaItem
.
localConfiguration
.
uri
.
toString
())
.
setStreamType
(
streamType
)
.
setStreamType
(
streamType
)
.
setContentType
(
mediaItem
.
playbackProperties
.
mimeType
);
.
setContentType
(
mediaItem
.
localConfiguration
.
mimeType
);
if
(
durationMs
!=
C
.
TIME_UNSET
)
{
if
(
durationMs
!=
C
.
TIME_UNSET
)
{
mediaInfoBuilder
.
setStreamDuration
(
durationMs
);
mediaInfoBuilder
.
setStreamDuration
(
durationMs
);
}
}
...
...
extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/DefaultMediaItemConverter.java
View file @
a04f1d17
...
@@ -96,10 +96,10 @@ public class DefaultMediaItemConverter implements MediaItemConverter {
...
@@ -96,10 +96,10 @@ public class DefaultMediaItemConverter implements MediaItemConverter {
@Override
@Override
public
androidx
.
media2
.
common
.
MediaItem
convertToMedia2MediaItem
(
MediaItem
exoPlayerMediaItem
)
{
public
androidx
.
media2
.
common
.
MediaItem
convertToMedia2MediaItem
(
MediaItem
exoPlayerMediaItem
)
{
Assertions
.
checkNotNull
(
exoPlayerMediaItem
);
Assertions
.
checkNotNull
(
exoPlayerMediaItem
);
MediaItem
.
PlaybackProperties
playbackProperties
=
MediaItem
.
LocalConfiguration
localConfiguration
=
Assertions
.
checkNotNull
(
exoPlayerMediaItem
.
playbackProperties
);
Assertions
.
checkNotNull
(
exoPlayerMediaItem
.
localConfiguration
);
@Nullable
Object
tag
=
playbackProperties
.
tag
;
@Nullable
Object
tag
=
localConfiguration
.
tag
;
if
(
tag
instanceof
androidx
.
media2
.
common
.
MediaItem
)
{
if
(
tag
instanceof
androidx
.
media2
.
common
.
MediaItem
)
{
return
(
androidx
.
media2
.
common
.
MediaItem
)
tag
;
return
(
androidx
.
media2
.
common
.
MediaItem
)
tag
;
}
}
...
...
library/common/src/main/java/com/google/android/exoplayer2/Timeline.java
View file @
a04f1d17
...
@@ -272,8 +272,8 @@ public abstract class Timeline implements Bundleable {
...
@@ -272,8 +272,8 @@ public abstract class Timeline implements Bundleable {
this
.
uid
=
uid
;
this
.
uid
=
uid
;
this
.
mediaItem
=
mediaItem
!=
null
?
mediaItem
:
EMPTY_MEDIA_ITEM
;
this
.
mediaItem
=
mediaItem
!=
null
?
mediaItem
:
EMPTY_MEDIA_ITEM
;
this
.
tag
=
this
.
tag
=
mediaItem
!=
null
&&
mediaItem
.
playbackProperties
!=
null
mediaItem
!=
null
&&
mediaItem
.
localConfiguration
!=
null
?
mediaItem
.
playbackProperties
.
tag
?
mediaItem
.
localConfiguration
.
tag
:
null
;
:
null
;
this
.
manifest
=
manifest
;
this
.
manifest
=
manifest
;
this
.
presentationStartTimeMs
=
presentationStartTimeMs
;
this
.
presentationStartTimeMs
=
presentationStartTimeMs
;
...
...
library/common/src/main/java/com/google/android/exoplayer2/util/Util.java
View file @
a04f1d17
...
@@ -227,14 +227,14 @@ public final class Util {
...
@@ -227,14 +227,14 @@ public final class Util {
return
false
;
return
false
;
}
}
for
(
MediaItem
mediaItem
:
mediaItems
)
{
for
(
MediaItem
mediaItem
:
mediaItems
)
{
if
(
mediaItem
.
playbackProperties
==
null
)
{
if
(
mediaItem
.
localConfiguration
==
null
)
{
continue
;
continue
;
}
}
if
(
isLocalFileUri
(
mediaItem
.
playbackProperties
.
uri
))
{
if
(
isLocalFileUri
(
mediaItem
.
localConfiguration
.
uri
))
{
return
requestExternalStoragePermission
(
activity
);
return
requestExternalStoragePermission
(
activity
);
}
}
for
(
int
i
=
0
;
i
<
mediaItem
.
playbackProperties
.
subtitles
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mediaItem
.
localConfiguration
.
subtitles
.
size
();
i
++)
{
if
(
isLocalFileUri
(
mediaItem
.
playbackProperties
.
subtitles
.
get
(
i
).
uri
))
{
if
(
isLocalFileUri
(
mediaItem
.
localConfiguration
.
subtitles
.
get
(
i
).
uri
))
{
return
requestExternalStoragePermission
(
activity
);
return
requestExternalStoragePermission
(
activity
);
}
}
}
}
...
@@ -255,14 +255,14 @@ public final class Util {
...
@@ -255,14 +255,14 @@ public final class Util {
return
true
;
return
true
;
}
}
for
(
MediaItem
mediaItem
:
mediaItems
)
{
for
(
MediaItem
mediaItem
:
mediaItems
)
{
if
(
mediaItem
.
playbackProperties
==
null
)
{
if
(
mediaItem
.
localConfiguration
==
null
)
{
continue
;
continue
;
}
}
if
(
isTrafficRestricted
(
mediaItem
.
playbackProperties
.
uri
))
{
if
(
isTrafficRestricted
(
mediaItem
.
localConfiguration
.
uri
))
{
return
false
;
return
false
;
}
}
for
(
int
i
=
0
;
i
<
mediaItem
.
playbackProperties
.
subtitles
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mediaItem
.
localConfiguration
.
subtitles
.
size
();
i
++)
{
if
(
isTrafficRestricted
(
mediaItem
.
playbackProperties
.
subtitles
.
get
(
i
).
uri
))
{
if
(
isTrafficRestricted
(
mediaItem
.
localConfiguration
.
subtitles
.
get
(
i
).
uri
))
{
return
false
;
return
false
;
}
}
}
}
...
...
library/common/src/test/java/com/google/android/exoplayer2/TimelineTest.java
View file @
a04f1d17
...
@@ -122,7 +122,7 @@ public class TimelineTest {
...
@@ -122,7 +122,7 @@ public class TimelineTest {
otherWindow
.
positionInFirstPeriodUs
=
C
.
TIME_UNSET
;
otherWindow
.
positionInFirstPeriodUs
=
C
.
TIME_UNSET
;
assertThat
(
window
).
isNotEqualTo
(
otherWindow
);
assertThat
(
window
).
isNotEqualTo
(
otherWindow
);
window
=
populateWindow
(
mediaItem
,
mediaItem
.
playbackProperties
.
tag
);
window
=
populateWindow
(
mediaItem
,
mediaItem
.
localConfiguration
.
tag
);
otherWindow
=
otherWindow
=
otherWindow
.
set
(
otherWindow
.
set
(
window
.
uid
,
window
.
uid
,
...
...
library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.java
View file @
a04f1d17
...
@@ -74,9 +74,9 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
...
@@ -74,9 +74,9 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
@Override
@Override
public
DrmSessionManager
get
(
MediaItem
mediaItem
)
{
public
DrmSessionManager
get
(
MediaItem
mediaItem
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
@Nullable
@Nullable
MediaItem
.
DrmConfiguration
drmConfiguration
=
mediaItem
.
playbackProperties
.
drmConfiguration
;
MediaItem
.
DrmConfiguration
drmConfiguration
=
mediaItem
.
localConfiguration
.
drmConfiguration
;
if
(
drmConfiguration
==
null
||
Util
.
SDK_INT
<
18
)
{
if
(
drmConfiguration
==
null
||
Util
.
SDK_INT
<
18
)
{
return
DrmSessionManager
.
DRM_UNSUPPORTED
;
return
DrmSessionManager
.
DRM_UNSUPPORTED
;
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadHelper.java
View file @
a04f1d17
...
@@ -321,7 +321,7 @@ public final class DownloadHelper {
...
@@ -321,7 +321,7 @@ public final class DownloadHelper {
* @throws IllegalStateException If the media item is of type DASH, HLS or SmoothStreaming.
* @throws IllegalStateException If the media item is of type DASH, HLS or SmoothStreaming.
*/
*/
public
static
DownloadHelper
forMediaItem
(
Context
context
,
MediaItem
mediaItem
)
{
public
static
DownloadHelper
forMediaItem
(
Context
context
,
MediaItem
mediaItem
)
{
Assertions
.
checkArgument
(
isProgressive
(
checkNotNull
(
mediaItem
.
playbackProperties
)));
Assertions
.
checkArgument
(
isProgressive
(
checkNotNull
(
mediaItem
.
localConfiguration
)));
return
forMediaItem
(
return
forMediaItem
(
mediaItem
,
mediaItem
,
getDefaultTrackSelectorParameters
(
context
),
getDefaultTrackSelectorParameters
(
context
),
...
@@ -411,7 +411,7 @@ public final class DownloadHelper {
...
@@ -411,7 +411,7 @@ public final class DownloadHelper {
@Nullable
RenderersFactory
renderersFactory
,
@Nullable
RenderersFactory
renderersFactory
,
@Nullable
DataSource
.
Factory
dataSourceFactory
,
@Nullable
DataSource
.
Factory
dataSourceFactory
,
@Nullable
DrmSessionManager
drmSessionManager
)
{
@Nullable
DrmSessionManager
drmSessionManager
)
{
boolean
isProgressive
=
isProgressive
(
checkNotNull
(
mediaItem
.
playbackProperties
));
boolean
isProgressive
=
isProgressive
(
checkNotNull
(
mediaItem
.
localConfiguration
));
Assertions
.
checkArgument
(
isProgressive
||
dataSourceFactory
!=
null
);
Assertions
.
checkArgument
(
isProgressive
||
dataSourceFactory
!=
null
);
return
new
DownloadHelper
(
return
new
DownloadHelper
(
mediaItem
,
mediaItem
,
...
@@ -452,7 +452,7 @@ public final class DownloadHelper {
...
@@ -452,7 +452,7 @@ public final class DownloadHelper {
downloadRequest
.
toMediaItem
(),
dataSourceFactory
,
drmSessionManager
);
downloadRequest
.
toMediaItem
(),
dataSourceFactory
,
drmSessionManager
);
}
}
private
final
MediaItem
.
PlaybackProperties
playbackProperties
;
private
final
MediaItem
.
LocalConfiguration
localConfiguration
;
@Nullable
private
final
MediaSource
mediaSource
;
@Nullable
private
final
MediaSource
mediaSource
;
private
final
DefaultTrackSelector
trackSelector
;
private
final
DefaultTrackSelector
trackSelector
;
private
final
RendererCapabilities
[]
rendererCapabilities
;
private
final
RendererCapabilities
[]
rendererCapabilities
;
...
@@ -485,7 +485,7 @@ public final class DownloadHelper {
...
@@ -485,7 +485,7 @@ public final class DownloadHelper {
@Nullable
MediaSource
mediaSource
,
@Nullable
MediaSource
mediaSource
,
DefaultTrackSelector
.
Parameters
trackSelectorParameters
,
DefaultTrackSelector
.
Parameters
trackSelectorParameters
,
RendererCapabilities
[]
rendererCapabilities
)
{
RendererCapabilities
[]
rendererCapabilities
)
{
this
.
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
this
.
localConfiguration
=
checkNotNull
(
mediaItem
.
localConfiguration
);
this
.
mediaSource
=
mediaSource
;
this
.
mediaSource
=
mediaSource
;
this
.
trackSelector
=
this
.
trackSelector
=
new
DefaultTrackSelector
(
trackSelectorParameters
,
new
DownloadTrackSelection
.
Factory
());
new
DefaultTrackSelector
(
trackSelectorParameters
,
new
DownloadTrackSelection
.
Factory
());
...
@@ -726,7 +726,7 @@ public final class DownloadHelper {
...
@@ -726,7 +726,7 @@ public final class DownloadHelper {
* @return The built {@link DownloadRequest}.
* @return The built {@link DownloadRequest}.
*/
*/
public
DownloadRequest
getDownloadRequest
(
@Nullable
byte
[]
data
)
{
public
DownloadRequest
getDownloadRequest
(
@Nullable
byte
[]
data
)
{
return
getDownloadRequest
(
playbackProperties
.
uri
.
toString
(),
data
);
return
getDownloadRequest
(
localConfiguration
.
uri
.
toString
(),
data
);
}
}
/**
/**
...
@@ -739,13 +739,13 @@ public final class DownloadHelper {
...
@@ -739,13 +739,13 @@ public final class DownloadHelper {
*/
*/
public
DownloadRequest
getDownloadRequest
(
String
id
,
@Nullable
byte
[]
data
)
{
public
DownloadRequest
getDownloadRequest
(
String
id
,
@Nullable
byte
[]
data
)
{
DownloadRequest
.
Builder
requestBuilder
=
DownloadRequest
.
Builder
requestBuilder
=
new
DownloadRequest
.
Builder
(
id
,
playbackProperties
.
uri
)
new
DownloadRequest
.
Builder
(
id
,
localConfiguration
.
uri
)
.
setMimeType
(
playbackProperties
.
mimeType
)
.
setMimeType
(
localConfiguration
.
mimeType
)
.
setKeySetId
(
.
setKeySetId
(
playbackProperties
.
drmConfiguration
!=
null
localConfiguration
.
drmConfiguration
!=
null
?
playbackProperties
.
drmConfiguration
.
getKeySetId
()
?
localConfiguration
.
drmConfiguration
.
getKeySetId
()
:
null
)
:
null
)
.
setCustomCacheKey
(
playbackProperties
.
customCacheKey
)
.
setCustomCacheKey
(
localConfiguration
.
customCacheKey
)
.
setData
(
data
);
.
setData
(
data
);
if
(
mediaSource
==
null
)
{
if
(
mediaSource
==
null
)
{
return
requestBuilder
.
build
();
return
requestBuilder
.
build
();
...
@@ -896,9 +896,9 @@ public final class DownloadHelper {
...
@@ -896,9 +896,9 @@ public final class DownloadHelper {
.
createMediaSource
(
mediaItem
);
.
createMediaSource
(
mediaItem
);
}
}
private
static
boolean
isProgressive
(
MediaItem
.
PlaybackProperties
playbackProperties
)
{
private
static
boolean
isProgressive
(
MediaItem
.
LocalConfiguration
localConfiguration
)
{
return
Util
.
inferContentTypeForUriAndMimeType
(
return
Util
.
inferContentTypeForUriAndMimeType
(
playbackProperties
.
uri
,
playbackProperties
.
mimeType
)
localConfiguration
.
uri
,
localConfiguration
.
mimeType
)
==
C
.
TYPE_OTHER
;
==
C
.
TYPE_OTHER
;
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/offline/ProgressiveDownloader.java
View file @
a04f1d17
...
@@ -69,11 +69,11 @@ public final class ProgressiveDownloader implements Downloader {
...
@@ -69,11 +69,11 @@ public final class ProgressiveDownloader implements Downloader {
public
ProgressiveDownloader
(
public
ProgressiveDownloader
(
MediaItem
mediaItem
,
CacheDataSource
.
Factory
cacheDataSourceFactory
,
Executor
executor
)
{
MediaItem
mediaItem
,
CacheDataSource
.
Factory
cacheDataSourceFactory
,
Executor
executor
)
{
this
.
executor
=
Assertions
.
checkNotNull
(
executor
);
this
.
executor
=
Assertions
.
checkNotNull
(
executor
);
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
Assertions
.
checkNotNull
(
mediaItem
.
localConfiguration
);
dataSpec
=
dataSpec
=
new
DataSpec
.
Builder
()
new
DataSpec
.
Builder
()
.
setUri
(
mediaItem
.
playbackProperties
.
uri
)
.
setUri
(
mediaItem
.
localConfiguration
.
uri
)
.
setKey
(
mediaItem
.
playbackProperties
.
customCacheKey
)
.
setKey
(
mediaItem
.
localConfiguration
.
customCacheKey
)
.
setFlags
(
DataSpec
.
FLAG_ALLOW_CACHE_FRAGMENTATION
)
.
setFlags
(
DataSpec
.
FLAG_ALLOW_CACHE_FRAGMENTATION
)
.
build
();
.
build
();
dataSource
=
cacheDataSourceFactory
.
createDataSourceForDownloading
();
dataSource
=
cacheDataSourceFactory
.
createDataSourceForDownloading
();
...
...
library/core/src/main/java/com/google/android/exoplayer2/offline/SegmentDownloader.java
View file @
a04f1d17
...
@@ -110,10 +110,10 @@ public abstract class SegmentDownloader<M extends FilterableManifest<M>> impleme
...
@@ -110,10 +110,10 @@ public abstract class SegmentDownloader<M extends FilterableManifest<M>> impleme
Parser
<
M
>
manifestParser
,
Parser
<
M
>
manifestParser
,
CacheDataSource
.
Factory
cacheDataSourceFactory
,
CacheDataSource
.
Factory
cacheDataSourceFactory
,
Executor
executor
)
{
Executor
executor
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
this
.
manifestDataSpec
=
getCompressibleDataSpec
(
mediaItem
.
playbackProperties
.
uri
);
this
.
manifestDataSpec
=
getCompressibleDataSpec
(
mediaItem
.
localConfiguration
.
uri
);
this
.
manifestParser
=
manifestParser
;
this
.
manifestParser
=
manifestParser
;
this
.
streamKeys
=
new
ArrayList
<>(
mediaItem
.
playbackProperties
.
streamKeys
);
this
.
streamKeys
=
new
ArrayList
<>(
mediaItem
.
localConfiguration
.
streamKeys
);
this
.
cacheDataSourceFactory
=
cacheDataSourceFactory
;
this
.
cacheDataSourceFactory
=
cacheDataSourceFactory
;
this
.
executor
=
executor
;
this
.
executor
=
executor
;
cache
=
Assertions
.
checkNotNull
(
cacheDataSourceFactory
.
getCache
());
cache
=
Assertions
.
checkNotNull
(
cacheDataSourceFactory
.
getCache
());
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java
View file @
a04f1d17
...
@@ -54,23 +54,23 @@ import java.util.List;
...
@@ -54,23 +54,23 @@ import java.util.List;
* factories:
* factories:
*
*
* <ul>
* <ul>
* <li>{@code DashMediaSource.Factory} if the item's {@link MediaItem.
PlaybackProperties
#uri uri}
* <li>{@code DashMediaSource.Factory} if the item's {@link MediaItem.
LocalConfiguration
#uri uri}
* ends in '.mpd' or if its {@link MediaItem.
PlaybackProperties
#mimeType mimeType field} is
* ends in '.mpd' or if its {@link MediaItem.
LocalConfiguration
#mimeType mimeType field} is
* explicitly set to {@link MimeTypes#APPLICATION_MPD} (Requires the <a
* explicitly set to {@link MimeTypes#APPLICATION_MPD} (Requires the <a
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-dash module
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-dash module
* to be added</a> to the app).
* to be added</a> to the app).
* <li>{@code HlsMediaSource.Factory} if the item's {@link MediaItem.
PlaybackProperties
#uri uri}
* <li>{@code HlsMediaSource.Factory} if the item's {@link MediaItem.
LocalConfiguration
#uri uri}
* ends in '.m3u8' or if its {@link MediaItem.
PlaybackProperties
#mimeType mimeType field} is
* ends in '.m3u8' or if its {@link MediaItem.
LocalConfiguration
#mimeType mimeType field} is
* explicitly set to {@link MimeTypes#APPLICATION_M3U8} (Requires the <a
* explicitly set to {@link MimeTypes#APPLICATION_M3U8} (Requires the <a
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-hls module to
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">exoplayer-hls module to
* be added</a> to the app).
* be added</a> to the app).
* <li>{@code SsMediaSource.Factory} if the item's {@link MediaItem.
PlaybackProperties
#uri uri}
* <li>{@code SsMediaSource.Factory} if the item's {@link MediaItem.
LocalConfiguration
#uri uri}
* ends in '.ism', '.ism/Manifest' or if its {@link MediaItem.
PlaybackProperties
#mimeType
* ends in '.ism', '.ism/Manifest' or if its {@link MediaItem.
LocalConfiguration
#mimeType
* mimeType field} is explicitly set to {@link MimeTypes#APPLICATION_SS} (Requires the <a
* mimeType field} is explicitly set to {@link MimeTypes#APPLICATION_SS} (Requires the <a
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">
* href="https://exoplayer.dev/hello-world.html#add-exoplayer-modules">
* exoplayer-smoothstreaming module to be added</a> to the app).
* exoplayer-smoothstreaming module to be added</a> to the app).
* <li>{@link ProgressiveMediaSource.Factory} serves as a fallback if the item's {@link
* <li>{@link ProgressiveMediaSource.Factory} serves as a fallback if the item's {@link
* MediaItem.
PlaybackProperties
#uri uri} doesn't match one of the above. It tries to infer the
* MediaItem.
LocalConfiguration
#uri uri} doesn't match one of the above. It tries to infer the
* required extractor by using the {@link DefaultExtractorsFactory} or the {@link
* required extractor by using the {@link DefaultExtractorsFactory} or the {@link
* ExtractorsFactory} provided in the constructor. An {@link UnrecognizedInputFormatException}
* ExtractorsFactory} provided in the constructor. An {@link UnrecognizedInputFormatException}
* is thrown if none of the available extractors can read the stream.
* is thrown if none of the available extractors can read the stream.
...
@@ -78,7 +78,7 @@ import java.util.List;
...
@@ -78,7 +78,7 @@ import java.util.List;
*
*
* <h2>Ad support for media items with ad tag URIs</h2>
* <h2>Ad support for media items with ad tag URIs</h2>
*
*
* <p>To support media items with {@link MediaItem.
PlaybackProperties
#adsConfiguration ads
* <p>To support media items with {@link MediaItem.
LocalConfiguration
#adsConfiguration ads
* configuration}, {@link #setAdsLoaderProvider} and {@link #setAdViewProvider} need to be called to
* configuration}, {@link #setAdsLoaderProvider} and {@link #setAdViewProvider} need to be called to
* configure the factory with the required providers.
* configure the factory with the required providers.
*/
*/
...
@@ -86,17 +86,17 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -86,17 +86,17 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
/**
/**
* Provides {@link AdsLoader} instances for media items that have {@link
* Provides {@link AdsLoader} instances for media items that have {@link
* MediaItem.
PlaybackProperties
#adsConfiguration ad tag URIs}.
* MediaItem.
LocalConfiguration
#adsConfiguration ad tag URIs}.
*/
*/
public
interface
AdsLoaderProvider
{
public
interface
AdsLoaderProvider
{
/**
/**
* Returns an {@link AdsLoader} for the given {@link
* Returns an {@link AdsLoader} for the given {@link
* MediaItem.
PlaybackProperties
#adsConfiguration ads configuration}, or {@code null} if no ads
* MediaItem.
LocalConfiguration
#adsConfiguration ads configuration}, or {@code null} if no ads
* loader is available for the given ads configuration.
* loader is available for the given ads configuration.
*
*
* <p>This method is called each time a {@link MediaSource} is created from a {@link MediaItem}
* <p>This method is called each time a {@link MediaSource} is created from a {@link MediaItem}
* that defines an {@link MediaItem.
PlaybackProperties
#adsConfiguration ads configuration}.
* that defines an {@link MediaItem.
LocalConfiguration
#adsConfiguration ads configuration}.
*/
*/
@Nullable
@Nullable
AdsLoader
getAdsLoader
(
MediaItem
.
AdsConfiguration
adsConfiguration
);
AdsLoader
getAdsLoader
(
MediaItem
.
AdsConfiguration
adsConfiguration
);
...
@@ -173,7 +173,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -173,7 +173,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
/**
/**
* Sets whether a {@link ProgressiveMediaSource} or {@link SingleSampleMediaSource} is constructed
* Sets whether a {@link ProgressiveMediaSource} or {@link SingleSampleMediaSource} is constructed
* to handle {@link MediaItem.
PlaybackProperties
#subtitles}. Defaults to false (i.e. {@link
* to handle {@link MediaItem.
LocalConfiguration
#subtitles}. Defaults to false (i.e. {@link
* SingleSampleMediaSource}.
* SingleSampleMediaSource}.
*
*
* <p>This method is experimental, and will be renamed or removed in a future release.
* <p>This method is experimental, and will be renamed or removed in a future release.
...
@@ -190,7 +190,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -190,7 +190,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
/**
/**
* Sets the {@link AdsLoaderProvider} that provides {@link AdsLoader} instances for media items
* Sets the {@link AdsLoaderProvider} that provides {@link AdsLoader} instances for media items
* that have {@link MediaItem.
PlaybackProperties
#adsConfiguration ads configurations}.
* that have {@link MediaItem.
LocalConfiguration
#adsConfiguration ads configurations}.
*
*
* @param adsLoaderProvider A provider for {@link AdsLoader} instances.
* @param adsLoaderProvider A provider for {@link AdsLoader} instances.
* @return This factory, for convenience.
* @return This factory, for convenience.
...
@@ -341,11 +341,11 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -341,11 +341,11 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
@Override
@Override
public
MediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
public
MediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
Assertions
.
checkNotNull
(
mediaItem
.
localConfiguration
);
@C
.
ContentType
@C
.
ContentType
int
type
=
int
type
=
Util
.
inferContentTypeForUriAndMimeType
(
Util
.
inferContentTypeForUriAndMimeType
(
mediaItem
.
playbackProperties
.
uri
,
mediaItem
.
playbackProperties
.
mimeType
);
mediaItem
.
localConfiguration
.
uri
,
mediaItem
.
localConfiguration
.
mimeType
);
@Nullable
MediaSourceFactory
mediaSourceFactory
=
mediaSourceFactories
.
get
(
type
);
@Nullable
MediaSourceFactory
mediaSourceFactory
=
mediaSourceFactories
.
get
(
type
);
Assertions
.
checkNotNull
(
Assertions
.
checkNotNull
(
mediaSourceFactory
,
"No suitable media source factory found for content type: "
+
type
);
mediaSourceFactory
,
"No suitable media source factory found for content type: "
+
type
);
...
@@ -375,7 +375,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -375,7 +375,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
MediaSource
mediaSource
=
mediaSourceFactory
.
createMediaSource
(
mediaItem
);
MediaSource
mediaSource
=
mediaSourceFactory
.
createMediaSource
(
mediaItem
);
List
<
MediaItem
.
Subtitle
>
subtitles
=
castNonNull
(
mediaItem
.
playbackProperties
).
subtitles
;
List
<
MediaItem
.
Subtitle
>
subtitles
=
castNonNull
(
mediaItem
.
localConfiguration
).
subtitles
;
if
(!
subtitles
.
isEmpty
())
{
if
(!
subtitles
.
isEmpty
())
{
MediaSource
[]
mediaSources
=
new
MediaSource
[
subtitles
.
size
()
+
1
];
MediaSource
[]
mediaSources
=
new
MediaSource
[
subtitles
.
size
()
+
1
];
mediaSources
[
0
]
=
mediaSource
;
mediaSources
[
0
]
=
mediaSource
;
...
@@ -434,9 +434,9 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -434,9 +434,9 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
}
}
private
MediaSource
maybeWrapWithAdsMediaSource
(
MediaItem
mediaItem
,
MediaSource
mediaSource
)
{
private
MediaSource
maybeWrapWithAdsMediaSource
(
MediaItem
mediaItem
,
MediaSource
mediaSource
)
{
Assertions
.
checkNotNull
(
mediaItem
.
playbackProperties
);
Assertions
.
checkNotNull
(
mediaItem
.
localConfiguration
);
@Nullable
@Nullable
MediaItem
.
AdsConfiguration
adsConfiguration
=
mediaItem
.
playbackProperties
.
adsConfiguration
;
MediaItem
.
AdsConfiguration
adsConfiguration
=
mediaItem
.
localConfiguration
.
adsConfiguration
;
if
(
adsConfiguration
==
null
)
{
if
(
adsConfiguration
==
null
)
{
return
mediaSource
;
return
mediaSource
;
}
}
...
@@ -460,7 +460,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -460,7 +460,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
/* adsId= */
adsConfiguration
.
adsId
!=
null
/* adsId= */
adsConfiguration
.
adsId
!=
null
?
adsConfiguration
.
adsId
?
adsConfiguration
.
adsId
:
ImmutableList
.
of
(
:
ImmutableList
.
of
(
mediaItem
.
mediaId
,
mediaItem
.
playbackProperties
.
uri
,
adsConfiguration
.
adTagUri
),
mediaItem
.
mediaId
,
mediaItem
.
localConfiguration
.
uri
,
adsConfiguration
.
adTagUri
),
/* adMediaSourceFactory= */
this
,
/* adMediaSourceFactory= */
this
,
adsLoader
,
adsLoader
,
adViewProvider
);
adViewProvider
);
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceFactory.java
View file @
a04f1d17
...
@@ -34,7 +34,7 @@ import java.util.List;
...
@@ -34,7 +34,7 @@ import java.util.List;
/** Factory for creating {@link MediaSource MediaSources} from {@link MediaItem MediaItems}. */
/** Factory for creating {@link MediaSource MediaSources} from {@link MediaItem MediaItems}. */
public
interface
MediaSourceFactory
{
public
interface
MediaSourceFactory
{
/** @deprecated Use {@link MediaItem.
PlaybackProperties
#streamKeys} instead. */
/** @deprecated Use {@link MediaItem.
LocalConfiguration
#streamKeys} instead. */
@Deprecated
@Deprecated
default
MediaSourceFactory
setStreamKeys
(
@Nullable
List
<
StreamKey
>
streamKeys
)
{
default
MediaSourceFactory
setStreamKeys
(
@Nullable
List
<
StreamKey
>
streamKeys
)
{
return
this
;
return
this
;
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java
View file @
a04f1d17
...
@@ -215,14 +215,14 @@ public final class ProgressiveMediaSource extends BaseMediaSource
...
@@ -215,14 +215,14 @@ public final class ProgressiveMediaSource extends BaseMediaSource
*
*
* @param mediaItem The {@link MediaItem}.
* @param mediaItem The {@link MediaItem}.
* @return The new {@link ProgressiveMediaSource}.
* @return The new {@link ProgressiveMediaSource}.
* @throws NullPointerException if {@link MediaItem#
playbackProperties
} is {@code null}.
* @throws NullPointerException if {@link MediaItem#
localConfiguration
} is {@code null}.
*/
*/
@Override
@Override
public
ProgressiveMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
public
ProgressiveMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
boolean
needsTag
=
mediaItem
.
playbackProperties
.
tag
==
null
&&
tag
!=
null
;
boolean
needsTag
=
mediaItem
.
localConfiguration
.
tag
==
null
&&
tag
!=
null
;
boolean
needsCustomCacheKey
=
boolean
needsCustomCacheKey
=
mediaItem
.
playbackProperties
.
customCacheKey
==
null
&&
customCacheKey
!=
null
;
mediaItem
.
localConfiguration
.
customCacheKey
==
null
&&
customCacheKey
!=
null
;
if
(
needsTag
&&
needsCustomCacheKey
)
{
if
(
needsTag
&&
needsCustomCacheKey
)
{
mediaItem
=
mediaItem
.
buildUpon
().
setTag
(
tag
).
setCustomCacheKey
(
customCacheKey
).
build
();
mediaItem
=
mediaItem
.
buildUpon
().
setTag
(
tag
).
setCustomCacheKey
(
customCacheKey
).
build
();
}
else
if
(
needsTag
)
{
}
else
if
(
needsTag
)
{
...
@@ -252,7 +252,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
...
@@ -252,7 +252,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
public
static
final
int
DEFAULT_LOADING_CHECK_INTERVAL_BYTES
=
1024
*
1024
;
public
static
final
int
DEFAULT_LOADING_CHECK_INTERVAL_BYTES
=
1024
*
1024
;
private
final
MediaItem
mediaItem
;
private
final
MediaItem
mediaItem
;
private
final
MediaItem
.
PlaybackProperties
playbackProperties
;
private
final
MediaItem
.
LocalConfiguration
localConfiguration
;
private
final
DataSource
.
Factory
dataSourceFactory
;
private
final
DataSource
.
Factory
dataSourceFactory
;
private
final
ProgressiveMediaExtractor
.
Factory
progressiveMediaExtractorFactory
;
private
final
ProgressiveMediaExtractor
.
Factory
progressiveMediaExtractorFactory
;
private
final
DrmSessionManager
drmSessionManager
;
private
final
DrmSessionManager
drmSessionManager
;
...
@@ -272,7 +272,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
...
@@ -272,7 +272,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
DrmSessionManager
drmSessionManager
,
DrmSessionManager
drmSessionManager
,
LoadErrorHandlingPolicy
loadableLoadErrorHandlingPolicy
,
LoadErrorHandlingPolicy
loadableLoadErrorHandlingPolicy
,
int
continueLoadingCheckIntervalBytes
)
{
int
continueLoadingCheckIntervalBytes
)
{
this
.
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
this
.
localConfiguration
=
checkNotNull
(
mediaItem
.
localConfiguration
);
this
.
mediaItem
=
mediaItem
;
this
.
mediaItem
=
mediaItem
;
this
.
dataSourceFactory
=
dataSourceFactory
;
this
.
dataSourceFactory
=
dataSourceFactory
;
this
.
progressiveMediaExtractorFactory
=
progressiveMediaExtractorFactory
;
this
.
progressiveMediaExtractorFactory
=
progressiveMediaExtractorFactory
;
...
@@ -307,7 +307,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
...
@@ -307,7 +307,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
dataSource
.
addTransferListener
(
transferListener
);
dataSource
.
addTransferListener
(
transferListener
);
}
}
return
new
ProgressiveMediaPeriod
(
return
new
ProgressiveMediaPeriod
(
playbackProperties
.
uri
,
localConfiguration
.
uri
,
dataSource
,
dataSource
,
progressiveMediaExtractorFactory
.
createProgressiveMediaExtractor
(),
progressiveMediaExtractorFactory
.
createProgressiveMediaExtractor
(),
drmSessionManager
,
drmSessionManager
,
...
@@ -316,7 +316,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
...
@@ -316,7 +316,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource
createEventDispatcher
(
id
),
createEventDispatcher
(
id
),
this
,
this
,
allocator
,
allocator
,
playbackProperties
.
customCacheKey
,
localConfiguration
.
customCacheKey
,
continueLoadingCheckIntervalBytes
);
continueLoadingCheckIntervalBytes
);
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java
View file @
a04f1d17
...
@@ -58,8 +58,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
...
@@ -58,8 +58,7 @@ public final class SilenceMediaSource extends BaseMediaSource {
/**
/**
* Sets a tag for the media source which will be published in the {@link
* Sets a tag for the media source which will be published in the {@link
* com.google.android.exoplayer2.Timeline} of the source as {@link
* com.google.android.exoplayer2.Timeline} of the source as {@link
* com.google.android.exoplayer2.MediaItem.PlaybackProperties#tag
* MediaItem.LocalConfiguration#tag Window#mediaItem.localConfiguration.tag}.
* Window#mediaItem.playbackProperties.tag}.
*
*
* @param tag A tag for the media source.
* @param tag A tag for the media source.
* @return This factory, for convenience.
* @return This factory, for convenience.
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java
View file @
a04f1d17
...
@@ -61,8 +61,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
...
@@ -61,8 +61,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
/**
/**
* Sets a tag for the media source which will be published in the {@link Timeline} of the source
* Sets a tag for the media source which will be published in the {@link Timeline} of the source
* as {@link com.google.android.exoplayer2.MediaItem.PlaybackProperties#tag
* as {@link MediaItem.LocalConfiguration#tag Window#mediaItem.localConfiguration.tag}.
* Window#mediaItem.playbackProperties.tag}.
*
*
* @param tag A tag for the media source.
* @param tag A tag for the media source.
* @return This factory, for convenience.
* @return This factory, for convenience.
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java
View file @
a04f1d17
...
@@ -314,10 +314,10 @@ public final class AdsMediaSource extends CompositeMediaSource<MediaPeriodId> {
...
@@ -314,10 +314,10 @@ public final class AdsMediaSource extends CompositeMediaSource<MediaPeriodId> {
MediaItem
.
Builder
adMediaItem
=
new
MediaItem
.
Builder
().
setUri
(
adUri
);
MediaItem
.
Builder
adMediaItem
=
new
MediaItem
.
Builder
().
setUri
(
adUri
);
// Propagate the content's DRM config into the ad media source.
// Propagate the content's DRM config into the ad media source.
@Nullable
@Nullable
MediaItem
.
PlaybackProperties
contentPlaybackProperties
=
MediaItem
.
LocalConfiguration
contentLocalConfiguration
=
contentMediaSource
.
getMediaItem
().
playbackProperties
;
contentMediaSource
.
getMediaItem
().
localConfiguration
;
if
(
content
PlaybackProperties
!=
null
)
{
if
(
content
LocalConfiguration
!=
null
)
{
adMediaItem
.
setDrmConfiguration
(
content
PlaybackProperties
.
drmConfiguration
);
adMediaItem
.
setDrmConfiguration
(
content
LocalConfiguration
.
drmConfiguration
);
}
}
MediaSource
adMediaSource
=
adMediaSourceFactory
.
createMediaSource
(
adMediaItem
.
build
());
MediaSource
adMediaSource
=
adMediaSourceFactory
.
createMediaSource
(
adMediaItem
.
build
());
adMediaSourceHolder
.
initializeWithMediaSource
(
adMediaSource
,
adUri
);
adMediaSourceHolder
.
initializeWithMediaSource
(
adMediaSource
,
adUri
);
...
...
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
View file @
a04f1d17
...
@@ -7953,11 +7953,11 @@ public final class ExoPlayerTest {
...
@@ -7953,11 +7953,11 @@ public final class ExoPlayerTest {
.
blockUntilActionScheduleFinished
(
TIMEOUT_MS
)
.
blockUntilActionScheduleFinished
(
TIMEOUT_MS
)
.
blockUntilEnded
(
TIMEOUT_MS
);
.
blockUntilEnded
(
TIMEOUT_MS
);
assertThat
(
currentMediaItems
.
get
(
0
).
playbackProperties
.
uri
.
toString
())
assertThat
(
currentMediaItems
.
get
(
0
).
localConfiguration
.
uri
.
toString
())
.
isEqualTo
(
"http://foo.bar/fake1"
);
.
isEqualTo
(
"http://foo.bar/fake1"
);
assertThat
(
currentMediaItems
.
get
(
1
).
playbackProperties
.
uri
.
toString
())
assertThat
(
currentMediaItems
.
get
(
1
).
localConfiguration
.
uri
.
toString
())
.
isEqualTo
(
"http://foo.bar/fake2"
);
.
isEqualTo
(
"http://foo.bar/fake2"
);
assertThat
(
currentMediaItems
.
get
(
2
).
playbackProperties
.
uri
.
toString
())
assertThat
(
currentMediaItems
.
get
(
2
).
localConfiguration
.
uri
.
toString
())
.
isEqualTo
(
"http://foo.bar/fake3"
);
.
isEqualTo
(
"http://foo.bar/fake3"
);
assertThat
(
mediaItemsInTimeline
).
containsExactlyElementsIn
(
currentMediaItems
);
assertThat
(
mediaItemsInTimeline
).
containsExactlyElementsIn
(
currentMediaItems
);
}
}
...
@@ -9767,7 +9767,7 @@ public final class ExoPlayerTest {
...
@@ -9767,7 +9767,7 @@ public final class ExoPlayerTest {
assertThat
(
oldPositionInfo
.
periodUid
).
isEqualTo
(
newPositionInfo
.
periodUid
);
assertThat
(
oldPositionInfo
.
periodUid
).
isEqualTo
(
newPositionInfo
.
periodUid
);
assertThat
(
oldPositionInfo
.
periodIndex
).
isEqualTo
(
newPositionInfo
.
periodIndex
);
assertThat
(
oldPositionInfo
.
periodIndex
).
isEqualTo
(
newPositionInfo
.
periodIndex
);
assertThat
(
oldPositionInfo
.
windowIndex
).
isEqualTo
(
newPositionInfo
.
windowIndex
);
assertThat
(
oldPositionInfo
.
windowIndex
).
isEqualTo
(
newPositionInfo
.
windowIndex
);
assertThat
(
oldPositionInfo
.
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
1
);
assertThat
(
oldPositionInfo
.
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
1
);
assertThat
(
oldPositionInfo
.
windowUid
).
isEqualTo
(
newPositionInfo
.
windowUid
);
assertThat
(
oldPositionInfo
.
windowUid
).
isEqualTo
(
newPositionInfo
.
windowUid
);
assertThat
(
oldPositionInfo
.
positionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPositionInfo
.
positionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPositionInfo
.
contentPositionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPositionInfo
.
contentPositionMs
).
isEqualTo
(
10_000
);
...
@@ -9789,7 +9789,7 @@ public final class ExoPlayerTest {
...
@@ -9789,7 +9789,7 @@ public final class ExoPlayerTest {
assertThat
(
oldPositionInfo
.
periodUid
).
isEqualTo
(
newPositionInfo
.
periodUid
);
assertThat
(
oldPositionInfo
.
periodUid
).
isEqualTo
(
newPositionInfo
.
periodUid
);
assertThat
(
oldPositionInfo
.
periodIndex
).
isEqualTo
(
newPositionInfo
.
periodIndex
);
assertThat
(
oldPositionInfo
.
periodIndex
).
isEqualTo
(
newPositionInfo
.
periodIndex
);
assertThat
(
oldPositionInfo
.
windowIndex
).
isEqualTo
(
newPositionInfo
.
windowIndex
);
assertThat
(
oldPositionInfo
.
windowIndex
).
isEqualTo
(
newPositionInfo
.
windowIndex
);
assertThat
(
oldPositionInfo
.
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
1
);
assertThat
(
oldPositionInfo
.
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
1
);
assertThat
(
oldPositionInfo
.
windowUid
).
isEqualTo
(
newPositionInfo
.
windowUid
);
assertThat
(
oldPositionInfo
.
windowUid
).
isEqualTo
(
newPositionInfo
.
windowUid
);
assertThat
(
oldPositionInfo
.
positionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPositionInfo
.
positionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPositionInfo
.
contentPositionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPositionInfo
.
contentPositionMs
).
isEqualTo
(
10_000
);
...
@@ -9809,7 +9809,7 @@ public final class ExoPlayerTest {
...
@@ -9809,7 +9809,7 @@ public final class ExoPlayerTest {
oldPositionInfo
=
oldPosition
.
getValue
();
oldPositionInfo
=
oldPosition
.
getValue
();
newPositionInfo
=
newPosition
.
getValue
();
newPositionInfo
=
newPosition
.
getValue
();
assertThat
(
oldPositionInfo
.
windowIndex
).
isEqualTo
(
1
);
assertThat
(
oldPositionInfo
.
windowIndex
).
isEqualTo
(
1
);
assertThat
(
oldPositionInfo
.
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
2
);
assertThat
(
oldPositionInfo
.
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
2
);
assertThat
(
oldPositionInfo
.
windowUid
).
isNotEqualTo
(
newPositionInfo
.
windowUid
);
assertThat
(
oldPositionInfo
.
windowUid
).
isNotEqualTo
(
newPositionInfo
.
windowUid
);
assertThat
(
oldPositionInfo
.
positionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPositionInfo
.
positionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPositionInfo
.
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPositionInfo
.
contentPositionMs
).
isEqualTo
(
20_000
);
...
@@ -10131,7 +10131,7 @@ public final class ExoPlayerTest {
...
@@ -10131,7 +10131,7 @@ public final class ExoPlayerTest {
assertThat
(
oldPosition
.
getValue
().
windowUid
)
assertThat
(
oldPosition
.
getValue
().
windowUid
)
.
isEqualTo
(
player
.
getCurrentTimeline
().
getWindow
(
0
,
window
).
uid
);
.
isEqualTo
(
player
.
getCurrentTimeline
().
getWindow
(
0
,
window
).
uid
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
10_000
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
...
@@ -10139,7 +10139,7 @@ public final class ExoPlayerTest {
...
@@ -10139,7 +10139,7 @@ public final class ExoPlayerTest {
assertThat
(
newPosition
.
getValue
().
windowUid
)
assertThat
(
newPosition
.
getValue
().
windowUid
)
.
isEqualTo
(
player
.
getCurrentTimeline
().
getWindow
(
1
,
window
).
uid
);
.
isEqualTo
(
player
.
getCurrentTimeline
().
getWindow
(
1
,
window
).
uid
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
1
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
1
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
...
@@ -10159,13 +10159,13 @@ public final class ExoPlayerTest {
...
@@ -10159,13 +10159,13 @@ public final class ExoPlayerTest {
assertThat
(
newPosition
.
getValue
().
windowUid
)
assertThat
(
newPosition
.
getValue
().
windowUid
)
.
isEqualTo
(
player
.
getCurrentTimeline
().
getWindow
(
2
,
window
).
uid
);
.
isEqualTo
(
player
.
getCurrentTimeline
().
getWindow
(
2
,
window
).
uid
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
1
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
1
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
15_000
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
15_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
15_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
15_000
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
...
@@ -10179,14 +10179,14 @@ public final class ExoPlayerTest {
...
@@ -10179,14 +10179,14 @@ public final class ExoPlayerTest {
newPosition
.
capture
(),
newPosition
.
capture
(),
eq
(
Player
.
DISCONTINUITY_REASON_AUTO_TRANSITION
));
eq
(
Player
.
DISCONTINUITY_REASON_AUTO_TRANSITION
));
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
...
@@ -10201,14 +10201,14 @@ public final class ExoPlayerTest {
...
@@ -10201,14 +10201,14 @@ public final class ExoPlayerTest {
eq
(
Player
.
DISCONTINUITY_REASON_AUTO_TRANSITION
));
eq
(
Player
.
DISCONTINUITY_REASON_AUTO_TRANSITION
));
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
5_000
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
5_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
windowUid
).
isEqualTo
(
oldPosition
.
getValue
().
windowUid
);
assertThat
(
newPosition
.
getValue
().
windowUid
).
isEqualTo
(
oldPosition
.
getValue
().
windowUid
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
19_999
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
19_999
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
19_999
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
19_999
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
...
@@ -10226,14 +10226,14 @@ public final class ExoPlayerTest {
...
@@ -10226,14 +10226,14 @@ public final class ExoPlayerTest {
.
onMediaItemTransition
(
any
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_AUTO
));
.
onMediaItemTransition
(
any
(),
eq
(
Player
.
MEDIA_ITEM_TRANSITION_REASON_AUTO
));
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
2
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-2"
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
20_000
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(-
1
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
windowUid
).
isNotEqualTo
(
oldPosition
.
getValue
().
windowUid
);
assertThat
(
newPosition
.
getValue
().
windowUid
).
isNotEqualTo
(
oldPosition
.
getValue
().
windowUid
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
3
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
3
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-3"
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-3"
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
...
@@ -10248,14 +10248,14 @@ public final class ExoPlayerTest {
...
@@ -10248,14 +10248,14 @@ public final class ExoPlayerTest {
eq
(
Player
.
DISCONTINUITY_REASON_AUTO_TRANSITION
));
eq
(
Player
.
DISCONTINUITY_REASON_AUTO_TRANSITION
));
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowUid
).
isEqualTo
(
lastNewWindowUid
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
3
);
assertThat
(
oldPosition
.
getValue
().
windowIndex
).
isEqualTo
(
3
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-3"
);
assertThat
(
oldPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-3"
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
5_000
);
assertThat
(
oldPosition
.
getValue
().
positionMs
).
isEqualTo
(
5_000
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(
0
);
assertThat
(
oldPosition
.
getValue
().
adIndexInAdGroup
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
windowUid
).
isEqualTo
(
oldPosition
.
getValue
().
windowUid
);
assertThat
(
newPosition
.
getValue
().
windowUid
).
isEqualTo
(
oldPosition
.
getValue
().
windowUid
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
3
);
assertThat
(
newPosition
.
getValue
().
windowIndex
).
isEqualTo
(
3
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-3"
);
assertThat
(
newPosition
.
getValue
().
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-3"
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
positionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
contentPositionMs
).
isEqualTo
(
0
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
assertThat
(
newPosition
.
getValue
().
adGroupIndex
).
isEqualTo
(-
1
);
...
@@ -10379,14 +10379,14 @@ public final class ExoPlayerTest {
...
@@ -10379,14 +10379,14 @@ public final class ExoPlayerTest {
any
(),
newPositionArgumentCaptor
.
capture
(),
eq
(
Player
.
DISCONTINUITY_REASON_REMOVE
));
any
(),
newPositionArgumentCaptor
.
capture
(),
eq
(
Player
.
DISCONTINUITY_REASON_REMOVE
));
// The state at auto-transition event time.
// The state at auto-transition event time.
assertThat
(
mediaItemCount
[
0
]).
isEqualTo
(
2
);
assertThat
(
mediaItemCount
[
0
]).
isEqualTo
(
2
);
assertThat
(
currentMediaItems
[
0
].
playbackProperties
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
currentMediaItems
[
0
].
localConfiguration
.
tag
).
isEqualTo
(
"id-1"
);
// The masked state after id-1 has been removed.
// The masked state after id-1 has been removed.
assertThat
(
mediaItemCount
[
1
]).
isEqualTo
(
1
);
assertThat
(
mediaItemCount
[
1
]).
isEqualTo
(
1
);
assertThat
(
currentMediaItems
[
1
].
playbackProperties
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
currentMediaItems
[
1
].
localConfiguration
.
tag
).
isEqualTo
(
"id-0"
);
// PositionInfo reports the media item at event time.
// PositionInfo reports the media item at event time.
assertThat
(
newPositionArgumentCaptor
.
getAllValues
().
get
(
0
).
mediaItem
.
playbackProperties
.
tag
)
assertThat
(
newPositionArgumentCaptor
.
getAllValues
().
get
(
0
).
mediaItem
.
localConfiguration
.
tag
)
.
isEqualTo
(
"id-1"
);
.
isEqualTo
(
"id-1"
);
assertThat
(
newPositionArgumentCaptor
.
getAllValues
().
get
(
1
).
mediaItem
.
playbackProperties
.
tag
)
assertThat
(
newPositionArgumentCaptor
.
getAllValues
().
get
(
1
).
mediaItem
.
localConfiguration
.
tag
)
.
isEqualTo
(
"id-0"
);
.
isEqualTo
(
"id-0"
);
player
.
release
();
player
.
release
();
}
}
...
@@ -10717,20 +10717,20 @@ public final class ExoPlayerTest {
...
@@ -10717,20 +10717,20 @@ public final class ExoPlayerTest {
List
<
Player
.
PositionInfo
>
newPositions
=
newPosition
.
getAllValues
();
List
<
Player
.
PositionInfo
>
newPositions
=
newPosition
.
getAllValues
();
assertThat
(
oldPositions
.
get
(
0
).
windowUid
).
isEqualTo
(
newPositions
.
get
(
0
).
windowUid
);
assertThat
(
oldPositions
.
get
(
0
).
windowUid
).
isEqualTo
(
newPositions
.
get
(
0
).
windowUid
);
assertThat
(
newPositions
.
get
(
0
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
newPositions
.
get
(
0
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
newPositions
.
get
(
0
).
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
newPositions
.
get
(
0
).
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
oldPositions
.
get
(
0
).
positionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
positionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
contentPositionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
contentPositionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPositions
.
get
(
0
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPositions
.
get
(
0
).
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
oldPositions
.
get
(
0
).
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
newPositions
.
get
(
0
).
positionMs
).
isEqualTo
(
7_000
);
assertThat
(
newPositions
.
get
(
0
).
positionMs
).
isEqualTo
(
7_000
);
assertThat
(
newPositions
.
get
(
0
).
contentPositionMs
).
isEqualTo
(
7_000
);
assertThat
(
newPositions
.
get
(
0
).
contentPositionMs
).
isEqualTo
(
7_000
);
assertThat
(
oldPositions
.
get
(
1
).
windowUid
).
isNotEqualTo
(
newPositions
.
get
(
1
).
windowUid
);
assertThat
(
oldPositions
.
get
(
1
).
windowUid
).
isNotEqualTo
(
newPositions
.
get
(
1
).
windowUid
);
assertThat
(
oldPositions
.
get
(
1
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPositions
.
get
(
1
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPositions
.
get
(
1
).
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
oldPositions
.
get
(
1
).
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-0"
);
assertThat
(
oldPositions
.
get
(
1
).
positionMs
).
isEqualTo
(
7_000
);
assertThat
(
oldPositions
.
get
(
1
).
positionMs
).
isEqualTo
(
7_000
);
assertThat
(
oldPositions
.
get
(
1
).
contentPositionMs
).
isEqualTo
(
7_000
);
assertThat
(
oldPositions
.
get
(
1
).
contentPositionMs
).
isEqualTo
(
7_000
);
assertThat
(
newPositions
.
get
(
1
).
windowIndex
).
isEqualTo
(
1
);
assertThat
(
newPositions
.
get
(
1
).
windowIndex
).
isEqualTo
(
1
);
assertThat
(
newPositions
.
get
(
1
).
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
newPositions
.
get
(
1
).
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
"id-1"
);
assertThat
(
newPositions
.
get
(
1
).
positionMs
).
isEqualTo
(
1_000
);
assertThat
(
newPositions
.
get
(
1
).
positionMs
).
isEqualTo
(
1_000
);
assertThat
(
newPositions
.
get
(
1
).
contentPositionMs
).
isEqualTo
(
1_000
);
assertThat
(
newPositions
.
get
(
1
).
contentPositionMs
).
isEqualTo
(
1_000
);
player
.
release
();
player
.
release
();
...
@@ -11032,7 +11032,7 @@ public final class ExoPlayerTest {
...
@@ -11032,7 +11032,7 @@ public final class ExoPlayerTest {
List
<
Player
.
PositionInfo
>
oldPositions
=
oldPosition
.
getAllValues
();
List
<
Player
.
PositionInfo
>
oldPositions
=
oldPosition
.
getAllValues
();
List
<
Player
.
PositionInfo
>
newPositions
=
newPosition
.
getAllValues
();
List
<
Player
.
PositionInfo
>
newPositions
=
newPosition
.
getAllValues
();
assertThat
(
oldPositions
.
get
(
0
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPositions
.
get
(
0
).
windowIndex
).
isEqualTo
(
0
);
assertThat
(
oldPositions
.
get
(
0
).
mediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
123
);
assertThat
(
oldPositions
.
get
(
0
).
mediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
123
);
assertThat
(
oldPositions
.
get
(
0
).
positionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
positionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
contentPositionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
oldPositions
.
get
(
0
).
contentPositionMs
).
isIn
(
Range
.
closed
(
4980L
,
5000L
));
assertThat
(
newPositions
.
get
(
0
).
windowUid
).
isNull
();
assertThat
(
newPositions
.
get
(
0
).
windowUid
).
isNull
();
...
...
library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadHelperTest.java
View file @
a04f1d17
...
@@ -400,10 +400,10 @@ public class DownloadHelperTest {
...
@@ -400,10 +400,10 @@ public class DownloadHelperTest {
DownloadRequest
downloadRequest
=
downloadHelper
.
getDownloadRequest
(
data
);
DownloadRequest
downloadRequest
=
downloadHelper
.
getDownloadRequest
(
data
);
assertThat
(
downloadRequest
.
uri
).
isEqualTo
(
testMediaItem
.
playbackProperties
.
uri
);
assertThat
(
downloadRequest
.
uri
).
isEqualTo
(
testMediaItem
.
localConfiguration
.
uri
);
assertThat
(
downloadRequest
.
mimeType
).
isEqualTo
(
testMediaItem
.
playbackProperties
.
mimeType
);
assertThat
(
downloadRequest
.
mimeType
).
isEqualTo
(
testMediaItem
.
localConfiguration
.
mimeType
);
assertThat
(
downloadRequest
.
customCacheKey
)
assertThat
(
downloadRequest
.
customCacheKey
)
.
isEqualTo
(
testMediaItem
.
playbackProperties
.
customCacheKey
);
.
isEqualTo
(
testMediaItem
.
localConfiguration
.
customCacheKey
);
assertThat
(
downloadRequest
.
data
).
isEqualTo
(
data
);
assertThat
(
downloadRequest
.
data
).
isEqualTo
(
data
);
assertThat
(
downloadRequest
.
streamKeys
)
assertThat
(
downloadRequest
.
streamKeys
)
.
containsExactly
(
.
containsExactly
(
...
...
library/core/src/test/java/com/google/android/exoplayer2/source/SilenceMediaSourceTest.java
View file @
a04f1d17
...
@@ -38,8 +38,8 @@ public class SilenceMediaSourceTest {
...
@@ -38,8 +38,8 @@ public class SilenceMediaSourceTest {
assertThat
(
mediaItem
).
isNotNull
();
assertThat
(
mediaItem
).
isNotNull
();
assertThat
(
mediaItem
.
mediaId
).
isEqualTo
(
SilenceMediaSource
.
MEDIA_ID
);
assertThat
(
mediaItem
.
mediaId
).
isEqualTo
(
SilenceMediaSource
.
MEDIA_ID
);
assertThat
(
mediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
Uri
.
EMPTY
);
assertThat
(
mediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
Uri
.
EMPTY
);
assertThat
(
mediaItem
.
playbackProperties
.
mimeType
).
isEqualTo
(
MimeTypes
.
AUDIO_RAW
);
assertThat
(
mediaItem
.
localConfiguration
.
mimeType
).
isEqualTo
(
MimeTypes
.
AUDIO_RAW
);
}
}
@Test
@Test
...
@@ -49,7 +49,7 @@ public class SilenceMediaSourceTest {
...
@@ -49,7 +49,7 @@ public class SilenceMediaSourceTest {
SilenceMediaSource
mediaSource
=
SilenceMediaSource
mediaSource
=
new
SilenceMediaSource
.
Factory
().
setTag
(
tag
).
setDurationUs
(
1_000_000
).
createMediaSource
();
new
SilenceMediaSource
.
Factory
().
setTag
(
tag
).
setDurationUs
(
1_000_000
).
createMediaSource
();
assertThat
(
mediaSource
.
getMediaItem
().
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
mediaSource
.
getMediaItem
().
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
@Test
@Test
...
@@ -59,7 +59,7 @@ public class SilenceMediaSourceTest {
...
@@ -59,7 +59,7 @@ public class SilenceMediaSourceTest {
SilenceMediaSource
mediaSource
=
SilenceMediaSource
mediaSource
=
new
SilenceMediaSource
.
Factory
().
setTag
(
tag
).
setDurationUs
(
1_000_000
).
createMediaSource
();
new
SilenceMediaSource
.
Factory
().
setTag
(
tag
).
setDurationUs
(
1_000_000
).
createMediaSource
();
assertThat
(
mediaSource
.
getMediaItem
().
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
mediaSource
.
getMediaItem
().
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
@Test
@Test
...
@@ -82,7 +82,7 @@ public class SilenceMediaSourceTest {
...
@@ -82,7 +82,7 @@ public class SilenceMediaSourceTest {
assertThat
(
mediaItem
).
isNotNull
();
assertThat
(
mediaItem
).
isNotNull
();
assertThat
(
mediaItem
.
mediaId
).
isEqualTo
(
SilenceMediaSource
.
MEDIA_ID
);
assertThat
(
mediaItem
.
mediaId
).
isEqualTo
(
SilenceMediaSource
.
MEDIA_ID
);
assertThat
(
mediaSource
.
getMediaItem
().
playbackProperties
.
uri
).
isEqualTo
(
Uri
.
EMPTY
);
assertThat
(
mediaSource
.
getMediaItem
().
localConfiguration
.
uri
).
isEqualTo
(
Uri
.
EMPTY
);
assertThat
(
mediaItem
.
playbackProperties
.
mimeType
).
isEqualTo
(
MimeTypes
.
AUDIO_RAW
);
assertThat
(
mediaItem
.
localConfiguration
.
mimeType
).
isEqualTo
(
MimeTypes
.
AUDIO_RAW
);
}
}
}
}
library/core/src/test/java/com/google/android/exoplayer2/source/SinglePeriodTimelineTest.java
View file @
a04f1d17
...
@@ -101,7 +101,7 @@ public final class SinglePeriodTimelineTest {
...
@@ -101,7 +101,7 @@ public final class SinglePeriodTimelineTest {
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setTag
(
null
).
build
());
new
MediaItem
.
Builder
().
setUri
(
Uri
.
EMPTY
).
setTag
(
null
).
build
());
assertThat
(
timeline
.
getWindow
(
/* windowIndex= */
0
,
window
).
tag
).
isNull
();
assertThat
(
timeline
.
getWindow
(
/* windowIndex= */
0
,
window
).
tag
).
isNull
();
assertThat
(
timeline
.
getWindow
(
/* windowIndex= */
0
,
window
).
mediaItem
.
playbackProperties
.
tag
)
assertThat
(
timeline
.
getWindow
(
/* windowIndex= */
0
,
window
).
mediaItem
.
localConfiguration
.
tag
)
.
isNull
();
.
isNull
();
assertThat
(
timeline
.
getPeriod
(
/* periodIndex= */
0
,
period
,
/* setIds= */
false
).
id
).
isNull
();
assertThat
(
timeline
.
getPeriod
(
/* periodIndex= */
0
,
period
,
/* setIds= */
false
).
id
).
isNull
();
assertThat
(
timeline
.
getPeriod
(
/* periodIndex= */
0
,
period
,
/* setIds= */
true
).
id
).
isNull
();
assertThat
(
timeline
.
getPeriod
(
/* periodIndex= */
0
,
period
,
/* setIds= */
true
).
id
).
isNull
();
...
@@ -143,7 +143,7 @@ public final class SinglePeriodTimelineTest {
...
@@ -143,7 +143,7 @@ public final class SinglePeriodTimelineTest {
Window
window
=
timeline
.
getWindow
(
/* windowIndex= */
0
,
this
.
window
);
Window
window
=
timeline
.
getWindow
(
/* windowIndex= */
0
,
this
.
window
);
assertThat
(
window
.
mediaItem
).
isEqualTo
(
mediaItem
);
assertThat
(
window
.
mediaItem
).
isEqualTo
(
mediaItem
);
assertThat
(
window
.
tag
).
isEqualTo
(
mediaItem
.
playbackProperties
.
tag
);
assertThat
(
window
.
tag
).
isEqualTo
(
mediaItem
.
localConfiguration
.
tag
);
}
}
@Test
@Test
...
...
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
View file @
a04f1d17
...
@@ -315,10 +315,10 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -315,10 +315,10 @@ public final class DashMediaSource extends BaseMediaSource {
Assertions
.
checkArgument
(!
manifest
.
dynamic
);
Assertions
.
checkArgument
(!
manifest
.
dynamic
);
MediaItem
.
Builder
mediaItemBuilder
=
MediaItem
.
Builder
mediaItemBuilder
=
mediaItem
.
buildUpon
().
setMimeType
(
MimeTypes
.
APPLICATION_MPD
);
mediaItem
.
buildUpon
().
setMimeType
(
MimeTypes
.
APPLICATION_MPD
);
if
(
mediaItem
.
playbackProperties
==
null
)
{
if
(
mediaItem
.
localConfiguration
==
null
)
{
mediaItemBuilder
.
setUri
(
Uri
.
EMPTY
);
mediaItemBuilder
.
setUri
(
Uri
.
EMPTY
);
}
}
if
(
mediaItem
.
playbackProperties
==
null
||
mediaItem
.
playbackProperties
.
tag
==
null
)
{
if
(
mediaItem
.
localConfiguration
==
null
||
mediaItem
.
localConfiguration
.
tag
==
null
)
{
mediaItemBuilder
.
setTag
(
tag
);
mediaItemBuilder
.
setTag
(
tag
);
}
}
if
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
)
{
if
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
)
{
...
@@ -329,12 +329,12 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -329,12 +329,12 @@ public final class DashMediaSource extends BaseMediaSource {
.
setTargetOffsetMs
(
targetLiveOffsetOverrideMs
)
.
setTargetOffsetMs
(
targetLiveOffsetOverrideMs
)
.
build
());
.
build
());
}
}
if
(
mediaItem
.
playbackProperties
==
null
if
(
mediaItem
.
localConfiguration
==
null
||
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
())
{
||
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
())
{
mediaItemBuilder
.
setStreamKeys
(
streamKeys
);
mediaItemBuilder
.
setStreamKeys
(
streamKeys
);
}
}
mediaItem
=
mediaItemBuilder
.
build
();
mediaItem
=
mediaItemBuilder
.
build
();
if
(!
checkNotNull
(
mediaItem
.
playbackProperties
).
streamKeys
.
isEmpty
())
{
if
(!
checkNotNull
(
mediaItem
.
localConfiguration
).
streamKeys
.
isEmpty
())
{
manifest
=
manifest
.
copy
(
streamKeys
);
manifest
=
manifest
.
copy
(
streamKeys
);
}
}
return
new
DashMediaSource
(
return
new
DashMediaSource
(
...
@@ -367,26 +367,26 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -367,26 +367,26 @@ public final class DashMediaSource extends BaseMediaSource {
*
*
* @param mediaItem The media item of the dash stream.
* @param mediaItem The media item of the dash stream.
* @return The new {@link DashMediaSource}.
* @return The new {@link DashMediaSource}.
* @throws NullPointerException if {@link MediaItem#
playbackProperties
} is {@code null}.
* @throws NullPointerException if {@link MediaItem#
localConfiguration
} is {@code null}.
*/
*/
@Override
@Override
public
DashMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
public
DashMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
@Nullable
ParsingLoadable
.
Parser
<?
extends
DashManifest
>
manifestParser
=
this
.
manifestParser
;
@Nullable
ParsingLoadable
.
Parser
<?
extends
DashManifest
>
manifestParser
=
this
.
manifestParser
;
if
(
manifestParser
==
null
)
{
if
(
manifestParser
==
null
)
{
manifestParser
=
new
DashManifestParser
();
manifestParser
=
new
DashManifestParser
();
}
}
List
<
StreamKey
>
streamKeys
=
List
<
StreamKey
>
streamKeys
=
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
?
this
.
streamKeys
?
this
.
streamKeys
:
mediaItem
.
playbackProperties
.
streamKeys
;
:
mediaItem
.
localConfiguration
.
streamKeys
;
if
(!
streamKeys
.
isEmpty
())
{
if
(!
streamKeys
.
isEmpty
())
{
manifestParser
=
new
FilteringManifestParser
<>(
manifestParser
,
streamKeys
);
manifestParser
=
new
FilteringManifestParser
<>(
manifestParser
,
streamKeys
);
}
}
boolean
needsTag
=
mediaItem
.
playbackProperties
.
tag
==
null
&&
tag
!=
null
;
boolean
needsTag
=
mediaItem
.
localConfiguration
.
tag
==
null
&&
tag
!=
null
;
boolean
needsStreamKeys
=
boolean
needsStreamKeys
=
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
boolean
needsTargetLiveOffset
=
boolean
needsTargetLiveOffset
=
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
&&
targetLiveOffsetOverrideMs
!=
C
.
TIME_UNSET
;
&&
targetLiveOffsetOverrideMs
!=
C
.
TIME_UNSET
;
...
@@ -501,8 +501,8 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -501,8 +501,8 @@ public final class DashMediaSource extends BaseMediaSource {
long
fallbackTargetLiveOffsetMs
)
{
long
fallbackTargetLiveOffsetMs
)
{
this
.
mediaItem
=
mediaItem
;
this
.
mediaItem
=
mediaItem
;
this
.
liveConfiguration
=
mediaItem
.
liveConfiguration
;
this
.
liveConfiguration
=
mediaItem
.
liveConfiguration
;
this
.
manifestUri
=
checkNotNull
(
mediaItem
.
playbackProperties
).
uri
;
this
.
manifestUri
=
checkNotNull
(
mediaItem
.
localConfiguration
).
uri
;
this
.
initialManifestUri
=
mediaItem
.
playbackProperties
.
uri
;
this
.
initialManifestUri
=
mediaItem
.
localConfiguration
.
uri
;
this
.
manifest
=
manifest
;
this
.
manifest
=
manifest
;
this
.
manifestDataSourceFactory
=
manifestDataSourceFactory
;
this
.
manifestDataSourceFactory
=
manifestDataSourceFactory
;
this
.
manifestParser
=
manifestParser
;
this
.
manifestParser
=
manifestParser
;
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaSourceTest.java
View file @
a04f1d17
...
@@ -111,9 +111,9 @@ public final class DashMediaSourceTest {
...
@@ -111,9 +111,9 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
dashMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
dashMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
dashMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
dashMediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
dashMediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -129,9 +129,9 @@ public final class DashMediaSourceTest {
...
@@ -129,9 +129,9 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
dashMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
dashMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
dashMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
dashMediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
mediaItemTag
);
assertThat
(
dashMediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
mediaItemTag
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -146,9 +146,9 @@ public final class DashMediaSourceTest {
...
@@ -146,9 +146,9 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
dashMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
dashMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
dashMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
dashMediaItem
.
playbackProperties
.
streamKeys
).
containsExactly
(
streamKey
);
assertThat
(
dashMediaItem
.
localConfiguration
.
streamKeys
).
containsExactly
(
streamKey
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -168,9 +168,9 @@ public final class DashMediaSourceTest {
...
@@ -168,9 +168,9 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
dashMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
dashMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
dashMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
dashMediaItem
.
playbackProperties
.
streamKeys
).
containsExactly
(
mediaItemStreamKey
);
assertThat
(
dashMediaItem
.
localConfiguration
.
streamKeys
).
containsExactly
(
mediaItemStreamKey
);
}
}
@Test
@Test
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DefaultMediaSourceFactoryTest.java
View file @
a04f1d17
...
@@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
...
@@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
assertThat
(
mediaSource
.
getMediaItem
().
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
mediaSource
.
getMediaItem
().
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
@Test
@Test
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java
View file @
a04f1d17
...
@@ -365,24 +365,24 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -365,24 +365,24 @@ public final class HlsMediaSource extends BaseMediaSource
*
*
* @param mediaItem The {@link MediaItem}.
* @param mediaItem The {@link MediaItem}.
* @return The new {@link HlsMediaSource}.
* @return The new {@link HlsMediaSource}.
* @throws NullPointerException if {@link MediaItem#
playbackProperties
} is {@code null}.
* @throws NullPointerException if {@link MediaItem#
localConfiguration
} is {@code null}.
*/
*/
@Override
@Override
public
HlsMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
public
HlsMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
HlsPlaylistParserFactory
playlistParserFactory
=
this
.
playlistParserFactory
;
HlsPlaylistParserFactory
playlistParserFactory
=
this
.
playlistParserFactory
;
List
<
StreamKey
>
streamKeys
=
List
<
StreamKey
>
streamKeys
=
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
?
this
.
streamKeys
?
this
.
streamKeys
:
mediaItem
.
playbackProperties
.
streamKeys
;
:
mediaItem
.
localConfiguration
.
streamKeys
;
if
(!
streamKeys
.
isEmpty
())
{
if
(!
streamKeys
.
isEmpty
())
{
playlistParserFactory
=
playlistParserFactory
=
new
FilteringHlsPlaylistParserFactory
(
playlistParserFactory
,
streamKeys
);
new
FilteringHlsPlaylistParserFactory
(
playlistParserFactory
,
streamKeys
);
}
}
boolean
needsTag
=
mediaItem
.
playbackProperties
.
tag
==
null
&&
tag
!=
null
;
boolean
needsTag
=
mediaItem
.
localConfiguration
.
tag
==
null
&&
tag
!=
null
;
boolean
needsStreamKeys
=
boolean
needsStreamKeys
=
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
if
(
needsTag
&&
needsStreamKeys
)
{
if
(
needsTag
&&
needsStreamKeys
)
{
mediaItem
=
mediaItem
.
buildUpon
().
setTag
(
tag
).
setStreamKeys
(
streamKeys
).
build
();
mediaItem
=
mediaItem
.
buildUpon
().
setTag
(
tag
).
setStreamKeys
(
streamKeys
).
build
();
}
else
if
(
needsTag
)
{
}
else
if
(
needsTag
)
{
...
@@ -412,7 +412,7 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -412,7 +412,7 @@ public final class HlsMediaSource extends BaseMediaSource
}
}
private
final
HlsExtractorFactory
extractorFactory
;
private
final
HlsExtractorFactory
extractorFactory
;
private
final
MediaItem
.
PlaybackProperties
playbackProperties
;
private
final
MediaItem
.
LocalConfiguration
localConfiguration
;
private
final
HlsDataSourceFactory
dataSourceFactory
;
private
final
HlsDataSourceFactory
dataSourceFactory
;
private
final
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
;
private
final
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
;
private
final
DrmSessionManager
drmSessionManager
;
private
final
DrmSessionManager
drmSessionManager
;
...
@@ -439,7 +439,7 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -439,7 +439,7 @@ public final class HlsMediaSource extends BaseMediaSource
boolean
allowChunklessPreparation
,
boolean
allowChunklessPreparation
,
@MetadataType
int
metadataType
,
@MetadataType
int
metadataType
,
boolean
useSessionKeys
)
{
boolean
useSessionKeys
)
{
this
.
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
this
.
localConfiguration
=
checkNotNull
(
mediaItem
.
localConfiguration
);
this
.
mediaItem
=
mediaItem
;
this
.
mediaItem
=
mediaItem
;
this
.
liveConfiguration
=
mediaItem
.
liveConfiguration
;
this
.
liveConfiguration
=
mediaItem
.
liveConfiguration
;
this
.
dataSourceFactory
=
dataSourceFactory
;
this
.
dataSourceFactory
=
dataSourceFactory
;
...
@@ -465,7 +465,8 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -465,7 +465,8 @@ public final class HlsMediaSource extends BaseMediaSource
drmSessionManager
.
prepare
();
drmSessionManager
.
prepare
();
MediaSourceEventListener
.
EventDispatcher
eventDispatcher
=
MediaSourceEventListener
.
EventDispatcher
eventDispatcher
=
createEventDispatcher
(
/* mediaPeriodId= */
null
);
createEventDispatcher
(
/* mediaPeriodId= */
null
);
playlistTracker
.
start
(
playbackProperties
.
uri
,
eventDispatcher
,
/* listener= */
this
);
playlistTracker
.
start
(
localConfiguration
.
uri
,
eventDispatcher
,
/* primaryPlaylistListener= */
this
);
}
}
@Override
@Override
...
...
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/DefaultMediaSourceFactoryTest.java
View file @
a04f1d17
...
@@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
...
@@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
assertThat
(
mediaSource
.
getMediaItem
().
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
mediaSource
.
getMediaItem
().
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
@Test
@Test
...
...
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaSourceTest.java
View file @
a04f1d17
...
@@ -59,9 +59,9 @@ public class HlsMediaSourceTest {
...
@@ -59,9 +59,9 @@ public class HlsMediaSourceTest {
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
hlsMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
hlsMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
hlsMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
hlsMediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -77,9 +77,9 @@ public class HlsMediaSourceTest {
...
@@ -77,9 +77,9 @@ public class HlsMediaSourceTest {
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
hlsMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
hlsMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
hlsMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
hlsMediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
mediaItemTag
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
mediaItemTag
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -94,9 +94,9 @@ public class HlsMediaSourceTest {
...
@@ -94,9 +94,9 @@ public class HlsMediaSourceTest {
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
hlsMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
hlsMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
hlsMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
hlsMediaItem
.
playbackProperties
.
streamKeys
).
containsExactly
(
streamKey
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
streamKeys
).
containsExactly
(
streamKey
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -116,9 +116,9 @@ public class HlsMediaSourceTest {
...
@@ -116,9 +116,9 @@ public class HlsMediaSourceTest {
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
hlsMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
hlsMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
hlsMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
hlsMediaItem
.
playbackProperties
.
uri
).
isEqualTo
(
mediaItem
.
playbackProperties
.
uri
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
uri
).
isEqualTo
(
mediaItem
.
localConfiguration
.
uri
);
assertThat
(
hlsMediaItem
.
playbackProperties
.
streamKeys
).
containsExactly
(
mediaItemStreamKey
);
assertThat
(
hlsMediaItem
.
localConfiguration
.
streamKeys
).
containsExactly
(
mediaItemStreamKey
);
}
}
@Test
@Test
...
...
library/rtsp/src/main/java/com/google/android/exoplayer2/source/rtsp/RtspMediaSource.java
View file @
a04f1d17
...
@@ -191,11 +191,11 @@ public final class RtspMediaSource extends BaseMediaSource {
...
@@ -191,11 +191,11 @@ public final class RtspMediaSource extends BaseMediaSource {
*
*
* @param mediaItem The {@link MediaItem}.
* @param mediaItem The {@link MediaItem}.
* @return The new {@link RtspMediaSource}.
* @return The new {@link RtspMediaSource}.
* @throws NullPointerException if {@link MediaItem#
playbackProperties
} is {@code null}.
* @throws NullPointerException if {@link MediaItem#
localConfiguration
} is {@code null}.
*/
*/
@Override
@Override
public
RtspMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
public
RtspMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
return
new
RtspMediaSource
(
return
new
RtspMediaSource
(
mediaItem
,
mediaItem
,
forceUseRtpTcp
forceUseRtpTcp
...
@@ -241,7 +241,7 @@ public final class RtspMediaSource extends BaseMediaSource {
...
@@ -241,7 +241,7 @@ public final class RtspMediaSource extends BaseMediaSource {
this
.
mediaItem
=
mediaItem
;
this
.
mediaItem
=
mediaItem
;
this
.
rtpDataChannelFactory
=
rtpDataChannelFactory
;
this
.
rtpDataChannelFactory
=
rtpDataChannelFactory
;
this
.
userAgent
=
userAgent
;
this
.
userAgent
=
userAgent
;
this
.
uri
=
checkNotNull
(
this
.
mediaItem
.
playbackProperties
).
uri
;
this
.
uri
=
checkNotNull
(
this
.
mediaItem
.
localConfiguration
).
uri
;
this
.
debugLoggingEnabled
=
debugLoggingEnabled
;
this
.
debugLoggingEnabled
=
debugLoggingEnabled
;
this
.
timelineDurationUs
=
C
.
TIME_UNSET
;
this
.
timelineDurationUs
=
C
.
TIME_UNSET
;
this
.
timelineIsPlaceholder
=
true
;
this
.
timelineIsPlaceholder
=
true
;
...
...
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java
View file @
a04f1d17
...
@@ -277,20 +277,20 @@ public final class SsMediaSource extends BaseMediaSource
...
@@ -277,20 +277,20 @@ public final class SsMediaSource extends BaseMediaSource
public
SsMediaSource
createMediaSource
(
SsManifest
manifest
,
MediaItem
mediaItem
)
{
public
SsMediaSource
createMediaSource
(
SsManifest
manifest
,
MediaItem
mediaItem
)
{
Assertions
.
checkArgument
(!
manifest
.
isLive
);
Assertions
.
checkArgument
(!
manifest
.
isLive
);
List
<
StreamKey
>
streamKeys
=
List
<
StreamKey
>
streamKeys
=
mediaItem
.
playbackProperties
!=
null
&&
!
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
mediaItem
.
localConfiguration
!=
null
&&
!
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
?
mediaItem
.
playbackProperties
.
streamKeys
?
mediaItem
.
localConfiguration
.
streamKeys
:
this
.
streamKeys
;
:
this
.
streamKeys
;
if
(!
streamKeys
.
isEmpty
())
{
if
(!
streamKeys
.
isEmpty
())
{
manifest
=
manifest
.
copy
(
streamKeys
);
manifest
=
manifest
.
copy
(
streamKeys
);
}
}
boolean
hasUri
=
mediaItem
.
playbackProperties
!=
null
;
boolean
hasUri
=
mediaItem
.
localConfiguration
!=
null
;
boolean
hasTag
=
hasUri
&&
mediaItem
.
playbackProperties
.
tag
!=
null
;
boolean
hasTag
=
hasUri
&&
mediaItem
.
localConfiguration
.
tag
!=
null
;
mediaItem
=
mediaItem
=
mediaItem
mediaItem
.
buildUpon
()
.
buildUpon
()
.
setMimeType
(
MimeTypes
.
APPLICATION_SS
)
.
setMimeType
(
MimeTypes
.
APPLICATION_SS
)
.
setUri
(
hasUri
?
mediaItem
.
playbackProperties
.
uri
:
Uri
.
EMPTY
)
.
setUri
(
hasUri
?
mediaItem
.
localConfiguration
.
uri
:
Uri
.
EMPTY
)
.
setTag
(
hasTag
?
mediaItem
.
playbackProperties
.
tag
:
tag
)
.
setTag
(
hasTag
?
mediaItem
.
localConfiguration
.
tag
:
tag
)
.
setStreamKeys
(
streamKeys
)
.
setStreamKeys
(
streamKeys
)
.
build
();
.
build
();
return
new
SsMediaSource
(
return
new
SsMediaSource
(
...
@@ -310,26 +310,26 @@ public final class SsMediaSource extends BaseMediaSource
...
@@ -310,26 +310,26 @@ public final class SsMediaSource extends BaseMediaSource
*
*
* @param mediaItem The {@link MediaItem}.
* @param mediaItem The {@link MediaItem}.
* @return The new {@link SsMediaSource}.
* @return The new {@link SsMediaSource}.
* @throws NullPointerException if {@link MediaItem#
playbackProperties
} is {@code null}.
* @throws NullPointerException if {@link MediaItem#
localConfiguration
} is {@code null}.
*/
*/
@Override
@Override
public
SsMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
public
SsMediaSource
createMediaSource
(
MediaItem
mediaItem
)
{
checkNotNull
(
mediaItem
.
playbackProperties
);
checkNotNull
(
mediaItem
.
localConfiguration
);
@Nullable
ParsingLoadable
.
Parser
<?
extends
SsManifest
>
manifestParser
=
this
.
manifestParser
;
@Nullable
ParsingLoadable
.
Parser
<?
extends
SsManifest
>
manifestParser
=
this
.
manifestParser
;
if
(
manifestParser
==
null
)
{
if
(
manifestParser
==
null
)
{
manifestParser
=
new
SsManifestParser
();
manifestParser
=
new
SsManifestParser
();
}
}
List
<
StreamKey
>
streamKeys
=
List
<
StreamKey
>
streamKeys
=
!
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
!
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
?
mediaItem
.
playbackProperties
.
streamKeys
?
mediaItem
.
localConfiguration
.
streamKeys
:
this
.
streamKeys
;
:
this
.
streamKeys
;
if
(!
streamKeys
.
isEmpty
())
{
if
(!
streamKeys
.
isEmpty
())
{
manifestParser
=
new
FilteringManifestParser
<>(
manifestParser
,
streamKeys
);
manifestParser
=
new
FilteringManifestParser
<>(
manifestParser
,
streamKeys
);
}
}
boolean
needsTag
=
mediaItem
.
playbackProperties
.
tag
==
null
&&
tag
!=
null
;
boolean
needsTag
=
mediaItem
.
localConfiguration
.
tag
==
null
&&
tag
!=
null
;
boolean
needsStreamKeys
=
boolean
needsStreamKeys
=
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
mediaItem
.
localConfiguration
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
if
(
needsTag
&&
needsStreamKeys
)
{
if
(
needsTag
&&
needsStreamKeys
)
{
mediaItem
=
mediaItem
.
buildUpon
().
setTag
(
tag
).
setStreamKeys
(
streamKeys
).
build
();
mediaItem
=
mediaItem
.
buildUpon
().
setTag
(
tag
).
setStreamKeys
(
streamKeys
).
build
();
}
else
if
(
needsTag
)
{
}
else
if
(
needsTag
)
{
...
@@ -370,7 +370,7 @@ public final class SsMediaSource extends BaseMediaSource
...
@@ -370,7 +370,7 @@ public final class SsMediaSource extends BaseMediaSource
private
final
boolean
sideloadedManifest
;
private
final
boolean
sideloadedManifest
;
private
final
Uri
manifestUri
;
private
final
Uri
manifestUri
;
private
final
MediaItem
.
PlaybackProperties
playbackProperties
;
private
final
MediaItem
.
LocalConfiguration
localConfiguration
;
private
final
MediaItem
mediaItem
;
private
final
MediaItem
mediaItem
;
private
final
DataSource
.
Factory
manifestDataSourceFactory
;
private
final
DataSource
.
Factory
manifestDataSourceFactory
;
private
final
SsChunkSource
.
Factory
chunkSourceFactory
;
private
final
SsChunkSource
.
Factory
chunkSourceFactory
;
...
@@ -404,12 +404,12 @@ public final class SsMediaSource extends BaseMediaSource
...
@@ -404,12 +404,12 @@ public final class SsMediaSource extends BaseMediaSource
long
livePresentationDelayMs
)
{
long
livePresentationDelayMs
)
{
Assertions
.
checkState
(
manifest
==
null
||
!
manifest
.
isLive
);
Assertions
.
checkState
(
manifest
==
null
||
!
manifest
.
isLive
);
this
.
mediaItem
=
mediaItem
;
this
.
mediaItem
=
mediaItem
;
playbackProperties
=
checkNotNull
(
mediaItem
.
playbackProperties
);
localConfiguration
=
checkNotNull
(
mediaItem
.
localConfiguration
);
this
.
manifest
=
manifest
;
this
.
manifest
=
manifest
;
this
.
manifestUri
=
this
.
manifestUri
=
playbackProperties
.
uri
.
equals
(
Uri
.
EMPTY
)
localConfiguration
.
uri
.
equals
(
Uri
.
EMPTY
)
?
null
?
null
:
Util
.
fixSmoothStreamingIsmManifestUri
(
playbackProperties
.
uri
);
:
Util
.
fixSmoothStreamingIsmManifestUri
(
localConfiguration
.
uri
);
this
.
manifestDataSourceFactory
=
manifestDataSourceFactory
;
this
.
manifestDataSourceFactory
=
manifestDataSourceFactory
;
this
.
manifestParser
=
manifestParser
;
this
.
manifestParser
=
manifestParser
;
this
.
chunkSourceFactory
=
chunkSourceFactory
;
this
.
chunkSourceFactory
=
chunkSourceFactory
;
...
...
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/offline/SsDownloader.java
View file @
a04f1d17
...
@@ -87,7 +87,7 @@ public final class SsDownloader extends SegmentDownloader<SsManifest> {
...
@@ -87,7 +87,7 @@ public final class SsDownloader extends SegmentDownloader<SsManifest> {
.
buildUpon
()
.
buildUpon
()
.
setUri
(
.
setUri
(
Util
.
fixSmoothStreamingIsmManifestUri
(
Util
.
fixSmoothStreamingIsmManifestUri
(
checkNotNull
(
mediaItem
.
playbackProperties
).
uri
))
checkNotNull
(
mediaItem
.
localConfiguration
).
uri
))
.
build
(),
.
build
(),
new
SsManifestParser
(),
new
SsManifestParser
(),
cacheDataSourceFactory
,
cacheDataSourceFactory
,
...
...
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultMediaSourceFactoryTest.java
View file @
a04f1d17
...
@@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
...
@@ -60,7 +60,7 @@ public class DefaultMediaSourceFactoryTest {
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
MediaSource
mediaSource
=
defaultMediaSourceFactory
.
createMediaSource
(
mediaItem
);
assertThat
(
mediaSource
.
getMediaItem
().
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
mediaSource
.
getMediaItem
().
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
@Test
@Test
...
...
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSourceTest.java
View file @
a04f1d17
...
@@ -41,10 +41,10 @@ public class SsMediaSourceTest {
...
@@ -41,10 +41,10 @@ public class SsMediaSourceTest {
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
ssMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
ssMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
ssMediaItem
.
playbackProperties
.
uri
)
assertThat
(
ssMediaItem
.
localConfiguration
.
uri
)
.
isEqualTo
(
castNonNull
(
mediaItem
.
playbackProperties
).
uri
);
.
isEqualTo
(
castNonNull
(
mediaItem
.
localConfiguration
).
uri
);
assertThat
(
ssMediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
tag
);
assertThat
(
ssMediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
tag
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -60,10 +60,10 @@ public class SsMediaSourceTest {
...
@@ -60,10 +60,10 @@ public class SsMediaSourceTest {
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
ssMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
ssMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
ssMediaItem
.
playbackProperties
.
uri
)
assertThat
(
ssMediaItem
.
localConfiguration
.
uri
)
.
isEqualTo
(
castNonNull
(
mediaItem
.
playbackProperties
).
uri
);
.
isEqualTo
(
castNonNull
(
mediaItem
.
localConfiguration
).
uri
);
assertThat
(
ssMediaItem
.
playbackProperties
.
tag
).
isEqualTo
(
mediaItemTag
);
assertThat
(
ssMediaItem
.
localConfiguration
.
tag
).
isEqualTo
(
mediaItemTag
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -78,10 +78,10 @@ public class SsMediaSourceTest {
...
@@ -78,10 +78,10 @@ public class SsMediaSourceTest {
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
ssMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
ssMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
ssMediaItem
.
playbackProperties
.
uri
)
assertThat
(
ssMediaItem
.
localConfiguration
.
uri
)
.
isEqualTo
(
castNonNull
(
mediaItem
.
playbackProperties
).
uri
);
.
isEqualTo
(
castNonNull
(
mediaItem
.
localConfiguration
).
uri
);
assertThat
(
ssMediaItem
.
playbackProperties
.
streamKeys
).
containsExactly
(
streamKey
);
assertThat
(
ssMediaItem
.
localConfiguration
.
streamKeys
).
containsExactly
(
streamKey
);
}
}
// Tests backwards compatibility
// Tests backwards compatibility
...
@@ -101,9 +101,9 @@ public class SsMediaSourceTest {
...
@@ -101,9 +101,9 @@ public class SsMediaSourceTest {
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
ssMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
ssMediaItem
.
playbackProperties
).
isNotNull
();
assertThat
(
ssMediaItem
.
localConfiguration
).
isNotNull
();
assertThat
(
ssMediaItem
.
playbackProperties
.
uri
)
assertThat
(
ssMediaItem
.
localConfiguration
.
uri
)
.
isEqualTo
(
castNonNull
(
mediaItem
.
playbackProperties
).
uri
);
.
isEqualTo
(
castNonNull
(
mediaItem
.
localConfiguration
).
uri
);
assertThat
(
ssMediaItem
.
playbackProperties
.
streamKeys
).
containsExactly
(
mediaItemStreamKey
);
assertThat
(
ssMediaItem
.
localConfiguration
.
streamKeys
).
containsExactly
(
mediaItemStreamKey
);
}
}
}
}
testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java
View file @
a04f1d17
...
@@ -85,7 +85,7 @@ public class FakeMediaSource extends BaseMediaSource {
...
@@ -85,7 +85,7 @@ public class FakeMediaSource extends BaseMediaSource {
new
MediaItem
.
Builder
().
setMediaId
(
"FakeMediaSource"
).
setUri
(
"http://manifest.uri"
).
build
();
new
MediaItem
.
Builder
().
setMediaId
(
"FakeMediaSource"
).
setUri
(
"http://manifest.uri"
).
build
();
private
static
final
DataSpec
FAKE_DATA_SPEC
=
private
static
final
DataSpec
FAKE_DATA_SPEC
=
new
DataSpec
(
castNonNull
(
FAKE_MEDIA_ITEM
.
playbackProperties
).
uri
);
new
DataSpec
(
castNonNull
(
FAKE_MEDIA_ITEM
.
localConfiguration
).
uri
);
private
static
final
int
MANIFEST_LOAD_BYTES
=
100
;
private
static
final
int
MANIFEST_LOAD_BYTES
=
100
;
private
final
TrackGroupArray
trackGroupArray
;
private
final
TrackGroupArray
trackGroupArray
;
...
...
testutils/src/main/java/com/google/android/exoplayer2/testutil/TimelineAsserts.java
View file @
a04f1d17
...
@@ -58,9 +58,9 @@ public final class TimelineAsserts {
...
@@ -58,9 +58,9 @@ public final class TimelineAsserts {
for
(
int
i
=
0
;
i
<
timeline
.
getWindowCount
();
i
++)
{
for
(
int
i
=
0
;
i
<
timeline
.
getWindowCount
();
i
++)
{
timeline
.
getWindow
(
i
,
window
);
timeline
.
getWindow
(
i
,
window
);
if
(
expectedWindowTags
[
i
]
!=
null
)
{
if
(
expectedWindowTags
[
i
]
!=
null
)
{
MediaItem
.
PlaybackProperties
playbackProperties
=
window
.
mediaItem
.
playbackProperties
;
MediaItem
.
LocalConfiguration
localConfiguration
=
window
.
mediaItem
.
localConfiguration
;
assertThat
(
playbackProperties
).
isNotNull
();
assertThat
(
localConfiguration
).
isNotNull
();
assertThat
(
Util
.
castNonNull
(
playbackProperties
).
tag
).
isEqualTo
(
expectedWindowTags
[
i
]);
assertThat
(
Util
.
castNonNull
(
localConfiguration
).
tag
).
isEqualTo
(
expectedWindowTags
[
i
]);
}
}
}
}
}
}
...
...
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