Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
9783fc09
authored
Oct 06, 2017
by
Nate Roy
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
remove reordering playlist parser
parent
2f622b8b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
147 deletions
library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParserTest.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParser.java
library/hls/src/androidTest/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParserTest.java
deleted
100644 → 0
View file @
2f622b8b
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
<
HlsMasterPlaylist
.
HlsUrl
>
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
<
HlsMasterPlaylist
.
HlsUrl
>()
{
@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
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/ReorderingHlsPlaylistParser.java
deleted
100644 → 0
View file @
2f622b8b
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
<
HlsPlaylist
>
{
private
final
ParsingLoadable
.
Parser
<
HlsPlaylist
>
playlistParser
;
private
final
Comparator
<
HlsMasterPlaylist
.
HlsUrl
>
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
<
HlsPlaylist
>
playlistParser
,
Comparator
<
HlsMasterPlaylist
.
HlsUrl
>
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
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment