mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Remove redundant state from TrackSelectorResult
A renderer configuration being null is equivalent to the renderer being disabled. Remove the redundant state. Issue: #3915 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=192126015
This commit is contained in:
parent
c54b195a29
commit
6dc6f79f64
7 changed files with 75 additions and 100 deletions
|
|
@ -92,10 +92,9 @@ import java.util.concurrent.CopyOnWriteArraySet;
|
||||||
this.listeners = new CopyOnWriteArraySet<>();
|
this.listeners = new CopyOnWriteArraySet<>();
|
||||||
emptyTrackSelectorResult =
|
emptyTrackSelectorResult =
|
||||||
new TrackSelectorResult(
|
new TrackSelectorResult(
|
||||||
new boolean[renderers.length],
|
new RendererConfiguration[renderers.length],
|
||||||
new TrackSelectionArray(new TrackSelection[renderers.length]),
|
new TrackSelection[renderers.length],
|
||||||
null,
|
null);
|
||||||
new RendererConfiguration[renderers.length]);
|
|
||||||
window = new Timeline.Window();
|
window = new Timeline.Window();
|
||||||
period = new Timeline.Period();
|
period = new Timeline.Period();
|
||||||
playbackParameters = PlaybackParameters.DEFAULT;
|
playbackParameters = PlaybackParameters.DEFAULT;
|
||||||
|
|
|
||||||
|
|
@ -1438,7 +1438,7 @@ import java.util.Collections;
|
||||||
readingPeriodHolder.mediaPeriod.readDiscontinuity() != C.TIME_UNSET;
|
readingPeriodHolder.mediaPeriod.readDiscontinuity() != C.TIME_UNSET;
|
||||||
for (int i = 0; i < renderers.length; i++) {
|
for (int i = 0; i < renderers.length; i++) {
|
||||||
Renderer renderer = renderers[i];
|
Renderer renderer = renderers[i];
|
||||||
boolean rendererWasEnabled = oldTrackSelectorResult.renderersEnabled[i];
|
boolean rendererWasEnabled = oldTrackSelectorResult.isRendererEnabled(i);
|
||||||
if (!rendererWasEnabled) {
|
if (!rendererWasEnabled) {
|
||||||
// The renderer was disabled and will be enabled when we play the next period.
|
// The renderer was disabled and will be enabled when we play the next period.
|
||||||
} else if (initialDiscontinuity) {
|
} else if (initialDiscontinuity) {
|
||||||
|
|
@ -1447,7 +1447,7 @@ import java.util.Collections;
|
||||||
renderer.setCurrentStreamFinal();
|
renderer.setCurrentStreamFinal();
|
||||||
} else if (!renderer.isCurrentStreamFinal()) {
|
} else if (!renderer.isCurrentStreamFinal()) {
|
||||||
TrackSelection newSelection = newTrackSelectorResult.selections.get(i);
|
TrackSelection newSelection = newTrackSelectorResult.selections.get(i);
|
||||||
boolean newRendererEnabled = newTrackSelectorResult.renderersEnabled[i];
|
boolean newRendererEnabled = newTrackSelectorResult.isRendererEnabled(i);
|
||||||
boolean isNoSampleRenderer = rendererCapabilities[i].getTrackType() == C.TRACK_TYPE_NONE;
|
boolean isNoSampleRenderer = rendererCapabilities[i].getTrackType() == C.TRACK_TYPE_NONE;
|
||||||
RendererConfiguration oldConfig = oldTrackSelectorResult.rendererConfigurations[i];
|
RendererConfiguration oldConfig = oldTrackSelectorResult.rendererConfigurations[i];
|
||||||
RendererConfiguration newConfig = newTrackSelectorResult.rendererConfigurations[i];
|
RendererConfiguration newConfig = newTrackSelectorResult.rendererConfigurations[i];
|
||||||
|
|
@ -1551,11 +1551,11 @@ import java.util.Collections;
|
||||||
for (int i = 0; i < renderers.length; i++) {
|
for (int i = 0; i < renderers.length; i++) {
|
||||||
Renderer renderer = renderers[i];
|
Renderer renderer = renderers[i];
|
||||||
rendererWasEnabledFlags[i] = renderer.getState() != Renderer.STATE_DISABLED;
|
rendererWasEnabledFlags[i] = renderer.getState() != Renderer.STATE_DISABLED;
|
||||||
if (newPlayingPeriodHolder.trackSelectorResult.renderersEnabled[i]) {
|
if (newPlayingPeriodHolder.trackSelectorResult.isRendererEnabled(i)) {
|
||||||
enabledRendererCount++;
|
enabledRendererCount++;
|
||||||
}
|
}
|
||||||
if (rendererWasEnabledFlags[i]
|
if (rendererWasEnabledFlags[i]
|
||||||
&& (!newPlayingPeriodHolder.trackSelectorResult.renderersEnabled[i]
|
&& (!newPlayingPeriodHolder.trackSelectorResult.isRendererEnabled(i)
|
||||||
|| (renderer.isCurrentStreamFinal()
|
|| (renderer.isCurrentStreamFinal()
|
||||||
&& renderer.getStream() == oldPlayingPeriodHolder.sampleStreams[i]))) {
|
&& renderer.getStream() == oldPlayingPeriodHolder.sampleStreams[i]))) {
|
||||||
// The renderer should be disabled before playing the next period, either because it's not
|
// The renderer should be disabled before playing the next period, either because it's not
|
||||||
|
|
@ -1576,7 +1576,7 @@ import java.util.Collections;
|
||||||
int enabledRendererCount = 0;
|
int enabledRendererCount = 0;
|
||||||
MediaPeriodHolder playingPeriodHolder = queue.getPlayingPeriod();
|
MediaPeriodHolder playingPeriodHolder = queue.getPlayingPeriod();
|
||||||
for (int i = 0; i < renderers.length; i++) {
|
for (int i = 0; i < renderers.length; i++) {
|
||||||
if (playingPeriodHolder.trackSelectorResult.renderersEnabled[i]) {
|
if (playingPeriodHolder.trackSelectorResult.isRendererEnabled(i)) {
|
||||||
enableRenderer(i, rendererWasEnabledFlags[i], enabledRendererCount++);
|
enableRenderer(i, rendererWasEnabledFlags[i], enabledRendererCount++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -179,8 +179,7 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||||
|
|
||||||
public long applyTrackSelection(
|
public long applyTrackSelection(
|
||||||
long positionUs, boolean forceRecreateStreams, boolean[] streamResetFlags) {
|
long positionUs, boolean forceRecreateStreams, boolean[] streamResetFlags) {
|
||||||
TrackSelectionArray trackSelections = trackSelectorResult.selections;
|
for (int i = 0; i < trackSelectorResult.length; i++) {
|
||||||
for (int i = 0; i < trackSelections.length; i++) {
|
|
||||||
mayRetainStreamFlags[i] =
|
mayRetainStreamFlags[i] =
|
||||||
!forceRecreateStreams && trackSelectorResult.isEquivalent(periodTrackSelectorResult, i);
|
!forceRecreateStreams && trackSelectorResult.isEquivalent(periodTrackSelectorResult, i);
|
||||||
}
|
}
|
||||||
|
|
@ -190,6 +189,7 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||||
disassociateNoSampleRenderersWithEmptySampleStream(sampleStreams);
|
disassociateNoSampleRenderersWithEmptySampleStream(sampleStreams);
|
||||||
updatePeriodTrackSelectorResult(trackSelectorResult);
|
updatePeriodTrackSelectorResult(trackSelectorResult);
|
||||||
// Disable streams on the period and get new streams for updated/newly-enabled tracks.
|
// Disable streams on the period and get new streams for updated/newly-enabled tracks.
|
||||||
|
TrackSelectionArray trackSelections = trackSelectorResult.selections;
|
||||||
positionUs =
|
positionUs =
|
||||||
mediaPeriod.selectTracks(
|
mediaPeriod.selectTracks(
|
||||||
trackSelections.getAll(),
|
trackSelections.getAll(),
|
||||||
|
|
@ -203,7 +203,7 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||||
hasEnabledTracks = false;
|
hasEnabledTracks = false;
|
||||||
for (int i = 0; i < sampleStreams.length; i++) {
|
for (int i = 0; i < sampleStreams.length; i++) {
|
||||||
if (sampleStreams[i] != null) {
|
if (sampleStreams[i] != null) {
|
||||||
Assertions.checkState(trackSelectorResult.renderersEnabled[i]);
|
Assertions.checkState(trackSelectorResult.isRendererEnabled(i));
|
||||||
// hasEnabledTracks should be true only when non-empty streams exists.
|
// hasEnabledTracks should be true only when non-empty streams exists.
|
||||||
if (rendererCapabilities[i].getTrackType() != C.TRACK_TYPE_NONE) {
|
if (rendererCapabilities[i].getTrackType() != C.TRACK_TYPE_NONE) {
|
||||||
hasEnabledTracks = true;
|
hasEnabledTracks = true;
|
||||||
|
|
@ -240,8 +240,8 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableTrackSelectionsInResult(TrackSelectorResult trackSelectorResult) {
|
private void enableTrackSelectionsInResult(TrackSelectorResult trackSelectorResult) {
|
||||||
for (int i = 0; i < trackSelectorResult.renderersEnabled.length; i++) {
|
for (int i = 0; i < trackSelectorResult.length; i++) {
|
||||||
boolean rendererEnabled = trackSelectorResult.renderersEnabled[i];
|
boolean rendererEnabled = trackSelectorResult.isRendererEnabled(i);
|
||||||
TrackSelection trackSelection = trackSelectorResult.selections.get(i);
|
TrackSelection trackSelection = trackSelectorResult.selections.get(i);
|
||||||
if (rendererEnabled && trackSelection != null) {
|
if (rendererEnabled && trackSelection != null) {
|
||||||
trackSelection.enable();
|
trackSelection.enable();
|
||||||
|
|
@ -250,8 +250,8 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void disableTrackSelectionsInResult(TrackSelectorResult trackSelectorResult) {
|
private void disableTrackSelectionsInResult(TrackSelectorResult trackSelectorResult) {
|
||||||
for (int i = 0; i < trackSelectorResult.renderersEnabled.length; i++) {
|
for (int i = 0; i < trackSelectorResult.length; i++) {
|
||||||
boolean rendererEnabled = trackSelectorResult.renderersEnabled[i];
|
boolean rendererEnabled = trackSelectorResult.isRendererEnabled(i);
|
||||||
TrackSelection trackSelection = trackSelectorResult.selections.get(i);
|
TrackSelection trackSelection = trackSelectorResult.selections.get(i);
|
||||||
if (rendererEnabled && trackSelection != null) {
|
if (rendererEnabled && trackSelection != null) {
|
||||||
trackSelection.disable();
|
trackSelection.disable();
|
||||||
|
|
@ -278,7 +278,7 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||||
private void associateNoSampleRenderersWithEmptySampleStream(SampleStream[] sampleStreams) {
|
private void associateNoSampleRenderersWithEmptySampleStream(SampleStream[] sampleStreams) {
|
||||||
for (int i = 0; i < rendererCapabilities.length; i++) {
|
for (int i = 0; i < rendererCapabilities.length; i++) {
|
||||||
if (rendererCapabilities[i].getTrackType() == C.TRACK_TYPE_NONE
|
if (rendererCapabilities[i].getTrackType() == C.TRACK_TYPE_NONE
|
||||||
&& trackSelectorResult.renderersEnabled[i]) {
|
&& trackSelectorResult.isRendererEnabled(i)) {
|
||||||
sampleStreams[i] = new EmptySampleStream();
|
sampleStreams[i] = new EmptySampleStream();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -597,11 +597,7 @@ public abstract class MappingTrackSelector extends TrackSelector {
|
||||||
maybeConfigureRenderersForTunneling(rendererCapabilities, rendererTrackGroupArrays,
|
maybeConfigureRenderersForTunneling(rendererCapabilities, rendererTrackGroupArrays,
|
||||||
rendererFormatSupports, rendererConfigurations, trackSelections, tunnelingAudioSessionId);
|
rendererFormatSupports, rendererConfigurations, trackSelections, tunnelingAudioSessionId);
|
||||||
|
|
||||||
return new TrackSelectorResult(
|
return new TrackSelectorResult(rendererConfigurations, trackSelections, mappedTrackInfo);
|
||||||
rendererEnabled,
|
|
||||||
new TrackSelectionArray(trackSelections),
|
|
||||||
mappedTrackInfo,
|
|
||||||
rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean[] determineEnabledRenderers(RendererCapabilities[] rendererCapabilities,
|
private boolean[] determineEnabledRenderers(RendererCapabilities[] rendererCapabilities,
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,10 @@ package com.google.android.exoplayer2.trackselection;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/** An array of {@link TrackSelection}s. */
|
||||||
* The result of a {@link TrackSelector} operation.
|
|
||||||
*/
|
|
||||||
public final class TrackSelectionArray {
|
public final class TrackSelectionArray {
|
||||||
|
|
||||||
/**
|
/** The length of this array. */
|
||||||
* The number of selections in the result. Greater than or equal to zero.
|
|
||||||
*/
|
|
||||||
public final int length;
|
public final int length;
|
||||||
|
|
||||||
private final TrackSelection[] trackSelections;
|
private final TrackSelection[] trackSelections;
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,13 @@ import com.google.android.exoplayer2.util.Util;
|
||||||
*/
|
*/
|
||||||
public final class TrackSelectorResult {
|
public final class TrackSelectorResult {
|
||||||
|
|
||||||
|
/** The number of selections in the result. Greater than or equal to zero. */
|
||||||
|
public final int length;
|
||||||
/**
|
/**
|
||||||
* An array containing whether each renderer is enabled after the track selection operation.
|
* A {@link RendererConfiguration} for each renderer. A null entry indicates the corresponding
|
||||||
|
* renderer should be disabled.
|
||||||
*/
|
*/
|
||||||
public final boolean[] renderersEnabled;
|
public final RendererConfiguration[] rendererConfigurations;
|
||||||
/**
|
/**
|
||||||
* A {@link TrackSelectionArray} containing the track selection for each renderer.
|
* A {@link TrackSelectionArray} containing the track selection for each renderer.
|
||||||
*/
|
*/
|
||||||
|
|
@ -36,29 +39,25 @@ public final class TrackSelectorResult {
|
||||||
* should the selections be activated.
|
* should the selections be activated.
|
||||||
*/
|
*/
|
||||||
public final Object info;
|
public final Object info;
|
||||||
/**
|
|
||||||
* A {@link RendererConfiguration} for each enabled renderer, to be used with the selections.
|
|
||||||
*/
|
|
||||||
public final RendererConfiguration[] rendererConfigurations;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param renderersEnabled An array containing whether each renderer is enabled after the track
|
* @param rendererConfigurations A {@link RendererConfiguration} for each renderer. A null entry
|
||||||
* selection operation.
|
* indicates the corresponding renderer should be disabled.
|
||||||
* @param selections A {@link TrackSelectionArray} containing the selection for each renderer.
|
* @param selections A {@link TrackSelectionArray} containing the selection for each renderer.
|
||||||
* @param info An opaque object that will be returned to {@link
|
* @param info An opaque object that will be returned to {@link
|
||||||
* TrackSelector#onSelectionActivated(Object)} should the selection be activated.
|
* TrackSelector#onSelectionActivated(Object)} should the selection be activated.
|
||||||
* @param rendererConfigurations A {@link RendererConfiguration} for each enabled renderer, to be
|
|
||||||
* used with the selections.
|
|
||||||
*/
|
*/
|
||||||
public TrackSelectorResult(
|
public TrackSelectorResult(
|
||||||
boolean[] renderersEnabled,
|
RendererConfiguration[] rendererConfigurations, TrackSelection[] selections, Object info) {
|
||||||
TrackSelectionArray selections,
|
|
||||||
Object info,
|
|
||||||
RendererConfiguration[] rendererConfigurations) {
|
|
||||||
this.renderersEnabled = renderersEnabled;
|
|
||||||
this.selections = selections;
|
|
||||||
this.info = info;
|
|
||||||
this.rendererConfigurations = rendererConfigurations;
|
this.rendererConfigurations = rendererConfigurations;
|
||||||
|
this.selections = new TrackSelectionArray(selections);
|
||||||
|
this.info = info;
|
||||||
|
length = rendererConfigurations.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns whether the renderer at the specified index is enabled. */
|
||||||
|
public boolean isRendererEnabled(int index) {
|
||||||
|
return rendererConfigurations[index] != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -95,9 +94,8 @@ public final class TrackSelectorResult {
|
||||||
if (other == null) {
|
if (other == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return renderersEnabled[index] == other.renderersEnabled[index]
|
return Util.areEqual(rendererConfigurations[index], other.rendererConfigurations[index])
|
||||||
&& Util.areEqual(selections.get(index), other.selections.get(index))
|
&& Util.areEqual(selections.get(index), other.selections.get(index));
|
||||||
&& Util.areEqual(rendererConfigurations[index], other.rendererConfigurations[index]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -121,11 +121,9 @@ public final class MappingTrackSelectorTest {
|
||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector(
|
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector(
|
||||||
TRACK_SELECTIONS);
|
TRACK_SELECTIONS);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(TRACK_SELECTIONS[0]);
|
assertTrackSelections(result, TRACK_SELECTIONS);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(TRACK_SELECTIONS[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(new boolean[] {true, true}).isEqualTo(result.renderersEnabled);
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -137,11 +135,9 @@ public final class MappingTrackSelectorTest {
|
||||||
TRACK_SELECTIONS);
|
TRACK_SELECTIONS);
|
||||||
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertTrackSelections(result, new TrackSelection[] {null, TRACK_SELECTIONS[1]});
|
||||||
assertThat(result.selections.get(1)).isEqualTo(TRACK_SELECTIONS[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(new boolean[] {false, true}).isEqualTo(result.renderersEnabled);
|
.isEqualTo(new RendererConfiguration[] {null, DEFAULT});
|
||||||
assertThat(new RendererConfiguration[] {null, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -154,11 +150,9 @@ public final class MappingTrackSelectorTest {
|
||||||
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
||||||
trackSelector.clearSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP));
|
trackSelector.clearSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP));
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES, TRACK_GROUPS);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(TRACK_SELECTIONS[0]);
|
assertTrackSelections(result, TRACK_SELECTIONS);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(TRACK_SELECTIONS[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(new boolean[] {true, true}).isEqualTo(result.renderersEnabled);
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -171,11 +165,9 @@ public final class MappingTrackSelectorTest {
|
||||||
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES,
|
TrackSelectorResult result = trackSelector.selectTracks(RENDERER_CAPABILITIES,
|
||||||
new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP, VIDEO_TRACK_GROUP));
|
new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP, VIDEO_TRACK_GROUP));
|
||||||
assertThat(result.selections.get(0)).isEqualTo(TRACK_SELECTIONS[0]);
|
assertTrackSelections(result, TRACK_SELECTIONS);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(TRACK_SELECTIONS[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(new boolean[] {true, true}).isEqualTo(result.renderersEnabled);
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT});
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -186,16 +178,13 @@ public final class MappingTrackSelectorTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testSelectTracksWithNoSampleRenderer() throws ExoPlaybackException {
|
public void testSelectTracksWithNoSampleRenderer() throws ExoPlaybackException {
|
||||||
TrackSelection[] expectedTrackSelection = TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER;
|
FakeMappingTrackSelector trackSelector =
|
||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector(expectedTrackSelection);
|
new FakeMappingTrackSelector(TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result = trackSelector.selectTracks(
|
||||||
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(expectedTrackSelection[0]);
|
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(result.selections.get(2)).isNull();
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT, DEFAULT});
|
||||||
assertThat(new boolean[] {true, true, true}).isEqualTo(result.renderersEnabled);
|
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -211,9 +200,8 @@ public final class MappingTrackSelectorTest {
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertThat(result.selections.get(0)).isNull();
|
||||||
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
||||||
assertThat(result.selections.get(2)).isNull();
|
assertThat(result.selections.get(2)).isNull();
|
||||||
assertThat(new boolean[] {false, true, true}).isEqualTo(result.renderersEnabled);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(new RendererConfiguration[] {null, DEFAULT, DEFAULT})
|
.isEqualTo(new RendererConfiguration[] {null, DEFAULT, DEFAULT});
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -222,18 +210,15 @@ public final class MappingTrackSelectorTest {
|
||||||
@Test
|
@Test
|
||||||
public void testSelectTracksWithNoSampleRendererWithClearedNullOverride()
|
public void testSelectTracksWithNoSampleRendererWithClearedNullOverride()
|
||||||
throws ExoPlaybackException {
|
throws ExoPlaybackException {
|
||||||
TrackSelection[] expectedTrackSelection = TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER;
|
FakeMappingTrackSelector trackSelector =
|
||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector(expectedTrackSelection);
|
new FakeMappingTrackSelector(TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
trackSelector.setSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP), null);
|
||||||
trackSelector.clearSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP));
|
trackSelector.clearSelectionOverride(0, new TrackGroupArray(VIDEO_TRACK_GROUP));
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result = trackSelector.selectTracks(
|
||||||
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
||||||
assertThat(result.selections.get(0)).isEqualTo(expectedTrackSelection[0]);
|
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(result.selections.get(2)).isNull();
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT, DEFAULT});
|
||||||
assertThat(new boolean[] {true, true, true}).isEqualTo(result.renderersEnabled);
|
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -249,12 +234,9 @@ public final class MappingTrackSelectorTest {
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result = trackSelector.selectTracks(
|
||||||
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER,
|
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER,
|
||||||
new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP, VIDEO_TRACK_GROUP));
|
new TrackGroupArray(VIDEO_TRACK_GROUP, AUDIO_TRACK_GROUP, VIDEO_TRACK_GROUP));
|
||||||
assertThat(result.selections.get(0)).isEqualTo(expectedTrackSelection[0]);
|
assertTrackSelections(result, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
assertThat(result.rendererConfigurations)
|
||||||
assertThat(result.selections.get(2)).isNull();
|
.isEqualTo(new RendererConfiguration[] {DEFAULT, DEFAULT, DEFAULT});
|
||||||
assertThat(new boolean[] {true, true, true}).isEqualTo(result.renderersEnabled);
|
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT, DEFAULT})
|
|
||||||
.isEqualTo(result.rendererConfigurations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -263,15 +245,13 @@ public final class MappingTrackSelectorTest {
|
||||||
@Test
|
@Test
|
||||||
public void testSelectTracksDisablingNormalRendererWithNoSampleRenderer()
|
public void testSelectTracksDisablingNormalRendererWithNoSampleRenderer()
|
||||||
throws ExoPlaybackException {
|
throws ExoPlaybackException {
|
||||||
TrackSelection[] expectedTrackSelection = TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER;
|
FakeMappingTrackSelector trackSelector =
|
||||||
FakeMappingTrackSelector trackSelector = new FakeMappingTrackSelector(expectedTrackSelection);
|
new FakeMappingTrackSelector(TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER);
|
||||||
trackSelector.setRendererDisabled(0, true);
|
trackSelector.setRendererDisabled(0, true);
|
||||||
TrackSelectorResult result = trackSelector.selectTracks(
|
TrackSelectorResult result = trackSelector.selectTracks(
|
||||||
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
RENDERER_CAPABILITIES_WITH_NO_SAMPLE_RENDERER, TRACK_GROUPS);
|
||||||
assertThat(result.selections.get(0)).isNull();
|
assertTrackSelections(
|
||||||
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
result, new TrackSelection[] {null, TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER[1], null});
|
||||||
assertThat(result.selections.get(2)).isNull();
|
|
||||||
assertThat(new boolean[] {false, true, true}).isEqualTo(result.renderersEnabled);
|
|
||||||
assertThat(new RendererConfiguration[] {null, DEFAULT, DEFAULT})
|
assertThat(new RendererConfiguration[] {null, DEFAULT, DEFAULT})
|
||||||
.isEqualTo(result.rendererConfigurations);
|
.isEqualTo(result.rendererConfigurations);
|
||||||
}
|
}
|
||||||
|
|
@ -290,11 +270,17 @@ public final class MappingTrackSelectorTest {
|
||||||
assertThat(result.selections.get(0)).isEqualTo(expectedTrackSelection[0]);
|
assertThat(result.selections.get(0)).isEqualTo(expectedTrackSelection[0]);
|
||||||
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
assertThat(result.selections.get(1)).isEqualTo(expectedTrackSelection[1]);
|
||||||
assertThat(result.selections.get(2)).isNull();
|
assertThat(result.selections.get(2)).isNull();
|
||||||
assertThat(new boolean[] {true, true, false}).isEqualTo(result.renderersEnabled);
|
|
||||||
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT, null})
|
assertThat(new RendererConfiguration[] {DEFAULT, DEFAULT, null})
|
||||||
.isEqualTo(result.rendererConfigurations);
|
.isEqualTo(result.rendererConfigurations);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void assertTrackSelections(TrackSelectorResult result, TrackSelection[] expected) {
|
||||||
|
assertThat(result.length).isEqualTo(expected.length);
|
||||||
|
for (int i = 0; i < expected.length; i++) {
|
||||||
|
assertThat(result.selections.get(i)).isEqualTo(expected[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link MappingTrackSelector} that returns a fixed result from
|
* A {@link MappingTrackSelector} that returns a fixed result from
|
||||||
* {@link #selectTracks(RendererCapabilities[], TrackGroupArray[], int[][][])}.
|
* {@link #selectTracks(RendererCapabilities[], TrackGroupArray[], int[][][])}.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue