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
ab1d54d0
authored
Dec 04, 2019
by
bachinger
Committed by
Oliver Woodman
Dec 06, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Merge pull request #6696 from phhusson:fix/nullable-selection-override
PiperOrigin-RevId: 283347700
parent
b296b8d8
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
26 deletions
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java
View file @
ab1d54d0
...
@@ -184,7 +184,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -184,7 +184,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private
boolean
exceedRendererCapabilitiesIfNecessary
;
private
boolean
exceedRendererCapabilitiesIfNecessary
;
private
int
tunnelingAudioSessionId
;
private
int
tunnelingAudioSessionId
;
private
final
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
;
private
final
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
selectionOverrides
;
private
final
SparseBooleanArray
rendererDisabledFlags
;
private
final
SparseBooleanArray
rendererDisabledFlags
;
/**
/**
...
@@ -646,8 +647,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -646,8 +647,9 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* @return This builder.
* @return This builder.
*/
*/
public
final
ParametersBuilder
setSelectionOverride
(
public
final
ParametersBuilder
setSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
,
SelectionOverride
override
)
{
int
rendererIndex
,
TrackGroupArray
groups
,
@Nullable
SelectionOverride
override
)
{
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
if
(
overrides
==
null
)
{
if
(
overrides
==
null
)
{
overrides
=
new
HashMap
<>();
overrides
=
new
HashMap
<>();
selectionOverrides
.
put
(
rendererIndex
,
overrides
);
selectionOverrides
.
put
(
rendererIndex
,
overrides
);
...
@@ -669,7 +671,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -669,7 +671,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/
*/
public
final
ParametersBuilder
clearSelectionOverride
(
public
final
ParametersBuilder
clearSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
)
{
int
rendererIndex
,
TrackGroupArray
groups
)
{
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
if
(
overrides
==
null
||
!
overrides
.
containsKey
(
groups
))
{
if
(
overrides
==
null
||
!
overrides
.
containsKey
(
groups
))
{
// Nothing to clear.
// Nothing to clear.
return
this
;
return
this
;
...
@@ -688,7 +691,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -688,7 +691,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* @return This builder.
* @return This builder.
*/
*/
public
final
ParametersBuilder
clearSelectionOverrides
(
int
rendererIndex
)
{
public
final
ParametersBuilder
clearSelectionOverrides
(
int
rendererIndex
)
{
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
if
(
overrides
==
null
||
overrides
.
isEmpty
())
{
if
(
overrides
==
null
||
overrides
.
isEmpty
())
{
// Nothing to clear.
// Nothing to clear.
return
this
;
return
this
;
...
@@ -775,9 +779,11 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -775,9 +779,11 @@ public class DefaultTrackSelector extends MappingTrackSelector {
tunnelingAudioSessionId
=
C
.
AUDIO_SESSION_ID_UNSET
;
tunnelingAudioSessionId
=
C
.
AUDIO_SESSION_ID_UNSET
;
}
}
private
static
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
cloneSelectionOverrides
(
private
static
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
)
{
cloneSelectionOverrides
(
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
clone
=
new
SparseArray
<>();
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
selectionOverrides
)
{
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
clone
=
new
SparseArray
<>();
for
(
int
i
=
0
;
i
<
selectionOverrides
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
selectionOverrides
.
size
();
i
++)
{
clone
.
put
(
selectionOverrides
.
keyAt
(
i
),
new
HashMap
<>(
selectionOverrides
.
valueAt
(
i
)));
clone
.
put
(
selectionOverrides
.
keyAt
(
i
),
new
HashMap
<>(
selectionOverrides
.
valueAt
(
i
)));
}
}
...
@@ -962,7 +968,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -962,7 +968,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
public
final
int
tunnelingAudioSessionId
;
public
final
int
tunnelingAudioSessionId
;
// Overrides
// Overrides
private
final
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
;
private
final
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
selectionOverrides
;
private
final
SparseBooleanArray
rendererDisabledFlags
;
private
final
SparseBooleanArray
rendererDisabledFlags
;
/* package */
Parameters
(
/* package */
Parameters
(
...
@@ -996,7 +1003,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -996,7 +1003,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
boolean
exceedRendererCapabilitiesIfNecessary
,
boolean
exceedRendererCapabilitiesIfNecessary
,
int
tunnelingAudioSessionId
,
int
tunnelingAudioSessionId
,
// Overrides
// Overrides
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
,
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
selectionOverrides
,
SparseBooleanArray
rendererDisabledFlags
)
{
SparseBooleanArray
rendererDisabledFlags
)
{
super
(
super
(
preferredAudioLanguage
,
preferredAudioLanguage
,
...
@@ -1087,7 +1094,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1087,7 +1094,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
* @return Whether there is an override.
* @return Whether there is an override.
*/
*/
public
final
boolean
hasSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
)
{
public
final
boolean
hasSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
)
{
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
return
overrides
!=
null
&&
overrides
.
containsKey
(
groups
);
return
overrides
!=
null
&&
overrides
.
containsKey
(
groups
);
}
}
...
@@ -1100,7 +1108,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1100,7 +1108,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/
*/
@Nullable
@Nullable
public
final
SelectionOverride
getSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
)
{
public
final
SelectionOverride
getSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
)
{
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
selectionOverrides
.
get
(
rendererIndex
);
return
overrides
!=
null
?
overrides
.
get
(
groups
)
:
null
;
return
overrides
!=
null
?
overrides
.
get
(
groups
)
:
null
;
}
}
...
@@ -1233,17 +1242,20 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1233,17 +1242,20 @@ public class DefaultTrackSelector extends MappingTrackSelector {
// Static utility methods.
// Static utility methods.
private
static
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
readSelectionOverrides
(
private
static
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
Parcel
in
)
{
readSelectionOverrides
(
Parcel
in
)
{
int
renderersWithOverridesCount
=
in
.
readInt
();
int
renderersWithOverridesCount
=
in
.
readInt
();
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
=
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
selectionOverrides
=
new
SparseArray
<>(
renderersWithOverridesCount
);
new
SparseArray
<>(
renderersWithOverridesCount
);
for
(
int
i
=
0
;
i
<
renderersWithOverridesCount
;
i
++)
{
for
(
int
i
=
0
;
i
<
renderersWithOverridesCount
;
i
++)
{
int
rendererIndex
=
in
.
readInt
();
int
rendererIndex
=
in
.
readInt
();
int
overrideCount
=
in
.
readInt
();
int
overrideCount
=
in
.
readInt
();
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
new
HashMap
<>(
overrideCount
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
new
HashMap
<>(
overrideCount
);
for
(
int
j
=
0
;
j
<
overrideCount
;
j
++)
{
for
(
int
j
=
0
;
j
<
overrideCount
;
j
++)
{
TrackGroupArray
trackGroups
=
in
.
readParcelable
(
TrackGroupArray
.
class
.
getClassLoader
());
TrackGroupArray
trackGroups
=
Assertions
.
checkNotNull
(
in
.
readParcelable
(
TrackGroupArray
.
class
.
getClassLoader
()));
@Nullable
SelectionOverride
override
=
in
.
readParcelable
(
SelectionOverride
.
class
.
getClassLoader
());
SelectionOverride
override
=
in
.
readParcelable
(
SelectionOverride
.
class
.
getClassLoader
());
overrides
.
put
(
trackGroups
,
override
);
overrides
.
put
(
trackGroups
,
override
);
}
}
...
@@ -1253,16 +1265,19 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1253,16 +1265,19 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
}
private
static
void
writeSelectionOverridesToParcel
(
private
static
void
writeSelectionOverridesToParcel
(
Parcel
dest
,
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
selectionOverrides
)
{
Parcel
dest
,
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
selectionOverrides
)
{
int
renderersWithOverridesCount
=
selectionOverrides
.
size
();
int
renderersWithOverridesCount
=
selectionOverrides
.
size
();
dest
.
writeInt
(
renderersWithOverridesCount
);
dest
.
writeInt
(
renderersWithOverridesCount
);
for
(
int
i
=
0
;
i
<
renderersWithOverridesCount
;
i
++)
{
for
(
int
i
=
0
;
i
<
renderersWithOverridesCount
;
i
++)
{
int
rendererIndex
=
selectionOverrides
.
keyAt
(
i
);
int
rendererIndex
=
selectionOverrides
.
keyAt
(
i
);
Map
<
TrackGroupArray
,
SelectionOverride
>
overrides
=
selectionOverrides
.
valueAt
(
i
);
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
overrides
=
selectionOverrides
.
valueAt
(
i
);
int
overrideCount
=
overrides
.
size
();
int
overrideCount
=
overrides
.
size
();
dest
.
writeInt
(
rendererIndex
);
dest
.
writeInt
(
rendererIndex
);
dest
.
writeInt
(
overrideCount
);
dest
.
writeInt
(
overrideCount
);
for
(
Map
.
Entry
<
TrackGroupArray
,
SelectionOverride
>
override
:
overrides
.
entrySet
())
{
for
(
Map
.
Entry
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
override
:
overrides
.
entrySet
())
{
dest
.
writeParcelable
(
override
.
getKey
(),
/* parcelableFlags= */
0
);
dest
.
writeParcelable
(
override
.
getKey
(),
/* parcelableFlags= */
0
);
dest
.
writeParcelable
(
override
.
getValue
(),
/* parcelableFlags= */
0
);
dest
.
writeParcelable
(
override
.
getValue
(),
/* parcelableFlags= */
0
);
}
}
...
@@ -1285,8 +1300,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1285,8 +1300,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
}
private
static
boolean
areSelectionOverridesEqual
(
private
static
boolean
areSelectionOverridesEqual
(
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
first
,
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
first
,
SparseArray
<
Map
<
TrackGroupArray
,
SelectionOverride
>>
second
)
{
SparseArray
<
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>>
second
)
{
int
firstSize
=
first
.
size
();
int
firstSize
=
first
.
size
();
if
(
second
.
size
()
!=
firstSize
)
{
if
(
second
.
size
()
!=
firstSize
)
{
return
false
;
return
false
;
...
@@ -1303,13 +1318,14 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1303,13 +1318,14 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
}
private
static
boolean
areSelectionOverridesEqual
(
private
static
boolean
areSelectionOverridesEqual
(
Map
<
TrackGroupArray
,
SelectionOverride
>
first
,
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
first
,
Map
<
TrackGroupArray
,
SelectionOverride
>
second
)
{
Map
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
second
)
{
int
firstSize
=
first
.
size
();
int
firstSize
=
first
.
size
();
if
(
second
.
size
()
!=
firstSize
)
{
if
(
second
.
size
()
!=
firstSize
)
{
return
false
;
return
false
;
}
}
for
(
Map
.
Entry
<
TrackGroupArray
,
SelectionOverride
>
firstEntry
:
first
.
entrySet
())
{
for
(
Map
.
Entry
<
TrackGroupArray
,
@NullableType
SelectionOverride
>
firstEntry
:
first
.
entrySet
())
{
TrackGroupArray
key
=
firstEntry
.
getKey
();
TrackGroupArray
key
=
firstEntry
.
getKey
();
if
(!
second
.
containsKey
(
key
)
||
!
Util
.
areEqual
(
firstEntry
.
getValue
(),
second
.
get
(
key
)))
{
if
(!
second
.
containsKey
(
key
)
||
!
Util
.
areEqual
(
firstEntry
.
getValue
(),
second
.
get
(
key
)))
{
return
false
;
return
false
;
...
@@ -1536,7 +1552,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
...
@@ -1536,7 +1552,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
*/
*/
@Deprecated
@Deprecated
public
final
void
setSelectionOverride
(
public
final
void
setSelectionOverride
(
int
rendererIndex
,
TrackGroupArray
groups
,
SelectionOverride
override
)
{
int
rendererIndex
,
TrackGroupArray
groups
,
@Nullable
SelectionOverride
override
)
{
setParameters
(
buildUponParameters
().
setSelectionOverride
(
rendererIndex
,
groups
,
override
));
setParameters
(
buildUponParameters
().
setSelectionOverride
(
rendererIndex
,
groups
,
override
));
}
}
...
...
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