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
a86a9137
authored
Mar 20, 2019
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge pull request #5578 from szaboa:dev-v2-5529
PiperOrigin-RevId: 239398940
parents
448ca0cf
d7c2519a
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
251 additions
and
36 deletions
RELEASENOTES.md
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastUtils.java
library/core/src/main/java/com/google/android/exoplayer2/C.java
library/core/src/main/java/com/google/android/exoplayer2/Format.java
library/core/src/test/java/com/google/android/exoplayer2/FormatTest.java
library/core/src/test/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractorTest.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaPeriodTest.java
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashUtilTest.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriodTest.java
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriodTest.java
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestTest.java
RELEASENOTES.md
View file @
a86a9137
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
*
Update to Mockito 2
*
Update to Mockito 2
*
Add new
`ExoPlaybackException`
types for remote exceptions and out-of-memory
*
Add new
`ExoPlaybackException`
types for remote exceptions and out-of-memory
errors.
errors.
*
DASH: Parse role and accessibility descriptors into
`Format.roleFlags`
.
*
HLS:
*
HLS:
*
Work around lack of LA_URL attribute in PlayReady key request init data.
*
Work around lack of LA_URL attribute in PlayReady key request init data.
*
Prevent unnecessary reloads of initialization segments.
*
Prevent unnecessary reloads of initialization segments.
...
...
extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastUtils.java
View file @
a86a9137
...
@@ -109,6 +109,7 @@ import com.google.android.gms.cast.MediaTrack;
...
@@ -109,6 +109,7 @@ import com.google.android.gms.cast.MediaTrack;
/* codecs= */
null
,
/* codecs= */
null
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
mediaTrack
.
getLanguage
());
mediaTrack
.
getLanguage
());
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/C.java
View file @
a86a9137
...
@@ -980,6 +980,69 @@ public final class C {
...
@@ -980,6 +980,69 @@ public final class C {
public
static
final
int
NETWORK_TYPE_OTHER
=
8
;
public
static
final
int
NETWORK_TYPE_OTHER
=
8
;
/**
/**
* Track role flags. Possible values are {@link #ROLE_FLAG_MAIN}, {@link #ROLE_FLAG_ALTERNATE},
* {@link #ROLE_FLAG_SUPPLEMENTARY}, {@link #ROLE_FLAG_COMMENTARY}, {@link #ROLE_FLAG_DUB}, {@link
* #ROLE_FLAG_EMERGENCY}, {@link #ROLE_FLAG_CAPTION}, {@link #ROLE_FLAG_SUBTITLE}, {@link
* #ROLE_FLAG_SIGN}, {@link #ROLE_FLAG_ENHANCED_AUDIO_INTELLIGIBILITY}, {@link
* #ROLE_FLAG_DESCRIPTION}.
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@IntDef
(
flag
=
true
,
value
=
{
ROLE_FLAG_MAIN
,
ROLE_FLAG_ALTERNATE
,
ROLE_FLAG_SUPPLEMENTARY
,
ROLE_FLAG_COMMENTARY
,
ROLE_FLAG_DUB
,
ROLE_FLAG_EMERGENCY
,
ROLE_FLAG_CAPTION
,
ROLE_FLAG_SUBTITLE
,
ROLE_FLAG_SIGN
,
ROLE_FLAG_ENHANCED_AUDIO_INTELLIGIBILITY
,
ROLE_FLAG_DESCRIPTION
})
public
@interface
RoleFlags
{}
/** Indicates a main track. */
public
static
final
int
ROLE_FLAG_MAIN
=
1
;
/**
* Indicates an alternate track. For example a video track recorded from an different view point
* than the main track(s).
*/
public
static
final
int
ROLE_FLAG_ALTERNATE
=
1
<<
1
;
/**
* Indicates a supplementary track, meaning the track has lower importance than the main track(s).
* For example a video track that provides a visual accompaniment to a main audio track.
*/
public
static
final
int
ROLE_FLAG_SUPPLEMENTARY
=
1
<<
2
;
/** Indicates the track contains commentary, for example from the director. */
public
static
final
int
ROLE_FLAG_COMMENTARY
=
1
<<
3
;
/**
* Indicates the track is in a different language from the original, for example dubbed audio or
* translated captions.
*/
public
static
final
int
ROLE_FLAG_DUB
=
1
<<
4
;
/** Indicates the track contains information about a current emergency. */
public
static
final
int
ROLE_FLAG_EMERGENCY
=
1
<<
5
;
/**
* Indicates the track contains captions. This flag may be set on video tracks to indicate the
* presence of burned in captions.
*/
public
static
final
int
ROLE_FLAG_CAPTION
=
1
<<
6
;
/**
* Indicates the track contains subtitles. This flag may be set on video tracks to indicate the
* presence of burned in subtitles.
*/
public
static
final
int
ROLE_FLAG_SUBTITLE
=
1
<<
7
;
/** Indicates the track contains a visual sign-language interpretation of an audio track. */
public
static
final
int
ROLE_FLAG_SIGN
=
1
<<
8
;
/** Indicates the track is designed for improved intelligibility of dialogue. */
public
static
final
int
ROLE_FLAG_ENHANCED_AUDIO_INTELLIGIBILITY
=
1
<<
9
;
/** Indicates the track contains an audio or textual description of a video track. */
public
static
final
int
ROLE_FLAG_DESCRIPTION
=
1
<<
10
;
/**
* Converts a time in microseconds to the corresponding time in milliseconds, preserving
* Converts a time in microseconds to the corresponding time in milliseconds, preserving
* {@link #TIME_UNSET} and {@link #TIME_END_OF_SOURCE} values.
* {@link #TIME_UNSET} and {@link #TIME_END_OF_SOURCE} values.
*
*
...
...
library/core/src/main/java/com/google/android/exoplayer2/Format.java
View file @
a86a9137
...
@@ -50,6 +50,8 @@ public final class Format implements Parcelable {
...
@@ -50,6 +50,8 @@ public final class Format implements Parcelable {
public
final
@Nullable
String
label
;
public
final
@Nullable
String
label
;
/** Track selection flags. */
/** Track selection flags. */
@C
.
SelectionFlags
public
final
int
selectionFlags
;
@C
.
SelectionFlags
public
final
int
selectionFlags
;
/** Track role flags. */
@C
.
RoleFlags
public
final
int
roleFlags
;
/**
/**
* The average bandwidth in bits per second, or {@link #NO_VALUE} if unknown or not applicable.
* The average bandwidth in bits per second, or {@link #NO_VALUE} if unknown or not applicable.
*/
*/
...
@@ -189,7 +191,8 @@ public final class Format implements Parcelable {
...
@@ -189,7 +191,8 @@ public final class Format implements Parcelable {
height
,
height
,
frameRate
,
frameRate
,
initializationData
,
initializationData
,
selectionFlags
);
selectionFlags
,
/* roleFlags= */
0
);
}
}
public
static
Format
createVideoContainerFormat
(
public
static
Format
createVideoContainerFormat
(
...
@@ -203,11 +206,13 @@ public final class Format implements Parcelable {
...
@@ -203,11 +206,13 @@ public final class Format implements Parcelable {
int
height
,
int
height
,
float
frameRate
,
float
frameRate
,
@Nullable
List
<
byte
[]>
initializationData
,
@Nullable
List
<
byte
[]>
initializationData
,
@C
.
SelectionFlags
int
selectionFlags
)
{
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
RoleFlags
int
roleFlags
)
{
return
new
Format
(
return
new
Format
(
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -311,6 +316,7 @@ public final class Format implements Parcelable {
...
@@ -311,6 +316,7 @@ public final class Format implements Parcelable {
id
,
id
,
/* label= */
null
,
/* label= */
null
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -362,6 +368,7 @@ public final class Format implements Parcelable {
...
@@ -362,6 +368,7 @@ public final class Format implements Parcelable {
sampleRate
,
sampleRate
,
initializationData
,
initializationData
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
language
);
language
);
}
}
...
@@ -376,11 +383,13 @@ public final class Format implements Parcelable {
...
@@ -376,11 +383,13 @@ public final class Format implements Parcelable {
int
sampleRate
,
int
sampleRate
,
@Nullable
List
<
byte
[]>
initializationData
,
@Nullable
List
<
byte
[]>
initializationData
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
RoleFlags
int
roleFlags
,
@Nullable
String
language
)
{
@Nullable
String
language
)
{
return
new
Format
(
return
new
Format
(
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -485,6 +494,7 @@ public final class Format implements Parcelable {
...
@@ -485,6 +494,7 @@ public final class Format implements Parcelable {
id
,
id
,
/* label= */
null
,
/* label= */
null
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -550,6 +560,7 @@ public final class Format implements Parcelable {
...
@@ -550,6 +560,7 @@ public final class Format implements Parcelable {
codecs
,
codecs
,
bitrate
,
bitrate
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
language
,
language
,
/* accessibilityChannel= */
NO_VALUE
);
/* accessibilityChannel= */
NO_VALUE
);
}
}
...
@@ -562,12 +573,14 @@ public final class Format implements Parcelable {
...
@@ -562,12 +573,14 @@ public final class Format implements Parcelable {
@Nullable
String
codecs
,
@Nullable
String
codecs
,
int
bitrate
,
int
bitrate
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
RoleFlags
int
roleFlags
,
@Nullable
String
language
,
@Nullable
String
language
,
int
accessibilityChannel
)
{
int
accessibilityChannel
)
{
return
new
Format
(
return
new
Format
(
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -680,6 +693,7 @@ public final class Format implements Parcelable {
...
@@ -680,6 +693,7 @@ public final class Format implements Parcelable {
id
,
id
,
/* label= */
null
,
/* label= */
null
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -721,6 +735,7 @@ public final class Format implements Parcelable {
...
@@ -721,6 +735,7 @@ public final class Format implements Parcelable {
id
,
id
,
/* label= */
null
,
/* label= */
null
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata=*/
null
,
/* metadata=*/
null
,
...
@@ -766,6 +781,7 @@ public final class Format implements Parcelable {
...
@@ -766,6 +781,7 @@ public final class Format implements Parcelable {
codecs
,
codecs
,
bitrate
,
bitrate
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
language
);
language
);
}
}
...
@@ -777,11 +793,13 @@ public final class Format implements Parcelable {
...
@@ -777,11 +793,13 @@ public final class Format implements Parcelable {
@Nullable
String
codecs
,
@Nullable
String
codecs
,
int
bitrate
,
int
bitrate
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
RoleFlags
int
roleFlags
,
@Nullable
String
language
)
{
@Nullable
String
language
)
{
return
new
Format
(
return
new
Format
(
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -814,6 +832,7 @@ public final class Format implements Parcelable {
...
@@ -814,6 +832,7 @@ public final class Format implements Parcelable {
id
,
id
,
/* label= */
null
,
/* label= */
null
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* bitrate= */
NO_VALUE
,
/* bitrate= */
NO_VALUE
,
/* codecs= */
null
,
/* codecs= */
null
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -850,6 +869,7 @@ public final class Format implements Parcelable {
...
@@ -850,6 +869,7 @@ public final class Format implements Parcelable {
id
,
id
,
/* label= */
null
,
/* label= */
null
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
bitrate
,
bitrate
,
codecs
,
codecs
,
/* metadata= */
null
,
/* metadata= */
null
,
...
@@ -880,6 +900,7 @@ public final class Format implements Parcelable {
...
@@ -880,6 +900,7 @@ public final class Format implements Parcelable {
@Nullable
String
id
,
@Nullable
String
id
,
@Nullable
String
label
,
@Nullable
String
label
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
SelectionFlags
int
selectionFlags
,
@C
.
RoleFlags
int
roleFlags
,
int
bitrate
,
int
bitrate
,
@Nullable
String
codecs
,
@Nullable
String
codecs
,
@Nullable
Metadata
metadata
,
@Nullable
Metadata
metadata
,
...
@@ -912,6 +933,7 @@ public final class Format implements Parcelable {
...
@@ -912,6 +933,7 @@ public final class Format implements Parcelable {
this
.
id
=
id
;
this
.
id
=
id
;
this
.
label
=
label
;
this
.
label
=
label
;
this
.
selectionFlags
=
selectionFlags
;
this
.
selectionFlags
=
selectionFlags
;
this
.
roleFlags
=
roleFlags
;
this
.
bitrate
=
bitrate
;
this
.
bitrate
=
bitrate
;
this
.
codecs
=
codecs
;
this
.
codecs
=
codecs
;
this
.
metadata
=
metadata
;
this
.
metadata
=
metadata
;
...
@@ -950,6 +972,7 @@ public final class Format implements Parcelable {
...
@@ -950,6 +972,7 @@ public final class Format implements Parcelable {
id
=
in
.
readString
();
id
=
in
.
readString
();
label
=
in
.
readString
();
label
=
in
.
readString
();
selectionFlags
=
in
.
readInt
();
selectionFlags
=
in
.
readInt
();
roleFlags
=
in
.
readInt
();
bitrate
=
in
.
readInt
();
bitrate
=
in
.
readInt
();
codecs
=
in
.
readString
();
codecs
=
in
.
readString
();
metadata
=
in
.
readParcelable
(
Metadata
.
class
.
getClassLoader
());
metadata
=
in
.
readParcelable
(
Metadata
.
class
.
getClassLoader
());
...
@@ -986,12 +1009,12 @@ public final class Format implements Parcelable {
...
@@ -986,12 +1009,12 @@ public final class Format implements Parcelable {
accessibilityChannel
=
in
.
readInt
();
accessibilityChannel
=
in
.
readInt
();
}
}
public
Format
copyWithMaxInputSize
(
int
maxInputSize
)
{
public
Format
copyWithMaxInputSize
(
int
maxInputSize
)
{
return
new
Format
(
return
new
Format
(
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1023,6 +1046,7 @@ public final class Format implements Parcelable {
...
@@ -1023,6 +1046,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1064,6 +1088,7 @@ public final class Format implements Parcelable {
...
@@ -1064,6 +1088,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1128,6 +1153,7 @@ public final class Format implements Parcelable {
...
@@ -1128,6 +1153,7 @@ public final class Format implements Parcelable {
// Merge manifest and sample format values.
// Merge manifest and sample format values.
@C
.
SelectionFlags
int
selectionFlags
=
this
.
selectionFlags
|
manifestFormat
.
selectionFlags
;
@C
.
SelectionFlags
int
selectionFlags
=
this
.
selectionFlags
|
manifestFormat
.
selectionFlags
;
@C
.
RoleFlags
int
roleFlags
=
this
.
roleFlags
|
manifestFormat
.
roleFlags
;
DrmInitData
drmInitData
=
DrmInitData
drmInitData
=
DrmInitData
.
createSessionCreationData
(
manifestFormat
.
drmInitData
,
this
.
drmInitData
);
DrmInitData
.
createSessionCreationData
(
manifestFormat
.
drmInitData
,
this
.
drmInitData
);
...
@@ -1135,6 +1161,7 @@ public final class Format implements Parcelable {
...
@@ -1135,6 +1161,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1166,6 +1193,7 @@ public final class Format implements Parcelable {
...
@@ -1166,6 +1193,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1197,6 +1225,7 @@ public final class Format implements Parcelable {
...
@@ -1197,6 +1225,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1228,6 +1257,7 @@ public final class Format implements Parcelable {
...
@@ -1228,6 +1257,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1259,6 +1289,7 @@ public final class Format implements Parcelable {
...
@@ -1259,6 +1289,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1290,6 +1321,7 @@ public final class Format implements Parcelable {
...
@@ -1290,6 +1321,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1321,6 +1353,7 @@ public final class Format implements Parcelable {
...
@@ -1321,6 +1353,7 @@ public final class Format implements Parcelable {
id
,
id
,
label
,
label
,
selectionFlags
,
selectionFlags
,
roleFlags
,
bitrate
,
bitrate
,
codecs
,
codecs
,
metadata
,
metadata
,
...
@@ -1393,6 +1426,7 @@ public final class Format implements Parcelable {
...
@@ -1393,6 +1426,7 @@ public final class Format implements Parcelable {
result
=
31
*
result
+
(
id
==
null
?
0
:
id
.
hashCode
());
result
=
31
*
result
+
(
id
==
null
?
0
:
id
.
hashCode
());
result
=
31
*
result
+
(
label
!=
null
?
label
.
hashCode
()
:
0
);
result
=
31
*
result
+
(
label
!=
null
?
label
.
hashCode
()
:
0
);
result
=
31
*
result
+
selectionFlags
;
result
=
31
*
result
+
selectionFlags
;
result
=
31
*
result
+
roleFlags
;
result
=
31
*
result
+
bitrate
;
result
=
31
*
result
+
bitrate
;
result
=
31
*
result
+
(
codecs
==
null
?
0
:
codecs
.
hashCode
());
result
=
31
*
result
+
(
codecs
==
null
?
0
:
codecs
.
hashCode
());
result
=
31
*
result
+
(
metadata
==
null
?
0
:
metadata
.
hashCode
());
result
=
31
*
result
+
(
metadata
==
null
?
0
:
metadata
.
hashCode
());
...
@@ -1441,6 +1475,7 @@ public final class Format implements Parcelable {
...
@@ -1441,6 +1475,7 @@ public final class Format implements Parcelable {
}
}
// Field equality checks ordered by type, with the cheapest checks first.
// Field equality checks ordered by type, with the cheapest checks first.
return
selectionFlags
==
other
.
selectionFlags
return
selectionFlags
==
other
.
selectionFlags
&&
roleFlags
==
other
.
roleFlags
&&
bitrate
==
other
.
bitrate
&&
bitrate
==
other
.
bitrate
&&
maxInputSize
==
other
.
maxInputSize
&&
maxInputSize
==
other
.
maxInputSize
&&
subsampleOffsetUs
==
other
.
subsampleOffsetUs
&&
subsampleOffsetUs
==
other
.
subsampleOffsetUs
...
@@ -1537,6 +1572,7 @@ public final class Format implements Parcelable {
...
@@ -1537,6 +1572,7 @@ public final class Format implements Parcelable {
dest
.
writeString
(
id
);
dest
.
writeString
(
id
);
dest
.
writeString
(
label
);
dest
.
writeString
(
label
);
dest
.
writeInt
(
selectionFlags
);
dest
.
writeInt
(
selectionFlags
);
dest
.
writeInt
(
roleFlags
);
dest
.
writeInt
(
bitrate
);
dest
.
writeInt
(
bitrate
);
dest
.
writeString
(
codecs
);
dest
.
writeString
(
codecs
);
dest
.
writeParcelable
(
metadata
,
0
);
dest
.
writeParcelable
(
metadata
,
0
);
...
...
library/core/src/test/java/com/google/android/exoplayer2/FormatTest.java
View file @
a86a9137
...
@@ -39,7 +39,6 @@ import org.junit.runner.RunWith;
...
@@ -39,7 +39,6 @@ import org.junit.runner.RunWith;
public
final
class
FormatTest
{
public
final
class
FormatTest
{
private
static
final
List
<
byte
[]>
initData
;
private
static
final
List
<
byte
[]>
initData
;
static
{
static
{
byte
[]
initData1
=
new
byte
[]
{
1
,
2
,
3
};
byte
[]
initData1
=
new
byte
[]
{
1
,
2
,
3
};
byte
[]
initData2
=
new
byte
[]
{
4
,
5
,
6
};
byte
[]
initData2
=
new
byte
[]
{
4
,
5
,
6
};
...
@@ -68,6 +67,7 @@ public final class FormatTest {
...
@@ -68,6 +67,7 @@ public final class FormatTest {
"id"
,
"id"
,
"label"
,
"label"
,
C
.
SELECTION_FLAG_DEFAULT
,
C
.
SELECTION_FLAG_DEFAULT
,
C
.
ROLE_FLAG_MAIN
,
/* bitrate= */
1024
,
/* bitrate= */
1024
,
"codec"
,
"codec"
,
metadata
,
metadata
,
...
...
library/core/src/test/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractorTest.java
View file @
a86a9137
...
@@ -39,6 +39,7 @@ public final class RawCcExtractorTest {
...
@@ -39,6 +39,7 @@ public final class RawCcExtractorTest {
/* codecs= */
"cea608"
,
/* codecs= */
"cea608"
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
,
/* language= */
null
,
/* accessibilityChannel= */
1
)),
/* accessibilityChannel= */
1
)),
"rawcc/sample.rawcc"
);
"rawcc/sample.rawcc"
);
...
...
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
View file @
a86a9137
...
@@ -276,9 +276,9 @@ public class DashManifestParser extends DefaultHandler
...
@@ -276,9 +276,9 @@ public class DashManifestParser extends DefaultHandler
ArrayList
<
SchemeData
>
drmSchemeDatas
=
new
ArrayList
<>();
ArrayList
<
SchemeData
>
drmSchemeDatas
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
inbandEventStreams
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
inbandEventStreams
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
accessibilityDescriptors
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
accessibilityDescriptors
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
roleDescriptors
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
supplementalProperties
=
new
ArrayList
<>();
ArrayList
<
Descriptor
>
supplementalProperties
=
new
ArrayList
<>();
List
<
RepresentationInfo
>
representationInfos
=
new
ArrayList
<>();
List
<
RepresentationInfo
>
representationInfos
=
new
ArrayList
<>();
@C
.
SelectionFlags
int
selectionFlags
=
0
;
boolean
seenFirstBaseUrl
=
false
;
boolean
seenFirstBaseUrl
=
false
;
do
{
do
{
...
@@ -300,7 +300,7 @@ public class DashManifestParser extends DefaultHandler
...
@@ -300,7 +300,7 @@ public class DashManifestParser extends DefaultHandler
language
=
checkLanguageConsistency
(
language
,
xpp
.
getAttributeValue
(
null
,
"lang"
));
language
=
checkLanguageConsistency
(
language
,
xpp
.
getAttributeValue
(
null
,
"lang"
));
contentType
=
checkContentTypeConsistency
(
contentType
,
parseContentType
(
xpp
));
contentType
=
checkContentTypeConsistency
(
contentType
,
parseContentType
(
xpp
));
}
else
if
(
XmlPullParserUtil
.
isStartTag
(
xpp
,
"Role"
))
{
}
else
if
(
XmlPullParserUtil
.
isStartTag
(
xpp
,
"Role"
))
{
selectionFlags
|=
parseRole
(
xpp
);
roleDescriptors
.
add
(
parseDescriptor
(
xpp
,
"Role"
)
);
}
else
if
(
XmlPullParserUtil
.
isStartTag
(
xpp
,
"AudioChannelConfiguration"
))
{
}
else
if
(
XmlPullParserUtil
.
isStartTag
(
xpp
,
"AudioChannelConfiguration"
))
{
audioChannels
=
parseAudioChannelConfiguration
(
xpp
);
audioChannels
=
parseAudioChannelConfiguration
(
xpp
);
}
else
if
(
XmlPullParserUtil
.
isStartTag
(
xpp
,
"Accessibility"
))
{
}
else
if
(
XmlPullParserUtil
.
isStartTag
(
xpp
,
"Accessibility"
))
{
...
@@ -321,7 +321,7 @@ public class DashManifestParser extends DefaultHandler
...
@@ -321,7 +321,7 @@ public class DashManifestParser extends DefaultHandler
audioChannels
,
audioChannels
,
audioSamplingRate
,
audioSamplingRate
,
language
,
language
,
selectionFlag
s
,
roleDescriptor
s
,
accessibilityDescriptors
,
accessibilityDescriptors
,
segmentBase
);
segmentBase
);
contentType
=
checkContentTypeConsistency
(
contentType
,
contentType
=
checkContentTypeConsistency
(
contentType
,
...
@@ -465,24 +465,6 @@ public class DashManifestParser extends DefaultHandler
...
@@ -465,24 +465,6 @@ public class DashManifestParser extends DefaultHandler
}
}
/**
/**
* Parses a Role element.
*
* @param xpp The parser from which to read.
* @throws XmlPullParserException If an error occurs parsing the element.
* @throws IOException If an error occurs reading the element.
* @return {@link C.SelectionFlags} parsed from the element.
*/
protected
int
parseRole
(
XmlPullParser
xpp
)
throws
XmlPullParserException
,
IOException
{
String
schemeIdUri
=
parseString
(
xpp
,
"schemeIdUri"
,
null
);
String
value
=
parseString
(
xpp
,
"value"
,
null
);
do
{
xpp
.
next
();
}
while
(!
XmlPullParserUtil
.
isEndTag
(
xpp
,
"Role"
));
return
"urn:mpeg:dash:role:2011"
.
equals
(
schemeIdUri
)
&&
"main"
.
equals
(
value
)
?
C
.
SELECTION_FLAG_DEFAULT
:
0
;
}
/**
* Parses children of AdaptationSet elements not specifically parsed elsewhere.
* Parses children of AdaptationSet elements not specifically parsed elsewhere.
*
*
* @param xpp The XmpPullParser from which the AdaptationSet child should be parsed.
* @param xpp The XmpPullParser from which the AdaptationSet child should be parsed.
...
@@ -508,7 +490,7 @@ public class DashManifestParser extends DefaultHandler
...
@@ -508,7 +490,7 @@ public class DashManifestParser extends DefaultHandler
int
adaptationSetAudioChannels
,
int
adaptationSetAudioChannels
,
int
adaptationSetAudioSamplingRate
,
int
adaptationSetAudioSamplingRate
,
String
adaptationSetLanguage
,
String
adaptationSetLanguage
,
@C
.
SelectionFlags
int
adaptationSetSelectionFlag
s
,
List
<
Descriptor
>
adaptationSetRoleDescriptor
s
,
List
<
Descriptor
>
adaptationSetAccessibilityDescriptors
,
List
<
Descriptor
>
adaptationSetAccessibilityDescriptors
,
SegmentBase
segmentBase
)
SegmentBase
segmentBase
)
throws
XmlPullParserException
,
IOException
{
throws
XmlPullParserException
,
IOException
{
...
@@ -572,7 +554,7 @@ public class DashManifestParser extends DefaultHandler
...
@@ -572,7 +554,7 @@ public class DashManifestParser extends DefaultHandler
audioSamplingRate
,
audioSamplingRate
,
bandwidth
,
bandwidth
,
adaptationSetLanguage
,
adaptationSetLanguage
,
adaptationSet
SelectionFlag
s
,
adaptationSet
RoleDescriptor
s
,
adaptationSetAccessibilityDescriptors
,
adaptationSetAccessibilityDescriptors
,
codecs
,
codecs
,
supplementalProperties
);
supplementalProperties
);
...
@@ -593,11 +575,14 @@ public class DashManifestParser extends DefaultHandler
...
@@ -593,11 +575,14 @@ public class DashManifestParser extends DefaultHandler
int
audioSamplingRate
,
int
audioSamplingRate
,
int
bitrate
,
int
bitrate
,
String
language
,
String
language
,
@C
.
SelectionFlags
int
selectionFlag
s
,
List
<
Descriptor
>
roleDescriptor
s
,
List
<
Descriptor
>
accessibilityDescriptors
,
List
<
Descriptor
>
accessibilityDescriptors
,
String
codecs
,
String
codecs
,
List
<
Descriptor
>
supplementalProperties
)
{
List
<
Descriptor
>
supplementalProperties
)
{
String
sampleMimeType
=
getSampleMimeType
(
containerMimeType
,
codecs
);
String
sampleMimeType
=
getSampleMimeType
(
containerMimeType
,
codecs
);
@C
.
SelectionFlags
int
selectionFlags
=
parseSelectionFlagsFromRoleDescriptors
(
roleDescriptors
);
@C
.
RoleFlags
int
roleFlags
=
parseRoleFlagsFromRoleDescriptors
(
roleDescriptors
);
roleFlags
|=
parseRoleFlagsFromAccessibilityDescriptors
(
accessibilityDescriptors
);
if
(
sampleMimeType
!=
null
)
{
if
(
sampleMimeType
!=
null
)
{
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
))
{
if
(
MimeTypes
.
AUDIO_E_AC3
.
equals
(
sampleMimeType
))
{
sampleMimeType
=
parseEac3SupplementalProperties
(
supplementalProperties
);
sampleMimeType
=
parseEac3SupplementalProperties
(
supplementalProperties
);
...
@@ -614,7 +599,8 @@ public class DashManifestParser extends DefaultHandler
...
@@ -614,7 +599,8 @@ public class DashManifestParser extends DefaultHandler
height
,
height
,
frameRate
,
frameRate
,
/* initializationData= */
null
,
/* initializationData= */
null
,
selectionFlags
);
selectionFlags
,
roleFlags
);
}
else
if
(
MimeTypes
.
isAudio
(
sampleMimeType
))
{
}
else
if
(
MimeTypes
.
isAudio
(
sampleMimeType
))
{
return
Format
.
createAudioContainerFormat
(
return
Format
.
createAudioContainerFormat
(
id
,
id
,
...
@@ -627,6 +613,7 @@ public class DashManifestParser extends DefaultHandler
...
@@ -627,6 +613,7 @@ public class DashManifestParser extends DefaultHandler
audioSamplingRate
,
audioSamplingRate
,
/* initializationData= */
null
,
/* initializationData= */
null
,
selectionFlags
,
selectionFlags
,
roleFlags
,
language
);
language
);
}
else
if
(
mimeTypeIsRawText
(
sampleMimeType
))
{
}
else
if
(
mimeTypeIsRawText
(
sampleMimeType
))
{
int
accessibilityChannel
;
int
accessibilityChannel
;
...
@@ -645,12 +632,21 @@ public class DashManifestParser extends DefaultHandler
...
@@ -645,12 +632,21 @@ public class DashManifestParser extends DefaultHandler
codecs
,
codecs
,
bitrate
,
bitrate
,
selectionFlags
,
selectionFlags
,
roleFlags
,
language
,
language
,
accessibilityChannel
);
accessibilityChannel
);
}
}
}
}
return
Format
.
createContainerFormat
(
return
Format
.
createContainerFormat
(
id
,
label
,
containerMimeType
,
sampleMimeType
,
codecs
,
bitrate
,
selectionFlags
,
language
);
id
,
label
,
containerMimeType
,
sampleMimeType
,
codecs
,
bitrate
,
selectionFlags
,
roleFlags
,
language
);
}
}
protected
Representation
buildRepresentation
(
protected
Representation
buildRepresentation
(
...
@@ -1064,6 +1060,103 @@ public class DashManifestParser extends DefaultHandler
...
@@ -1064,6 +1060,103 @@ public class DashManifestParser extends DefaultHandler
return
audioChannels
;
return
audioChannels
;
}
}
// Selection flag parsing.
protected
int
parseSelectionFlagsFromRoleDescriptors
(
List
<
Descriptor
>
roleDescriptors
)
{
for
(
int
i
=
0
;
i
<
roleDescriptors
.
size
();
i
++)
{
Descriptor
descriptor
=
roleDescriptors
.
get
(
i
);
if
(
"urn:mpeg:dash:role:2011"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
)
&&
"main"
.
equals
(
descriptor
.
value
))
{
return
C
.
SELECTION_FLAG_DEFAULT
;
}
}
return
0
;
}
// Role and Accessibility parsing.
@C
.
RoleFlags
protected
int
parseRoleFlagsFromRoleDescriptors
(
List
<
Descriptor
>
roleDescriptors
)
{
@C
.
RoleFlags
int
result
=
0
;
for
(
int
i
=
0
;
i
<
roleDescriptors
.
size
();
i
++)
{
Descriptor
descriptor
=
roleDescriptors
.
get
(
i
);
if
(
"urn:mpeg:dash:role:2011"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
))
{
result
|=
parseDashRoleSchemeValue
(
descriptor
.
value
);
}
}
return
result
;
}
@C
.
RoleFlags
protected
int
parseRoleFlagsFromAccessibilityDescriptors
(
List
<
Descriptor
>
accessibilityDescriptors
)
{
@C
.
RoleFlags
int
result
=
0
;
for
(
int
i
=
0
;
i
<
accessibilityDescriptors
.
size
();
i
++)
{
Descriptor
descriptor
=
accessibilityDescriptors
.
get
(
i
);
if
(
"urn:mpeg:dash:role:2011"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
))
{
result
|=
parseDashRoleSchemeValue
(
descriptor
.
value
);
}
else
if
(
"urn:tva:metadata:cs:AudioPurposeCS:2007"
.
equalsIgnoreCase
(
descriptor
.
schemeIdUri
))
{
result
|=
parseTvaAudioPurposeCsValue
(
descriptor
.
value
);
}
}
return
result
;
}
@C
.
RoleFlags
protected
int
parseDashRoleSchemeValue
(
String
value
)
{
if
(
value
==
null
)
{
return
0
;
}
switch
(
value
)
{
case
"main"
:
return
C
.
ROLE_FLAG_MAIN
;
case
"alternate"
:
return
C
.
ROLE_FLAG_ALTERNATE
;
case
"supplementary"
:
return
C
.
ROLE_FLAG_SUPPLEMENTARY
;
case
"commentary"
:
return
C
.
ROLE_FLAG_COMMENTARY
;
case
"dub"
:
return
C
.
ROLE_FLAG_DUB
;
case
"emergency"
:
return
C
.
ROLE_FLAG_EMERGENCY
;
case
"caption"
:
return
C
.
ROLE_FLAG_CAPTION
;
case
"subtitle"
:
return
C
.
ROLE_FLAG_SUBTITLE
;
case
"sign"
:
return
C
.
ROLE_FLAG_SIGN
;
case
"description"
:
return
C
.
ROLE_FLAG_DESCRIPTION
;
case
"enhanced-audio-intelligibility"
:
return
C
.
ROLE_FLAG_ENHANCED_AUDIO_INTELLIGIBILITY
;
default
:
return
0
;
}
}
@C
.
RoleFlags
protected
int
parseTvaAudioPurposeCsValue
(
String
value
)
{
if
(
value
==
null
)
{
return
0
;
}
switch
(
value
)
{
case
"1"
:
// Audio description for the visually impaired.
return
C
.
ROLE_FLAG_DESCRIPTION
;
case
"2"
:
// Audio description for the hard of hearing.
return
C
.
ROLE_FLAG_ENHANCED_AUDIO_INTELLIGIBILITY
;
case
"3"
:
// Supplemental commentary.
return
C
.
ROLE_FLAG_SUPPLEMENTARY
;
case
"4"
:
// Director's commentary.
return
C
.
ROLE_FLAG_COMMENTARY
;
case
"6"
:
// Main programme audio.
return
C
.
ROLE_FLAG_MAIN
;
default
:
return
0
;
}
}
// Utility methods.
// Utility methods.
/**
/**
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaPeriodTest.java
View file @
a86a9137
...
@@ -193,6 +193,7 @@ public final class DashMediaPeriodTest {
...
@@ -193,6 +193,7 @@ public final class DashMediaPeriodTest {
/* codecs= */
null
,
/* codecs= */
null
,
bitrate
,
bitrate
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
);
/* language= */
null
);
}
}
...
@@ -207,6 +208,7 @@ public final class DashMediaPeriodTest {
...
@@ -207,6 +208,7 @@ public final class DashMediaPeriodTest {
/* codecs= */
null
,
/* codecs= */
null
,
bitrate
,
bitrate
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
),
/* language= */
null
),
/* baseUrl= */
""
,
/* baseUrl= */
""
,
new
SingleSegmentBase
());
new
SingleSegmentBase
());
...
@@ -223,6 +225,7 @@ public final class DashMediaPeriodTest {
...
@@ -223,6 +225,7 @@ public final class DashMediaPeriodTest {
/* codecs= */
null
,
/* codecs= */
null
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
language
),
language
),
/* baseUrl= */
""
,
/* baseUrl= */
""
,
new
SingleSegmentBase
());
new
SingleSegmentBase
());
...
...
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashUtilTest.java
View file @
a86a9137
...
@@ -85,7 +85,8 @@ public final class DashUtilTest {
...
@@ -85,7 +85,8 @@ public final class DashUtilTest {
/* height= */
768
,
/* height= */
768
,
Format
.
NO_VALUE
,
Format
.
NO_VALUE
,
/* initializationData= */
null
,
/* initializationData= */
null
,
/* selectionFlags= */
0
);
/* selectionFlags= */
0
,
/* roleFlags= */
0
);
if
(
drmInitData
!=
null
)
{
if
(
drmInitData
!=
null
)
{
format
=
format
.
copyWithDrmInitData
(
drmInitData
);
format
=
format
.
copyWithDrmInitData
(
drmInitData
);
}
}
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java
View file @
a86a9137
...
@@ -702,7 +702,8 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
...
@@ -702,7 +702,8 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
variantFormat
.
height
,
variantFormat
.
height
,
variantFormat
.
frameRate
,
variantFormat
.
frameRate
,
/* initializationData= */
null
,
/* initializationData= */
null
,
variantFormat
.
selectionFlags
);
variantFormat
.
selectionFlags
,
/* roleFlags= */
0
);
}
}
private
static
Format
deriveAudioFormat
(
private
static
Format
deriveAudioFormat
(
...
@@ -740,6 +741,7 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
...
@@ -740,6 +741,7 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
/* sampleRate= */
Format
.
NO_VALUE
,
/* sampleRate= */
Format
.
NO_VALUE
,
/* initializationData= */
null
,
/* initializationData= */
null
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
language
);
language
);
}
}
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist.java
View file @
a86a9137
...
@@ -78,6 +78,7 @@ public final class HlsMasterPlaylist extends HlsPlaylist {
...
@@ -78,6 +78,7 @@ public final class HlsMasterPlaylist extends HlsPlaylist {
/* codecs= */
null
,
/* codecs= */
null
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
);
/* language= */
null
);
return
new
HlsUrl
(
url
,
format
,
/* name= */
""
);
return
new
HlsUrl
(
url
,
format
,
/* name= */
""
);
}
}
...
...
library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsPlaylistParser.java
View file @
a86a9137
...
@@ -329,7 +329,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
...
@@ -329,7 +329,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
height
,
height
,
frameRate
,
frameRate
,
/* initializationData= */
null
,
/* initializationData= */
null
,
/* selectionFlags= */
0
);
/* selectionFlags= */
0
,
/* roleFlags= */
0
);
variants
.
add
(
new
HlsMasterPlaylist
.
HlsUrl
(
line
,
format
,
/* name= */
""
));
variants
.
add
(
new
HlsMasterPlaylist
.
HlsUrl
(
line
,
format
,
/* name= */
""
));
}
}
}
}
...
@@ -361,6 +362,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
...
@@ -361,6 +362,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
/* sampleRate= */
Format
.
NO_VALUE
,
/* sampleRate= */
Format
.
NO_VALUE
,
/* initializationData= */
null
,
/* initializationData= */
null
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
language
);
language
);
if
(
isMediaTagMuxed
(
variants
,
uri
))
{
if
(
isMediaTagMuxed
(
variants
,
uri
))
{
muxedAudioFormat
=
format
;
muxedAudioFormat
=
format
;
...
@@ -404,6 +406,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
...
@@ -404,6 +406,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
/* codecs= */
null
,
/* codecs= */
null
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
selectionFlags
,
selectionFlags
,
/* roleFlags= */
0
,
language
,
language
,
accessibilityChannel
));
accessibilityChannel
));
break
;
break
;
...
...
library/hls/src/test/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriodTest.java
View file @
a86a9137
...
@@ -127,7 +127,8 @@ public final class HlsMediaPeriodTest {
...
@@ -127,7 +127,8 @@ public final class HlsMediaPeriodTest {
/* height= */
Format
.
NO_VALUE
,
/* height= */
Format
.
NO_VALUE
,
/* frameRate= */
Format
.
NO_VALUE
,
/* frameRate= */
Format
.
NO_VALUE
,
/* initializationData= */
null
,
/* initializationData= */
null
,
/* selectionFlags= */
0
),
/* selectionFlags= */
0
,
/* roleFlags= */
0
),
/* name= */
""
);
/* name= */
""
);
}
}
...
@@ -145,7 +146,8 @@ public final class HlsMediaPeriodTest {
...
@@ -145,7 +146,8 @@ public final class HlsMediaPeriodTest {
/* height= */
Format
.
NO_VALUE
,
/* height= */
Format
.
NO_VALUE
,
/* frameRate= */
Format
.
NO_VALUE
,
/* frameRate= */
Format
.
NO_VALUE
,
/* initializationData= */
null
,
/* initializationData= */
null
,
/* selectionFlags= */
0
),
/* selectionFlags= */
0
,
/* roleFlags= */
0
),
/* name= */
""
);
/* name= */
""
);
}
}
...
@@ -169,6 +171,7 @@ public final class HlsMediaPeriodTest {
...
@@ -169,6 +171,7 @@ public final class HlsMediaPeriodTest {
/* sampleRate= */
Format
.
NO_VALUE
,
/* sampleRate= */
Format
.
NO_VALUE
,
/* initializationData= */
null
,
/* initializationData= */
null
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
language
);
language
);
}
}
...
...
library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser.java
View file @
a86a9137
...
@@ -681,7 +681,8 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
...
@@ -681,7 +681,8 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
height
,
height
,
/* frameRate= */
Format
.
NO_VALUE
,
/* frameRate= */
Format
.
NO_VALUE
,
codecSpecificData
,
codecSpecificData
,
/* selectionFlags= */
0
);
/* selectionFlags= */
0
,
/* roleFlags= */
0
);
}
else
if
(
type
==
C
.
TRACK_TYPE_AUDIO
)
{
}
else
if
(
type
==
C
.
TRACK_TYPE_AUDIO
)
{
sampleMimeType
=
sampleMimeType
==
null
?
MimeTypes
.
AUDIO_AAC
:
sampleMimeType
;
sampleMimeType
=
sampleMimeType
==
null
?
MimeTypes
.
AUDIO_AAC
:
sampleMimeType
;
int
channels
=
parseRequiredInt
(
parser
,
KEY_CHANNELS
);
int
channels
=
parseRequiredInt
(
parser
,
KEY_CHANNELS
);
...
@@ -705,6 +706,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
...
@@ -705,6 +706,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
samplingRate
,
samplingRate
,
codecSpecificData
,
codecSpecificData
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
language
);
language
);
}
else
if
(
type
==
C
.
TRACK_TYPE_TEXT
)
{
}
else
if
(
type
==
C
.
TRACK_TYPE_TEXT
)
{
String
language
=
(
String
)
getNormalizedAttribute
(
KEY_LANGUAGE
);
String
language
=
(
String
)
getNormalizedAttribute
(
KEY_LANGUAGE
);
...
@@ -728,6 +730,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
...
@@ -728,6 +730,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
/* codecs= */
null
,
/* codecs= */
null
,
bitrate
,
bitrate
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
);
/* language= */
null
);
}
}
}
}
...
...
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriodTest.java
View file @
a86a9137
...
@@ -89,6 +89,7 @@ public class SsMediaPeriodTest {
...
@@ -89,6 +89,7 @@ public class SsMediaPeriodTest {
/* codecs= */
null
,
/* codecs= */
null
,
bitrate
,
bitrate
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
);
/* language= */
null
);
}
}
...
@@ -101,6 +102,7 @@ public class SsMediaPeriodTest {
...
@@ -101,6 +102,7 @@ public class SsMediaPeriodTest {
/* codecs= */
null
,
/* codecs= */
null
,
bitrate
,
bitrate
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
);
/* language= */
null
);
}
}
...
@@ -113,6 +115,7 @@ public class SsMediaPeriodTest {
...
@@ -113,6 +115,7 @@ public class SsMediaPeriodTest {
/* codecs= */
null
,
/* codecs= */
null
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
language
);
language
);
}
}
}
}
library/smoothstreaming/src/test/java/com/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestTest.java
View file @
a86a9137
...
@@ -122,6 +122,7 @@ public class SsManifestTest {
...
@@ -122,6 +122,7 @@ public class SsManifestTest {
/* codecs= */
null
,
/* codecs= */
null
,
/* bitrate= */
Format
.
NO_VALUE
,
/* bitrate= */
Format
.
NO_VALUE
,
/* selectionFlags= */
0
,
/* selectionFlags= */
0
,
/* roleFlags= */
0
,
/* language= */
null
);
/* language= */
null
);
}
}
}
}
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