mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
DefaultTrackSelector: make audio track selections before text
PiperOrigin-RevId: 239594105
This commit is contained in:
parent
a989304a4d
commit
b7299a1164
1 changed files with 25 additions and 21 deletions
|
|
@ -1485,34 +1485,38 @@ public class DefaultTrackSelector extends MappingTrackSelector {
|
||||||
|
|
||||||
AudioTrackScore selectedAudioTrackScore = null;
|
AudioTrackScore selectedAudioTrackScore = null;
|
||||||
int selectedAudioRendererIndex = C.INDEX_UNSET;
|
int selectedAudioRendererIndex = C.INDEX_UNSET;
|
||||||
|
for (int i = 0; i < rendererCount; i++) {
|
||||||
|
if (C.TRACK_TYPE_AUDIO == mappedTrackInfo.getRendererType(i)) {
|
||||||
|
Pair<TrackSelection.Definition, AudioTrackScore> audioSelection =
|
||||||
|
selectAudioTrack(
|
||||||
|
mappedTrackInfo.getTrackGroups(i),
|
||||||
|
rendererFormatSupports[i],
|
||||||
|
rendererMixedMimeTypeAdaptationSupports[i],
|
||||||
|
params,
|
||||||
|
!seenVideoRendererWithMappedTracks);
|
||||||
|
if (audioSelection != null
|
||||||
|
&& (selectedAudioTrackScore == null
|
||||||
|
|| audioSelection.second.compareTo(selectedAudioTrackScore) > 0)) {
|
||||||
|
if (selectedAudioRendererIndex != C.INDEX_UNSET) {
|
||||||
|
// We've already made a selection for another audio renderer, but it had a lower
|
||||||
|
// score. Clear the selection for that renderer.
|
||||||
|
definitions[selectedAudioRendererIndex] = null;
|
||||||
|
}
|
||||||
|
definitions[i] = audioSelection.first;
|
||||||
|
selectedAudioTrackScore = audioSelection.second;
|
||||||
|
selectedAudioRendererIndex = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int selectedTextTrackScore = Integer.MIN_VALUE;
|
int selectedTextTrackScore = Integer.MIN_VALUE;
|
||||||
int selectedTextRendererIndex = C.INDEX_UNSET;
|
int selectedTextRendererIndex = C.INDEX_UNSET;
|
||||||
for (int i = 0; i < rendererCount; i++) {
|
for (int i = 0; i < rendererCount; i++) {
|
||||||
int trackType = mappedTrackInfo.getRendererType(i);
|
int trackType = mappedTrackInfo.getRendererType(i);
|
||||||
switch (trackType) {
|
switch (trackType) {
|
||||||
case C.TRACK_TYPE_VIDEO:
|
case C.TRACK_TYPE_VIDEO:
|
||||||
// Already done. Do nothing.
|
|
||||||
break;
|
|
||||||
case C.TRACK_TYPE_AUDIO:
|
case C.TRACK_TYPE_AUDIO:
|
||||||
Pair<TrackSelection.Definition, AudioTrackScore> audioSelection =
|
// Already done. Do nothing.
|
||||||
selectAudioTrack(
|
|
||||||
mappedTrackInfo.getTrackGroups(i),
|
|
||||||
rendererFormatSupports[i],
|
|
||||||
rendererMixedMimeTypeAdaptationSupports[i],
|
|
||||||
params,
|
|
||||||
!seenVideoRendererWithMappedTracks);
|
|
||||||
if (audioSelection != null
|
|
||||||
&& (selectedAudioTrackScore == null
|
|
||||||
|| audioSelection.second.compareTo(selectedAudioTrackScore) > 0)) {
|
|
||||||
if (selectedAudioRendererIndex != C.INDEX_UNSET) {
|
|
||||||
// We've already made a selection for another audio renderer, but it had a lower
|
|
||||||
// score. Clear the selection for that renderer.
|
|
||||||
definitions[selectedAudioRendererIndex] = null;
|
|
||||||
}
|
|
||||||
definitions[i] = audioSelection.first;
|
|
||||||
selectedAudioTrackScore = audioSelection.second;
|
|
||||||
selectedAudioRendererIndex = i;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case C.TRACK_TYPE_TEXT:
|
case C.TRACK_TYPE_TEXT:
|
||||||
Pair<TrackSelection.Definition, Integer> textSelection =
|
Pair<TrackSelection.Definition, Integer> textSelection =
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue