mirror of
https://github.com/androidx/media.git
synced 2025-05-17 12:39:52 +08:00
Pass MediaPeriodId to TrackSelector.selectTracks()
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=214638939
This commit is contained in:
parent
776ad20a50
commit
3073d38a5a
@ -51,7 +51,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
|
|||||||
* This empty track selector result can only be used for {@link PlaybackInfo#trackSelectorResult}
|
* This empty track selector result can only be used for {@link PlaybackInfo#trackSelectorResult}
|
||||||
* when the player does not have any track selection made (such as when player is reset, or when
|
* when the player does not have any track selection made (such as when player is reset, or when
|
||||||
* player seeks to an unprepared period). It will not be used as result of any {@link
|
* player seeks to an unprepared period). It will not be used as result of any {@link
|
||||||
* TrackSelector#selectTracks(RendererCapabilities[], TrackGroupArray)} operation.
|
* TrackSelector#selectTracks(RendererCapabilities[], TrackGroupArray, MediaPeriodId)} operation.
|
||||||
*/
|
*/
|
||||||
/* package */ final TrackSelectorResult emptyTrackSelectorResult;
|
/* package */ final TrackSelectorResult emptyTrackSelectorResult;
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ import com.google.android.exoplayer2.util.Log;
|
|||||||
|
|
||||||
public boolean selectTracks(float playbackSpeed) throws ExoPlaybackException {
|
public boolean selectTracks(float playbackSpeed) throws ExoPlaybackException {
|
||||||
TrackSelectorResult selectorResult =
|
TrackSelectorResult selectorResult =
|
||||||
trackSelector.selectTracks(rendererCapabilities, trackGroups);
|
trackSelector.selectTracks(rendererCapabilities, trackGroups, info.id);
|
||||||
if (selectorResult.isEquivalent(periodTrackSelectorResult)) {
|
if (selectorResult.isEquivalent(periodTrackSelectorResult)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import com.google.android.exoplayer2.ExoPlaybackException;
|
|||||||
import com.google.android.exoplayer2.Renderer;
|
import com.google.android.exoplayer2.Renderer;
|
||||||
import com.google.android.exoplayer2.RendererCapabilities;
|
import com.google.android.exoplayer2.RendererCapabilities;
|
||||||
import com.google.android.exoplayer2.RendererConfiguration;
|
import com.google.android.exoplayer2.RendererConfiguration;
|
||||||
|
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
|
||||||
import com.google.android.exoplayer2.source.TrackGroup;
|
import com.google.android.exoplayer2.source.TrackGroup;
|
||||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||||
import com.google.android.exoplayer2.util.Util;
|
import com.google.android.exoplayer2.util.Util;
|
||||||
@ -326,8 +327,11 @@ public abstract class MappingTrackSelector extends TrackSelector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final TrackSelectorResult selectTracks(RendererCapabilities[] rendererCapabilities,
|
public final TrackSelectorResult selectTracks(
|
||||||
TrackGroupArray trackGroups) throws ExoPlaybackException {
|
RendererCapabilities[] rendererCapabilities,
|
||||||
|
TrackGroupArray trackGroups,
|
||||||
|
MediaPeriodId periodId)
|
||||||
|
throws ExoPlaybackException {
|
||||||
// Structures into which data will be written during the selection. The extra item at the end
|
// Structures into which data will be written during the selection. The extra item at the end
|
||||||
// of each array is to store data associated with track groups that cannot be associated with
|
// of each array is to store data associated with track groups that cannot be associated with
|
||||||
// any renderer.
|
// any renderer.
|
||||||
|
@ -21,6 +21,7 @@ import com.google.android.exoplayer2.ExoPlayer;
|
|||||||
import com.google.android.exoplayer2.Renderer;
|
import com.google.android.exoplayer2.Renderer;
|
||||||
import com.google.android.exoplayer2.RendererCapabilities;
|
import com.google.android.exoplayer2.RendererCapabilities;
|
||||||
import com.google.android.exoplayer2.RendererConfiguration;
|
import com.google.android.exoplayer2.RendererConfiguration;
|
||||||
|
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
|
||||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||||
import com.google.android.exoplayer2.upstream.BandwidthMeter;
|
import com.google.android.exoplayer2.upstream.BandwidthMeter;
|
||||||
import com.google.android.exoplayer2.util.Assertions;
|
import com.google.android.exoplayer2.util.Assertions;
|
||||||
@ -40,9 +41,9 @@ import com.google.android.exoplayer2.util.Assertions;
|
|||||||
* <li>When the player is created it will initialize the track selector by calling {@link
|
* <li>When the player is created it will initialize the track selector by calling {@link
|
||||||
* #init(InvalidationListener, BandwidthMeter)}.
|
* #init(InvalidationListener, BandwidthMeter)}.
|
||||||
* <li>When the player needs to make a track selection it will call {@link
|
* <li>When the player needs to make a track selection it will call {@link
|
||||||
* #selectTracks(RendererCapabilities[], TrackGroupArray)}. This typically occurs at the start
|
* #selectTracks(RendererCapabilities[], TrackGroupArray, MediaPeriodId)}. This typically
|
||||||
* of playback, when the player starts to buffer a new period of the media being played, and
|
* occurs at the start of playback, when the player starts to buffer a new period of the media
|
||||||
* when the track selector invalidates its previous selections.
|
* being played, and when the track selector invalidates its previous selections.
|
||||||
* <li>The player may perform a track selection well in advance of the selected tracks becoming
|
* <li>The player may perform a track selection well in advance of the selected tracks becoming
|
||||||
* active, where active is defined to mean that the renderers are actually consuming media
|
* active, where active is defined to mean that the renderers are actually consuming media
|
||||||
* corresponding to the selection that was made. For example when playing media containing
|
* corresponding to the selection that was made. For example when playing media containing
|
||||||
@ -66,14 +67,14 @@ import com.google.android.exoplayer2.util.Assertions;
|
|||||||
* <h3>Renderer configuration</h3>
|
* <h3>Renderer configuration</h3>
|
||||||
*
|
*
|
||||||
* The {@link TrackSelectorResult} returned by {@link #selectTracks(RendererCapabilities[],
|
* The {@link TrackSelectorResult} returned by {@link #selectTracks(RendererCapabilities[],
|
||||||
* TrackGroupArray)} contains not only {@link TrackSelection}s for each renderer, but also {@link
|
* TrackGroupArray, MediaPeriodId)} contains not only {@link TrackSelection}s for each renderer, but
|
||||||
* RendererConfiguration}s defining configuration parameters that the renderers should apply when
|
* also {@link RendererConfiguration}s defining configuration parameters that the renderers should
|
||||||
* consuming the corresponding media. Whilst it may seem counter-intuitive for a track selector to
|
* apply when consuming the corresponding media. Whilst it may seem counter-intuitive for a track
|
||||||
* also specify renderer configuration information, in practice the two are tightly bound together.
|
* selector to also specify renderer configuration information, in practice the two are tightly
|
||||||
* It may only be possible to play a certain combination tracks if the renderers are configured in a
|
* bound together. It may only be possible to play a certain combination tracks if the renderers are
|
||||||
* particular way. Equally, it may only be possible to configure renderers in a particular way if
|
* configured in a particular way. Equally, it may only be possible to configure renderers in a
|
||||||
* certain tracks are selected. Hence it makes sense to determined the track selection and
|
* particular way if certain tracks are selected. Hence it makes sense to determined the track
|
||||||
* corresponding renderer configurations in a single step.
|
* selection and corresponding renderer configurations in a single step.
|
||||||
*
|
*
|
||||||
* <h3>Threading model</h3>
|
* <h3>Threading model</h3>
|
||||||
*
|
*
|
||||||
@ -117,15 +118,19 @@ public abstract class TrackSelector {
|
|||||||
* @param rendererCapabilities The {@link RendererCapabilities} of the renderers for which tracks
|
* @param rendererCapabilities The {@link RendererCapabilities} of the renderers for which tracks
|
||||||
* are to be selected.
|
* are to be selected.
|
||||||
* @param trackGroups The available track groups.
|
* @param trackGroups The available track groups.
|
||||||
|
* @param periodId The {@link MediaPeriodId} of the period for which tracks are to be selected.
|
||||||
* @return A {@link TrackSelectorResult} describing the track selections.
|
* @return A {@link TrackSelectorResult} describing the track selections.
|
||||||
* @throws ExoPlaybackException If an error occurs selecting tracks.
|
* @throws ExoPlaybackException If an error occurs selecting tracks.
|
||||||
*/
|
*/
|
||||||
public abstract TrackSelectorResult selectTracks(RendererCapabilities[] rendererCapabilities,
|
public abstract TrackSelectorResult selectTracks(
|
||||||
TrackGroupArray trackGroups) throws ExoPlaybackException;
|
RendererCapabilities[] rendererCapabilities,
|
||||||
|
TrackGroupArray trackGroups,
|
||||||
|
MediaPeriodId periodId)
|
||||||
|
throws ExoPlaybackException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by the player when a {@link TrackSelectorResult} previously generated by
|
* Called by the player when a {@link TrackSelectorResult} previously generated by {@link
|
||||||
* {@link #selectTracks(RendererCapabilities[], TrackGroupArray)} is activated.
|
* #selectTracks(RendererCapabilities[], TrackGroupArray, MediaPeriodId)} is activated.
|
||||||
*
|
*
|
||||||
* @param info The value of {@link TrackSelectorResult#info} in the activated selection.
|
* @param info The value of {@link TrackSelectorResult#info} in the activated selection.
|
||||||
*/
|
*/
|
||||||
|
@ -37,6 +37,7 @@ import com.google.android.exoplayer2.ExoPlaybackException;
|
|||||||
import com.google.android.exoplayer2.Format;
|
import com.google.android.exoplayer2.Format;
|
||||||
import com.google.android.exoplayer2.RendererCapabilities;
|
import com.google.android.exoplayer2.RendererCapabilities;
|
||||||
import com.google.android.exoplayer2.RendererConfiguration;
|
import com.google.android.exoplayer2.RendererConfiguration;
|
||||||
|
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
|
||||||
import com.google.android.exoplayer2.source.TrackGroup;
|
import com.google.android.exoplayer2.source.TrackGroup;
|
||||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector.Parameters;
|
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector.Parameters;
|
||||||
@ -90,6 +91,7 @@ public final class DefaultTrackSelectorTest {
|
|||||||
};
|
};
|
||||||
private static final TrackSelection[] TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER =
|
private static final TrackSelection[] TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER =
|
||||||
new TrackSelection[] {new FixedTrackSelection(VIDEO_TRACK_GROUP, 0), null};
|
new TrackSelection[] {new FixedTrackSelection(VIDEO_TRACK_GROUP, 0), null};
|
||||||
|
private static final MediaPeriodId PERIOD_ID = new MediaPeriodId(/* periodUid= */ new Object());
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private InvalidationListener invalidationListener;
|
private InvalidationListener invalidationListener;
|
||||||
@ -176,7 +178,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
trackSelector
|
trackSelector
|
||||||
.buildUponParameters()
|
.buildUponParameters()
|
||||||
.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null));
|
.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null));
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS, PERIOD_ID);
|
||||||
assertTrackSelections(result, new TrackSelection[] {null, TRACK_SELECTIONS[1]});
|
assertTrackSelections(result, new TrackSelection[] {null, TRACK_SELECTIONS[1]});
|
||||||
assertThat(result.rendererConfigurations)
|
assertThat(result.rendererConfigurations)
|
||||||
.isEqualTo(new RendererConfiguration[] {null, DEFAULT});
|
.isEqualTo(new RendererConfiguration[] {null, DEFAULT});
|
||||||
@ -192,7 +195,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
.buildUponParameters()
|
.buildUponParameters()
|
||||||
.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null)
|
.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null)
|
||||||
.clearSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP)));
|
.clearSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP)));
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS, PERIOD_ID);
|
||||||
assertTrackSelections(result, TRACK_SELECTIONS);
|
assertTrackSelections(result, TRACK_SELECTIONS);
|
||||||
assertThat(result.rendererConfigurations)
|
assertThat(result.rendererConfigurations)
|
||||||
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
||||||
@ -210,7 +214,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
RENDERER_CAPABILITIES,
|
RENDERER_CAPABILITIES,
|
||||||
new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP, VIDEO_TRACK_GROUP));
|
new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP, VIDEO_TRACK_GROUP),
|
||||||
|
PERIOD_ID);
|
||||||
assertTrackSelections(result, TRACK_SELECTIONS);
|
assertTrackSelections(result, TRACK_SELECTIONS);
|
||||||
assertThat(result.rendererConfigurations)
|
assertThat(result.rendererConfigurations)
|
||||||
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
||||||
@ -222,7 +227,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
|
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
|
||||||
trackSelector.init(invalidationListener, bandwidthMeter);
|
trackSelector.init(invalidationListener, bandwidthMeter);
|
||||||
trackSelector.setParameters(trackSelector.buildUponParameters().setRendererDisabled(1, true));
|
trackSelector.setParameters(trackSelector.buildUponParameters().setRendererDisabled(1, true));
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS, PERIOD_ID);
|
||||||
assertTrackSelections(result, new TrackSelection[] {TRACK_SELECTIONS[0], null});
|
assertTrackSelections(result, new TrackSelection[] {TRACK_SELECTIONS[0], null});
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, null})
|
assertThat(new RendererConfiguration[] {DEFAULT, null})
|
||||||
.isEqualTo(result.rendererConfigurations);
|
.isEqualTo(result.rendererConfigurations);
|
||||||
@ -238,7 +244,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
.buildUponParameters()
|
.buildUponParameters()
|
||||||
.setRendererDisabled(1, true)
|
.setRendererDisabled(1, true)
|
||||||
.setRendererDisabled(1, false));
|
.setRendererDisabled(1, false));
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS, PERIOD_ID);
|
||||||
assertTrackSelections(result, TRACK_SELECTIONS);
|
assertTrackSelections(result, TRACK_SELECTIONS);
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
||||||
.isEqualTo(result.rendererConfigurations);
|
.isEqualTo(result.rendererConfigurations);
|
||||||
@ -250,7 +257,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
|
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
|
||||||
trackSelector.init(invalidationListener, bandwidthMeter);
|
trackSelector.init(invalidationListener, bandwidthMeter);
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
trackSelector.selectTracks(
|
||||||
|
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS, PERIOD_ID);
|
||||||
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
||||||
.isEqualTo(result.rendererConfigurations);
|
.isEqualTo(result.rendererConfigurations);
|
||||||
@ -263,7 +271,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
trackSelector.init(invalidationListener, bandwidthMeter);
|
trackSelector.init(invalidationListener, bandwidthMeter);
|
||||||
trackSelector.setParameters(trackSelector.buildUponParameters().setRendererDisabled(1, true));
|
trackSelector.setParameters(trackSelector.buildUponParameters().setRendererDisabled(1, true));
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
trackSelector.selectTracks(
|
||||||
|
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS, PERIOD_ID);
|
||||||
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, null})
|
assertThat(new RendererConfiguration[] {DEFAULT, null})
|
||||||
.isEqualTo(result.rendererConfigurations);
|
.isEqualTo(result.rendererConfigurations);
|
||||||
@ -322,9 +331,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format formatWithSelectionFlag =
|
Format formatWithSelectionFlag =
|
||||||
buildAudioFormat("audio", /* language= */ null, C.SELECTION_FLAG_DEFAULT);
|
buildAudioFormat("audio", /* language= */ null, C.SELECTION_FLAG_DEFAULT);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(formatWithSelectionFlag, audioFormat));
|
singleTrackGroup(formatWithSelectionFlag, audioFormat),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(formatWithSelectionFlag);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(formatWithSelectionFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,7 +358,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
wrapFormats(frAudioFormat, enAudioFormat));
|
wrapFormats(frAudioFormat, enAudioFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(enAudioFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(enAudioFormat);
|
||||||
}
|
}
|
||||||
@ -368,9 +380,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audio", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audio", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, "eng");
|
Format.NO_VALUE, 2, 44100, null, null, 0, "eng");
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
wrapFormats(frAudioFormat, enAudioFormat));
|
wrapFormats(frAudioFormat, enAudioFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(enAudioFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(enAudioFormat);
|
||||||
}
|
}
|
||||||
@ -390,9 +404,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
RendererCapabilities mappedAudioRendererCapabilities =
|
RendererCapabilities mappedAudioRendererCapabilities =
|
||||||
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
||||||
singleTrackGroup(exceededFormat, supportedFormat));
|
singleTrackGroup(exceededFormat, supportedFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFormat);
|
||||||
}
|
}
|
||||||
@ -407,9 +423,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format audioFormat =
|
Format audioFormat =
|
||||||
Format.createAudioSampleFormat("audio", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audio", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(audioFormat));
|
singleTrackGroup(audioFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(audioFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(audioFormat);
|
||||||
}
|
}
|
||||||
@ -428,9 +446,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format audioFormat =
|
Format audioFormat =
|
||||||
Format.createAudioSampleFormat("audio", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audio", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(audioFormat));
|
singleTrackGroup(audioFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
}
|
}
|
||||||
@ -455,9 +475,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
RendererCapabilities mappedAudioRendererCapabilities =
|
RendererCapabilities mappedAudioRendererCapabilities =
|
||||||
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
||||||
singleTrackGroup(exceededWithSelectionFlagFormat, supportedFormat));
|
singleTrackGroup(exceededWithSelectionFlagFormat, supportedFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFormat);
|
||||||
}
|
}
|
||||||
@ -485,9 +507,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
RendererCapabilities mappedAudioRendererCapabilities =
|
RendererCapabilities mappedAudioRendererCapabilities =
|
||||||
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
||||||
singleTrackGroup(exceededEnFormat, supportedFrFormat));
|
singleTrackGroup(exceededEnFormat, supportedFrFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFrFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFrFormat);
|
||||||
}
|
}
|
||||||
@ -515,9 +539,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
RendererCapabilities mappedAudioRendererCapabilities =
|
RendererCapabilities mappedAudioRendererCapabilities =
|
||||||
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
new FakeMappedRendererCapabilities(C.TRACK_TYPE_AUDIO, mappedCapabilities);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
new RendererCapabilities[] {mappedAudioRendererCapabilities},
|
||||||
singleTrackGroup(exceededDefaultSelectionEnFormat, supportedFrFormat));
|
singleTrackGroup(exceededDefaultSelectionEnFormat, supportedFrFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFrFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(supportedFrFormat);
|
||||||
}
|
}
|
||||||
@ -536,9 +562,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 6, 44100, null, null, 0, null);
|
Format.NO_VALUE, 6, 44100, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherChannelFormat, lowerChannelFormat));
|
singleTrackGroup(higherChannelFormat, lowerChannelFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(higherChannelFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(higherChannelFormat);
|
||||||
}
|
}
|
||||||
@ -557,9 +585,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 2, 22050, null, null, 0, null);
|
Format.NO_VALUE, 2, 22050, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherSampleRateFormat, lowerSampleRateFormat));
|
singleTrackGroup(higherSampleRateFormat, lowerSampleRateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(higherSampleRateFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(higherSampleRateFormat);
|
||||||
}
|
}
|
||||||
@ -578,9 +608,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(lowerBitrateFormat, higherBitrateFormat));
|
singleTrackGroup(lowerBitrateFormat, higherBitrateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(higherBitrateFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(higherBitrateFormat);
|
||||||
}
|
}
|
||||||
@ -600,9 +632,12 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 6, 22050, null, null, 0, null);
|
Format.NO_VALUE, 6, 22050, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherChannelLowerSampleRateFormat, lowerChannelHigherSampleRateFormat));
|
singleTrackGroup(
|
||||||
|
higherChannelLowerSampleRateFormat, lowerChannelHigherSampleRateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat())
|
assertThat(result.selections.get(0).getSelectedFormat())
|
||||||
.isEqualTo(higherChannelLowerSampleRateFormat);
|
.isEqualTo(higherChannelLowerSampleRateFormat);
|
||||||
@ -623,9 +658,12 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
||||||
Format.NO_VALUE, 2, 22050, null, null, 0, null);
|
Format.NO_VALUE, 2, 22050, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherSampleRateLowerBitrateFormat, lowerSampleRateHigherBitrateFormat));
|
singleTrackGroup(
|
||||||
|
higherSampleRateLowerBitrateFormat, lowerSampleRateHigherBitrateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat())
|
assertThat(result.selections.get(0).getSelectedFormat())
|
||||||
.isEqualTo(higherSampleRateLowerBitrateFormat);
|
.isEqualTo(higherSampleRateLowerBitrateFormat);
|
||||||
@ -645,9 +683,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 6, 44100, null, null, 0, null);
|
Format.NO_VALUE, 6, 44100, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherChannelFormat, lowerChannelFormat));
|
singleTrackGroup(higherChannelFormat, lowerChannelFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerChannelFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerChannelFormat);
|
||||||
}
|
}
|
||||||
@ -666,9 +706,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherSampleRateFormat, lowerSampleRateFormat));
|
singleTrackGroup(higherSampleRateFormat, lowerSampleRateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerSampleRateFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerSampleRateFormat);
|
||||||
}
|
}
|
||||||
@ -687,9 +729,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(lowerBitrateFormat, higherBitrateFormat));
|
singleTrackGroup(lowerBitrateFormat, higherBitrateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerBitrateFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerBitrateFormat);
|
||||||
}
|
}
|
||||||
@ -709,9 +753,12 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, Format.NO_VALUE,
|
||||||
Format.NO_VALUE, 6, 22050, null, null, 0, null);
|
Format.NO_VALUE, 6, 22050, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherChannelLowerSampleRateFormat, lowerChannelHigherSampleRateFormat));
|
singleTrackGroup(
|
||||||
|
higherChannelLowerSampleRateFormat, lowerChannelHigherSampleRateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat())
|
assertThat(result.selections.get(0).getSelectedFormat())
|
||||||
.isEqualTo(lowerChannelHigherSampleRateFormat);
|
.isEqualTo(lowerChannelHigherSampleRateFormat);
|
||||||
@ -732,9 +779,12 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
||||||
Format.NO_VALUE, 2, 22050, null, null, 0, null);
|
Format.NO_VALUE, 2, 22050, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_EXCEEDED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(higherSampleRateLowerBitrateFormat, lowerSampleRateHigherBitrateFormat));
|
singleTrackGroup(
|
||||||
|
higherSampleRateLowerBitrateFormat, lowerSampleRateHigherBitrateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat())
|
assertThat(result.selections.get(0).getSelectedFormat())
|
||||||
.isEqualTo(lowerSampleRateHigherBitrateFormat);
|
.isEqualTo(lowerSampleRateHigherBitrateFormat);
|
||||||
@ -756,18 +806,22 @@ public final class DefaultTrackSelectorTest {
|
|||||||
// There is no text language preference, the first track flagged as default should be selected.
|
// There is no text language preference, the first track flagged as default should be selected.
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities, wrapFormats(forcedOnly, forcedDefault, defaultOnly, noFlag));
|
textRendererCapabilities,
|
||||||
|
wrapFormats(forcedOnly, forcedDefault, defaultOnly, noFlag),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedDefault);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedDefault);
|
||||||
|
|
||||||
// Ditto.
|
// Ditto.
|
||||||
result =
|
result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities, wrapFormats(forcedOnly, noFlag, defaultOnly));
|
textRendererCapabilities, wrapFormats(forcedOnly, noFlag, defaultOnly), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(defaultOnly);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(defaultOnly);
|
||||||
|
|
||||||
// With no language preference and no text track flagged as default, the first forced should be
|
// With no language preference and no text track flagged as default, the first forced should be
|
||||||
// selected.
|
// selected.
|
||||||
result = trackSelector.selectTracks(textRendererCapabilities, wrapFormats(forcedOnly, noFlag));
|
result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
|
textRendererCapabilities, wrapFormats(forcedOnly, noFlag), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedOnly);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedOnly);
|
||||||
|
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
@ -779,7 +833,9 @@ public final class DefaultTrackSelectorTest {
|
|||||||
// Default flags are disabled, so the first track flagged as forced should be selected.
|
// Default flags are disabled, so the first track flagged as forced should be selected.
|
||||||
result =
|
result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities, wrapFormats(defaultOnly, noFlag, forcedOnly, forcedDefault));
|
textRendererCapabilities,
|
||||||
|
wrapFormats(defaultOnly, noFlag, forcedOnly, forcedDefault),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedOnly);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedOnly);
|
||||||
|
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
@ -790,7 +846,8 @@ public final class DefaultTrackSelectorTest {
|
|||||||
result =
|
result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities,
|
textRendererCapabilities,
|
||||||
wrapFormats(forcedDefault, forcedOnly, defaultOnly, noFlag, forcedOnlySpanish));
|
wrapFormats(forcedDefault, forcedOnly, defaultOnly, noFlag, forcedOnlySpanish),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedOnlySpanish);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedOnlySpanish);
|
||||||
|
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
@ -804,7 +861,9 @@ public final class DefaultTrackSelectorTest {
|
|||||||
// selected.
|
// selected.
|
||||||
result =
|
result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities, wrapFormats(forcedOnly, forcedDefault, defaultOnly, noFlag));
|
textRendererCapabilities,
|
||||||
|
wrapFormats(forcedOnly, forcedDefault, defaultOnly, noFlag),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
|
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
@ -814,7 +873,9 @@ public final class DefaultTrackSelectorTest {
|
|||||||
// be selected.
|
// be selected.
|
||||||
result =
|
result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities, wrapFormats(forcedOnly, forcedDefault, defaultOnly, noFlag));
|
textRendererCapabilities,
|
||||||
|
wrapFormats(forcedOnly, forcedDefault, defaultOnly, noFlag),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedDefault);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(forcedDefault);
|
||||||
|
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
@ -829,7 +890,9 @@ public final class DefaultTrackSelectorTest {
|
|||||||
// forced subtitles.
|
// forced subtitles.
|
||||||
result =
|
result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilities, wrapFormats(noFlag, forcedOnly, forcedDefault, defaultOnly));
|
textRendererCapabilities,
|
||||||
|
wrapFormats(noFlag, forcedOnly, forcedDefault, defaultOnly),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(noFlag);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(noFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -851,35 +914,49 @@ public final class DefaultTrackSelectorTest {
|
|||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
textRendererCapabilites,
|
textRendererCapabilites,
|
||||||
wrapFormats(spanish, german, undeterminedUnd, undeterminedNull));
|
wrapFormats(spanish, german, undeterminedUnd, undeterminedNull),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
|
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
new ParametersBuilder().setSelectUndeterminedTextLanguage(true).build());
|
new ParametersBuilder().setSelectUndeterminedTextLanguage(true).build());
|
||||||
result = trackSelector.selectTracks(textRendererCapabilites,
|
result =
|
||||||
wrapFormats(spanish, german, undeterminedUnd, undeterminedNull));
|
trackSelector.selectTracks(
|
||||||
|
textRendererCapabilites,
|
||||||
|
wrapFormats(spanish, german, undeterminedUnd, undeterminedNull),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(undeterminedUnd);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(undeterminedUnd);
|
||||||
|
|
||||||
ParametersBuilder builder = new ParametersBuilder().setPreferredTextLanguage("spa");
|
ParametersBuilder builder = new ParametersBuilder().setPreferredTextLanguage("spa");
|
||||||
trackSelector.setParameters(builder.build());
|
trackSelector.setParameters(builder.build());
|
||||||
result = trackSelector.selectTracks(textRendererCapabilites,
|
result =
|
||||||
wrapFormats(spanish, german, undeterminedUnd, undeterminedNull));
|
trackSelector.selectTracks(
|
||||||
|
textRendererCapabilites,
|
||||||
|
wrapFormats(spanish, german, undeterminedUnd, undeterminedNull),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(spanish);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(spanish);
|
||||||
|
|
||||||
result = trackSelector.selectTracks(textRendererCapabilites,
|
result =
|
||||||
wrapFormats(german, undeterminedUnd, undeterminedNull));
|
trackSelector.selectTracks(
|
||||||
|
textRendererCapabilites,
|
||||||
|
wrapFormats(german, undeterminedUnd, undeterminedNull),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
|
|
||||||
trackSelector.setParameters(builder.setSelectUndeterminedTextLanguage(true).build());
|
trackSelector.setParameters(builder.setSelectUndeterminedTextLanguage(true).build());
|
||||||
result = trackSelector.selectTracks(textRendererCapabilites,
|
result =
|
||||||
wrapFormats(german, undeterminedUnd, undeterminedNull));
|
trackSelector.selectTracks(
|
||||||
|
textRendererCapabilites,
|
||||||
|
wrapFormats(german, undeterminedUnd, undeterminedNull),
|
||||||
|
PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(undeterminedUnd);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(undeterminedUnd);
|
||||||
|
|
||||||
result = trackSelector.selectTracks(textRendererCapabilites,
|
result =
|
||||||
wrapFormats(german, undeterminedNull));
|
trackSelector.selectTracks(
|
||||||
|
textRendererCapabilites, wrapFormats(german, undeterminedNull), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(undeterminedNull);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(undeterminedNull);
|
||||||
|
|
||||||
result = trackSelector.selectTracks(textRendererCapabilites, wrapFormats(german));
|
result = trackSelector.selectTracks(textRendererCapabilites, wrapFormats(german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -908,19 +985,21 @@ public final class DefaultTrackSelectorTest {
|
|||||||
|
|
||||||
// Without an explicit language preference, nothing should be selected.
|
// Without an explicit language preference, nothing should be selected.
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german));
|
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
assertThat(result.selections.get(1)).isNull();
|
assertThat(result.selections.get(1)).isNull();
|
||||||
|
|
||||||
// Explicit language preference for english. First renderer should be used.
|
// Explicit language preference for english. First renderer should be used.
|
||||||
trackSelector.setParameters(trackSelector.buildUponParameters().setPreferredTextLanguage("en"));
|
trackSelector.setParameters(trackSelector.buildUponParameters().setPreferredTextLanguage("en"));
|
||||||
result = trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german));
|
result =
|
||||||
|
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(english);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(english);
|
||||||
assertThat(result.selections.get(1)).isNull();
|
assertThat(result.selections.get(1)).isNull();
|
||||||
|
|
||||||
// Explicit language preference for German. Second renderer should be used.
|
// Explicit language preference for German. Second renderer should be used.
|
||||||
trackSelector.setParameters(trackSelector.buildUponParameters().setPreferredTextLanguage("de"));
|
trackSelector.setParameters(trackSelector.buildUponParameters().setPreferredTextLanguage("de"));
|
||||||
result = trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german));
|
result =
|
||||||
|
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
assertThat(result.selections.get(1).getFormat(0)).isSameAs(german);
|
assertThat(result.selections.get(1).getFormat(0)).isSameAs(german);
|
||||||
}
|
}
|
||||||
@ -941,9 +1020,11 @@ public final class DefaultTrackSelectorTest {
|
|||||||
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
Format.createAudioSampleFormat("audioFormat", MimeTypes.AUDIO_AAC, null, 30000,
|
||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
Format.NO_VALUE, 2, 44100, null, null, 0, null);
|
||||||
|
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result =
|
||||||
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
new RendererCapabilities[] {ALL_AUDIO_FORMAT_SUPPORTED_RENDERER_CAPABILITIES},
|
||||||
singleTrackGroup(lowerBitrateFormat, higherBitrateFormat));
|
singleTrackGroup(lowerBitrateFormat, higherBitrateFormat),
|
||||||
|
PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerBitrateFormat);
|
assertThat(result.selections.get(0).getSelectedFormat()).isEqualTo(lowerBitrateFormat);
|
||||||
}
|
}
|
||||||
@ -962,7 +1043,7 @@ public final class DefaultTrackSelectorTest {
|
|||||||
TrackGroupArray trackGroupArray = singleTrackGroup(AUDIO_FORMAT, AUDIO_FORMAT);
|
TrackGroupArray trackGroupArray = singleTrackGroup(AUDIO_FORMAT, AUDIO_FORMAT);
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {AUDIO_CAPABILITIES}, trackGroupArray);
|
new RendererCapabilities[] {AUDIO_CAPABILITIES}, trackGroupArray, PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.length).isEqualTo(1);
|
assertThat(result.length).isEqualTo(1);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
||||||
@ -991,7 +1072,7 @@ public final class DefaultTrackSelectorTest {
|
|||||||
new SelectionOverride(/* groupIndex= */ 0, /* tracks= */ 1, 2)));
|
new SelectionOverride(/* groupIndex= */ 0, /* tracks= */ 1, 2)));
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {AUDIO_CAPABILITIES}, trackGroupArray);
|
new RendererCapabilities[] {AUDIO_CAPABILITIES}, trackGroupArray, PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.length).isEqualTo(1);
|
assertThat(result.length).isEqualTo(1);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
||||||
@ -1024,21 +1105,23 @@ public final class DefaultTrackSelectorTest {
|
|||||||
|
|
||||||
// Without an explicit language preference, prefer the first renderer.
|
// Without an explicit language preference, prefer the first renderer.
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german));
|
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(english);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(english);
|
||||||
assertThat(result.selections.get(1)).isNull();
|
assertThat(result.selections.get(1)).isNull();
|
||||||
|
|
||||||
// Explicit language preference for english. First renderer should be used.
|
// Explicit language preference for english. First renderer should be used.
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
trackSelector.buildUponParameters().setPreferredAudioLanguage("en"));
|
trackSelector.buildUponParameters().setPreferredAudioLanguage("en"));
|
||||||
result = trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german));
|
result =
|
||||||
|
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0).getFormat(0)).isSameAs(english);
|
assertThat(result.selections.get(0).getFormat(0)).isSameAs(english);
|
||||||
assertThat(result.selections.get(1)).isNull();
|
assertThat(result.selections.get(1)).isNull();
|
||||||
|
|
||||||
// Explicit language preference for German. Second renderer should be used.
|
// Explicit language preference for German. Second renderer should be used.
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
trackSelector.buildUponParameters().setPreferredAudioLanguage("de"));
|
trackSelector.buildUponParameters().setPreferredAudioLanguage("de"));
|
||||||
result = trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german));
|
result =
|
||||||
|
trackSelector.selectTracks(rendererCapabilities, wrapFormats(english, german), PERIOD_ID);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
assertThat(result.selections.get(1).getFormat(0)).isSameAs(german);
|
assertThat(result.selections.get(1).getFormat(0)).isSameAs(german);
|
||||||
}
|
}
|
||||||
@ -1057,7 +1140,7 @@ public final class DefaultTrackSelectorTest {
|
|||||||
TrackGroupArray trackGroupArray = singleTrackGroup(VIDEO_FORMAT, VIDEO_FORMAT);
|
TrackGroupArray trackGroupArray = singleTrackGroup(VIDEO_FORMAT, VIDEO_FORMAT);
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroupArray);
|
new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroupArray, PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.length).isEqualTo(1);
|
assertThat(result.length).isEqualTo(1);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
||||||
@ -1086,7 +1169,7 @@ public final class DefaultTrackSelectorTest {
|
|||||||
new SelectionOverride(/* groupIndex= */ 0, /* tracks= */ 1, 2)));
|
new SelectionOverride(/* groupIndex= */ 0, /* tracks= */ 1, 2)));
|
||||||
TrackSelectorResult result =
|
TrackSelectorResult result =
|
||||||
trackSelector.selectTracks(
|
trackSelector.selectTracks(
|
||||||
new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroupArray);
|
new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroupArray, PERIOD_ID);
|
||||||
|
|
||||||
assertThat(result.length).isEqualTo(1);
|
assertThat(result.length).isEqualTo(1);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
assertThat(result.selections.get(0)).isEqualTo(adaptiveTrackSelection);
|
||||||
|
@ -23,6 +23,7 @@ import com.google.android.exoplayer2.ExoPlaybackException;
|
|||||||
import com.google.android.exoplayer2.Format;
|
import com.google.android.exoplayer2.Format;
|
||||||
import com.google.android.exoplayer2.RendererCapabilities;
|
import com.google.android.exoplayer2.RendererCapabilities;
|
||||||
import com.google.android.exoplayer2.RendererConfiguration;
|
import com.google.android.exoplayer2.RendererConfiguration;
|
||||||
|
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
|
||||||
import com.google.android.exoplayer2.source.TrackGroup;
|
import com.google.android.exoplayer2.source.TrackGroup;
|
||||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
@ -51,6 +52,7 @@ public final class MappingTrackSelectorTest {
|
|||||||
Format.NO_VALUE, 2, 44100, null, null, 0, null));
|
Format.NO_VALUE, 2, 44100, null, null, 0, null));
|
||||||
private static final TrackGroupArray TRACK_GROUPS = new TrackGroupArray(
|
private static final TrackGroupArray TRACK_GROUPS = new TrackGroupArray(
|
||||||
VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP);
|
VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP);
|
||||||
|
private static final MediaPeriodId PERIOD_ID = new MediaPeriodId(/* periodUid= */ new Object());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests that the video and audio track groups are mapped onto the correct renderers.
|
* Tests that the video and audio track groups are mapped onto the correct renderers.
|
||||||
@ -58,7 +60,7 @@ public final class MappingTrackSelectorTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testMapping() throws ExoPlaybackException {
|
public void testMapping() throws ExoPlaybackException {
|
||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector();
|
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector();
|
||||||
trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS, PERIOD_ID);
|
||||||
trackSelector.assertMappedTrackGroups(0, VIDEO_TRACK_GROUP);
|
trackSelector.assertMappedTrackGroups(0, VIDEO_TRACK_GROUP);
|
||||||
trackSelector.assertMappedTrackGroups(1, AUDIO_TRACK_GROUP);
|
trackSelector.assertMappedTrackGroups(1, AUDIO_TRACK_GROUP);
|
||||||
}
|
}
|
||||||
@ -72,7 +74,7 @@ public final class MappingTrackSelectorTest {
|
|||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector();
|
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector();
|
||||||
RendererCapabilities[] reverseOrderRendererCapabilities = new RendererCapabilities[] {
|
RendererCapabilities[] reverseOrderRendererCapabilities = new RendererCapabilities[] {
|
||||||
AUDIO_CAPABILITIES, VIDEO_CAPABILITIES};
|
AUDIO_CAPABILITIES, VIDEO_CAPABILITIES};
|
||||||
trackSelector.selectTracks(reverseOrderRendererCapabilities, TRACK_GROUPS);
|
trackSelector.selectTracks(reverseOrderRendererCapabilities, TRACK_GROUPS, PERIOD_ID);
|
||||||
trackSelector.assertMappedTrackGroups(0, AUDIO_TRACK_GROUP);
|
trackSelector.assertMappedTrackGroups(0, AUDIO_TRACK_GROUP);
|
||||||
trackSelector.assertMappedTrackGroups(1, VIDEO_TRACK_GROUP);
|
trackSelector.assertMappedTrackGroups(1, VIDEO_TRACK_GROUP);
|
||||||
}
|
}
|
||||||
@ -86,7 +88,7 @@ public final class MappingTrackSelectorTest {
|
|||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector();
|
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector();
|
||||||
TrackGroupArray multiTrackGroups = new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP,
|
TrackGroupArray multiTrackGroups = new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP,
|
||||||
VIDEO_TRACK_GROUP);
|
VIDEO_TRACK_GROUP);
|
||||||
trackSelector.selectTracks(RENDERER_CAPABILITIES, multiTrackGroups);
|
trackSelector.selectTracks(RENDERER_CAPABILITIES, multiTrackGroups, PERIOD_ID);
|
||||||
trackSelector.assertMappedTrackGroups(0, VIDEO_TRACK_GROUP, VIDEO_TRACK_GROUP);
|
trackSelector.assertMappedTrackGroups(0, VIDEO_TRACK_GROUP, VIDEO_TRACK_GROUP);
|
||||||
trackSelector.assertMappedTrackGroups(1, AUDIO_TRACK_GROUP);
|
trackSelector.assertMappedTrackGroups(1, AUDIO_TRACK_GROUP);
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import static org.junit.Assert.fail;
|
|||||||
|
|
||||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||||
import com.google.android.exoplayer2.RendererCapabilities;
|
import com.google.android.exoplayer2.RendererCapabilities;
|
||||||
|
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
|
||||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||||
import com.google.android.exoplayer2.trackselection.TrackSelector.InvalidationListener;
|
import com.google.android.exoplayer2.trackselection.TrackSelector.InvalidationListener;
|
||||||
import com.google.android.exoplayer2.upstream.BandwidthMeter;
|
import com.google.android.exoplayer2.upstream.BandwidthMeter;
|
||||||
@ -37,10 +38,14 @@ public class TrackSelectorTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
trackSelector = new TrackSelector() {
|
trackSelector =
|
||||||
|
new TrackSelector() {
|
||||||
@Override
|
@Override
|
||||||
public TrackSelectorResult selectTracks(RendererCapabilities[] rendererCapabilities,
|
public TrackSelectorResult selectTracks(
|
||||||
TrackGroupArray trackGroups) throws ExoPlaybackException {
|
RendererCapabilities[] rendererCapabilities,
|
||||||
|
TrackGroupArray trackGroups,
|
||||||
|
MediaPeriodId periodId)
|
||||||
|
throws ExoPlaybackException {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user