diff --git a/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylistParserTest.java b/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylistParserTest.java index 40663fa236..6bbcaecd1f 100644 --- a/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylistParserTest.java +++ b/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylistParserTest.java @@ -16,23 +16,19 @@ package com.google.android.exoplayer2.source.hls.playlist; import android.net.Uri; - import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.ParserException; import com.google.android.exoplayer2.util.MimeTypes; - -import junit.framework.TestCase; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.charset.Charset; import java.util.Collections; -import java.util.Comparator; import java.util.List; +import junit.framework.TestCase; /** - * Test for {@link HlsMasterPlaylistParserTest} + * Test for {@link HlsMasterPlaylistParserTest}. */ public class HlsMasterPlaylistParserTest extends TestCase { @@ -148,44 +144,6 @@ public class HlsMasterPlaylistParserTest extends TestCase { assertEquals(Collections.emptyList(), playlist.muxedCaptionFormats); } - public void testReorderedVariantCopy() throws IOException { - HlsMasterPlaylist playlist = parseMasterPlaylist(PLAYLIST_URI, MASTER_PLAYLIST); - HlsMasterPlaylist nonReorderedPlaylist = - playlist.copyWithReorderedVariants(new Comparator() { - @Override - public int compare(HlsMasterPlaylist.HlsUrl url1, HlsMasterPlaylist.HlsUrl url2) { - return 0; - } - }); - assertEquals(playlist.variants, nonReorderedPlaylist.variants); - HlsMasterPlaylist.HlsUrl preferred = null; - for (HlsMasterPlaylist.HlsUrl url : playlist.variants) { - if (preferred == null || url.format.bitrate > preferred.format.bitrate) { - preferred = url; - } - } - - assertNotNull(preferred); - - final Comparator comparator = Collections.reverseOrder(new Comparator() { - @Override - public int compare(HlsMasterPlaylist.HlsUrl url1, HlsMasterPlaylist.HlsUrl url2) { - if (url1.format.bitrate > url2.format.bitrate) { - return 1; - } - - if (url2.format.bitrate > url1.format.bitrate) { - return -1; - } - - return 0; - } - }); - HlsMasterPlaylist reorderedPlaylist = playlist.copyWithReorderedVariants(comparator); - - assertEquals(reorderedPlaylist.variants.get(0), preferred); - } - private static HlsMasterPlaylist parseMasterPlaylist(String uri, String playlistString) throws IOException { Uri playlistUri = Uri.parse(uri); diff --git a/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylistParserTest.java b/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylistParserTest.java index e2eb173df8..6855f786ec 100644 --- a/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylistParserTest.java +++ b/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylistParserTest.java @@ -27,7 +27,7 @@ import java.util.Locale; import junit.framework.TestCase; /** - * Test for {@link HlsMediaPlaylistParserTest} + * Test for {@link HlsMediaPlaylistParserTest}. */ public class HlsMediaPlaylistParserTest extends TestCase { diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index b7f7124e44..10a0536612 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -76,13 +76,14 @@ public final class HlsMediaSource implements MediaSource, public HlsMediaSource(Uri manifestUri, HlsDataSourceFactory dataSourceFactory, int minLoadableRetryCount, Handler eventHandler, AdaptiveMediaSourceEventListener eventListener) { - this(manifestUri, dataSourceFactory, minLoadableRetryCount, eventHandler, eventListener, new HlsPlaylistParser()); + this(manifestUri, dataSourceFactory, minLoadableRetryCount, eventHandler, eventListener, + new HlsPlaylistParser()); } public HlsMediaSource(Uri manifestUri, HlsDataSourceFactory dataSourceFactory, - int minLoadableRetryCount, Handler eventHandler, - AdaptiveMediaSourceEventListener eventListener, - ParsingLoadable.Parser playlistParser) { + int minLoadableRetryCount, Handler eventHandler, + AdaptiveMediaSourceEventListener eventListener, + ParsingLoadable.Parser playlistParser) { this.manifestUri = manifestUri; this.dataSourceFactory = dataSourceFactory; this.minLoadableRetryCount = minLoadableRetryCount; diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java index 5ded975f88..04192def9d 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java @@ -19,7 +19,6 @@ import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.util.MimeTypes; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; /** @@ -124,25 +123,6 @@ public final class HlsMasterPlaylist extends HlsPlaylist { muxedAudioFormat, muxedCaptionFormats); } - /** - * Returns a copy of this playlist which includes the variants sorted using the passed comparator. NOTE: the variants - * will be sorted in ascending order by default. If you wish to use descending order, you can wrap your comparator in - * {@link Collections#reverseOrder(Comparator)}. - * - * @param variantComparator the comparator to use to sort the variant list. - * @return a copy of this playlist which includes the variants sorted using the passed comparator. - */ - public HlsMasterPlaylist copyWithReorderedVariants(Comparator variantComparator) { - return new HlsMasterPlaylist(baseUri, tags, filterVariants(variants, variantComparator), audios, - subtitles, muxedAudioFormat, muxedCaptionFormats); - } - - private List filterVariants(List variants, Comparator variantComparator) { - List reorderedList = new ArrayList<>(variants); - Collections.sort(reorderedList, variantComparator); - return reorderedList; - } - /** * Creates a playlist with a single variant. * diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker.java index a0e299632d..3d8d4eb3af 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistTracker.java @@ -145,15 +145,16 @@ public final class HlsPlaylistTracker implements Loader.Callback playlistParser) { + PrimaryPlaylistListener primaryPlaylistListener, + ParsingLoadable.Parser playlistParser) { this.initialPlaylistUri = initialPlaylistUri; this.dataSourceFactory = dataSourceFactory; this.eventDispatcher = eventDispatcher; this.minRetryCount = minRetryCount; this.primaryPlaylistListener = primaryPlaylistListener; + this.playlistParser = playlistParser; listeners = new ArrayList<>(); initialPlaylistLoader = new Loader("HlsPlaylistTracker:MasterPlaylist"); - this.playlistParser = playlistParser; playlistBundles = new IdentityHashMap<>(); playlistRefreshHandler = new Handler(); }