mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Add tests for DefaultTrackSelector handling of forced & default tracks
Issue: google/ExoPlayer#9797 PiperOrigin-RevId: 420707176
This commit is contained in:
parent
e854be69e4
commit
055df87c8b
@ -1169,16 +1169,30 @@ public final class DefaultTrackSelectorTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests that the default track selector will select a forced text track matching the selected
|
* Tests that the default track selector will select:
|
||||||
* audio language when no text language preferences match.
|
*
|
||||||
|
* <ul>
|
||||||
|
* <li>A forced text track with unknown language if the selected audio language is also unknown.
|
||||||
|
* <li>A forced text track matching the selected audio language.
|
||||||
|
* <li>A default text track matching the selected audio language when a default text track in
|
||||||
|
* another language is present.
|
||||||
|
* <li>A default text track that doesn't match the selected audio language when a default text
|
||||||
|
* track in the selected audio language is not present (but other text tracks in this
|
||||||
|
* language are present).
|
||||||
|
* </ul>
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void selectingForcedTextTrackMatchesAudioLanguage() throws ExoPlaybackException {
|
public void forcedAndDefaultTextTracksInteractWithSelectedAudioLanguageAsExpected()
|
||||||
Format.Builder formatBuilder =
|
throws ExoPlaybackException {
|
||||||
|
Format.Builder forcedTextBuilder =
|
||||||
TEXT_FORMAT.buildUpon().setSelectionFlags(C.SELECTION_FLAG_FORCED);
|
TEXT_FORMAT.buildUpon().setSelectionFlags(C.SELECTION_FLAG_FORCED);
|
||||||
Format forcedEnglish = formatBuilder.setLanguage("eng").build();
|
Format.Builder defaultTextBuilder =
|
||||||
Format forcedGerman = formatBuilder.setLanguage("deu").build();
|
TEXT_FORMAT.buildUpon().setSelectionFlags(C.SELECTION_FLAG_DEFAULT);
|
||||||
Format forcedNoLanguage = formatBuilder.setLanguage(C.LANGUAGE_UNDETERMINED).build();
|
Format forcedEnglish = forcedTextBuilder.setLanguage("eng").build();
|
||||||
|
Format defaultEnglish = defaultTextBuilder.setLanguage("eng").build();
|
||||||
|
Format forcedGerman = forcedTextBuilder.setLanguage("deu").build();
|
||||||
|
Format defaultGerman = defaultTextBuilder.setLanguage("deu").build();
|
||||||
|
Format forcedNoLanguage = forcedTextBuilder.setLanguage(C.LANGUAGE_UNDETERMINED).build();
|
||||||
|
|
||||||
Format noLanguageAudio = AUDIO_FORMAT.buildUpon().setLanguage(null).build();
|
Format noLanguageAudio = AUDIO_FORMAT.buildUpon().setLanguage(null).build();
|
||||||
Format germanAudio = AUDIO_FORMAT.buildUpon().setLanguage("deu").build();
|
Format germanAudio = AUDIO_FORMAT.buildUpon().setLanguage("deu").build();
|
||||||
@ -1211,6 +1225,19 @@ public final class DefaultTrackSelectorTest {
|
|||||||
trackGroups = wrapFormats(germanAudio, forcedEnglish, forcedGerman);
|
trackGroups = wrapFormats(germanAudio, forcedEnglish, forcedGerman);
|
||||||
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
|
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
|
||||||
assertFixedSelection(result.selections[1], trackGroups, forcedGerman);
|
assertFixedSelection(result.selections[1], trackGroups, forcedGerman);
|
||||||
|
|
||||||
|
// The audio declares german. The default german track should be selected (in favour of the
|
||||||
|
// default english track and forced german track).
|
||||||
|
trackGroups =
|
||||||
|
wrapFormats(germanAudio, forcedGerman, defaultGerman, forcedEnglish, defaultEnglish);
|
||||||
|
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
|
||||||
|
assertFixedSelection(result.selections[1], trackGroups, defaultGerman);
|
||||||
|
|
||||||
|
// The audio declares german. The default english track should be selected because there's no
|
||||||
|
// default german track.
|
||||||
|
trackGroups = wrapFormats(germanAudio, forcedGerman, forcedEnglish, defaultEnglish);
|
||||||
|
result = trackSelector.selectTracks(rendererCapabilities, trackGroups, periodId, TIMELINE);
|
||||||
|
assertFixedSelection(result.selections[1], trackGroups, defaultEnglish);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user