Commit 7c587c6b by aquilescanta Committed by Oliver Woodman

Prevent playlist loading if refresh is already scheduled

This greatly reduces the amount of server requests issued by
the playlist tracker.

Issue:#2548

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=150055046
parent 204537ed
......@@ -432,6 +432,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
private long lastSnapshotLoadMs;
private long lastSnapshotAccessTimeMs;
private long blacklistUntilMs;
private boolean pendingRefresh;
public MediaPlaylistBundle(HlsUrl playlistUrl, long initialLastSnapshotAccessTimeMs) {
this.playlistUrl = playlistUrl;
......@@ -466,7 +467,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
public void loadPlaylist() {
blacklistUntilMs = 0;
if (!mediaPlaylistLoader.isLoading()) {
if (!pendingRefresh && !mediaPlaylistLoader.isLoading()) {
mediaPlaylistLoader.startLoading(mediaPlaylistLoadable, this, minRetryCount);
}
}
......@@ -512,6 +513,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
@Override
public void run() {
pendingRefresh = false;
loadPlaylist();
}
......@@ -531,7 +533,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
}
if (refreshDelayUs != C.TIME_UNSET) {
// See HLS spec v20, section 6.3.4 for more information on media playlist refreshing.
playlistRefreshHandler.postDelayed(this, C.usToMs(refreshDelayUs));
pendingRefresh = playlistRefreshHandler.postDelayed(this, C.usToMs(refreshDelayUs));
}
}
......
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