mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Clean up HlsPlaylistTracker
This commit is contained in:
parent
8ee6da1fe9
commit
792f046c02
@ -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
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
|||||||
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
|
|||||||
}
|
}
|
||||||
|
|
||||||
public HlsMediaPlaylist getPlaylistSnapshot() {
|
public HlsMediaPlaylist getPlaylistSnapshot() {
|
||||||
lastSnapshotAccessTimeMs = SystemClock.elapsedRealtime();
|
|
||||||
return playlistSnapshot;
|
return playlistSnapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user