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
26e29307
authored
Sep 10, 2019
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Merge pull request #6158 from xirac:dev-v2
PiperOrigin-RevId: 268240722
parent
560c8c87
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
1 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 @
26e29307
...
@@ -469,6 +469,12 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -469,6 +469,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
);
...
@@ -701,6 +707,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -701,6 +707,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
allowAudioMixedChannelCountAdaptiveness
,
allowAudioMixedChannelCountAdaptiveness
,
// Text
// Text
preferredTextLanguage
,
preferredTextLanguage
,
preferredTextRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
,
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -891,6 +898,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -891,6 +898,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
...
@@ -924,6 +932,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -924,6 +932,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
...
@@ -937,6 +946,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -937,6 +946,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
super
(
super
(
preferredAudioLanguage
,
preferredAudioLanguage
,
preferredTextLanguage
,
preferredTextLanguage
,
preferredTextRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
);
disabledTextTrackSelectionFlags
);
// Video
// Video
...
@@ -2640,7 +2650,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2640,7 +2650,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
,
...
@@ -2656,6 +2668,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2656,6 +2668,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.
...
@@ -2666,7 +2682,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2666,7 +2682,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
);
}
}
/**
/**
...
@@ -2684,13 +2703,22 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2684,13 +2703,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
;
}
}
if
(
this
.
selectedAudioLanguageScore
!=
other
.
selectedAudioLanguageScore
)
{
return
compareInts
(
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 @
26e29307
...
@@ -35,6 +35,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -35,6 +35,7 @@ public class TrackSelectionParameters implements Parcelable {
@Nullable
/* package */
String
preferredAudioLanguage
;
@Nullable
/* package */
String
preferredAudioLanguage
;
// Text
// Text
@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
;
...
@@ -52,6 +53,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -52,6 +53,7 @@ public class TrackSelectionParameters implements Parcelable {
preferredAudioLanguage
=
initialValues
.
preferredAudioLanguage
;
preferredAudioLanguage
=
initialValues
.
preferredAudioLanguage
;
// Text
// Text
preferredTextLanguage
=
initialValues
.
preferredTextLanguage
;
preferredTextLanguage
=
initialValues
.
preferredTextLanguage
;
preferredTextRoleFlags
=
initialValues
.
preferredTextRoleFlags
;
selectUndeterminedTextLanguage
=
initialValues
.
selectUndeterminedTextLanguage
;
selectUndeterminedTextLanguage
=
initialValues
.
selectUndeterminedTextLanguage
;
disabledTextTrackSelectionFlags
=
initialValues
.
disabledTextTrackSelectionFlags
;
disabledTextTrackSelectionFlags
=
initialValues
.
disabledTextTrackSelectionFlags
;
}
}
...
@@ -83,6 +85,17 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -83,6 +85,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.
...
@@ -116,6 +129,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -116,6 +129,7 @@ public class TrackSelectionParameters implements Parcelable {
preferredAudioLanguage
,
preferredAudioLanguage
,
// Text
// Text
preferredTextLanguage
,
preferredTextLanguage
,
preferredTextRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
);
disabledTextTrackSelectionFlags
);
}
}
...
@@ -137,6 +151,11 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -137,6 +151,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}.
...
@@ -153,6 +172,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -153,6 +172,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
);
}
}
...
@@ -160,12 +180,14 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -160,12 +180,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
;
}
}
...
@@ -175,6 +197,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -175,6 +197,7 @@ public class TrackSelectionParameters implements Parcelable {
this
.
preferredAudioLanguage
=
in
.
readString
();
this
.
preferredAudioLanguage
=
in
.
readString
();
// Text
// Text
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
();
}
}
...
@@ -197,6 +220,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -197,6 +220,7 @@ public class TrackSelectionParameters implements Parcelable {
return
TextUtils
.
equals
(
preferredAudioLanguage
,
other
.
preferredAudioLanguage
)
return
TextUtils
.
equals
(
preferredAudioLanguage
,
other
.
preferredAudioLanguage
)
// Text
// Text
&&
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
;
}
}
...
@@ -208,6 +232,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -208,6 +232,7 @@ public class TrackSelectionParameters implements Parcelable {
result
=
31
*
result
+
(
preferredAudioLanguage
==
null
?
0
:
preferredAudioLanguage
.
hashCode
());
result
=
31
*
result
+
(
preferredAudioLanguage
==
null
?
0
:
preferredAudioLanguage
.
hashCode
());
// Text
// Text
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
;
...
@@ -226,6 +251,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -226,6 +251,7 @@ public class TrackSelectionParameters implements Parcelable {
dest
.
writeString
(
preferredAudioLanguage
);
dest
.
writeString
(
preferredAudioLanguage
);
// Text
// Text
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 @
26e29307
...
@@ -146,6 +146,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -146,6 +146,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