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
755b4a25
authored
Sep 10, 2019
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge pull request #6158 from xirac:dev-v2
PiperOrigin-RevId: 268240722
parents
e567f8ed
5f488717
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
3 deletions
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java
library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
View file @
755b4a25
...
@@ -481,6 +481,12 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -481,6 +481,12 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
}
@Override
@Override
public
ParametersBuilder
setPreferredTextRoleFlags
(
@C
.
RoleFlags
int
preferredTextRoleFlags
)
{
super
.
setPreferredTextRoleFlags
(
preferredTextRoleFlags
);
return
this
;
}
@Override
public
ParametersBuilder
setSelectUndeterminedTextLanguage
(
public
ParametersBuilder
setSelectUndeterminedTextLanguage
(
boolean
selectUndeterminedTextLanguage
)
{
boolean
selectUndeterminedTextLanguage
)
{
super
.
setSelectUndeterminedTextLanguage
(
selectUndeterminedTextLanguage
);
super
.
setSelectUndeterminedTextLanguage
(
selectUndeterminedTextLanguage
);
...
@@ -713,6 +719,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -713,6 +719,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
allowAudioMixedChannelCountAdaptiveness
,
allowAudioMixedChannelCountAdaptiveness
,
// Text
// Text
preferredTextLanguage
,
preferredTextLanguage
,
preferredTextRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
,
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -917,6 +924,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -917,6 +924,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
/* allowAudioMixedChannelCountAdaptiveness= */
false
,
/* allowAudioMixedChannelCountAdaptiveness= */
false
,
// Text
// Text
TrackSelectionParameters
.
DEFAULT
.
preferredTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
preferredTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
preferredTextRoleFlags
,
TrackSelectionParameters
.
DEFAULT
.
selectUndeterminedTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
selectUndeterminedTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
disabledTextTrackSelectionFlags
,
TrackSelectionParameters
.
DEFAULT
.
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -950,6 +958,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -950,6 +958,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
boolean
allowAudioMixedChannelCountAdaptiveness
,
boolean
allowAudioMixedChannelCountAdaptiveness
,
// Text
// Text
@Nullable
String
preferredTextLanguage
,
@Nullable
String
preferredTextLanguage
,
@C
.
RoleFlags
int
preferredTextRoleFlags
,
boolean
selectUndeterminedTextLanguage
,
boolean
selectUndeterminedTextLanguage
,
@C
.
SelectionFlags
int
disabledTextTrackSelectionFlags
,
@C
.
SelectionFlags
int
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -963,6 +972,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -963,6 +972,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
super
(
super
(
preferredAudioLanguage
,
preferredAudioLanguage
,
preferredTextLanguage
,
preferredTextLanguage
,
preferredTextRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
);
disabledTextTrackSelectionFlags
);
// Video
// Video
...
@@ -1407,7 +1417,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1407,7 +1417,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
/**
/**
* @deprecated Use {@link #DefaultTrackSelector(Context)} instead. The bandwidth meter should be
* @deprecated Use {@link #DefaultTrackSelector(Context)} instead. The bandwidth meter should be
* passed directly to the player in {@link SimpleExoPlayer.Builder}.
* passed directly to the player in {@link
* com.google.android.exoplayer2.SimpleExoPlayer.Builder}.
*/
*/
@Deprecated
@Deprecated
@SuppressWarnings
(
"deprecation"
)
@SuppressWarnings
(
"deprecation"
)
...
@@ -2691,7 +2702,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2691,7 +2702,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private
final
boolean
isDefault
;
private
final
boolean
isDefault
;
private
final
boolean
hasPreferredIsForcedFlag
;
private
final
boolean
hasPreferredIsForcedFlag
;
private
final
int
preferredLanguageScore
;
private
final
int
preferredLanguageScore
;
private
final
int
preferredRoleFlagsScore
;
private
final
int
selectedAudioLanguageScore
;
private
final
int
selectedAudioLanguageScore
;
private
final
boolean
hasCaptionRoleFlags
;
public
TextTrackScore
(
public
TextTrackScore
(
Format
format
,
Format
format
,
...
@@ -2707,6 +2720,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2707,6 +2720,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
preferredLanguageScore
=
preferredLanguageScore
=
getFormatLanguageScore
(
getFormatLanguageScore
(
format
,
parameters
.
preferredTextLanguage
,
parameters
.
selectUndeterminedTextLanguage
);
format
,
parameters
.
preferredTextLanguage
,
parameters
.
selectUndeterminedTextLanguage
);
preferredRoleFlagsScore
=
Integer
.
bitCount
(
format
.
roleFlags
&
parameters
.
preferredTextRoleFlags
);
hasCaptionRoleFlags
=
(
format
.
roleFlags
&
(
C
.
ROLE_FLAG_CAPTION
|
C
.
ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND
))
!=
0
;
// Prefer non-forced to forced if a preferred text language has been matched. Where both are
// Prefer non-forced to forced if a preferred text language has been matched. Where both are
// provided the non-forced track will usually contain the forced subtitles as a subset.
// provided the non-forced track will usually contain the forced subtitles as a subset.
// Otherwise, prefer a forced track.
// Otherwise, prefer a forced track.
...
@@ -2717,7 +2734,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2717,7 +2734,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
selectedAudioLanguageScore
=
selectedAudioLanguageScore
=
getFormatLanguageScore
(
format
,
selectedAudioLanguage
,
selectedAudioLanguageUndetermined
);
getFormatLanguageScore
(
format
,
selectedAudioLanguage
,
selectedAudioLanguageUndetermined
);
isWithinConstraints
=
isWithinConstraints
=
preferredLanguageScore
>
0
||
isDefault
||
(
isForced
&&
selectedAudioLanguageScore
>
0
);
preferredLanguageScore
>
0
||
(
parameters
.
preferredTextLanguage
==
null
&&
preferredRoleFlagsScore
>
0
)
||
isDefault
||
(
isForced
&&
selectedAudioLanguageScore
>
0
);
}
}
/**
/**
...
@@ -2735,13 +2755,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2735,13 +2755,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
if
(
this
.
preferredLanguageScore
!=
other
.
preferredLanguageScore
)
{
if
(
this
.
preferredLanguageScore
!=
other
.
preferredLanguageScore
)
{
return
compareInts
(
this
.
preferredLanguageScore
,
other
.
preferredLanguageScore
);
return
compareInts
(
this
.
preferredLanguageScore
,
other
.
preferredLanguageScore
);
}
}
if
(
this
.
preferredRoleFlagsScore
!=
other
.
preferredRoleFlagsScore
)
{
return
compareInts
(
this
.
preferredRoleFlagsScore
,
other
.
preferredRoleFlagsScore
);
}
if
(
this
.
isDefault
!=
other
.
isDefault
)
{
if
(
this
.
isDefault
!=
other
.
isDefault
)
{
return
this
.
isDefault
?
1
:
-
1
;
return
this
.
isDefault
?
1
:
-
1
;
}
}
if
(
this
.
hasPreferredIsForcedFlag
!=
other
.
hasPreferredIsForcedFlag
)
{
if
(
this
.
hasPreferredIsForcedFlag
!=
other
.
hasPreferredIsForcedFlag
)
{
return
this
.
hasPreferredIsForcedFlag
?
1
:
-
1
;
return
this
.
hasPreferredIsForcedFlag
?
1
:
-
1
;
}
}
return
compareInts
(
this
.
selectedAudioLanguageScore
,
other
.
selectedAudioLanguageScore
);
if
(
this
.
selectedAudioLanguageScore
!=
other
.
selectedAudioLanguageScore
)
{
return
compareInts
(
this
.
selectedAudioLanguageScore
,
other
.
selectedAudioLanguageScore
);
}
if
(
preferredRoleFlagsScore
==
0
&&
this
.
hasCaptionRoleFlags
!=
other
.
hasCaptionRoleFlags
)
{
return
this
.
hasCaptionRoleFlags
?
-
1
:
1
;
}
return
0
;
}
}
}
}
}
}
library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java
View file @
755b4a25
...
@@ -33,6 +33,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -33,6 +33,7 @@ public class TrackSelectionParameters implements Parcelable {
@Nullable
/* package */
String
preferredAudioLanguage
;
@Nullable
/* package */
String
preferredAudioLanguage
;
@Nullable
/* package */
String
preferredTextLanguage
;
@Nullable
/* package */
String
preferredTextLanguage
;
@C
.
RoleFlags
/* package */
int
preferredTextRoleFlags
;
/* package */
boolean
selectUndeterminedTextLanguage
;
/* package */
boolean
selectUndeterminedTextLanguage
;
@C
.
SelectionFlags
/* package */
int
disabledTextTrackSelectionFlags
;
@C
.
SelectionFlags
/* package */
int
disabledTextTrackSelectionFlags
;
...
@@ -48,6 +49,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -48,6 +49,7 @@ public class TrackSelectionParameters implements Parcelable {
/* package */
Builder
(
TrackSelectionParameters
initialValues
)
{
/* package */
Builder
(
TrackSelectionParameters
initialValues
)
{
preferredAudioLanguage
=
initialValues
.
preferredAudioLanguage
;
preferredAudioLanguage
=
initialValues
.
preferredAudioLanguage
;
preferredTextLanguage
=
initialValues
.
preferredTextLanguage
;
preferredTextLanguage
=
initialValues
.
preferredTextLanguage
;
preferredTextRoleFlags
=
initialValues
.
preferredTextRoleFlags
;
selectUndeterminedTextLanguage
=
initialValues
.
selectUndeterminedTextLanguage
;
selectUndeterminedTextLanguage
=
initialValues
.
selectUndeterminedTextLanguage
;
disabledTextTrackSelectionFlags
=
initialValues
.
disabledTextTrackSelectionFlags
;
disabledTextTrackSelectionFlags
=
initialValues
.
disabledTextTrackSelectionFlags
;
}
}
...
@@ -77,6 +79,17 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -77,6 +79,17 @@ public class TrackSelectionParameters implements Parcelable {
}
}
/**
/**
* Sets the preferred {@link C.RoleFlags} for text tracks.
*
* @param preferredTextRoleFlags Preferred text role flags.
* @return This builder.
*/
public
Builder
setPreferredTextRoleFlags
(
@C
.
RoleFlags
int
preferredTextRoleFlags
)
{
this
.
preferredTextRoleFlags
=
preferredTextRoleFlags
;
return
this
;
}
/**
* Sets whether a text track with undetermined language should be selected if no track with
* Sets whether a text track with undetermined language should be selected if no track with
* {@link #setPreferredTextLanguage(String)} is available, or if the preferred language is
* {@link #setPreferredTextLanguage(String)} is available, or if the preferred language is
* unset.
* unset.
...
@@ -110,6 +123,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -110,6 +123,7 @@ public class TrackSelectionParameters implements Parcelable {
preferredAudioLanguage
,
preferredAudioLanguage
,
// Text
// Text
preferredTextLanguage
,
preferredTextLanguage
,
preferredTextRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
);
disabledTextTrackSelectionFlags
);
}
}
...
@@ -130,6 +144,11 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -130,6 +144,11 @@ public class TrackSelectionParameters implements Parcelable {
*/
*/
@Nullable
public
final
String
preferredTextLanguage
;
@Nullable
public
final
String
preferredTextLanguage
;
/**
/**
* The preferred {@link C.RoleFlags} for text tracks. {@code 0} selects the default track if there
* is one, or no track otherwise. The default value is {@code 0}.
*/
@C
.
RoleFlags
public
final
int
preferredTextRoleFlags
;
/**
* Whether a text track with undetermined language should be selected if no track with {@link
* Whether a text track with undetermined language should be selected if no track with {@link
* #preferredTextLanguage} is available, or if {@link #preferredTextLanguage} is unset. The
* #preferredTextLanguage} is available, or if {@link #preferredTextLanguage} is unset. The
* default value is {@code false}.
* default value is {@code false}.
...
@@ -146,6 +165,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -146,6 +165,7 @@ public class TrackSelectionParameters implements Parcelable {
/* preferredAudioLanguage= */
null
,
/* preferredAudioLanguage= */
null
,
// Text
// Text
/* preferredTextLanguage= */
null
,
/* preferredTextLanguage= */
null
,
/* preferredTextRoleFlags= */
0
,
/* selectUndeterminedTextLanguage= */
false
,
/* selectUndeterminedTextLanguage= */
false
,
/* disabledTextTrackSelectionFlags= */
0
);
/* disabledTextTrackSelectionFlags= */
0
);
}
}
...
@@ -153,12 +173,14 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -153,12 +173,14 @@ public class TrackSelectionParameters implements Parcelable {
/* package */
TrackSelectionParameters
(
/* package */
TrackSelectionParameters
(
@Nullable
String
preferredAudioLanguage
,
@Nullable
String
preferredAudioLanguage
,
@Nullable
String
preferredTextLanguage
,
@Nullable
String
preferredTextLanguage
,
@C
.
RoleFlags
int
preferredTextRoleFlags
,
boolean
selectUndeterminedTextLanguage
,
boolean
selectUndeterminedTextLanguage
,
@C
.
SelectionFlags
int
disabledTextTrackSelectionFlags
)
{
@C
.
SelectionFlags
int
disabledTextTrackSelectionFlags
)
{
// Audio
// Audio
this
.
preferredAudioLanguage
=
Util
.
normalizeLanguageCode
(
preferredAudioLanguage
);
this
.
preferredAudioLanguage
=
Util
.
normalizeLanguageCode
(
preferredAudioLanguage
);
// Text
// Text
this
.
preferredTextLanguage
=
Util
.
normalizeLanguageCode
(
preferredTextLanguage
);
this
.
preferredTextLanguage
=
Util
.
normalizeLanguageCode
(
preferredTextLanguage
);
this
.
preferredTextRoleFlags
=
preferredTextRoleFlags
;
this
.
selectUndeterminedTextLanguage
=
selectUndeterminedTextLanguage
;
this
.
selectUndeterminedTextLanguage
=
selectUndeterminedTextLanguage
;
this
.
disabledTextTrackSelectionFlags
=
disabledTextTrackSelectionFlags
;
this
.
disabledTextTrackSelectionFlags
=
disabledTextTrackSelectionFlags
;
}
}
...
@@ -166,6 +188,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -166,6 +188,7 @@ public class TrackSelectionParameters implements Parcelable {
/* package */
TrackSelectionParameters
(
Parcel
in
)
{
/* package */
TrackSelectionParameters
(
Parcel
in
)
{
this
.
preferredAudioLanguage
=
in
.
readString
();
this
.
preferredAudioLanguage
=
in
.
readString
();
this
.
preferredTextLanguage
=
in
.
readString
();
this
.
preferredTextLanguage
=
in
.
readString
();
this
.
preferredTextRoleFlags
=
in
.
readInt
();
this
.
selectUndeterminedTextLanguage
=
Util
.
readBoolean
(
in
);
this
.
selectUndeterminedTextLanguage
=
Util
.
readBoolean
(
in
);
this
.
disabledTextTrackSelectionFlags
=
in
.
readInt
();
this
.
disabledTextTrackSelectionFlags
=
in
.
readInt
();
}
}
...
@@ -187,6 +210,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -187,6 +210,7 @@ public class TrackSelectionParameters implements Parcelable {
TrackSelectionParameters
other
=
(
TrackSelectionParameters
)
obj
;
TrackSelectionParameters
other
=
(
TrackSelectionParameters
)
obj
;
return
TextUtils
.
equals
(
preferredAudioLanguage
,
other
.
preferredAudioLanguage
)
return
TextUtils
.
equals
(
preferredAudioLanguage
,
other
.
preferredAudioLanguage
)
&&
TextUtils
.
equals
(
preferredTextLanguage
,
other
.
preferredTextLanguage
)
&&
TextUtils
.
equals
(
preferredTextLanguage
,
other
.
preferredTextLanguage
)
&&
preferredTextRoleFlags
==
other
.
preferredTextRoleFlags
&&
selectUndeterminedTextLanguage
==
other
.
selectUndeterminedTextLanguage
&&
selectUndeterminedTextLanguage
==
other
.
selectUndeterminedTextLanguage
&&
disabledTextTrackSelectionFlags
==
other
.
disabledTextTrackSelectionFlags
;
&&
disabledTextTrackSelectionFlags
==
other
.
disabledTextTrackSelectionFlags
;
}
}
...
@@ -196,6 +220,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -196,6 +220,7 @@ public class TrackSelectionParameters implements Parcelable {
int
result
=
1
;
int
result
=
1
;
result
=
31
*
result
+
(
preferredAudioLanguage
==
null
?
0
:
preferredAudioLanguage
.
hashCode
());
result
=
31
*
result
+
(
preferredAudioLanguage
==
null
?
0
:
preferredAudioLanguage
.
hashCode
());
result
=
31
*
result
+
(
preferredTextLanguage
==
null
?
0
:
preferredTextLanguage
.
hashCode
());
result
=
31
*
result
+
(
preferredTextLanguage
==
null
?
0
:
preferredTextLanguage
.
hashCode
());
result
=
31
*
result
+
preferredTextRoleFlags
;
result
=
31
*
result
+
(
selectUndeterminedTextLanguage
?
1
:
0
);
result
=
31
*
result
+
(
selectUndeterminedTextLanguage
?
1
:
0
);
result
=
31
*
result
+
disabledTextTrackSelectionFlags
;
result
=
31
*
result
+
disabledTextTrackSelectionFlags
;
return
result
;
return
result
;
...
@@ -212,6 +237,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -212,6 +237,7 @@ public class TrackSelectionParameters implements Parcelable {
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeString
(
preferredAudioLanguage
);
dest
.
writeString
(
preferredAudioLanguage
);
dest
.
writeString
(
preferredTextLanguage
);
dest
.
writeString
(
preferredTextLanguage
);
dest
.
writeInt
(
preferredTextRoleFlags
);
Util
.
writeBoolean
(
dest
,
selectUndeterminedTextLanguage
);
Util
.
writeBoolean
(
dest
,
selectUndeterminedTextLanguage
);
dest
.
writeInt
(
disabledTextTrackSelectionFlags
);
dest
.
writeInt
(
disabledTextTrackSelectionFlags
);
}
}
...
...
library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java
View file @
755b4a25
...
@@ -151,6 +151,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -151,6 +151,7 @@ public final class DefaultTrackSelectorTest {
/* allowAudioMixedChannelCountAdaptiveness= */
true
,
/* allowAudioMixedChannelCountAdaptiveness= */
true
,
// Text
// Text
/* preferredTextLanguage= */
"de"
,
/* preferredTextLanguage= */
"de"
,
/* preferredTextRoleFlags= */
C
.
ROLE_FLAG_CAPTION
,
/* selectUndeterminedTextLanguage= */
true
,
/* selectUndeterminedTextLanguage= */
true
,
/* disabledTextTrackSelectionFlags= */
8
,
/* disabledTextTrackSelectionFlags= */
8
,
// General
// General
...
...
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