diff --git a/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParserTest.java b/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParserTest.java deleted file mode 100644 index 2816832704..0000000000 --- a/library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParserTest.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.google.android.exoplayer2.source.hls.playlist; - -import android.net.Uri; - -import com.google.android.exoplayer2.C; - -import junit.framework.TestCase; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; -import java.util.Collections; -import java.util.Comparator; - -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; - -public class ReorderingHlsPlaylistParserTest extends TestCase { - private static final String MASTER_PLAYLIST = " #EXTM3U \n" - + "\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=1280000,CODECS=\"mp4a.40.2,avc1.66.30\",RESOLUTION=304x128\n" - + "http://example.com/low.m3u8\n" - + "\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=2560000,FRAME-RATE=25,RESOLUTION=384x160\n" - + "http://example.com/mid.m3u8\n" - + "\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=7680000,FRAME-RATE=29.997\n" - + "http://example.com/hi.m3u8\n" - + "\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=65000,CODECS=\"mp4a.40.5\"\n" - + "http://example.com/audio-only.m3u8"; - - public void testReorderingWithNonMasterPlaylist() throws IOException { - Uri playlistUri = Uri.parse("https://example.com/test.m3u8"); - String playlistString = "#EXTM3U\n" - + "#EXT-X-VERSION:3\n" - + "#EXT-X-PLAYLIST-TYPE:VOD\n" - + "#EXT-X-START:TIME-OFFSET=-25" - + "#EXT-X-TARGETDURATION:8\n" - + "#EXT-X-MEDIA-SEQUENCE:2679\n" - + "#EXT-X-DISCONTINUITY-SEQUENCE:4\n" - + "#EXT-X-ALLOW-CACHE:YES\n" - + "\n" - + "#EXTINF:7.975,\n" - + "#EXT-X-BYTERANGE:51370@0\n" - + "https://priv.example.com/fileSequence2679.ts\n" - + "\n" - + "#EXT-X-KEY:METHOD=AES-128,URI=\"https://priv.example.com/key.php?r=2680\",IV=0x1566B\n" - + "#EXTINF:7.975,\n" - + "#EXT-X-BYTERANGE:51501@2147483648\n" - + "https://priv.example.com/fileSequence2680.ts\n" - + "\n" - + "#EXT-X-KEY:METHOD=NONE\n" - + "#EXTINF:7.941,\n" - + "#EXT-X-BYTERANGE:51501\n" // @2147535149 - + "https://priv.example.com/fileSequence2681.ts\n" - + "\n" - + "#EXT-X-DISCONTINUITY\n" - + "#EXT-X-KEY:METHOD=AES-128,URI=\"https://priv.example.com/key.php?r=2682\"\n" - + "#EXTINF:7.975,\n" - + "#EXT-X-BYTERANGE:51740\n" // @2147586650 - + "https://priv.example.com/fileSequence2682.ts\n" - + "\n" - + "#EXTINF:7.975,\n" - + "https://priv.example.com/fileSequence2683.ts\n" - + "#EXT-X-ENDLIST"; - InputStream inputStream = new ByteArrayInputStream(playlistString.getBytes(Charset.forName(C.UTF8_NAME))); - Comparator comparator = mock(Comparator.class); - ReorderingHlsPlaylistParser playlistParser = new ReorderingHlsPlaylistParser(new HlsPlaylistParser(), - comparator); - final HlsMediaPlaylist playlist = (HlsMediaPlaylist) playlistParser.parse(playlistUri, inputStream); - assertNotNull(playlist); - // We should never compare the variants for a media level playlist. - verify(comparator, never()).compare(any(HlsMasterPlaylist.HlsUrl.class), any(HlsMasterPlaylist.HlsUrl.class)); - } - - public void testReorderingForMasterPlaylist() throws IOException { - Uri playlistUri = Uri.parse("https://example.com/test.m3u8"); - ByteArrayInputStream inputStream = new ByteArrayInputStream( - MASTER_PLAYLIST.getBytes(Charset.forName(C.UTF8_NAME))); - 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; - } - }); - ReorderingHlsPlaylistParser playlistParser = new ReorderingHlsPlaylistParser(new HlsPlaylistParser(), - comparator); - final HlsMasterPlaylist reorderedPlaylist = (HlsMasterPlaylist) playlistParser.parse(playlistUri, inputStream); - assertNotNull(reorderedPlaylist); - - inputStream.reset(); - final HlsMasterPlaylist playlist = (HlsMasterPlaylist) new HlsPlaylistParser().parse(playlistUri, inputStream); - assertEquals(reorderedPlaylist.variants.get(0).format, playlist.variants.get(2).format); - } -} \ No newline at end of file diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParser.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParser.java deleted file mode 100644 index bdd47e8c28..0000000000 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParser.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.google.android.exoplayer2.source.hls.playlist; - -import android.net.Uri; - -import com.google.android.exoplayer2.upstream.ParsingLoadable; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Comparator; - -/** - * Parser for {@link HlsPlaylist}s that reorders the variants based on the comparator passed. - */ -public class ReorderingHlsPlaylistParser implements ParsingLoadable.Parser { - private final ParsingLoadable.Parser playlistParser; - private final Comparator variantComparator; - - /** - * @param playlistParser the {@link ParsingLoadable.Parser} to wrap. - * @param variantComparator the {@link Comparator} to use to reorder the variants. - * See {@link HlsMasterPlaylist#copyWithReorderedVariants(Comparator)} for more details. - */ - public ReorderingHlsPlaylistParser(ParsingLoadable.Parser playlistParser, - Comparator variantComparator) { - this.playlistParser = playlistParser; - this.variantComparator = variantComparator; - } - - @Override - public HlsPlaylist parse(Uri uri, InputStream inputStream) throws IOException { - final HlsPlaylist playlist = playlistParser.parse(uri, inputStream); - - if (playlist instanceof HlsMasterPlaylist) { - return ((HlsMasterPlaylist) playlist).copyWithReorderedVariants(variantComparator); - } - - return playlist; - } -}