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
28434cff
authored
Feb 19, 2019
by
aquilescanta
Committed by
Andrew Lewis
Feb 19, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Support customization of the PlaylistStuckException waiting period
Issue:#5487 PiperOrigin-RevId: 234586819
parent
a174af0d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
4 deletions
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java
View file @
28434cff
...
@@ -45,16 +45,17 @@ public final class DefaultHlsPlaylistTracker
...
@@ -45,16 +45,17 @@ public final class DefaultHlsPlaylistTracker
public
static
final
Factory
FACTORY
=
DefaultHlsPlaylistTracker:
:
new
;
public
static
final
Factory
FACTORY
=
DefaultHlsPlaylistTracker:
:
new
;
/**
/**
*
Coefficient applied on the target duration of a playlist to determine the amount of time after
*
Default coefficient applied on the target duration of a playlist to determine the amount of
* which an unchanging playlist is considered stuck.
*
time after
which an unchanging playlist is considered stuck.
*/
*/
p
rivate
static
final
double
PLAYLIST_STUCK_TARGET_DURATION_COEFFICIENT
=
3.5
;
p
ublic
static
final
double
DEFAULT_
PLAYLIST_STUCK_TARGET_DURATION_COEFFICIENT
=
3.5
;
private
final
HlsDataSourceFactory
dataSourceFactory
;
private
final
HlsDataSourceFactory
dataSourceFactory
;
private
final
HlsPlaylistParserFactory
playlistParserFactory
;
private
final
HlsPlaylistParserFactory
playlistParserFactory
;
private
final
LoadErrorHandlingPolicy
loadErrorHandlingPolicy
;
private
final
LoadErrorHandlingPolicy
loadErrorHandlingPolicy
;
private
final
IdentityHashMap
<
HlsUrl
,
MediaPlaylistBundle
>
playlistBundles
;
private
final
IdentityHashMap
<
HlsUrl
,
MediaPlaylistBundle
>
playlistBundles
;
private
final
List
<
PlaylistEventListener
>
listeners
;
private
final
List
<
PlaylistEventListener
>
listeners
;
private
final
double
playlistStuckTargetDurationCoefficient
;
private
@Nullable
ParsingLoadable
.
Parser
<
HlsPlaylist
>
mediaPlaylistParser
;
private
@Nullable
ParsingLoadable
.
Parser
<
HlsPlaylist
>
mediaPlaylistParser
;
private
@Nullable
EventDispatcher
eventDispatcher
;
private
@Nullable
EventDispatcher
eventDispatcher
;
...
@@ -68,6 +69,8 @@ public final class DefaultHlsPlaylistTracker
...
@@ -68,6 +69,8 @@ public final class DefaultHlsPlaylistTracker
private
long
initialStartTimeUs
;
private
long
initialStartTimeUs
;
/**
/**
* Creates an instance.
*
* @param dataSourceFactory A factory for {@link DataSource} instances.
* @param dataSourceFactory A factory for {@link DataSource} instances.
* @param loadErrorHandlingPolicy The {@link LoadErrorHandlingPolicy}.
* @param loadErrorHandlingPolicy The {@link LoadErrorHandlingPolicy}.
* @param playlistParserFactory An {@link HlsPlaylistParserFactory}.
* @param playlistParserFactory An {@link HlsPlaylistParserFactory}.
...
@@ -76,9 +79,33 @@ public final class DefaultHlsPlaylistTracker
...
@@ -76,9 +79,33 @@ public final class DefaultHlsPlaylistTracker
HlsDataSourceFactory
dataSourceFactory
,
HlsDataSourceFactory
dataSourceFactory
,
LoadErrorHandlingPolicy
loadErrorHandlingPolicy
,
LoadErrorHandlingPolicy
loadErrorHandlingPolicy
,
HlsPlaylistParserFactory
playlistParserFactory
)
{
HlsPlaylistParserFactory
playlistParserFactory
)
{
this
(
dataSourceFactory
,
loadErrorHandlingPolicy
,
playlistParserFactory
,
DEFAULT_PLAYLIST_STUCK_TARGET_DURATION_COEFFICIENT
);
}
/**
* Creates an instance.
*
* @param dataSourceFactory A factory for {@link DataSource} instances.
* @param loadErrorHandlingPolicy The {@link LoadErrorHandlingPolicy}.
* @param playlistParserFactory An {@link HlsPlaylistParserFactory}.
* @param playlistStuckTargetDurationCoefficient A coefficient to apply to the target duration of
* media playlists in order to determine that a non-changing playlist is stuck. Once a
* playlist is deemed stuck, a {@link PlaylistStuckException} is thrown via {@link
* #maybeThrowPlaylistRefreshError(HlsUrl)}.
*/
public
DefaultHlsPlaylistTracker
(
HlsDataSourceFactory
dataSourceFactory
,
LoadErrorHandlingPolicy
loadErrorHandlingPolicy
,
HlsPlaylistParserFactory
playlistParserFactory
,
double
playlistStuckTargetDurationCoefficient
)
{
this
.
dataSourceFactory
=
dataSourceFactory
;
this
.
dataSourceFactory
=
dataSourceFactory
;
this
.
playlistParserFactory
=
playlistParserFactory
;
this
.
playlistParserFactory
=
playlistParserFactory
;
this
.
loadErrorHandlingPolicy
=
loadErrorHandlingPolicy
;
this
.
loadErrorHandlingPolicy
=
loadErrorHandlingPolicy
;
this
.
playlistStuckTargetDurationCoefficient
=
playlistStuckTargetDurationCoefficient
;
listeners
=
new
ArrayList
<>();
listeners
=
new
ArrayList
<>();
playlistBundles
=
new
IdentityHashMap
<>();
playlistBundles
=
new
IdentityHashMap
<>();
initialStartTimeUs
=
C
.
TIME_UNSET
;
initialStartTimeUs
=
C
.
TIME_UNSET
;
...
@@ -597,7 +624,7 @@ public final class DefaultHlsPlaylistTracker
...
@@ -597,7 +624,7 @@ public final class DefaultHlsPlaylistTracker
notifyPlaylistError
(
playlistUrl
,
C
.
TIME_UNSET
);
notifyPlaylistError
(
playlistUrl
,
C
.
TIME_UNSET
);
}
else
if
(
currentTimeMs
-
lastSnapshotChangeMs
}
else
if
(
currentTimeMs
-
lastSnapshotChangeMs
>
C
.
usToMs
(
playlistSnapshot
.
targetDurationUs
)
>
C
.
usToMs
(
playlistSnapshot
.
targetDurationUs
)
*
PLAYLIST_STUCK_TARGET_DURATION_COEFFICIENT
)
{
*
playlistStuckTargetDurationCoefficient
)
{
// TODO: Allow customization of stuck playlists handling.
// TODO: Allow customization of stuck playlists handling.
playlistError
=
new
PlaylistStuckException
(
playlistUrl
.
url
);
playlistError
=
new
PlaylistStuckException
(
playlistUrl
.
url
);
long
blacklistDurationMs
=
long
blacklistDurationMs
=
...
...
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