Fix re-starting of DefaultHlsPlalyistTracker
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=201530049
This commit is contained in:
parent
35ac394de3
commit
3ede1aaa8e
@ -28,6 +28,7 @@ import com.google.android.exoplayer2.source.hls.playlist.HlsMediaPlaylist.Segmen
|
|||||||
import com.google.android.exoplayer2.upstream.DataSource;
|
import com.google.android.exoplayer2.upstream.DataSource;
|
||||||
import com.google.android.exoplayer2.upstream.Loader;
|
import com.google.android.exoplayer2.upstream.Loader;
|
||||||
import com.google.android.exoplayer2.upstream.ParsingLoadable;
|
import com.google.android.exoplayer2.upstream.ParsingLoadable;
|
||||||
|
import com.google.android.exoplayer2.util.Assertions;
|
||||||
import com.google.android.exoplayer2.util.UriUtil;
|
import com.google.android.exoplayer2.util.UriUtil;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -49,10 +50,10 @@ public final class DefaultHlsPlaylistTracker
|
|||||||
private final int minRetryCount;
|
private final int minRetryCount;
|
||||||
private final IdentityHashMap<HlsUrl, MediaPlaylistBundle> playlistBundles;
|
private final IdentityHashMap<HlsUrl, MediaPlaylistBundle> playlistBundles;
|
||||||
private final List<PlaylistEventListener> listeners;
|
private final List<PlaylistEventListener> listeners;
|
||||||
private final Loader initialPlaylistLoader;
|
|
||||||
|
|
||||||
private Handler playlistRefreshHandler;
|
|
||||||
private EventDispatcher eventDispatcher;
|
private EventDispatcher eventDispatcher;
|
||||||
|
private Loader initialPlaylistLoader;
|
||||||
|
private Handler playlistRefreshHandler;
|
||||||
private PrimaryPlaylistListener primaryPlaylistListener;
|
private PrimaryPlaylistListener primaryPlaylistListener;
|
||||||
private HlsMasterPlaylist masterPlaylist;
|
private HlsMasterPlaylist masterPlaylist;
|
||||||
private HlsUrl primaryHlsUrl;
|
private HlsUrl primaryHlsUrl;
|
||||||
@ -75,7 +76,6 @@ public final class DefaultHlsPlaylistTracker
|
|||||||
this.minRetryCount = minRetryCount;
|
this.minRetryCount = minRetryCount;
|
||||||
this.playlistParser = playlistParser;
|
this.playlistParser = playlistParser;
|
||||||
listeners = new ArrayList<>();
|
listeners = new ArrayList<>();
|
||||||
initialPlaylistLoader = new Loader("DefaultHlsPlaylistTracker:MasterPlaylist");
|
|
||||||
playlistBundles = new IdentityHashMap<>();
|
playlistBundles = new IdentityHashMap<>();
|
||||||
initialStartTimeUs = C.TIME_UNSET;
|
initialStartTimeUs = C.TIME_UNSET;
|
||||||
}
|
}
|
||||||
@ -96,6 +96,8 @@ public final class DefaultHlsPlaylistTracker
|
|||||||
initialPlaylistUri,
|
initialPlaylistUri,
|
||||||
C.DATA_TYPE_MANIFEST,
|
C.DATA_TYPE_MANIFEST,
|
||||||
playlistParser);
|
playlistParser);
|
||||||
|
Assertions.checkState(initialPlaylistLoader == null);
|
||||||
|
initialPlaylistLoader = new Loader("DefaultHlsPlaylistTracker:MasterPlaylist");
|
||||||
long elapsedRealtime =
|
long elapsedRealtime =
|
||||||
initialPlaylistLoader.startLoading(masterPlaylistLoadable, this, minRetryCount);
|
initialPlaylistLoader.startLoading(masterPlaylistLoadable, this, minRetryCount);
|
||||||
eventDispatcher.loadStarted(
|
eventDispatcher.loadStarted(
|
||||||
@ -104,11 +106,17 @@ public final class DefaultHlsPlaylistTracker
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void release() {
|
public void release() {
|
||||||
|
primaryHlsUrl = null;
|
||||||
|
primaryUrlSnapshot = null;
|
||||||
|
masterPlaylist = null;
|
||||||
|
initialStartTimeUs = C.TIME_UNSET;
|
||||||
initialPlaylistLoader.release();
|
initialPlaylistLoader.release();
|
||||||
|
initialPlaylistLoader = null;
|
||||||
for (MediaPlaylistBundle bundle : playlistBundles.values()) {
|
for (MediaPlaylistBundle bundle : playlistBundles.values()) {
|
||||||
bundle.release();
|
bundle.release();
|
||||||
}
|
}
|
||||||
playlistRefreshHandler.removeCallbacksAndMessages(null);
|
playlistRefreshHandler.removeCallbacksAndMessages(null);
|
||||||
|
playlistRefreshHandler = null;
|
||||||
playlistBundles.clear();
|
playlistBundles.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,7 +156,9 @@ public final class DefaultHlsPlaylistTracker
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void maybeThrowPrimaryPlaylistRefreshError() throws IOException {
|
public void maybeThrowPrimaryPlaylistRefreshError() throws IOException {
|
||||||
initialPlaylistLoader.maybeThrowError();
|
if (initialPlaylistLoader != null) {
|
||||||
|
initialPlaylistLoader.maybeThrowError();
|
||||||
|
}
|
||||||
if (primaryHlsUrl != null) {
|
if (primaryHlsUrl != null) {
|
||||||
maybeThrowPlaylistRefreshError(primaryHlsUrl);
|
maybeThrowPlaylistRefreshError(primaryHlsUrl);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user