Commit 7bfde6a5 by Corentin Zuber

Fix comments

parent 50582417
......@@ -654,7 +654,7 @@ public final class DownloadHelper {
}
}
for (String language : languages) {
parametersBuilder.setPreferredAudioLanguage(language);
parametersBuilder.setPreferredAudioLanguages(language);
addTrackSelection(periodIndex, parametersBuilder.build());
}
}
......@@ -685,7 +685,7 @@ public final class DownloadHelper {
}
parametersBuilder.setSelectUndeterminedTextLanguage(selectUndeterminedTextLanguage);
for (String language : languages) {
parametersBuilder.setPreferredTextLanguage(language);
parametersBuilder.setPreferredTextLanguages(language);
addTrackSelection(periodIndex, parametersBuilder.build());
}
}
......
......@@ -39,6 +39,7 @@ import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Ordering;
import com.google.common.primitives.Ints;
import java.util.ArrayList;
......@@ -445,14 +446,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
// Audio
@Override
public ParametersBuilder setPreferredAudioLanguage(@Nullable String preferredAudioLanguage) {
super.setPreferredAudioLanguage(preferredAudioLanguage);
return this;
}
@Override
public ParametersBuilder setPreferredAudioLanguage(String[] preferredAudioLanguage) {
super.setPreferredAudioLanguage(preferredAudioLanguage);
public ParametersBuilder setPreferredAudioLanguages(@Nullable String... preferredAudioLanguages) {
super.setPreferredAudioLanguages(preferredAudioLanguages);
return this;
}
......@@ -547,8 +542,8 @@ public class DefaultTrackSelector extends MappingTrackSelector {
}
@Override
public ParametersBuilder setPreferredTextLanguage(@Nullable String preferredTextLanguage) {
super.setPreferredTextLanguage(preferredTextLanguage);
public ParametersBuilder setPreferredTextLanguages(@Nullable String... preferredTextLanguages) {
super.setPreferredTextLanguages(preferredTextLanguages);
return this;
}
......@@ -773,7 +768,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
viewportHeight,
viewportOrientationMayChange,
// Audio
preferredAudioLanguage,
preferredAudioLanguages,
maxAudioChannelCount,
maxAudioBitrate,
exceedAudioConstraintsIfNecessary,
......@@ -781,7 +776,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
allowAudioMixedSampleRateAdaptiveness,
allowAudioMixedChannelCountAdaptiveness,
// Text
preferredTextLanguage,
preferredTextLanguages,
preferredTextRoleFlags,
selectUndeterminedTextLanguage,
disabledTextTrackSelectionFlags,
......@@ -1021,7 +1016,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
int viewportHeight,
boolean viewportOrientationMayChange,
// Audio
String[] preferredAudioLanguage,
ImmutableList<String> preferredAudioLanguage,
int maxAudioChannelCount,
int maxAudioBitrate,
boolean exceedAudioConstraintsIfNecessary,
......@@ -1029,7 +1024,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
boolean allowAudioMixedSampleRateAdaptiveness,
boolean allowAudioMixedChannelCountAdaptiveness,
// Text
String[] preferredTextLanguage,
ImmutableList<String> preferredTextLanguage,
@C.RoleFlags int preferredTextRoleFlags,
boolean selectUndeterminedTextLanguage,
@C.SelectionFlags int disabledTextTrackSelectionFlags,
......@@ -2613,6 +2608,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
private final Parameters parameters;
private final boolean isWithinRendererCapabilities;
private final int preferredLanguageScore;
private final int preferredLanguageIndex;
private final int localeLanguageMatchIndex;
private final int localeLanguageScore;
private final boolean isDefaultSelectionFlag;
......@@ -2626,14 +2622,18 @@ public class DefaultTrackSelector extends MappingTrackSelector {
isWithinRendererCapabilities =
isSupported(formatSupport, /* allowExceedsCapabilities= */ false);
int bestLanguageScore = 0;
for (int i = 0; i < parameters.preferredAudioLanguage.length; i++) {
int bestLanguageIndex = 0;
for (int i = 0; i < parameters.preferredAudioLanguages.size(); i++) {
int score = getFormatLanguageScore(
format,
parameters.preferredAudioLanguage[i],
parameters.preferredAudioLanguages.get(i),
/* allowUndeterminedFormatLanguage= */ false);
score = 1000 * score + parameters.preferredAudioLanguage.length - i; // Priorise the first items in array
bestLanguageScore = Math.max(bestLanguageScore, score);
if (score > 0) {
bestLanguageIndex = i;
bestLanguageScore = score;
}
}
preferredLanguageIndex = bestLanguageIndex;
preferredLanguageScore = bestLanguageScore;
isDefaultSelectionFlag = (format.selectionFlags & C.SELECTION_FLAG_DEFAULT) != 0;
channelCount = format.channelCount;
......@@ -2677,6 +2677,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
: FORMAT_VALUE_ORDERING.reverse();
return ComparisonChain.start()
.compareFalseFirst(this.isWithinRendererCapabilities, other.isWithinRendererCapabilities)
.compare(
this.preferredLanguageIndex,
other.preferredLanguageIndex,
Ordering.natural().reverse())
.compare(this.preferredLanguageScore, other.preferredLanguageScore)
.compareFalseFirst(this.isWithinConstraints, other.isWithinConstraints)
.compare(
......@@ -2729,10 +2733,10 @@ public class DefaultTrackSelector extends MappingTrackSelector {
isDefault = (maskedSelectionFlags & C.SELECTION_FLAG_DEFAULT) != 0;
isForced = (maskedSelectionFlags & C.SELECTION_FLAG_FORCED) != 0;
int bestLanguageScore = 0;
for (int i = 0; i < parameters.preferredTextLanguage.length; i++) {
for (int i = 0; i < parameters.preferredTextLanguages.size(); i++) {
int score = getFormatLanguageScore(
format, parameters.preferredTextLanguage[i], parameters.selectUndeterminedTextLanguage);
score = 1000 * score + parameters.preferredTextLanguage.length - i; // Priorise the first items in array
format, parameters.preferredTextLanguages.get(i), parameters.selectUndeterminedTextLanguage);
score = 1000 * score + parameters.preferredTextLanguages.size() - i; // Priorise the first items in array
bestLanguageScore = Math.max(bestLanguageScore, score);
}
preferredLanguageScore = bestLanguageScore;
......@@ -2746,7 +2750,7 @@ public class DefaultTrackSelector extends MappingTrackSelector {
getFormatLanguageScore(format, selectedAudioLanguage, selectedAudioLanguageUndetermined);
isWithinConstraints =
preferredLanguageScore > 0
|| (parameters.preferredTextLanguage.length == 0 && preferredRoleFlagsScore > 0)
|| (parameters.preferredTextLanguages.size() == 0 && preferredRoleFlagsScore > 0)
|| isDefault
|| (isForced && selectedAudioLanguageScore > 0);
}
......
......@@ -251,8 +251,8 @@ public class DownloadHelperTest {
prepareDownloadHelper(downloadHelper);
DefaultTrackSelector.Parameters parameters =
new DefaultTrackSelector.ParametersBuilder(ApplicationProvider.getApplicationContext())
.setPreferredAudioLanguage("ZH")
.setPreferredTextLanguage("ZH")
.setPreferredAudioLanguages("ZH")
.setPreferredTextLanguages("ZH")
.setRendererDisabled(/* rendererIndex= */ 2, true)
.build();
......@@ -288,8 +288,8 @@ public class DownloadHelperTest {
// all video tracks to initial video single track selection.
DefaultTrackSelector.Parameters parameters =
new DefaultTrackSelector.ParametersBuilder(ApplicationProvider.getApplicationContext())
.setPreferredAudioLanguage("ZH")
.setPreferredTextLanguage("US")
.setPreferredAudioLanguages("ZH")
.setPreferredTextLanguages("US")
.build();
// Add only to one period selection to verify second period selection is untouched.
......@@ -392,8 +392,8 @@ public class DownloadHelperTest {
// also renderers without any track groups.
DefaultTrackSelector.Parameters parameters =
new DefaultTrackSelector.ParametersBuilder(ApplicationProvider.getApplicationContext())
.setPreferredAudioLanguage("ZH")
.setPreferredTextLanguage("US")
.setPreferredAudioLanguages("ZH")
.setPreferredTextLanguages("US")
.build();
downloadHelper.addTrackSelection(/* periodIndex= */ 0, parameters);
byte[] data = new byte[10];
......
......@@ -283,7 +283,7 @@ public final class DefaultTrackSelectorTest {
*/
@Test
public void setParameterWithNonDefaultParameterNotifyInvalidationListener() {
ParametersBuilder builder = defaultParameters.buildUpon().setPreferredAudioLanguage("eng");
ParametersBuilder builder = defaultParameters.buildUpon().setPreferredAudioLanguages("eng");
trackSelector.setParameters(builder);
verify(invalidationListener).onTrackSelectionsInvalidated();
}
......@@ -295,7 +295,7 @@ public final class DefaultTrackSelectorTest {
*/
@Test
public void setParameterWithSameParametersDoesNotNotifyInvalidationListenerAgain() {
ParametersBuilder builder = defaultParameters.buildUpon().setPreferredAudioLanguage("eng");
ParametersBuilder builder = defaultParameters.buildUpon().setPreferredAudioLanguages("eng");
trackSelector.setParameters(builder);
trackSelector.setParameters(builder);
verify(invalidationListener, times(1)).onTrackSelectionsInvalidated();
......@@ -369,7 +369,7 @@ public final class DefaultTrackSelectorTest {
Format enAudioFormat = formatBuilder.setLanguage("eng").build();
TrackGroupArray trackGroups = wrapFormats(frAudioFormat, enAudioFormat);
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguage("eng"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguages("eng"));
TrackSelectorResult result =
trackSelector.selectTracks(
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
......@@ -391,7 +391,7 @@ public final class DefaultTrackSelectorTest {
Format enNonDefaultFormat = formatBuilder.setLanguage("eng").setSelectionFlags(0).build();
TrackGroupArray trackGroups = wrapFormats(frDefaultFormat, enNonDefaultFormat);
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguage("eng"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguages("eng"));
TrackSelectorResult result =
trackSelector.selectTracks(
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
......@@ -511,7 +511,7 @@ public final class DefaultTrackSelectorTest {
RendererCapabilities mappedAudioRendererCapabilities =
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguage("eng"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguages("eng"));
TrackSelectorResult result =
trackSelector.selectTracks(
new RendererCapabilities[] {mappedAudioRendererCapabilities},
......@@ -546,7 +546,7 @@ public final class DefaultTrackSelectorTest {
RendererCapabilities mappedAudioRendererCapabilities =
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguage("eng"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguages("eng"));
TrackSelectorResult result =
trackSelector.selectTracks(
new RendererCapabilities[] {mappedAudioRendererCapabilities},
......@@ -841,7 +841,7 @@ public final class DefaultTrackSelectorTest {
// There is a preferred language, so a language-matching track flagged as default should
// be selected, and the one without forced flag should be preferred.
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredTextLanguage("eng"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredTextLanguages("eng"));
result = trackSelector.selectTracks(textRendererCapabilities, trackGroups, periodId, TIMELINE);
assertFixedSelection(result.selections.get(0), trackGroups, defaultOnly);
......@@ -929,7 +929,7 @@ public final class DefaultTrackSelectorTest {
result = trackSelector.selectTracks(textRendererCapabilites, trackGroups, periodId, TIMELINE);
assertFixedSelection(result.selections.get(0), trackGroups, undeterminedUnd);
ParametersBuilder builder = defaultParameters.buildUpon().setPreferredTextLanguage("spa");
ParametersBuilder builder = defaultParameters.buildUpon().setPreferredTextLanguages("spa");
trackSelector.setParameters(builder);
result = trackSelector.selectTracks(textRendererCapabilites, trackGroups, periodId, TIMELINE);
assertFixedSelection(result.selections.get(0), trackGroups, spanish);
......@@ -984,13 +984,13 @@ public final class DefaultTrackSelectorTest {
assertNoSelection(result.selections.get(1));
// Explicit language preference for english. First renderer should be used.
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredTextLanguage("en"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredTextLanguages("en"));
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
assertFixedSelection(result.selections.get(0), trackGroups, english);
assertNoSelection(result.selections.get(1));
// Explicit language preference for German. Second renderer should be used.
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredTextLanguage("de"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredTextLanguages("de"));
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
assertNoSelection(result.selections.get(0));
assertFixedSelection(result.selections.get(1), trackGroups, german);
......@@ -1290,13 +1290,13 @@ public final class DefaultTrackSelectorTest {
assertNoSelection(result.selections.get(1));
// Explicit language preference for english. First renderer should be used.
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguage("en"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguages("en"));
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
assertFixedSelection(result.selections.get(0), trackGroups, english);
assertNoSelection(result.selections.get(1));
// Explicit language preference for German. Second renderer should be used.
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguage("de"));
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredAudioLanguages("de"));
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
assertNoSelection(result.selections.get(0));
assertFixedSelection(result.selections.get(1), trackGroups, german);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment