Commit 792f046c by Oliver Woodman

Clean up HlsPlaylistTracker

parent 8ee6da1f
...@@ -200,7 +200,7 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -200,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 (url != primaryHlsUrl && snapshot != null) { if (snapshot != null) {
maybeSetPrimaryUrl(url); maybeSetPrimaryUrl(url);
} }
return snapshot; return snapshot;
...@@ -338,23 +338,22 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -338,23 +338,22 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
} }
private void maybeSetPrimaryUrl(HlsUrl url) { private void maybeSetPrimaryUrl(HlsUrl url) {
if (!masterPlaylist.variants.contains(url) if (url == primaryHlsUrl
|| !masterPlaylist.variants.contains(url)
|| (primaryUrlSnapshot != null && primaryUrlSnapshot.hasEndTag)) { || (primaryUrlSnapshot != null && primaryUrlSnapshot.hasEndTag)) {
// Only allow variant urls to be chosen as primary. Also prevent changing the primary url if // Ignore if the primary url is unchanged, if the url is not a variant url, or if the last
// the last primary snapshot contains an end tag. // primary snapshot contains an end tag.
return; return;
} }
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();
long currentTimeMs = SystemClock.elapsedRealtime();
for (int i = 0; i < listSize; i++) { for (int i = 0; i < listSize; i++) {
HlsUrl url = urls.get(i); HlsUrl url = urls.get(i);
MediaPlaylistBundle bundle = new MediaPlaylistBundle(url, currentTimeMs); MediaPlaylistBundle bundle = new MediaPlaylistBundle(url);
playlistBundles.put(url, bundle); playlistBundles.put(url, bundle);
} }
} }
...@@ -470,14 +469,12 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -470,14 +469,12 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
private HlsMediaPlaylist playlistSnapshot; private HlsMediaPlaylist playlistSnapshot;
private long lastSnapshotLoadMs; private long lastSnapshotLoadMs;
private long lastSnapshotChangeMs; private long lastSnapshotChangeMs;
private long lastSnapshotAccessTimeMs;
private long blacklistUntilMs; private long blacklistUntilMs;
private boolean pendingRefresh; private boolean pendingRefresh;
private IOException playlistError; private IOException playlistError;
public MediaPlaylistBundle(HlsUrl playlistUrl, long initialLastSnapshotAccessTimeMs) { public MediaPlaylistBundle(HlsUrl playlistUrl) {
this.playlistUrl = playlistUrl; this.playlistUrl = playlistUrl;
lastSnapshotAccessTimeMs = initialLastSnapshotAccessTimeMs;
mediaPlaylistLoader = new Loader("HlsPlaylistTracker:MediaPlaylist"); mediaPlaylistLoader = new Loader("HlsPlaylistTracker:MediaPlaylist");
mediaPlaylistLoadable = new ParsingLoadable<>( mediaPlaylistLoadable = new ParsingLoadable<>(
dataSourceFactory.createDataSource(C.DATA_TYPE_MANIFEST), dataSourceFactory.createDataSource(C.DATA_TYPE_MANIFEST),
...@@ -486,7 +483,6 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable ...@@ -486,7 +483,6 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
} }
public HlsMediaPlaylist getPlaylistSnapshot() { public HlsMediaPlaylist getPlaylistSnapshot() {
lastSnapshotAccessTimeMs = SystemClock.elapsedRealtime();
return playlistSnapshot; return playlistSnapshot;
} }
......
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