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
c17d1091
authored
Nov 24, 2020
by
bachinger
Committed by
Andrew Lewis
Nov 27, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Remove "live" from fields in MediaItem.LiveConfiguraton
#exofixit PiperOrigin-RevId: 344065519
parent
93ed71fb
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
112 additions
and
112 deletions
library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java
library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java
library/core/src/main/java/com/google/android/exoplayer2/DefaultLivePlaybackSpeedControl.java
library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java
library/core/src/test/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactoryTest.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaSourceTest.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/HlsMediaSourceTest.java
library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java
View file @
c17d1091
...
@@ -109,9 +109,9 @@ public final class MediaItem {
...
@@ -109,9 +109,9 @@ public final class MediaItem {
clipStartsAtKeyFrame
=
mediaItem
.
clippingProperties
.
startsAtKeyFrame
;
clipStartsAtKeyFrame
=
mediaItem
.
clippingProperties
.
startsAtKeyFrame
;
mediaId
=
mediaItem
.
mediaId
;
mediaId
=
mediaItem
.
mediaId
;
mediaMetadata
=
mediaItem
.
mediaMetadata
;
mediaMetadata
=
mediaItem
.
mediaMetadata
;
liveTargetOffsetMs
=
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
;
liveTargetOffsetMs
=
mediaItem
.
liveConfiguration
.
targetOffsetMs
;
liveMinOffsetMs
=
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
;
liveMinOffsetMs
=
mediaItem
.
liveConfiguration
.
minOffsetMs
;
liveMaxOffsetMs
=
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
;
liveMaxOffsetMs
=
mediaItem
.
liveConfiguration
.
maxOffsetMs
;
liveMinPlaybackSpeed
=
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
;
liveMinPlaybackSpeed
=
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
;
liveMaxPlaybackSpeed
=
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
;
liveMaxPlaybackSpeed
=
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
;
@Nullable
PlaybackProperties
playbackProperties
=
mediaItem
.
playbackProperties
;
@Nullable
PlaybackProperties
playbackProperties
=
mediaItem
.
playbackProperties
;
...
@@ -474,8 +474,8 @@ public final class MediaItem {
...
@@ -474,8 +474,8 @@ public final class MediaItem {
*
*
* <p>See {@code Player#getCurrentLiveOffset()}.
* <p>See {@code Player#getCurrentLiveOffset()}.
*
*
* @param liveTargetOffsetMs The target
live offset, in milliseconds, or {@link C#TIME_UNSET} to
* @param liveTargetOffsetMs The target
offset, in milliseconds, or {@link C#TIME_UNSET} to use
*
use
the media-defined default.
* the media-defined default.
*/
*/
public
Builder
setLiveTargetOffsetMs
(
long
liveTargetOffsetMs
)
{
public
Builder
setLiveTargetOffsetMs
(
long
liveTargetOffsetMs
)
{
this
.
liveTargetOffsetMs
=
liveTargetOffsetMs
;
this
.
liveTargetOffsetMs
=
liveTargetOffsetMs
;
...
@@ -487,8 +487,8 @@ public final class MediaItem {
...
@@ -487,8 +487,8 @@ public final class MediaItem {
*
*
* <p>See {@code Player#getCurrentLiveOffset()}.
* <p>See {@code Player#getCurrentLiveOffset()}.
*
*
* @param liveMinOffsetMs The minimum allowed
live offset, in milliseconds, or {@link
* @param liveMinOffsetMs The minimum allowed
offset, in milliseconds, or {@link C#TIME_UNSET}
*
C#TIME_UNSET}
to use the media-defined default.
* to use the media-defined default.
*/
*/
public
Builder
setLiveMinOffsetMs
(
long
liveMinOffsetMs
)
{
public
Builder
setLiveMinOffsetMs
(
long
liveMinOffsetMs
)
{
this
.
liveMinOffsetMs
=
liveMinOffsetMs
;
this
.
liveMinOffsetMs
=
liveMinOffsetMs
;
...
@@ -500,8 +500,8 @@ public final class MediaItem {
...
@@ -500,8 +500,8 @@ public final class MediaItem {
*
*
* <p>See {@code Player#getCurrentLiveOffset()}.
* <p>See {@code Player#getCurrentLiveOffset()}.
*
*
* @param liveMaxOffsetMs The maximum allowed
live offset, in milliseconds, or {@link
* @param liveMaxOffsetMs The maximum allowed
offset, in milliseconds, or {@link C#TIME_UNSET}
*
C#TIME_UNSET}
to use the media-defined default.
* to use the media-defined default.
*/
*/
public
Builder
setLiveMaxOffsetMs
(
long
liveMaxOffsetMs
)
{
public
Builder
setLiveMaxOffsetMs
(
long
liveMaxOffsetMs
)
{
this
.
liveMaxOffsetMs
=
liveMaxOffsetMs
;
this
.
liveMaxOffsetMs
=
liveMaxOffsetMs
;
...
@@ -840,22 +840,22 @@ public final class MediaItem {
...
@@ -840,22 +840,22 @@ public final class MediaItem {
/* maxPlaybackSpeed= */
C
.
RATE_UNSET
);
/* maxPlaybackSpeed= */
C
.
RATE_UNSET
);
/**
/**
* Target
live offset, in milliseconds, or {@link C#TIME_UNSET} to use the media-defined
* Target
offset from the live edge, in milliseconds, or {@link C#TIME_UNSET} to use the
* default.
*
media-defined
default.
*/
*/
public
final
long
target
Live
OffsetMs
;
public
final
long
targetOffsetMs
;
/**
/**
* The minimum allowed
live offset, in milliseconds, or {@link C#TIME_UNSET} to use the
* The minimum allowed
offset from the live edge, in milliseconds, or {@link C#TIME_UNSET} to
* media-defined default.
*
use the
media-defined default.
*/
*/
public
final
long
min
Live
OffsetMs
;
public
final
long
minOffsetMs
;
/**
/**
* The maximum allowed
live offset, in milliseconds, or {@link C#TIME_UNSET} to use the
* The maximum allowed
offset from the live edge, in milliseconds, or {@link C#TIME_UNSET} to
* media-defined default.
*
use the
media-defined default.
*/
*/
public
final
long
max
Live
OffsetMs
;
public
final
long
maxOffsetMs
;
/** Minimum playback speed, or {@link C#RATE_UNSET} to use the media-defined default. */
/** Minimum playback speed, or {@link C#RATE_UNSET} to use the media-defined default. */
public
final
float
minPlaybackSpeed
;
public
final
float
minPlaybackSpeed
;
...
@@ -866,26 +866,26 @@ public final class MediaItem {
...
@@ -866,26 +866,26 @@ public final class MediaItem {
/**
/**
* Creates a live playback configuration.
* Creates a live playback configuration.
*
*
* @param target
LiveOffsetMs Target live offset, in milliseconds, or {@link C#TIME_UNSET} to us
e
* @param target
OffsetMs Target live offset, in milliseconds, or {@link C#TIME_UNSET} to use th
e
*
the
media-defined default.
* media-defined default.
* @param min
LiveOffsetMs The minimum allowed live offset, in milliseconds, or {@link
* @param min
OffsetMs The minimum allowed live offset, in milliseconds, or {@link C#TIME_UNSET}
*
C#TIME_UNSET}
to use the media-defined default.
* to use the media-defined default.
* @param max
LiveOffsetMs The maximum allowed live offset, in milliseconds, or {@link
* @param max
OffsetMs The maximum allowed live offset, in milliseconds, or {@link C#TIME_UNSET}
*
C#TIME_UNSET}
to use the media-defined default.
* to use the media-defined default.
* @param minPlaybackSpeed Minimum playback speed, or {@link C#RATE_UNSET} to use the
* @param minPlaybackSpeed Minimum playback speed, or {@link C#RATE_UNSET} to use the
* media-defined default.
* media-defined default.
* @param maxPlaybackSpeed Maximum playback speed, or {@link C#RATE_UNSET} to use the
* @param maxPlaybackSpeed Maximum playback speed, or {@link C#RATE_UNSET} to use the
* media-defined default.
* media-defined default.
*/
*/
public
LiveConfiguration
(
public
LiveConfiguration
(
long
target
Live
OffsetMs
,
long
targetOffsetMs
,
long
min
Live
OffsetMs
,
long
minOffsetMs
,
long
max
Live
OffsetMs
,
long
maxOffsetMs
,
float
minPlaybackSpeed
,
float
minPlaybackSpeed
,
float
maxPlaybackSpeed
)
{
float
maxPlaybackSpeed
)
{
this
.
target
LiveOffsetMs
=
targetLive
OffsetMs
;
this
.
target
OffsetMs
=
target
OffsetMs
;
this
.
min
LiveOffsetMs
=
minLive
OffsetMs
;
this
.
min
OffsetMs
=
min
OffsetMs
;
this
.
max
LiveOffsetMs
=
maxLive
OffsetMs
;
this
.
max
OffsetMs
=
max
OffsetMs
;
this
.
minPlaybackSpeed
=
minPlaybackSpeed
;
this
.
minPlaybackSpeed
=
minPlaybackSpeed
;
this
.
maxPlaybackSpeed
=
maxPlaybackSpeed
;
this
.
maxPlaybackSpeed
=
maxPlaybackSpeed
;
}
}
...
@@ -900,18 +900,18 @@ public final class MediaItem {
...
@@ -900,18 +900,18 @@ public final class MediaItem {
}
}
LiveConfiguration
other
=
(
LiveConfiguration
)
obj
;
LiveConfiguration
other
=
(
LiveConfiguration
)
obj
;
return
target
LiveOffsetMs
==
other
.
targetLive
OffsetMs
return
target
OffsetMs
==
other
.
target
OffsetMs
&&
min
LiveOffsetMs
==
other
.
minLive
OffsetMs
&&
min
OffsetMs
==
other
.
min
OffsetMs
&&
max
LiveOffsetMs
==
other
.
maxLive
OffsetMs
&&
max
OffsetMs
==
other
.
max
OffsetMs
&&
minPlaybackSpeed
==
other
.
minPlaybackSpeed
&&
minPlaybackSpeed
==
other
.
minPlaybackSpeed
&&
maxPlaybackSpeed
==
other
.
maxPlaybackSpeed
;
&&
maxPlaybackSpeed
==
other
.
maxPlaybackSpeed
;
}
}
@Override
@Override
public
int
hashCode
()
{
public
int
hashCode
()
{
int
result
=
(
int
)
(
target
LiveOffsetMs
^
(
targetLive
OffsetMs
>>>
32
));
int
result
=
(
int
)
(
target
OffsetMs
^
(
target
OffsetMs
>>>
32
));
result
=
31
*
result
+
(
int
)
(
min
LiveOffsetMs
^
(
minLive
OffsetMs
>>>
32
));
result
=
31
*
result
+
(
int
)
(
min
OffsetMs
^
(
min
OffsetMs
>>>
32
));
result
=
31
*
result
+
(
int
)
(
max
LiveOffsetMs
^
(
maxLive
OffsetMs
>>>
32
));
result
=
31
*
result
+
(
int
)
(
max
OffsetMs
^
(
max
OffsetMs
>>>
32
));
result
=
31
*
result
+
(
minPlaybackSpeed
!=
0
?
Float
.
floatToIntBits
(
minPlaybackSpeed
)
:
0
);
result
=
31
*
result
+
(
minPlaybackSpeed
!=
0
?
Float
.
floatToIntBits
(
minPlaybackSpeed
)
:
0
);
result
=
31
*
result
+
(
maxPlaybackSpeed
!=
0
?
Float
.
floatToIntBits
(
maxPlaybackSpeed
)
:
0
);
result
=
31
*
result
+
(
maxPlaybackSpeed
!=
0
?
Float
.
floatToIntBits
(
maxPlaybackSpeed
)
:
0
);
return
result
;
return
result
;
...
...
library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java
View file @
c17d1091
...
@@ -312,7 +312,7 @@ public class MediaItemTest {
...
@@ -312,7 +312,7 @@ public class MediaItemTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setLiveTargetOffsetMs
(
10_000
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setLiveTargetOffsetMs
(
10_000
).
build
();
assertThat
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
10_000
);
assertThat
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
10_000
);
}
}
@Test
@Test
...
@@ -336,7 +336,7 @@ public class MediaItemTest {
...
@@ -336,7 +336,7 @@ public class MediaItemTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setLiveMinOffsetMs
(
1234
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setLiveMinOffsetMs
(
1234
).
build
();
assertThat
(
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
1234
);
assertThat
(
mediaItem
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
1234
);
}
}
@Test
@Test
...
@@ -344,7 +344,7 @@ public class MediaItemTest {
...
@@ -344,7 +344,7 @@ public class MediaItemTest {
MediaItem
mediaItem
=
MediaItem
mediaItem
=
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setLiveMaxOffsetMs
(
1234
).
build
();
new
MediaItem
.
Builder
().
setUri
(
URI_STRING
).
setLiveMaxOffsetMs
(
1234
).
build
();
assertThat
(
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
1234
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
1234
);
}
}
@Test
@Test
...
...
library/core/src/main/java/com/google/android/exoplayer2/DefaultLivePlaybackSpeedControl.java
View file @
c17d1091
...
@@ -295,9 +295,9 @@ public final class DefaultLivePlaybackSpeedControl implements LivePlaybackSpeedC
...
@@ -295,9 +295,9 @@ public final class DefaultLivePlaybackSpeedControl implements LivePlaybackSpeedC
@Override
@Override
public
void
setLiveConfiguration
(
LiveConfiguration
liveConfiguration
)
{
public
void
setLiveConfiguration
(
LiveConfiguration
liveConfiguration
)
{
mediaConfigurationTargetLiveOffsetUs
=
C
.
msToUs
(
liveConfiguration
.
target
Live
OffsetMs
);
mediaConfigurationTargetLiveOffsetUs
=
C
.
msToUs
(
liveConfiguration
.
targetOffsetMs
);
minTargetLiveOffsetUs
=
C
.
msToUs
(
liveConfiguration
.
min
Live
OffsetMs
);
minTargetLiveOffsetUs
=
C
.
msToUs
(
liveConfiguration
.
minOffsetMs
);
maxTargetLiveOffsetUs
=
C
.
msToUs
(
liveConfiguration
.
max
Live
OffsetMs
);
maxTargetLiveOffsetUs
=
C
.
msToUs
(
liveConfiguration
.
maxOffsetMs
);
minPlaybackSpeed
=
minPlaybackSpeed
=
liveConfiguration
.
minPlaybackSpeed
!=
C
.
RATE_UNSET
liveConfiguration
.
minPlaybackSpeed
!=
C
.
RATE_UNSET
?
liveConfiguration
.
minPlaybackSpeed
?
liveConfiguration
.
minPlaybackSpeed
...
...
library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java
View file @
c17d1091
...
@@ -317,23 +317,23 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -317,23 +317,23 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
mediaSourceFactory
.
setLoadErrorHandlingPolicy
(
loadErrorHandlingPolicy
);
mediaSourceFactory
.
setLoadErrorHandlingPolicy
(
loadErrorHandlingPolicy
);
// Make sure to retain the very same media item instance, if no value needs to be overridden.
// Make sure to retain the very same media item instance, if no value needs to be overridden.
if
((
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
==
C
.
TIME_UNSET
if
((
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
&&
liveTargetOffsetMs
!=
C
.
TIME_UNSET
)
&&
liveTargetOffsetMs
!=
C
.
TIME_UNSET
)
||
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
==
C
.
RATE_UNSET
||
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
==
C
.
RATE_UNSET
&&
liveMinSpeed
!=
C
.
RATE_UNSET
)
&&
liveMinSpeed
!=
C
.
RATE_UNSET
)
||
(
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
==
C
.
RATE_UNSET
||
(
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
==
C
.
RATE_UNSET
&&
liveMaxSpeed
!=
C
.
RATE_UNSET
)
&&
liveMaxSpeed
!=
C
.
RATE_UNSET
)
||
(
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
==
C
.
TIME_UNSET
||
(
mediaItem
.
liveConfiguration
.
minOffsetMs
==
C
.
TIME_UNSET
&&
liveMinOffsetMs
!=
C
.
TIME_UNSET
)
&&
liveMinOffsetMs
!=
C
.
TIME_UNSET
)
||
(
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
==
C
.
TIME_UNSET
||
(
mediaItem
.
liveConfiguration
.
maxOffsetMs
==
C
.
TIME_UNSET
&&
liveMaxOffsetMs
!=
C
.
TIME_UNSET
))
{
&&
liveMaxOffsetMs
!=
C
.
TIME_UNSET
))
{
mediaItem
=
mediaItem
=
mediaItem
mediaItem
.
buildUpon
()
.
buildUpon
()
.
setLiveTargetOffsetMs
(
.
setLiveTargetOffsetMs
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
==
C
.
TIME_UNSET
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
?
liveTargetOffsetMs
?
liveTargetOffsetMs
:
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
:
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
.
setLiveMinPlaybackSpeed
(
.
setLiveMinPlaybackSpeed
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
==
C
.
RATE_UNSET
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
==
C
.
RATE_UNSET
?
liveMinSpeed
?
liveMinSpeed
...
@@ -343,13 +343,13 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
...
@@ -343,13 +343,13 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
?
liveMaxSpeed
?
liveMaxSpeed
:
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
)
:
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
)
.
setLiveMinOffsetMs
(
.
setLiveMinOffsetMs
(
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
==
C
.
TIME_UNSET
mediaItem
.
liveConfiguration
.
minOffsetMs
==
C
.
TIME_UNSET
?
liveMinOffsetMs
?
liveMinOffsetMs
:
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
)
:
mediaItem
.
liveConfiguration
.
minOffsetMs
)
.
setLiveMaxOffsetMs
(
.
setLiveMaxOffsetMs
(
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
==
C
.
TIME_UNSET
mediaItem
.
liveConfiguration
.
maxOffsetMs
==
C
.
TIME_UNSET
?
liveMaxOffsetMs
?
liveMaxOffsetMs
:
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
)
:
mediaItem
.
liveConfiguration
.
maxOffsetMs
)
.
build
();
.
build
();
}
}
MediaSource
mediaSource
=
mediaSourceFactory
.
createMediaSource
(
mediaItem
);
MediaSource
mediaSource
=
mediaSourceFactory
.
createMediaSource
(
mediaItem
);
...
...
library/core/src/test/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactoryTest.java
View file @
c17d1091
...
@@ -245,9 +245,9 @@ public final class DefaultMediaSourceFactoryTest {
...
@@ -245,9 +245,9 @@ public final class DefaultMediaSourceFactoryTest {
MediaItem
mediaItemFromSource
=
mediaSource
.
getMediaItem
();
MediaItem
mediaItemFromSource
=
mediaSource
.
getMediaItem
();
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
}
}
...
@@ -266,9 +266,9 @@ public final class DefaultMediaSourceFactoryTest {
...
@@ -266,9 +266,9 @@ public final class DefaultMediaSourceFactoryTest {
MediaItem
mediaItemFromSource
=
mediaSource
.
getMediaItem
();
MediaItem
mediaItemFromSource
=
mediaSource
.
getMediaItem
();
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
20
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
20
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
2222
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
2222
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
4444
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
4444
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(.
1
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(.
1
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
2.0f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
2.0f
);
}
}
...
...
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
View file @
c17d1091
...
@@ -306,7 +306,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -306,7 +306,7 @@ public final class DashMediaSource extends BaseMediaSource {
}
}
boolean
hasUri
=
mediaItem
.
playbackProperties
!=
null
;
boolean
hasUri
=
mediaItem
.
playbackProperties
!=
null
;
boolean
hasTag
=
hasUri
&&
mediaItem
.
playbackProperties
.
tag
!=
null
;
boolean
hasTag
=
hasUri
&&
mediaItem
.
playbackProperties
.
tag
!=
null
;
boolean
hasTargetLiveOffset
=
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
!=
C
.
TIME_UNSET
;
boolean
hasTargetLiveOffset
=
mediaItem
.
liveConfiguration
.
targetOffsetMs
!=
C
.
TIME_UNSET
;
mediaItem
=
mediaItem
=
mediaItem
mediaItem
.
buildUpon
()
.
buildUpon
()
...
@@ -315,7 +315,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -315,7 +315,7 @@ public final class DashMediaSource extends BaseMediaSource {
.
setTag
(
hasTag
?
mediaItem
.
playbackProperties
.
tag
:
tag
)
.
setTag
(
hasTag
?
mediaItem
.
playbackProperties
.
tag
:
tag
)
.
setLiveTargetOffsetMs
(
.
setLiveTargetOffsetMs
(
hasTargetLiveOffset
hasTargetLiveOffset
?
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
?
mediaItem
.
liveConfiguration
.
targetOffsetMs
:
targetLiveOffsetOverrideMs
)
:
targetLiveOffsetOverrideMs
)
.
setStreamKeys
(
streamKeys
)
.
setStreamKeys
(
streamKeys
)
.
build
();
.
build
();
...
@@ -370,7 +370,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -370,7 +370,7 @@ public final class DashMediaSource extends BaseMediaSource {
boolean
needsStreamKeys
=
boolean
needsStreamKeys
=
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
mediaItem
.
playbackProperties
.
streamKeys
.
isEmpty
()
&&
!
streamKeys
.
isEmpty
();
boolean
needsTargetLiveOffset
=
boolean
needsTargetLiveOffset
=
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
==
C
.
TIME_UNSET
mediaItem
.
liveConfiguration
.
targetOffsetMs
==
C
.
TIME_UNSET
&&
targetLiveOffsetOverrideMs
!=
C
.
TIME_UNSET
;
&&
targetLiveOffsetOverrideMs
!=
C
.
TIME_UNSET
;
if
(
needsTag
||
needsStreamKeys
||
needsTargetLiveOffset
)
{
if
(
needsTag
||
needsStreamKeys
||
needsTargetLiveOffset
)
{
MediaItem
.
Builder
builder
=
mediaItem
.
buildUpon
();
MediaItem
.
Builder
builder
=
mediaItem
.
buildUpon
();
...
@@ -942,7 +942,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -942,7 +942,7 @@ public final class DashMediaSource extends BaseMediaSource {
/* windowEndPeriodTimeUs= */
currentEndTimeUs
);
/* windowEndPeriodTimeUs= */
currentEndTimeUs
);
windowDefaultStartPositionUs
=
windowDefaultStartPositionUs
=
nowUnixTimeUs
nowUnixTimeUs
-
C
.
msToUs
(
windowStartTimeMs
+
updatedMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
);
-
C
.
msToUs
(
windowStartTimeMs
+
updatedMediaItem
.
liveConfiguration
.
targetOffsetMs
);
long
minimumDefaultStartPositionUs
=
long
minimumDefaultStartPositionUs
=
min
(
MIN_LIVE_DEFAULT_START_POSITION_US
,
windowDurationUs
/
2
);
min
(
MIN_LIVE_DEFAULT_START_POSITION_US
,
windowDurationUs
/
2
);
if
(
windowDefaultStartPositionUs
<
minimumDefaultStartPositionUs
)
{
if
(
windowDefaultStartPositionUs
<
minimumDefaultStartPositionUs
)
{
...
@@ -999,8 +999,8 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -999,8 +999,8 @@ public final class DashMediaSource extends BaseMediaSource {
private
void
updateMediaItemLiveConfiguration
(
private
void
updateMediaItemLiveConfiguration
(
long
nowPeriodTimeUs
,
long
windowStartPeriodTimeUs
,
long
windowEndPeriodTimeUs
)
{
long
nowPeriodTimeUs
,
long
windowStartPeriodTimeUs
,
long
windowEndPeriodTimeUs
)
{
long
maxLiveOffsetMs
;
long
maxLiveOffsetMs
;
if
(
originalMediaItem
.
liveConfiguration
.
max
Live
OffsetMs
!=
C
.
TIME_UNSET
)
{
if
(
originalMediaItem
.
liveConfiguration
.
maxOffsetMs
!=
C
.
TIME_UNSET
)
{
maxLiveOffsetMs
=
originalMediaItem
.
liveConfiguration
.
max
Live
OffsetMs
;
maxLiveOffsetMs
=
originalMediaItem
.
liveConfiguration
.
maxOffsetMs
;
}
else
if
(
manifest
.
serviceDescription
!=
null
}
else
if
(
manifest
.
serviceDescription
!=
null
&&
manifest
.
serviceDescription
.
maxOffsetMs
!=
C
.
TIME_UNSET
)
{
&&
manifest
.
serviceDescription
.
maxOffsetMs
!=
C
.
TIME_UNSET
)
{
maxLiveOffsetMs
=
manifest
.
serviceDescription
.
maxOffsetMs
;
maxLiveOffsetMs
=
manifest
.
serviceDescription
.
maxOffsetMs
;
...
@@ -1008,8 +1008,8 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -1008,8 +1008,8 @@ public final class DashMediaSource extends BaseMediaSource {
maxLiveOffsetMs
=
C
.
usToMs
(
nowPeriodTimeUs
-
windowStartPeriodTimeUs
);
maxLiveOffsetMs
=
C
.
usToMs
(
nowPeriodTimeUs
-
windowStartPeriodTimeUs
);
}
}
long
minLiveOffsetMs
;
long
minLiveOffsetMs
;
if
(
originalMediaItem
.
liveConfiguration
.
min
Live
OffsetMs
!=
C
.
TIME_UNSET
)
{
if
(
originalMediaItem
.
liveConfiguration
.
minOffsetMs
!=
C
.
TIME_UNSET
)
{
minLiveOffsetMs
=
originalMediaItem
.
liveConfiguration
.
min
Live
OffsetMs
;
minLiveOffsetMs
=
originalMediaItem
.
liveConfiguration
.
minOffsetMs
;
}
else
if
(
manifest
.
serviceDescription
!=
null
}
else
if
(
manifest
.
serviceDescription
!=
null
&&
manifest
.
serviceDescription
.
minOffsetMs
!=
C
.
TIME_UNSET
)
{
&&
manifest
.
serviceDescription
.
minOffsetMs
!=
C
.
TIME_UNSET
)
{
minLiveOffsetMs
=
manifest
.
serviceDescription
.
minOffsetMs
;
minLiveOffsetMs
=
manifest
.
serviceDescription
.
minOffsetMs
;
...
@@ -1025,9 +1025,9 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -1025,9 +1025,9 @@ public final class DashMediaSource extends BaseMediaSource {
}
}
}
}
long
targetOffsetMs
;
long
targetOffsetMs
;
if
(
updatedMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
!=
C
.
TIME_UNSET
)
{
if
(
updatedMediaItem
.
liveConfiguration
.
targetOffsetMs
!=
C
.
TIME_UNSET
)
{
// Keep existing target offset even if the media configuration changes.
// Keep existing target offset even if the media configuration changes.
targetOffsetMs
=
updatedMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
;
targetOffsetMs
=
updatedMediaItem
.
liveConfiguration
.
targetOffsetMs
;
}
else
if
(
manifest
.
serviceDescription
!=
null
}
else
if
(
manifest
.
serviceDescription
!=
null
&&
manifest
.
serviceDescription
.
targetOffsetMs
!=
C
.
TIME_UNSET
)
{
&&
manifest
.
serviceDescription
.
targetOffsetMs
!=
C
.
TIME_UNSET
)
{
targetOffsetMs
=
manifest
.
serviceDescription
.
targetOffsetMs
;
targetOffsetMs
=
manifest
.
serviceDescription
.
targetOffsetMs
;
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaSourceTest.java
View file @
c17d1091
...
@@ -227,7 +227,7 @@ public final class DashMediaSourceTest {
...
@@ -227,7 +227,7 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
2L
);
assertThat
(
dashMediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
2L
);
}
}
@Test
@Test
...
@@ -240,7 +240,7 @@ public final class DashMediaSourceTest {
...
@@ -240,7 +240,7 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
2L
);
assertThat
(
dashMediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
2L
);
}
}
@Test
@Test
...
@@ -252,7 +252,7 @@ public final class DashMediaSourceTest {
...
@@ -252,7 +252,7 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
2000L
);
assertThat
(
dashMediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
2000L
);
}
}
@Test
@Test
...
@@ -264,7 +264,7 @@ public final class DashMediaSourceTest {
...
@@ -264,7 +264,7 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
mediaItem
).
getMediaItem
();
assertThat
(
dashMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
dashMediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
}
}
@Test
@Test
...
@@ -276,7 +276,7 @@ public final class DashMediaSourceTest {
...
@@ -276,7 +276,7 @@ public final class DashMediaSourceTest {
MediaItem
dashMediaItem
=
MediaItem
dashMediaItem
=
factory
.
createMediaSource
(
MediaItem
.
fromUri
(
Uri
.
EMPTY
)).
getMediaItem
();
factory
.
createMediaSource
(
MediaItem
.
fromUri
(
Uri
.
EMPTY
)).
getMediaItem
();
assertThat
(
dashMediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
assertThat
(
dashMediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
C
.
TIME_UNSET
);
}
}
@Test
@Test
...
@@ -289,10 +289,10 @@ public final class DashMediaSourceTest {
...
@@ -289,10 +289,10 @@ public final class DashMediaSourceTest {
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
)
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
)
.
isEqualTo
(
DashMediaSource
.
DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS
);
.
isEqualTo
(
DashMediaSource
.
DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
0L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
0L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
58_000L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
58_000L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
}
}
...
@@ -308,9 +308,9 @@ public final class DashMediaSourceTest {
...
@@ -308,9 +308,9 @@ public final class DashMediaSourceTest {
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
1234L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
1234L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
0L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
0L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
58_000L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
58_000L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
}
}
...
@@ -335,9 +335,9 @@ public final class DashMediaSourceTest {
...
@@ -335,9 +335,9 @@ public final class DashMediaSourceTest {
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
876L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
876L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
500L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
500L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
20_000L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
20_000L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
23
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
23
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
42
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
42
f
);
}
}
...
@@ -355,9 +355,9 @@ public final class DashMediaSourceTest {
...
@@ -355,9 +355,9 @@ public final class DashMediaSourceTest {
MediaItem
mediaItem
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItem
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
2_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
2_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
500L
);
assertThat
(
mediaItem
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
500L
);
assertThat
(
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
58_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
58_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
C
.
RATE_UNSET
);
}
}
...
@@ -385,9 +385,9 @@ public final class DashMediaSourceTest {
...
@@ -385,9 +385,9 @@ public final class DashMediaSourceTest {
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
876L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
876L
);
assertThat
(
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
200L
);
assertThat
(
mediaItem
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
200L
);
assertThat
(
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
999L
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
999L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
23
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
23
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
42
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
42
f
);
}
}
...
@@ -403,9 +403,9 @@ public final class DashMediaSourceTest {
...
@@ -403,9 +403,9 @@ public final class DashMediaSourceTest {
MediaItem
mediaItem
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItem
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
4_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
4_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
2_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
2_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
6_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
6_000L
);
assertThat
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
0.96f
);
assertThat
(
mediaItem
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
0.96f
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
1.04f
);
assertThat
(
mediaItem
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
1.04f
);
}
}
...
@@ -430,9 +430,9 @@ public final class DashMediaSourceTest {
...
@@ -430,9 +430,9 @@ public final class DashMediaSourceTest {
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
MediaItem
mediaItemFromSource
=
prepareAndWaitForTimelineRefresh
(
mediaSource
).
mediaItem
;
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
876L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
876L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
min
Live
OffsetMs
).
isEqualTo
(
100L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minOffsetMs
).
isEqualTo
(
100L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
max
Live
OffsetMs
).
isEqualTo
(
999L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxOffsetMs
).
isEqualTo
(
999L
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
23
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
minPlaybackSpeed
).
isEqualTo
(
23
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
42
f
);
assertThat
(
mediaItemFromSource
.
liveConfiguration
.
maxPlaybackSpeed
).
isEqualTo
(
42
f
);
}
}
...
@@ -448,7 +448,7 @@ public final class DashMediaSourceTest {
...
@@ -448,7 +448,7 @@ public final class DashMediaSourceTest {
Window
window
=
prepareAndWaitForTimelineRefresh
(
mediaSource
);
Window
window
=
prepareAndWaitForTimelineRefresh
(
mediaSource
);
// Expect the target live offset as defined in the manifest.
// Expect the target live offset as defined in the manifest.
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
3000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
3000
);
// Expect the default position at the first segment start before the live edge.
// Expect the default position at the first segment start before the live edge.
assertThat
(
window
.
getDefaultPositionMs
()).
isEqualTo
(
2_000
);
assertThat
(
window
.
getDefaultPositionMs
()).
isEqualTo
(
2_000
);
}
}
...
@@ -466,7 +466,7 @@ public final class DashMediaSourceTest {
...
@@ -466,7 +466,7 @@ public final class DashMediaSourceTest {
// Expect the default position at the first segment start below the minimum live start position.
// Expect the default position at the first segment start below the minimum live start position.
assertThat
(
window
.
getDefaultPositionMs
()).
isEqualTo
(
4_000
);
assertThat
(
window
.
getDefaultPositionMs
()).
isEqualTo
(
4_000
);
// Expect the target live offset reaching from now time to the minimum live start position.
// Expect the target live offset reaching from now time to the minimum live start position.
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
9000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
9000
);
}
}
@Test
@Test
...
@@ -483,7 +483,7 @@ public final class DashMediaSourceTest {
...
@@ -483,7 +483,7 @@ public final class DashMediaSourceTest {
// Expect the default position at the start of the last segment.
// Expect the default position at the start of the last segment.
assertThat
(
window
.
getDefaultPositionMs
()).
isEqualTo
(
12_000
);
assertThat
(
window
.
getDefaultPositionMs
()).
isEqualTo
(
12_000
);
// Expect the target live offset reaching from now time to the end of the window.
// Expect the target live offset reaching from now time to the end of the window.
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
60_000
-
16_000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
60_000
-
16_000
);
}
}
private
static
Window
prepareAndWaitForTimelineRefresh
(
MediaSource
mediaSource
)
private
static
Window
prepareAndWaitForTimelineRefresh
(
MediaSource
mediaSource
)
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java
View file @
c17d1091
...
@@ -515,8 +515,8 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -515,8 +515,8 @@ public final class HlsMediaSource extends BaseMediaSource
if
(
playlistTracker
.
isLive
())
{
if
(
playlistTracker
.
isLive
())
{
long
liveEdgeOffsetUs
=
getLiveEdgeOffsetUs
(
playlist
);
long
liveEdgeOffsetUs
=
getLiveEdgeOffsetUs
(
playlist
);
long
targetLiveOffsetUs
=
long
targetLiveOffsetUs
=
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
!=
C
.
TIME_UNSET
mediaItem
.
liveConfiguration
.
targetOffsetMs
!=
C
.
TIME_UNSET
?
C
.
msToUs
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
?
C
.
msToUs
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
:
getTargetLiveOffsetUs
(
playlist
,
liveEdgeOffsetUs
);
:
getTargetLiveOffsetUs
(
playlist
,
liveEdgeOffsetUs
);
// Ensure target live offset is within the live window and greater than the live edge offset.
// Ensure target live offset is within the live window and greater than the live edge offset.
targetLiveOffsetUs
=
targetLiveOffsetUs
=
...
@@ -583,7 +583,7 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -583,7 +583,7 @@ public final class HlsMediaSource extends BaseMediaSource
long
minStartPositionUs
=
long
minStartPositionUs
=
playlist
.
durationUs
playlist
.
durationUs
+
liveEdgeOffsetUs
+
liveEdgeOffsetUs
-
C
.
msToUs
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
);
-
C
.
msToUs
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
);
while
(
segmentIndex
>
0
while
(
segmentIndex
>
0
&&
segments
.
get
(
segmentIndex
).
relativeStartTimeUs
>
minStartPositionUs
)
{
&&
segments
.
get
(
segmentIndex
).
relativeStartTimeUs
>
minStartPositionUs
)
{
segmentIndex
--;
segmentIndex
--;
...
@@ -593,7 +593,7 @@ public final class HlsMediaSource extends BaseMediaSource
...
@@ -593,7 +593,7 @@ public final class HlsMediaSource extends BaseMediaSource
private
void
maybeUpdateMediaItem
(
long
targetLiveOffsetUs
)
{
private
void
maybeUpdateMediaItem
(
long
targetLiveOffsetUs
)
{
long
targetLiveOffsetMs
=
C
.
usToMs
(
targetLiveOffsetUs
);
long
targetLiveOffsetMs
=
C
.
usToMs
(
targetLiveOffsetUs
);
if
(
targetLiveOffsetMs
!=
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
{
if
(
targetLiveOffsetMs
!=
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
{
mediaItem
=
mediaItem
.
buildUpon
().
setLiveTargetOffsetMs
(
targetLiveOffsetMs
).
build
();
mediaItem
=
mediaItem
.
buildUpon
().
setLiveTargetOffsetMs
(
targetLiveOffsetMs
).
build
();
}
}
}
}
...
...
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaSourceTest.java
View file @
c17d1091
...
@@ -183,7 +183,7 @@ public class HlsMediaSourceTest {
...
@@ -183,7 +183,7 @@ public class HlsMediaSourceTest {
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
// The target live offset is picked from target duration (3 * 4 = 12 seconds) and then expressed
// The target live offset is picked from target duration (3 * 4 = 12 seconds) and then expressed
// in relation to the live edge (12 + 1 seconds).
// in relation to the live edge (12 + 1 seconds).
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
13000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
13000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
}
}
...
@@ -219,7 +219,7 @@ public class HlsMediaSourceTest {
...
@@ -219,7 +219,7 @@ public class HlsMediaSourceTest {
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
// The target live offset is picked from hold back and then expressed in relation to the live
// The target live offset is picked from hold back and then expressed in relation to the live
// edge (+1 seconds).
// edge (+1 seconds).
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
13000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
13000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
}
}
...
@@ -257,7 +257,7 @@ public class HlsMediaSourceTest {
...
@@ -257,7 +257,7 @@ public class HlsMediaSourceTest {
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
// The target live offset is picked from hold back and then expressed in relation to the live
// The target live offset is picked from hold back and then expressed in relation to the live
// edge (+1 seconds).
// edge (+1 seconds).
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
13000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
13000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
}
}
...
@@ -288,7 +288,7 @@ public class HlsMediaSourceTest {
...
@@ -288,7 +288,7 @@ public class HlsMediaSourceTest {
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
// The target live offset is picked from part hold back and then expressed in relation to the
// The target live offset is picked from part hold back and then expressed in relation to the
// live edge (+1 seconds).
// live edge (+1 seconds).
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
4000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
4000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
0
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
0
);
}
}
...
@@ -318,7 +318,7 @@ public class HlsMediaSourceTest {
...
@@ -318,7 +318,7 @@ public class HlsMediaSourceTest {
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
// The target live offset is picked from the media item and not adjusted.
// The target live offset is picked from the media item and not adjusted.
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
1000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
1000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
0
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
0
);
}
}
...
@@ -349,9 +349,9 @@ public class HlsMediaSourceTest {
...
@@ -349,9 +349,9 @@ public class HlsMediaSourceTest {
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
Timeline
timeline
=
prepareAndWaitForTimeline
(
mediaSource
);
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
assertThat
(
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
assertThat
(
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
.
isGreaterThan
(
C
.
usToMs
(
window
.
durationUs
));
.
isGreaterThan
(
C
.
usToMs
(
window
.
durationUs
));
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
9000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
9000
);
}
}
@Test
@Test
...
@@ -385,7 +385,7 @@ public class HlsMediaSourceTest {
...
@@ -385,7 +385,7 @@ public class HlsMediaSourceTest {
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
Timeline
.
Window
window
=
timeline
.
getWindow
(
0
,
new
Timeline
.
Window
());
// The target live offset is not adjusted to the live edge because the list does not have
// The target live offset is not adjusted to the live edge because the list does not have
// program date time.
// program date time.
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
).
isEqualTo
(
12000
);
assertThat
(
window
.
mediaItem
.
liveConfiguration
.
targetOffsetMs
).
isEqualTo
(
12000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
assertThat
(
window
.
defaultPositionUs
).
isEqualTo
(
4000000
);
}
}
...
@@ -475,13 +475,13 @@ public class HlsMediaSourceTest {
...
@@ -475,13 +475,13 @@ public class HlsMediaSourceTest {
runMainLooperUntil
(()
->
timelines
.
size
()
==
4
);
runMainLooperUntil
(()
->
timelines
.
size
()
==
4
);
Timeline
.
Window
window
=
new
Timeline
.
Window
();
Timeline
.
Window
window
=
new
Timeline
.
Window
();
assertThat
(
timelines
.
get
(
0
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
assertThat
(
timelines
.
get
(
0
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
.
isEqualTo
(
12000
);
.
isEqualTo
(
12000
);
assertThat
(
timelines
.
get
(
1
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
assertThat
(
timelines
.
get
(
1
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
.
isEqualTo
(
12000
);
.
isEqualTo
(
12000
);
assertThat
(
timelines
.
get
(
2
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
assertThat
(
timelines
.
get
(
2
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
.
isEqualTo
(
8000
);
.
isEqualTo
(
8000
);
assertThat
(
timelines
.
get
(
3
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
target
Live
OffsetMs
)
assertThat
(
timelines
.
get
(
3
).
getWindow
(
0
,
window
).
mediaItem
.
liveConfiguration
.
targetOffsetMs
)
.
isEqualTo
(
8000
);
.
isEqualTo
(
8000
);
}
}
...
...
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