Commit 8ee6da1f by ojw28 Committed by GitHub

Merge pull request #3280 from yqritc/fix-primary-playlist-update

Fix primary hls playlist update
parents b17a6ba5 455f9fb9
...@@ -112,11 +112,6 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -112,11 +112,6 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
* which an unchanging playlist is considered stuck. * which an unchanging playlist is considered stuck.
*/ */
private static final double PLAYLIST_STUCK_TARGET_DURATION_COEFFICIENT = 3.5; private static final double PLAYLIST_STUCK_TARGET_DURATION_COEFFICIENT = 3.5;
/**
* The minimum number of milliseconds that a url is kept as primary url, if no
* {@link #getPlaylistSnapshot} call is made for that url.
*/
private static final long PRIMARY_URL_KEEPALIVE_MS = 15000;
private final Uri initialPlaylistUri; private final Uri initialPlaylistUri;
private final HlsDataSourceFactory dataSourceFactory; private final HlsDataSourceFactory dataSourceFactory;
...@@ -205,7 +200,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -205,7 +200,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
*/ */
public HlsMediaPlaylist getPlaylistSnapshot(HlsUrl url) { public HlsMediaPlaylist getPlaylistSnapshot(HlsUrl url) {
HlsMediaPlaylist snapshot = playlistBundles.get(url).getPlaylistSnapshot(); HlsMediaPlaylist snapshot = playlistBundles.get(url).getPlaylistSnapshot();
if (snapshot != null) { if (url != primaryHlsUrl && snapshot != null) {
maybeSetPrimaryUrl(url); maybeSetPrimaryUrl(url);
} }
return snapshot; return snapshot;
...@@ -349,14 +344,10 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -349,14 +344,10 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
// the last primary snapshot contains an end tag. // the last primary snapshot contains an end tag.
return; return;
} }
MediaPlaylistBundle currentPrimaryBundle = playlistBundles.get(primaryHlsUrl);
long primarySnapshotAccessAgeMs =
currentPrimaryBundle.lastSnapshotAccessTimeMs - SystemClock.elapsedRealtime();
if (primarySnapshotAccessAgeMs > PRIMARY_URL_KEEPALIVE_MS) {
primaryHlsUrl = url; primaryHlsUrl = url;
playlistBundles.get(primaryHlsUrl).loadPlaylist(); playlistBundles.get(primaryHlsUrl).loadPlaylist();
} }
}
private void createBundles(List<HlsUrl> urls) { private void createBundles(List<HlsUrl> urls) {
int listSize = urls.size(); int listSize = urls.size();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment