Move renderers into Timeline.
The outer class should only deal with the enabled renderers. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=125579652
This commit is contained in:
parent
2073f3fce3
commit
5eca669474
@ -84,7 +84,6 @@ import java.util.ArrayList;
|
|||||||
private static final int IDLE_INTERVAL_MS = 1000;
|
private static final int IDLE_INTERVAL_MS = 1000;
|
||||||
|
|
||||||
private final TrackSelector trackSelector;
|
private final TrackSelector trackSelector;
|
||||||
private final TrackRenderer[] renderers;
|
|
||||||
private final StandaloneMediaClock standaloneMediaClock;
|
private final StandaloneMediaClock standaloneMediaClock;
|
||||||
private final long minBufferUs;
|
private final long minBufferUs;
|
||||||
private final long minRebufferUs;
|
private final long minRebufferUs;
|
||||||
@ -113,7 +112,6 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public ExoPlayerImplInternal(TrackRenderer[] renderers, TrackSelector trackSelector,
|
public ExoPlayerImplInternal(TrackRenderer[] renderers, TrackSelector trackSelector,
|
||||||
int minBufferMs, int minRebufferMs, boolean playWhenReady, Handler eventHandler) {
|
int minBufferMs, int minRebufferMs, boolean playWhenReady, Handler eventHandler) {
|
||||||
this.renderers = renderers;
|
|
||||||
this.trackSelector = trackSelector;
|
this.trackSelector = trackSelector;
|
||||||
this.minBufferUs = minBufferMs * 1000L;
|
this.minBufferUs = minBufferMs * 1000L;
|
||||||
this.minRebufferUs = minRebufferMs * 1000L;
|
this.minRebufferUs = minRebufferMs * 1000L;
|
||||||
@ -127,7 +125,7 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
standaloneMediaClock = new StandaloneMediaClock();
|
standaloneMediaClock = new StandaloneMediaClock();
|
||||||
enabledRenderers = new TrackRenderer[0];
|
enabledRenderers = new TrackRenderer[0];
|
||||||
timeline = new Timeline();
|
timeline = new Timeline(renderers);
|
||||||
playbackInfo = new PlaybackInfo(0);
|
playbackInfo = new PlaybackInfo(0);
|
||||||
|
|
||||||
trackSelector.init(this);
|
trackSelector.init(this);
|
||||||
@ -476,7 +474,7 @@ import java.util.ArrayList;
|
|||||||
private void resumeInternal() throws ExoPlaybackException {
|
private void resumeInternal() throws ExoPlaybackException {
|
||||||
boolean allRenderersEnded = true;
|
boolean allRenderersEnded = true;
|
||||||
boolean allRenderersReadyOrEnded = true;
|
boolean allRenderersReadyOrEnded = true;
|
||||||
for (TrackRenderer renderer : renderers) {
|
for (TrackRenderer renderer : enabledRenderers) {
|
||||||
allRenderersEnded = allRenderersEnded && renderer.isEnded();
|
allRenderersEnded = allRenderersEnded && renderer.isEnded();
|
||||||
allRenderersReadyOrEnded = allRenderersReadyOrEnded && isReadyOrEnded(renderer);
|
allRenderersReadyOrEnded = allRenderersReadyOrEnded && isReadyOrEnded(renderer);
|
||||||
}
|
}
|
||||||
@ -535,18 +533,16 @@ import java.util.ArrayList;
|
|||||||
standaloneMediaClock.stop();
|
standaloneMediaClock.stop();
|
||||||
rendererMediaClock = null;
|
rendererMediaClock = null;
|
||||||
rendererMediaClockSource = null;
|
rendererMediaClockSource = null;
|
||||||
enabledRenderers = new TrackRenderer[0];
|
for (TrackRenderer renderer : enabledRenderers) {
|
||||||
for (TrackRenderer renderer : renderers) {
|
|
||||||
try {
|
try {
|
||||||
ensureStopped(renderer);
|
ensureStopped(renderer);
|
||||||
if (renderer.getState() == TrackRenderer.STATE_ENABLED) {
|
|
||||||
renderer.disable();
|
renderer.disable();
|
||||||
}
|
|
||||||
} catch (ExoPlaybackException | RuntimeException e) {
|
} catch (ExoPlaybackException | RuntimeException e) {
|
||||||
// There's nothing we can do.
|
// There's nothing we can do.
|
||||||
Log.e(TAG, "Stop failed.", e);
|
Log.e(TAG, "Stop failed.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
enabledRenderers = new TrackRenderer[0];
|
||||||
sampleSource = null;
|
sampleSource = null;
|
||||||
timeline.reset();
|
timeline.reset();
|
||||||
}
|
}
|
||||||
@ -589,6 +585,8 @@ import java.util.ArrayList;
|
|||||||
*/
|
*/
|
||||||
private final class Timeline {
|
private final class Timeline {
|
||||||
|
|
||||||
|
private final TrackRenderer[] renderers;
|
||||||
|
|
||||||
// Used during track reselection.
|
// Used during track reselection.
|
||||||
private final boolean[] rendererWasEnabledFlags;
|
private final boolean[] rendererWasEnabledFlags;
|
||||||
private final ArrayList<TrackStream> oldStreams;
|
private final ArrayList<TrackStream> oldStreams;
|
||||||
@ -603,7 +601,8 @@ import java.util.ArrayList;
|
|||||||
private long playingSourceEndPositionUs;
|
private long playingSourceEndPositionUs;
|
||||||
private long bufferingSourceOffsetUs;
|
private long bufferingSourceOffsetUs;
|
||||||
|
|
||||||
public Timeline() {
|
public Timeline(TrackRenderer[] renderers) {
|
||||||
|
this.renderers = renderers;
|
||||||
rendererWasEnabledFlags = new boolean[renderers.length];
|
rendererWasEnabledFlags = new boolean[renderers.length];
|
||||||
oldStreams = new ArrayList<>();
|
oldStreams = new ArrayList<>();
|
||||||
newSelections = new ArrayList<>();
|
newSelections = new ArrayList<>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user