mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Clean up HlsPlaylistTracker
This commit is contained in:
parent
98f6e89efd
commit
d8ceef1038
1 changed files with 7 additions and 11 deletions
|
|
@ -201,7 +201,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;
|
||||||
|
|
@ -339,23 +339,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -471,14 +470,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),
|
||||||
|
|
@ -487,7 +484,6 @@ public final class HlsPlaylistTracker implements Loader.Callback<ParsingLoadable
|
||||||
}
|
}
|
||||||
|
|
||||||
public HlsMediaPlaylist getPlaylistSnapshot() {
|
public HlsMediaPlaylist getPlaylistSnapshot() {
|
||||||
lastSnapshotAccessTimeMs = SystemClock.elapsedRealtime();
|
|
||||||
return playlistSnapshot;
|
return playlistSnapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue