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
fbd82734
authored
Apr 14, 2022
by
olly
Committed by
Ian Baker
Apr 26, 2022
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Tracks.Group/TrackGroup variable naming disambiguation
PiperOrigin-RevId: 441712166
parent
e077c766
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
98 additions
and
73 deletions
docs/track-selection.md
library/common/src/main/java/com/google/android/exoplayer2/Tracks.java
library/common/src/main/java/com/google/android/exoplayer2/source/TrackGroup.java
library/common/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionOverride.java
library/common/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java
library/common/src/test/java/com/google/android/exoplayer2/trackselection/TrackSelectionOverrideTest.java
library/common/src/test/java/com/google/android/exoplayer2/trackselection/TrackSelectionParametersTest.java
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java
library/core/src/test/java/com/google/android/exoplayer2/trackselection/TrackSelectionUtilTest.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/TrackSelectionDialogBuilder.java
library/ui/src/main/java/com/google/android/exoplayer2/ui/TrackSelectionView.java
docs/track-selection.md
View file @
fbd82734
...
@@ -136,7 +136,7 @@ player.setTrackSelectionParameters(
...
@@ -136,7 +136,7 @@ player.setTrackSelectionParameters(
.buildUpon()
.buildUpon()
.setOverrideForType(
.setOverrideForType(
new TrackSelectionOverride(
new TrackSelectionOverride(
audioTrackGroup.getTrackGroup(),
audioTrackGroup.get
Media
TrackGroup(),
/* trackIndex= */ 0))
/* trackIndex= */ 0))
.build());
.build());
~~~
~~~
...
@@ -171,7 +171,8 @@ player.setTrackSelectionParameters(
...
@@ -171,7 +171,8 @@ player.setTrackSelectionParameters(
.buildUpon()
.buildUpon()
.addOverride(
.addOverride(
new TrackSelectionOverride(
new TrackSelectionOverride(
disabledTrackGroup.getTrackGroup(), ImmutableList.of()))
disabledTrackGroup.getMediaTrackGroup(),
/* trackIndices= */ ImmutableList.of()))
.build());
.build());
~~~
~~~
{: .language-java}
{: .language-java}
...
...
library/common/src/main/java/com/google/android/exoplayer2/Tracks.java
View file @
fbd82734
...
@@ -49,7 +49,7 @@ public final class Tracks implements Bundleable {
...
@@ -49,7 +49,7 @@ public final class Tracks implements Bundleable {
/** The number of tracks in the group. */
/** The number of tracks in the group. */
public
final
int
length
;
public
final
int
length
;
private
final
TrackGroup
t
rackGroup
;
private
final
TrackGroup
mediaT
rackGroup
;
private
final
boolean
adaptiveSupported
;
private
final
boolean
adaptiveSupported
;
private
final
@C
.
FormatSupport
int
[]
trackSupport
;
private
final
@C
.
FormatSupport
int
[]
trackSupport
;
private
final
boolean
[]
trackSelected
;
private
final
boolean
[]
trackSelected
;
...
@@ -57,28 +57,35 @@ public final class Tracks implements Bundleable {
...
@@ -57,28 +57,35 @@ public final class Tracks implements Bundleable {
/**
/**
* Constructs an instance.
* Constructs an instance.
*
*
* @param
trackGroup The underlying {@link TrackGroup}
.
* @param
mediaTrackGroup The underlying {@link TrackGroup} defined by the media
.
* @param adaptiveSupported Whether the player supports adaptive selections containing more than
* @param adaptiveSupported Whether the player supports adaptive selections containing more than
* one track in the group.
* one track in the group.
* @param trackSupport The {@link C.FormatSupport} of each track in the group.
* @param trackSupport The {@link C.FormatSupport} of each track in the group.
* @param trackSelected Whether each track in the {@code trackGroup} is selected.
* @param trackSelected Whether each track in the {@code trackGroup} is selected.
*/
*/
public
Group
(
public
Group
(
TrackGroup
t
rackGroup
,
TrackGroup
mediaT
rackGroup
,
boolean
adaptiveSupported
,
boolean
adaptiveSupported
,
@C
.
FormatSupport
int
[]
trackSupport
,
@C
.
FormatSupport
int
[]
trackSupport
,
boolean
[]
trackSelected
)
{
boolean
[]
trackSelected
)
{
length
=
t
rackGroup
.
length
;
length
=
mediaT
rackGroup
.
length
;
checkArgument
(
length
==
trackSupport
.
length
&&
length
==
trackSelected
.
length
);
checkArgument
(
length
==
trackSupport
.
length
&&
length
==
trackSelected
.
length
);
this
.
trackGroup
=
t
rackGroup
;
this
.
mediaTrackGroup
=
mediaT
rackGroup
;
this
.
adaptiveSupported
=
adaptiveSupported
&&
length
>
1
;
this
.
adaptiveSupported
=
adaptiveSupported
&&
length
>
1
;
this
.
trackSupport
=
trackSupport
.
clone
();
this
.
trackSupport
=
trackSupport
.
clone
();
this
.
trackSelected
=
trackSelected
.
clone
();
this
.
trackSelected
=
trackSelected
.
clone
();
}
}
/** Returns the underlying {@link TrackGroup}. */
/**
public
TrackGroup
getTrackGroup
()
{
* Returns the underlying {@link TrackGroup} defined by the media.
return
trackGroup
;
*
* <p>Unlike this class, {@link TrackGroup} only contains information defined by the media
* itself, and does not contain runtime information such as which tracks are supported and
* currently selected. This makes it suitable for use as a {@code key} in certain {@code (key,
* value)} data structures.
*/
public
TrackGroup
getMediaTrackGroup
()
{
return
mediaTrackGroup
;
}
}
/**
/**
...
@@ -88,7 +95,7 @@ public final class Tracks implements Bundleable {
...
@@ -88,7 +95,7 @@ public final class Tracks implements Bundleable {
* @return The {@link Format} of the track.
* @return The {@link Format} of the track.
*/
*/
public
Format
getTrackFormat
(
int
trackIndex
)
{
public
Format
getTrackFormat
(
int
trackIndex
)
{
return
t
rackGroup
.
getFormat
(
trackIndex
);
return
mediaT
rackGroup
.
getFormat
(
trackIndex
);
}
}
/**
/**
...
@@ -185,7 +192,7 @@ public final class Tracks implements Bundleable {
...
@@ -185,7 +192,7 @@ public final class Tracks implements Bundleable {
/** Returns the {@link C.TrackType} of the group. */
/** Returns the {@link C.TrackType} of the group. */
public
@C
.
TrackType
int
getType
()
{
public
@C
.
TrackType
int
getType
()
{
return
t
rackGroup
.
type
;
return
mediaT
rackGroup
.
type
;
}
}
@Override
@Override
...
@@ -198,14 +205,14 @@ public final class Tracks implements Bundleable {
...
@@ -198,14 +205,14 @@ public final class Tracks implements Bundleable {
}
}
Group
that
=
(
Group
)
other
;
Group
that
=
(
Group
)
other
;
return
adaptiveSupported
==
that
.
adaptiveSupported
return
adaptiveSupported
==
that
.
adaptiveSupported
&&
trackGroup
.
equals
(
that
.
t
rackGroup
)
&&
mediaTrackGroup
.
equals
(
that
.
mediaT
rackGroup
)
&&
Arrays
.
equals
(
trackSupport
,
that
.
trackSupport
)
&&
Arrays
.
equals
(
trackSupport
,
that
.
trackSupport
)
&&
Arrays
.
equals
(
trackSelected
,
that
.
trackSelected
);
&&
Arrays
.
equals
(
trackSelected
,
that
.
trackSelected
);
}
}
@Override
@Override
public
int
hashCode
()
{
public
int
hashCode
()
{
int
result
=
t
rackGroup
.
hashCode
();
int
result
=
mediaT
rackGroup
.
hashCode
();
result
=
31
*
result
+
(
adaptiveSupported
?
1
:
0
);
result
=
31
*
result
+
(
adaptiveSupported
?
1
:
0
);
result
=
31
*
result
+
Arrays
.
hashCode
(
trackSupport
);
result
=
31
*
result
+
Arrays
.
hashCode
(
trackSupport
);
result
=
31
*
result
+
Arrays
.
hashCode
(
trackSelected
);
result
=
31
*
result
+
Arrays
.
hashCode
(
trackSelected
);
...
@@ -232,7 +239,7 @@ public final class Tracks implements Bundleable {
...
@@ -232,7 +239,7 @@ public final class Tracks implements Bundleable {
@Override
@Override
public
Bundle
toBundle
()
{
public
Bundle
toBundle
()
{
Bundle
bundle
=
new
Bundle
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putBundle
(
keyForField
(
FIELD_TRACK_GROUP
),
t
rackGroup
.
toBundle
());
bundle
.
putBundle
(
keyForField
(
FIELD_TRACK_GROUP
),
mediaT
rackGroup
.
toBundle
());
bundle
.
putIntArray
(
keyForField
(
FIELD_TRACK_SUPPORT
),
trackSupport
);
bundle
.
putIntArray
(
keyForField
(
FIELD_TRACK_SUPPORT
),
trackSupport
);
bundle
.
putBooleanArray
(
keyForField
(
FIELD_TRACK_SELECTED
),
trackSelected
);
bundle
.
putBooleanArray
(
keyForField
(
FIELD_TRACK_SELECTED
),
trackSelected
);
bundle
.
putBoolean
(
keyForField
(
FIELD_ADAPTIVE_SUPPORTED
),
adaptiveSupported
);
bundle
.
putBoolean
(
keyForField
(
FIELD_ADAPTIVE_SUPPORTED
),
adaptiveSupported
);
...
...
library/common/src/main/java/com/google/android/exoplayer2/source/TrackGroup.java
View file @
fbd82734
...
@@ -38,8 +38,8 @@ import java.util.Arrays;
...
@@ -38,8 +38,8 @@ import java.util.Arrays;
import
java.util.List
;
import
java.util.List
;
/**
/**
* An immutable group of tracks
. All tracks in a group present the same content, but their formats
* An immutable group of tracks
available within a media stream. All tracks in a group present the
* may differ.
*
same content, but their formats
may differ.
*
*
* <p>As an example of how tracks can be grouped, consider an adaptive playback where a main video
* <p>As an example of how tracks can be grouped, consider an adaptive playback where a main video
* feed is provided in five resolutions, and an alternative video feed (e.g., a different camera
* feed is provided in five resolutions, and an alternative video feed (e.g., a different camera
...
@@ -51,6 +51,10 @@ import java.util.List;
...
@@ -51,6 +51,10 @@ import java.util.List;
* languages is not considered to be the same. Conversely, audio tracks in the same language that
* languages is not considered to be the same. Conversely, audio tracks in the same language that
* only differ in properties such as bitrate, sampling rate, channel count and so on can be grouped.
* only differ in properties such as bitrate, sampling rate, channel count and so on can be grouped.
* This also applies to text tracks.
* This also applies to text tracks.
*
* <p>Note also that this class only contains information derived from the media itself. Unlike
* {@link Tracks.Group}, it does not include runtime information such as the extent to which
* playback of each track is supported by the device, or which tracks are currently selected.
*/
*/
public
final
class
TrackGroup
implements
Bundleable
{
public
final
class
TrackGroup
implements
Bundleable
{
...
...
library/common/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionOverride.java
View file @
fbd82734
...
@@ -51,8 +51,8 @@ import java.util.List;
...
@@ -51,8 +51,8 @@ import java.util.List;
*/
*/
public
final
class
TrackSelectionOverride
implements
Bundleable
{
public
final
class
TrackSelectionOverride
implements
Bundleable
{
/** The {@link TrackGroup} whose {@link #trackIndices} are forced to be selected. */
/** The
media
{@link TrackGroup} whose {@link #trackIndices} are forced to be selected. */
public
final
TrackGroup
t
rackGroup
;
public
final
TrackGroup
mediaT
rackGroup
;
/** The indices of tracks in a {@link TrackGroup} to be selected. */
/** The indices of tracks in a {@link TrackGroup} to be selected. */
public
final
ImmutableList
<
Integer
>
trackIndices
;
public
final
ImmutableList
<
Integer
>
trackIndices
;
...
@@ -70,32 +70,32 @@ public final class TrackSelectionOverride implements Bundleable {
...
@@ -70,32 +70,32 @@ public final class TrackSelectionOverride implements Bundleable {
/**
/**
* Constructs an instance to force {@code trackIndex} in {@code trackGroup} to be selected.
* Constructs an instance to force {@code trackIndex} in {@code trackGroup} to be selected.
*
*
* @param
trackGroup The
{@link TrackGroup} for which to override the track selection.
* @param
mediaTrackGroup The media
{@link TrackGroup} for which to override the track selection.
* @param trackIndex The index of the track in the {@link TrackGroup} to select.
* @param trackIndex The index of the track in the {@link TrackGroup} to select.
*/
*/
public
TrackSelectionOverride
(
TrackGroup
t
rackGroup
,
int
trackIndex
)
{
public
TrackSelectionOverride
(
TrackGroup
mediaT
rackGroup
,
int
trackIndex
)
{
this
(
t
rackGroup
,
ImmutableList
.
of
(
trackIndex
));
this
(
mediaT
rackGroup
,
ImmutableList
.
of
(
trackIndex
));
}
}
/**
/**
* Constructs an instance to force {@code trackIndices} in {@code trackGroup} to be selected.
* Constructs an instance to force {@code trackIndices} in {@code trackGroup} to be selected.
*
*
* @param
trackGroup The
{@link TrackGroup} for which to override the track selection.
* @param
mediaTrackGroup The media
{@link TrackGroup} for which to override the track selection.
* @param trackIndices The indices of the tracks in the {@link TrackGroup} to select.
* @param trackIndices The indices of the tracks in the {@link TrackGroup} to select.
*/
*/
public
TrackSelectionOverride
(
TrackGroup
t
rackGroup
,
List
<
Integer
>
trackIndices
)
{
public
TrackSelectionOverride
(
TrackGroup
mediaT
rackGroup
,
List
<
Integer
>
trackIndices
)
{
if
(!
trackIndices
.
isEmpty
())
{
if
(!
trackIndices
.
isEmpty
())
{
if
(
min
(
trackIndices
)
<
0
||
max
(
trackIndices
)
>=
t
rackGroup
.
length
)
{
if
(
min
(
trackIndices
)
<
0
||
max
(
trackIndices
)
>=
mediaT
rackGroup
.
length
)
{
throw
new
IndexOutOfBoundsException
();
throw
new
IndexOutOfBoundsException
();
}
}
}
}
this
.
trackGroup
=
t
rackGroup
;
this
.
mediaTrackGroup
=
mediaT
rackGroup
;
this
.
trackIndices
=
ImmutableList
.
copyOf
(
trackIndices
);
this
.
trackIndices
=
ImmutableList
.
copyOf
(
trackIndices
);
}
}
/** Returns the {@link C.TrackType} of the overridden track group. */
/** Returns the {@link C.TrackType} of the overridden track group. */
public
@C
.
TrackType
int
getType
()
{
public
@C
.
TrackType
int
getType
()
{
return
t
rackGroup
.
type
;
return
mediaT
rackGroup
.
type
;
}
}
@Override
@Override
...
@@ -107,12 +107,12 @@ public final class TrackSelectionOverride implements Bundleable {
...
@@ -107,12 +107,12 @@ public final class TrackSelectionOverride implements Bundleable {
return
false
;
return
false
;
}
}
TrackSelectionOverride
that
=
(
TrackSelectionOverride
)
obj
;
TrackSelectionOverride
that
=
(
TrackSelectionOverride
)
obj
;
return
trackGroup
.
equals
(
that
.
t
rackGroup
)
&&
trackIndices
.
equals
(
that
.
trackIndices
);
return
mediaTrackGroup
.
equals
(
that
.
mediaT
rackGroup
)
&&
trackIndices
.
equals
(
that
.
trackIndices
);
}
}
@Override
@Override
public
int
hashCode
()
{
public
int
hashCode
()
{
return
t
rackGroup
.
hashCode
()
+
31
*
trackIndices
.
hashCode
();
return
mediaT
rackGroup
.
hashCode
()
+
31
*
trackIndices
.
hashCode
();
}
}
// Bundleable implementation
// Bundleable implementation
...
@@ -120,7 +120,7 @@ public final class TrackSelectionOverride implements Bundleable {
...
@@ -120,7 +120,7 @@ public final class TrackSelectionOverride implements Bundleable {
@Override
@Override
public
Bundle
toBundle
()
{
public
Bundle
toBundle
()
{
Bundle
bundle
=
new
Bundle
();
Bundle
bundle
=
new
Bundle
();
bundle
.
putBundle
(
keyForField
(
FIELD_TRACK_GROUP
),
t
rackGroup
.
toBundle
());
bundle
.
putBundle
(
keyForField
(
FIELD_TRACK_GROUP
),
mediaT
rackGroup
.
toBundle
());
bundle
.
putIntArray
(
keyForField
(
FIELD_TRACKS
),
Ints
.
toArray
(
trackIndices
));
bundle
.
putIntArray
(
keyForField
(
FIELD_TRACKS
),
Ints
.
toArray
(
trackIndices
));
return
bundle
;
return
bundle
;
}
}
...
@@ -129,9 +129,9 @@ public final class TrackSelectionOverride implements Bundleable {
...
@@ -129,9 +129,9 @@ public final class TrackSelectionOverride implements Bundleable {
public
static
final
Creator
<
TrackSelectionOverride
>
CREATOR
=
public
static
final
Creator
<
TrackSelectionOverride
>
CREATOR
=
bundle
->
{
bundle
->
{
Bundle
trackGroupBundle
=
checkNotNull
(
bundle
.
getBundle
(
keyForField
(
FIELD_TRACK_GROUP
)));
Bundle
trackGroupBundle
=
checkNotNull
(
bundle
.
getBundle
(
keyForField
(
FIELD_TRACK_GROUP
)));
TrackGroup
t
rackGroup
=
TrackGroup
.
CREATOR
.
fromBundle
(
trackGroupBundle
);
TrackGroup
mediaT
rackGroup
=
TrackGroup
.
CREATOR
.
fromBundle
(
trackGroupBundle
);
int
[]
tracks
=
checkNotNull
(
bundle
.
getIntArray
(
keyForField
(
FIELD_TRACKS
)));
int
[]
tracks
=
checkNotNull
(
bundle
.
getIntArray
(
keyForField
(
FIELD_TRACKS
)));
return
new
TrackSelectionOverride
(
t
rackGroup
,
Ints
.
asList
(
tracks
));
return
new
TrackSelectionOverride
(
mediaT
rackGroup
,
Ints
.
asList
(
tracks
));
};
};
private
static
String
keyForField
(
@FieldNumber
int
field
)
{
private
static
String
keyForField
(
@FieldNumber
int
field
)
{
...
...
library/common/src/main/java/com/google/android/exoplayer2/trackselection/TrackSelectionParameters.java
View file @
fbd82734
...
@@ -254,7 +254,7 @@ public class TrackSelectionParameters implements Bundleable {
...
@@ -254,7 +254,7 @@ public class TrackSelectionParameters implements Bundleable {
overrides
=
new
HashMap
<>();
overrides
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
overrideList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
overrideList
.
size
();
i
++)
{
TrackSelectionOverride
override
=
overrideList
.
get
(
i
);
TrackSelectionOverride
override
=
overrideList
.
get
(
i
);
overrides
.
put
(
override
.
t
rackGroup
,
override
);
overrides
.
put
(
override
.
mediaT
rackGroup
,
override
);
}
}
int
[]
disabledTrackTypeArray
=
int
[]
disabledTrackTypeArray
=
firstNonNull
(
bundle
.
getIntArray
(
keyForField
(
FIELD_DISABLED_TRACK_TYPE
)),
new
int
[
0
]);
firstNonNull
(
bundle
.
getIntArray
(
keyForField
(
FIELD_DISABLED_TRACK_TYPE
)),
new
int
[
0
]);
...
@@ -676,20 +676,20 @@ public class TrackSelectionParameters implements Bundleable {
...
@@ -676,20 +676,20 @@ public class TrackSelectionParameters implements Bundleable {
/** Adds an override, replacing any override for the same {@link TrackGroup}. */
/** Adds an override, replacing any override for the same {@link TrackGroup}. */
public
Builder
addOverride
(
TrackSelectionOverride
override
)
{
public
Builder
addOverride
(
TrackSelectionOverride
override
)
{
overrides
.
put
(
override
.
t
rackGroup
,
override
);
overrides
.
put
(
override
.
mediaT
rackGroup
,
override
);
return
this
;
return
this
;
}
}
/** Sets an override, replacing all existing overrides with the same track type. */
/** Sets an override, replacing all existing overrides with the same track type. */
public
Builder
setOverrideForType
(
TrackSelectionOverride
override
)
{
public
Builder
setOverrideForType
(
TrackSelectionOverride
override
)
{
clearOverridesOfType
(
override
.
getType
());
clearOverridesOfType
(
override
.
getType
());
overrides
.
put
(
override
.
t
rackGroup
,
override
);
overrides
.
put
(
override
.
mediaT
rackGroup
,
override
);
return
this
;
return
this
;
}
}
/** Removes the override for the provided {@link TrackGroup}, if there is one. */
/** Removes the override for the provided
media
{@link TrackGroup}, if there is one. */
public
Builder
clearOverride
(
TrackGroup
t
rackGroup
)
{
public
Builder
clearOverride
(
TrackGroup
mediaT
rackGroup
)
{
overrides
.
remove
(
t
rackGroup
);
overrides
.
remove
(
mediaT
rackGroup
);
return
this
;
return
this
;
}
}
...
...
library/common/src/test/java/com/google/android/exoplayer2/trackselection/TrackSelectionOverrideTest.java
View file @
fbd82734
...
@@ -35,7 +35,7 @@ public final class TrackSelectionOverrideTest {
...
@@ -35,7 +35,7 @@ public final class TrackSelectionOverrideTest {
TrackSelectionOverride
trackSelectionOverride
=
TrackSelectionOverride
trackSelectionOverride
=
new
TrackSelectionOverride
(
newTrackGroupWithIds
(
1
,
2
),
/* trackIndex= */
1
);
new
TrackSelectionOverride
(
newTrackGroupWithIds
(
1
,
2
),
/* trackIndex= */
1
);
assertThat
(
trackSelectionOverride
.
t
rackGroup
).
isEqualTo
(
newTrackGroupWithIds
(
1
,
2
));
assertThat
(
trackSelectionOverride
.
mediaT
rackGroup
).
isEqualTo
(
newTrackGroupWithIds
(
1
,
2
));
assertThat
(
trackSelectionOverride
.
trackIndices
).
containsExactly
(
1
).
inOrder
();
assertThat
(
trackSelectionOverride
.
trackIndices
).
containsExactly
(
1
).
inOrder
();
}
}
...
@@ -44,7 +44,7 @@ public final class TrackSelectionOverrideTest {
...
@@ -44,7 +44,7 @@ public final class TrackSelectionOverrideTest {
TrackSelectionOverride
trackSelectionOverride
=
TrackSelectionOverride
trackSelectionOverride
=
new
TrackSelectionOverride
(
newTrackGroupWithIds
(
1
,
2
),
ImmutableList
.
of
(
1
));
new
TrackSelectionOverride
(
newTrackGroupWithIds
(
1
,
2
),
ImmutableList
.
of
(
1
));
assertThat
(
trackSelectionOverride
.
t
rackGroup
).
isEqualTo
(
newTrackGroupWithIds
(
1
,
2
));
assertThat
(
trackSelectionOverride
.
mediaT
rackGroup
).
isEqualTo
(
newTrackGroupWithIds
(
1
,
2
));
assertThat
(
trackSelectionOverride
.
trackIndices
).
containsExactly
(
1
);
assertThat
(
trackSelectionOverride
.
trackIndices
).
containsExactly
(
1
);
}
}
...
@@ -53,7 +53,7 @@ public final class TrackSelectionOverrideTest {
...
@@ -53,7 +53,7 @@ public final class TrackSelectionOverrideTest {
TrackSelectionOverride
trackSelectionOverride
=
TrackSelectionOverride
trackSelectionOverride
=
new
TrackSelectionOverride
(
newTrackGroupWithIds
(
1
,
2
),
ImmutableList
.
of
());
new
TrackSelectionOverride
(
newTrackGroupWithIds
(
1
,
2
),
ImmutableList
.
of
());
assertThat
(
trackSelectionOverride
.
t
rackGroup
).
isEqualTo
(
newTrackGroupWithIds
(
1
,
2
));
assertThat
(
trackSelectionOverride
.
mediaT
rackGroup
).
isEqualTo
(
newTrackGroupWithIds
(
1
,
2
));
assertThat
(
trackSelectionOverride
.
trackIndices
).
isEmpty
();
assertThat
(
trackSelectionOverride
.
trackIndices
).
isEmpty
();
}
}
...
...
library/common/src/test/java/com/google/android/exoplayer2/trackselection/TrackSelectionParametersTest.java
View file @
fbd82734
...
@@ -153,7 +153,8 @@ public final class TrackSelectionParametersTest {
...
@@ -153,7 +153,8 @@ public final class TrackSelectionParametersTest {
assertThat
(
parameters
.
forceLowestBitrate
).
isFalse
();
assertThat
(
parameters
.
forceLowestBitrate
).
isFalse
();
assertThat
(
parameters
.
forceHighestSupportedBitrate
).
isTrue
();
assertThat
(
parameters
.
forceHighestSupportedBitrate
).
isTrue
();
assertThat
(
parameters
.
overrides
)
assertThat
(
parameters
.
overrides
)
.
containsExactly
(
override1
.
trackGroup
,
override1
,
override2
.
trackGroup
,
override2
);
.
containsExactly
(
override1
.
mediaTrackGroup
,
override1
,
override2
.
mediaTrackGroup
,
override2
);
assertThat
(
parameters
.
disabledTrackTypes
)
assertThat
(
parameters
.
disabledTrackTypes
)
.
containsExactly
(
C
.
TRACK_TYPE_AUDIO
,
C
.
TRACK_TYPE_TEXT
);
.
containsExactly
(
C
.
TRACK_TYPE_AUDIO
,
C
.
TRACK_TYPE_TEXT
);
}
}
...
@@ -207,7 +208,8 @@ public final class TrackSelectionParametersTest {
...
@@ -207,7 +208,8 @@ public final class TrackSelectionParametersTest {
TrackSelectionParameters
.
CREATOR
.
fromBundle
(
trackSelectionParameters
.
toBundle
());
TrackSelectionParameters
.
CREATOR
.
fromBundle
(
trackSelectionParameters
.
toBundle
());
assertThat
(
fromBundle
).
isEqualTo
(
trackSelectionParameters
);
assertThat
(
fromBundle
).
isEqualTo
(
trackSelectionParameters
);
assertThat
(
trackSelectionParameters
.
overrides
).
containsExactly
(
override
.
trackGroup
,
override
);
assertThat
(
trackSelectionParameters
.
overrides
)
.
containsExactly
(
override
.
mediaTrackGroup
,
override
);
}
}
@Test
@Test
...
@@ -224,7 +226,8 @@ public final class TrackSelectionParametersTest {
...
@@ -224,7 +226,8 @@ public final class TrackSelectionParametersTest {
.
build
();
.
build
();
assertThat
(
trackSelectionParameters
.
overrides
)
assertThat
(
trackSelectionParameters
.
overrides
)
.
containsExactly
(
override1
.
trackGroup
,
override1
,
override2
.
trackGroup
,
override2
);
.
containsExactly
(
override1
.
mediaTrackGroup
,
override1
,
override2
.
mediaTrackGroup
,
override2
);
}
}
@Test
@Test
...
@@ -241,7 +244,8 @@ public final class TrackSelectionParametersTest {
...
@@ -241,7 +244,8 @@ public final class TrackSelectionParametersTest {
.
addOverride
(
override2
)
.
addOverride
(
override2
)
.
build
();
.
build
();
assertThat
(
trackSelectionParameters
.
overrides
).
containsExactly
(
override2
.
trackGroup
,
override2
);
assertThat
(
trackSelectionParameters
.
overrides
)
.
containsExactly
(
override2
.
mediaTrackGroup
,
override2
);
}
}
@Test
@Test
...
@@ -257,7 +261,8 @@ public final class TrackSelectionParametersTest {
...
@@ -257,7 +261,8 @@ public final class TrackSelectionParametersTest {
.
setOverrideForType
(
override2
)
.
setOverrideForType
(
override2
)
.
build
();
.
build
();
assertThat
(
trackSelectionParameters
.
overrides
).
containsExactly
(
override2
.
trackGroup
,
override2
);
assertThat
(
trackSelectionParameters
.
overrides
)
.
containsExactly
(
override2
.
mediaTrackGroup
,
override2
);
}
}
@Test
@Test
...
@@ -273,7 +278,8 @@ public final class TrackSelectionParametersTest {
...
@@ -273,7 +278,8 @@ public final class TrackSelectionParametersTest {
.
clearOverridesOfType
(
C
.
TRACK_TYPE_AUDIO
)
.
clearOverridesOfType
(
C
.
TRACK_TYPE_AUDIO
)
.
build
();
.
build
();
assertThat
(
trackSelectionParameters
.
overrides
).
containsExactly
(
override2
.
trackGroup
,
override2
);
assertThat
(
trackSelectionParameters
.
overrides
)
.
containsExactly
(
override2
.
mediaTrackGroup
,
override2
);
}
}
@Test
@Test
...
@@ -286,10 +292,11 @@ public final class TrackSelectionParametersTest {
...
@@ -286,10 +292,11 @@ public final class TrackSelectionParametersTest {
new
TrackSelectionParameters
.
Builder
(
getApplicationContext
())
new
TrackSelectionParameters
.
Builder
(
getApplicationContext
())
.
addOverride
(
override1
)
.
addOverride
(
override1
)
.
addOverride
(
override2
)
.
addOverride
(
override2
)
.
clearOverride
(
override2
.
t
rackGroup
)
.
clearOverride
(
override2
.
mediaT
rackGroup
)
.
build
();
.
build
();
assertThat
(
trackSelectionParameters
.
overrides
).
containsExactly
(
override1
.
trackGroup
,
override1
);
assertThat
(
trackSelectionParameters
.
overrides
)
.
containsExactly
(
override1
.
mediaTrackGroup
,
override1
);
}
}
private
static
TrackGroup
newTrackGroupWithIds
(
int
...
ids
)
{
private
static
TrackGroup
newTrackGroupWithIds
(
int
...
ids
)
{
...
...
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
View file @
fbd82734
...
@@ -1927,11 +1927,11 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1927,11 +1927,11 @@ public class DefaultTrackSelector extends MappingTrackSelector {
// want the renderer to be enabled at all, so clear any existing selection.
// want the renderer to be enabled at all, so clear any existing selection.
@Nullable
ExoTrackSelection
.
Definition
selection
;
@Nullable
ExoTrackSelection
.
Definition
selection
;
if
(!
overrideForType
.
trackIndices
.
isEmpty
()
if
(!
overrideForType
.
trackIndices
.
isEmpty
()
&&
mappedTrackInfo
.
getTrackGroups
(
rendererIndex
).
indexOf
(
overrideForType
.
t
rackGroup
)
&&
mappedTrackInfo
.
getTrackGroups
(
rendererIndex
).
indexOf
(
overrideForType
.
mediaT
rackGroup
)
!=
-
1
)
{
!=
-
1
)
{
selection
=
selection
=
new
ExoTrackSelection
.
Definition
(
new
ExoTrackSelection
.
Definition
(
overrideForType
.
t
rackGroup
,
Ints
.
toArray
(
overrideForType
.
trackIndices
));
overrideForType
.
mediaT
rackGroup
,
Ints
.
toArray
(
overrideForType
.
trackIndices
));
}
else
{
}
else
{
selection
=
null
;
selection
=
null
;
}
}
...
...
library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java
View file @
fbd82734
...
@@ -2239,7 +2239,7 @@ public final class DefaultTrackSelectorTest {
...
@@ -2239,7 +2239,7 @@ public final class DefaultTrackSelectorTest {
assertThat
(
result
.
selections
[
2
]).
isNull
();
assertThat
(
result
.
selections
[
2
]).
isNull
();
ImmutableList
<
Tracks
.
Group
>
trackGroups
=
result
.
tracks
.
getGroups
();
ImmutableList
<
Tracks
.
Group
>
trackGroups
=
result
.
tracks
.
getGroups
();
assertThat
(
trackGroups
).
hasSize
(
1
);
assertThat
(
trackGroups
).
hasSize
(
1
);
assertThat
(
trackGroups
.
get
(
0
).
getTrackGroup
()).
isEqualTo
(
AUDIO_TRACK_GROUP
);
assertThat
(
trackGroups
.
get
(
0
).
get
Media
TrackGroup
()).
isEqualTo
(
AUDIO_TRACK_GROUP
);
assertThat
(
trackGroups
.
get
(
0
).
isTrackSelected
(
0
)).
isTrue
();
assertThat
(
trackGroups
.
get
(
0
).
isTrackSelected
(
0
)).
isTrue
();
assertThat
(
trackGroups
.
get
(
0
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
assertThat
(
trackGroups
.
get
(
0
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
}
}
...
...
library/core/src/test/java/com/google/android/exoplayer2/trackselection/TrackSelectionUtilTest.java
View file @
fbd82734
...
@@ -76,13 +76,13 @@ public class TrackSelectionUtilTest {
...
@@ -76,13 +76,13 @@ public class TrackSelectionUtilTest {
ImmutableList
<
Tracks
.
Group
>
trackGroups
=
tracks
.
getGroups
();
ImmutableList
<
Tracks
.
Group
>
trackGroups
=
tracks
.
getGroups
();
assertThat
(
trackGroups
).
hasSize
(
4
);
assertThat
(
trackGroups
).
hasSize
(
4
);
assertThat
(
trackGroups
.
get
(
0
).
getTrackGroup
())
assertThat
(
trackGroups
.
get
(
0
).
get
Media
TrackGroup
())
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
0
));
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
0
));
assertThat
(
trackGroups
.
get
(
1
).
getTrackGroup
())
assertThat
(
trackGroups
.
get
(
1
).
get
Media
TrackGroup
())
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
1
));
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
1
));
assertThat
(
trackGroups
.
get
(
2
).
getTrackGroup
())
assertThat
(
trackGroups
.
get
(
2
).
get
Media
TrackGroup
())
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
1
).
get
(
0
));
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
1
).
get
(
0
));
assertThat
(
trackGroups
.
get
(
3
).
getTrackGroup
())
assertThat
(
trackGroups
.
get
(
3
).
get
Media
TrackGroup
())
.
isEqualTo
(
mappedTrackInfo
.
getUnmappedTrackGroups
().
get
(
0
));
.
isEqualTo
(
mappedTrackInfo
.
getUnmappedTrackGroups
().
get
(
0
));
assertThat
(
trackGroups
.
get
(
0
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
assertThat
(
trackGroups
.
get
(
0
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
assertThat
(
trackGroups
.
get
(
1
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_UNSUPPORTED_SUBTYPE
);
assertThat
(
trackGroups
.
get
(
1
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_UNSUPPORTED_SUBTYPE
);
...
@@ -135,9 +135,9 @@ public class TrackSelectionUtilTest {
...
@@ -135,9 +135,9 @@ public class TrackSelectionUtilTest {
ImmutableList
<
Tracks
.
Group
>
trackGroups
=
tracks
.
getGroups
();
ImmutableList
<
Tracks
.
Group
>
trackGroups
=
tracks
.
getGroups
();
assertThat
(
trackGroups
).
hasSize
(
2
);
assertThat
(
trackGroups
).
hasSize
(
2
);
assertThat
(
trackGroups
.
get
(
0
).
getTrackGroup
())
assertThat
(
trackGroups
.
get
(
0
).
get
Media
TrackGroup
())
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
0
));
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
0
));
assertThat
(
trackGroups
.
get
(
1
).
getTrackGroup
())
assertThat
(
trackGroups
.
get
(
1
).
get
Media
TrackGroup
())
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
1
));
.
isEqualTo
(
mappedTrackInfo
.
getTrackGroups
(
0
).
get
(
1
));
assertThat
(
trackGroups
.
get
(
0
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
assertThat
(
trackGroups
.
get
(
0
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
assertThat
(
trackGroups
.
get
(
1
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
assertThat
(
trackGroups
.
get
(
1
).
getTrackSupport
(
0
)).
isEqualTo
(
FORMAT_HANDLED
);
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java
View file @
fbd82734
...
@@ -1926,7 +1926,7 @@ public class StyledPlayerControlView extends FrameLayout {
...
@@ -1926,7 +1926,7 @@ public class StyledPlayerControlView extends FrameLayout {
private
boolean
hasSelectionOverride
(
TrackSelectionParameters
trackSelectionParameters
)
{
private
boolean
hasSelectionOverride
(
TrackSelectionParameters
trackSelectionParameters
)
{
for
(
int
i
=
0
;
i
<
tracks
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
tracks
.
size
();
i
++)
{
TrackGroup
trackGroup
=
tracks
.
get
(
i
).
trackGroup
.
getTrackGroup
();
TrackGroup
trackGroup
=
tracks
.
get
(
i
).
trackGroup
.
get
Media
TrackGroup
();
if
(
trackSelectionParameters
.
overrides
.
containsKey
(
trackGroup
))
{
if
(
trackSelectionParameters
.
overrides
.
containsKey
(
trackGroup
))
{
return
true
;
return
true
;
}
}
...
@@ -2000,9 +2000,10 @@ public class StyledPlayerControlView extends FrameLayout {
...
@@ -2000,9 +2000,10 @@ public class StyledPlayerControlView extends FrameLayout {
onBindViewHolderAtZeroPosition
(
holder
);
onBindViewHolderAtZeroPosition
(
holder
);
}
else
{
}
else
{
TrackInformation
track
=
tracks
.
get
(
position
-
1
);
TrackInformation
track
=
tracks
.
get
(
position
-
1
);
TrackGroup
trackGroup
=
track
.
trackGroup
.
get
TrackGroup
();
TrackGroup
mediaTrackGroup
=
track
.
trackGroup
.
getMedia
TrackGroup
();
TrackSelectionParameters
params
=
player
.
getTrackSelectionParameters
();
TrackSelectionParameters
params
=
player
.
getTrackSelectionParameters
();
boolean
explicitlySelected
=
params
.
overrides
.
get
(
trackGroup
)
!=
null
&&
track
.
isSelected
();
boolean
explicitlySelected
=
params
.
overrides
.
get
(
mediaTrackGroup
)
!=
null
&&
track
.
isSelected
();
holder
.
textView
.
setText
(
track
.
trackName
);
holder
.
textView
.
setText
(
track
.
trackName
);
holder
.
checkView
.
setVisibility
(
explicitlySelected
?
VISIBLE
:
INVISIBLE
);
holder
.
checkView
.
setVisibility
(
explicitlySelected
?
VISIBLE
:
INVISIBLE
);
holder
.
itemView
.
setOnClickListener
(
holder
.
itemView
.
setOnClickListener
(
...
@@ -2014,7 +2015,7 @@ public class StyledPlayerControlView extends FrameLayout {
...
@@ -2014,7 +2015,7 @@ public class StyledPlayerControlView extends FrameLayout {
.
buildUpon
()
.
buildUpon
()
.
setOverrideForType
(
.
setOverrideForType
(
new
TrackSelectionOverride
(
new
TrackSelectionOverride
(
t
rackGroup
,
ImmutableList
.
of
(
track
.
trackIndex
)))
mediaT
rackGroup
,
ImmutableList
.
of
(
track
.
trackIndex
)))
.
setTrackTypeDisabled
(
track
.
trackGroup
.
getType
(),
/* disabled= */
false
)
.
setTrackTypeDisabled
(
track
.
trackGroup
.
getType
(),
/* disabled= */
false
)
.
build
());
.
build
());
onTrackSelection
(
track
.
trackName
);
onTrackSelection
(
track
.
trackName
);
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/TrackSelectionDialogBuilder.java
View file @
fbd82734
...
@@ -152,7 +152,9 @@ public final class TrackSelectionDialogBuilder {
...
@@ -152,7 +152,9 @@ public final class TrackSelectionDialogBuilder {
*/
*/
public
TrackSelectionDialogBuilder
setOverride
(
@Nullable
TrackSelectionOverride
override
)
{
public
TrackSelectionDialogBuilder
setOverride
(
@Nullable
TrackSelectionOverride
override
)
{
return
setOverrides
(
return
setOverrides
(
override
==
null
?
Collections
.
emptyMap
()
:
ImmutableMap
.
of
(
override
.
trackGroup
,
override
));
override
==
null
?
Collections
.
emptyMap
()
:
ImmutableMap
.
of
(
override
.
mediaTrackGroup
,
override
));
}
}
/**
/**
...
...
library/ui/src/main/java/com/google/android/exoplayer2/ui/TrackSelectionView.java
View file @
fbd82734
...
@@ -70,9 +70,9 @@ public class TrackSelectionView extends LinearLayout {
...
@@ -70,9 +70,9 @@ public class TrackSelectionView extends LinearLayout {
HashMap
<
TrackGroup
,
TrackSelectionOverride
>
filteredOverrides
=
new
HashMap
<>();
HashMap
<
TrackGroup
,
TrackSelectionOverride
>
filteredOverrides
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
trackGroups
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
trackGroups
.
size
();
i
++)
{
Tracks
.
Group
trackGroup
=
trackGroups
.
get
(
i
);
Tracks
.
Group
trackGroup
=
trackGroups
.
get
(
i
);
@Nullable
TrackSelectionOverride
override
=
overrides
.
get
(
trackGroup
.
getTrackGroup
());
@Nullable
TrackSelectionOverride
override
=
overrides
.
get
(
trackGroup
.
get
Media
TrackGroup
());
if
(
override
!=
null
&&
(
allowMultipleOverrides
||
filteredOverrides
.
isEmpty
()))
{
if
(
override
!=
null
&&
(
allowMultipleOverrides
||
filteredOverrides
.
isEmpty
()))
{
filteredOverrides
.
put
(
override
.
t
rackGroup
,
override
);
filteredOverrides
.
put
(
override
.
mediaT
rackGroup
,
override
);
}
}
}
}
return
filteredOverrides
;
return
filteredOverrides
;
...
@@ -318,7 +318,8 @@ public class TrackSelectionView extends LinearLayout {
...
@@ -318,7 +318,8 @@ public class TrackSelectionView extends LinearLayout {
disableView
.
setChecked
(
isDisabled
);
disableView
.
setChecked
(
isDisabled
);
defaultView
.
setChecked
(!
isDisabled
&&
overrides
.
size
()
==
0
);
defaultView
.
setChecked
(!
isDisabled
&&
overrides
.
size
()
==
0
);
for
(
int
i
=
0
;
i
<
trackViews
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
trackViews
.
length
;
i
++)
{
@Nullable
TrackSelectionOverride
override
=
overrides
.
get
(
trackGroups
.
get
(
i
).
getTrackGroup
());
@Nullable
TrackSelectionOverride
override
=
overrides
.
get
(
trackGroups
.
get
(
i
).
getMediaTrackGroup
());
for
(
int
j
=
0
;
j
<
trackViews
[
i
].
length
;
j
++)
{
for
(
int
j
=
0
;
j
<
trackViews
[
i
].
length
;
j
++)
{
if
(
override
!=
null
)
{
if
(
override
!=
null
)
{
TrackInfo
trackInfo
=
(
TrackInfo
)
Assertions
.
checkNotNull
(
trackViews
[
i
][
j
].
getTag
());
TrackInfo
trackInfo
=
(
TrackInfo
)
Assertions
.
checkNotNull
(
trackViews
[
i
][
j
].
getTag
());
...
@@ -357,9 +358,9 @@ public class TrackSelectionView extends LinearLayout {
...
@@ -357,9 +358,9 @@ public class TrackSelectionView extends LinearLayout {
private
void
onTrackViewClicked
(
View
view
)
{
private
void
onTrackViewClicked
(
View
view
)
{
isDisabled
=
false
;
isDisabled
=
false
;
TrackInfo
trackInfo
=
(
TrackInfo
)
Assertions
.
checkNotNull
(
view
.
getTag
());
TrackInfo
trackInfo
=
(
TrackInfo
)
Assertions
.
checkNotNull
(
view
.
getTag
());
TrackGroup
trackGroup
=
trackInfo
.
trackGroup
.
get
TrackGroup
();
TrackGroup
mediaTrackGroup
=
trackInfo
.
trackGroup
.
getMedia
TrackGroup
();
int
trackIndex
=
trackInfo
.
trackIndex
;
int
trackIndex
=
trackInfo
.
trackIndex
;
@Nullable
TrackSelectionOverride
override
=
overrides
.
get
(
t
rackGroup
);
@Nullable
TrackSelectionOverride
override
=
overrides
.
get
(
mediaT
rackGroup
);
if
(
override
==
null
)
{
if
(
override
==
null
)
{
// Start new override.
// Start new override.
if
(!
allowMultipleOverrides
&&
overrides
.
size
()
>
0
)
{
if
(!
allowMultipleOverrides
&&
overrides
.
size
()
>
0
)
{
...
@@ -367,7 +368,8 @@ public class TrackSelectionView extends LinearLayout {
...
@@ -367,7 +368,8 @@ public class TrackSelectionView extends LinearLayout {
overrides
.
clear
();
overrides
.
clear
();
}
}
overrides
.
put
(
overrides
.
put
(
trackGroup
,
new
TrackSelectionOverride
(
trackGroup
,
ImmutableList
.
of
(
trackIndex
)));
mediaTrackGroup
,
new
TrackSelectionOverride
(
mediaTrackGroup
,
ImmutableList
.
of
(
trackIndex
)));
}
else
{
}
else
{
// An existing override is being modified.
// An existing override is being modified.
ArrayList
<
Integer
>
trackIndices
=
new
ArrayList
<>(
override
.
trackIndices
);
ArrayList
<
Integer
>
trackIndices
=
new
ArrayList
<>(
override
.
trackIndices
);
...
@@ -379,19 +381,20 @@ public class TrackSelectionView extends LinearLayout {
...
@@ -379,19 +381,20 @@ public class TrackSelectionView extends LinearLayout {
trackIndices
.
remove
((
Integer
)
trackIndex
);
trackIndices
.
remove
((
Integer
)
trackIndex
);
if
(
trackIndices
.
isEmpty
())
{
if
(
trackIndices
.
isEmpty
())
{
// The last track has been removed, so remove the whole override.
// The last track has been removed, so remove the whole override.
overrides
.
remove
(
t
rackGroup
);
overrides
.
remove
(
mediaT
rackGroup
);
}
else
{
}
else
{
overrides
.
put
(
trackGroup
,
new
TrackSelectionOverride
(
t
rackGroup
,
trackIndices
));
overrides
.
put
(
mediaTrackGroup
,
new
TrackSelectionOverride
(
mediaT
rackGroup
,
trackIndices
));
}
}
}
else
if
(!
isCurrentlySelected
)
{
}
else
if
(!
isCurrentlySelected
)
{
if
(
isAdaptiveAllowed
)
{
if
(
isAdaptiveAllowed
)
{
// Add new track to adaptive override.
// Add new track to adaptive override.
trackIndices
.
add
(
trackIndex
);
trackIndices
.
add
(
trackIndex
);
overrides
.
put
(
trackGroup
,
new
TrackSelectionOverride
(
t
rackGroup
,
trackIndices
));
overrides
.
put
(
mediaTrackGroup
,
new
TrackSelectionOverride
(
mediaT
rackGroup
,
trackIndices
));
}
else
{
}
else
{
// Replace existing track in override.
// Replace existing track in override.
overrides
.
put
(
overrides
.
put
(
trackGroup
,
new
TrackSelectionOverride
(
trackGroup
,
ImmutableList
.
of
(
trackIndex
)));
mediaTrackGroup
,
new
TrackSelectionOverride
(
mediaTrackGroup
,
ImmutableList
.
of
(
trackIndex
)));
}
}
}
}
}
}
...
...
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