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
73d6a0f2
authored
Aug 08, 2019
by
Yannick RUI
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Automatically show closed captioning/hearing impaired text track
parent
a9b93d7e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 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/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
View file @
73d6a0f2
...
@@ -433,6 +433,12 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -433,6 +433,12 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
}
@Override
@Override
public
ParametersBuilder
setPreferredRoleFlags
(
int
preferredRoleFlags
)
{
super
.
setPreferredRoleFlags
(
preferredRoleFlags
);
return
this
;
}
@Override
public
ParametersBuilder
setSelectUndeterminedTextLanguage
(
public
ParametersBuilder
setSelectUndeterminedTextLanguage
(
boolean
selectUndeterminedTextLanguage
)
{
boolean
selectUndeterminedTextLanguage
)
{
super
.
setSelectUndeterminedTextLanguage
(
selectUndeterminedTextLanguage
);
super
.
setSelectUndeterminedTextLanguage
(
selectUndeterminedTextLanguage
);
...
@@ -642,6 +648,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -642,6 +648,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
allowAudioMixedSampleRateAdaptiveness
,
allowAudioMixedSampleRateAdaptiveness
,
// Text
// Text
preferredTextLanguage
,
preferredTextLanguage
,
preferredRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
,
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -837,6 +844,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -837,6 +844,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
/* allowAudioMixedSampleRateAdaptiveness= */
false
,
/* allowAudioMixedSampleRateAdaptiveness= */
false
,
// Text
// Text
TrackSelectionParameters
.
DEFAULT
.
preferredTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
preferredTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
preferredRoleFlags
,
TrackSelectionParameters
.
DEFAULT
.
selectUndeterminedTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
selectUndeterminedTextLanguage
,
TrackSelectionParameters
.
DEFAULT
.
disabledTextTrackSelectionFlags
,
TrackSelectionParameters
.
DEFAULT
.
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -869,6 +877,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -869,6 +877,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
boolean
allowAudioMixedSampleRateAdaptiveness
,
boolean
allowAudioMixedSampleRateAdaptiveness
,
// Text
// Text
@Nullable
String
preferredTextLanguage
,
@Nullable
String
preferredTextLanguage
,
int
preferredRoleFlags
,
boolean
selectUndeterminedTextLanguage
,
boolean
selectUndeterminedTextLanguage
,
@C
.
SelectionFlags
int
disabledTextTrackSelectionFlags
,
@C
.
SelectionFlags
int
disabledTextTrackSelectionFlags
,
// General
// General
...
@@ -882,6 +891,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -882,6 +891,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
super
(
super
(
preferredAudioLanguage
,
preferredAudioLanguage
,
preferredTextLanguage
,
preferredTextLanguage
,
preferredRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
);
disabledTextTrackSelectionFlags
);
// Video
// Video
...
@@ -2590,6 +2600,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2590,6 +2600,7 @@ 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
;
public
TextTrackScore
(
public
TextTrackScore
(
...
@@ -2606,6 +2617,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2606,6 +2617,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
preferredLanguageScore
=
preferredLanguageScore
=
getFormatLanguageScore
(
getFormatLanguageScore
(
format
,
parameters
.
preferredTextLanguage
,
parameters
.
selectUndeterminedTextLanguage
);
format
,
parameters
.
preferredTextLanguage
,
parameters
.
selectUndeterminedTextLanguage
);
preferredRoleFlagsScore
=
format
.
roleFlags
&
parameters
.
preferredRoleFlags
;
// 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.
...
@@ -2616,7 +2628,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2616,7 +2628,7 @@ 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
&&
selectedAudioLanguageScore
>
0
&&
preferredRoleFlagsScore
>
0
))
||
isDefault
||
(
isForced
&&
selectedAudioLanguageScore
>
0
);
}
}
/**
/**
...
@@ -2634,6 +2646,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -2634,6 +2646,9 @@ 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
;
}
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java
View file @
73d6a0f2
...
@@ -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
preferredRoleFlags
;
/* 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
;
preferredRoleFlags
=
initialValues
.
preferredRoleFlags
;
selectUndeterminedTextLanguage
=
initialValues
.
selectUndeterminedTextLanguage
;
selectUndeterminedTextLanguage
=
initialValues
.
selectUndeterminedTextLanguage
;
disabledTextTrackSelectionFlags
=
initialValues
.
disabledTextTrackSelectionFlags
;
disabledTextTrackSelectionFlags
=
initialValues
.
disabledTextTrackSelectionFlags
;
}
}
...
@@ -75,6 +77,17 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -75,6 +77,17 @@ public class TrackSelectionParameters implements Parcelable {
}
}
/**
/**
* See {@link TrackSelectionParameters#preferredRoleFlags}.
*
* @param preferredRoleFlags Preferred role flags.
* @return This builder.
*/
public
Builder
setPreferredRoleFlags
(
int
preferredRoleFlags
)
{
this
.
preferredRoleFlags
=
preferredRoleFlags
;
return
this
;
}
/**
* See {@link TrackSelectionParameters#selectUndeterminedTextLanguage}.
* See {@link TrackSelectionParameters#selectUndeterminedTextLanguage}.
*
*
* @return This builder.
* @return This builder.
...
@@ -102,6 +115,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -102,6 +115,7 @@ public class TrackSelectionParameters implements Parcelable {
preferredAudioLanguage
,
preferredAudioLanguage
,
// Text
// Text
preferredTextLanguage
,
preferredTextLanguage
,
preferredRoleFlags
,
selectUndeterminedTextLanguage
,
selectUndeterminedTextLanguage
,
disabledTextTrackSelectionFlags
);
disabledTextTrackSelectionFlags
);
}
}
...
@@ -122,6 +136,11 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -122,6 +136,11 @@ public class TrackSelectionParameters implements Parcelable {
*/
*/
@Nullable
public
final
String
preferredTextLanguage
;
@Nullable
public
final
String
preferredTextLanguage
;
/**
/**
* The preferred role flags for text tracks. {@code 0} selects
* the default track if there is one, or no track otherwise. The default value is {@code 0}.
*/
@Nullable
public
final
int
preferredRoleFlags
;
/**
* 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}.
...
@@ -138,6 +157,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -138,6 +157,7 @@ public class TrackSelectionParameters implements Parcelable {
/* preferredAudioLanguage= */
null
,
/* preferredAudioLanguage= */
null
,
// Text
// Text
/* preferredTextLanguage= */
null
,
/* preferredTextLanguage= */
null
,
/* preferredRoleFlags= */
0
,
/* selectUndeterminedTextLanguage= */
false
,
/* selectUndeterminedTextLanguage= */
false
,
/* disabledTextTrackSelectionFlags= */
0
);
/* disabledTextTrackSelectionFlags= */
0
);
}
}
...
@@ -145,12 +165,14 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -145,12 +165,14 @@ public class TrackSelectionParameters implements Parcelable {
/* package */
TrackSelectionParameters
(
/* package */
TrackSelectionParameters
(
@Nullable
String
preferredAudioLanguage
,
@Nullable
String
preferredAudioLanguage
,
@Nullable
String
preferredTextLanguage
,
@Nullable
String
preferredTextLanguage
,
int
preferredRoleFlags
,
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
.
preferredRoleFlags
=
preferredRoleFlags
;
this
.
selectUndeterminedTextLanguage
=
selectUndeterminedTextLanguage
;
this
.
selectUndeterminedTextLanguage
=
selectUndeterminedTextLanguage
;
this
.
disabledTextTrackSelectionFlags
=
disabledTextTrackSelectionFlags
;
this
.
disabledTextTrackSelectionFlags
=
disabledTextTrackSelectionFlags
;
}
}
...
@@ -158,6 +180,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -158,6 +180,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
.
preferredRoleFlags
=
in
.
readInt
();
this
.
selectUndeterminedTextLanguage
=
Util
.
readBoolean
(
in
);
this
.
selectUndeterminedTextLanguage
=
Util
.
readBoolean
(
in
);
this
.
disabledTextTrackSelectionFlags
=
in
.
readInt
();
this
.
disabledTextTrackSelectionFlags
=
in
.
readInt
();
}
}
...
@@ -179,6 +202,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -179,6 +202,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
)
&&
preferredRoleFlags
==
other
.
preferredRoleFlags
&&
selectUndeterminedTextLanguage
==
other
.
selectUndeterminedTextLanguage
&&
selectUndeterminedTextLanguage
==
other
.
selectUndeterminedTextLanguage
&&
disabledTextTrackSelectionFlags
==
other
.
disabledTextTrackSelectionFlags
;
&&
disabledTextTrackSelectionFlags
==
other
.
disabledTextTrackSelectionFlags
;
}
}
...
@@ -188,6 +212,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -188,6 +212,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
+
(
preferredRoleFlags
);
result
=
31
*
result
+
(
selectUndeterminedTextLanguage
?
1
:
0
);
result
=
31
*
result
+
(
selectUndeterminedTextLanguage
?
1
:
0
);
result
=
31
*
result
+
disabledTextTrackSelectionFlags
;
result
=
31
*
result
+
disabledTextTrackSelectionFlags
;
return
result
;
return
result
;
...
@@ -204,6 +229,7 @@ public class TrackSelectionParameters implements Parcelable {
...
@@ -204,6 +229,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
(
preferredRoleFlags
);
Util
.
writeBoolean
(
dest
,
selectUndeterminedTextLanguage
);
Util
.
writeBoolean
(
dest
,
selectUndeterminedTextLanguage
);
dest
.
writeInt
(
disabledTextTrackSelectionFlags
);
dest
.
writeInt
(
disabledTextTrackSelectionFlags
);
}
}
...
...
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