Search in sources :

Example 1 with StandaloneMediaClock

use of com.google.android.exoplayer2.util.StandaloneMediaClock in project ExoPlayer by google.

the class ExoPlayerImplInternal method setPlayingPeriodHolder.

private void setPlayingPeriodHolder(MediaPeriodHolder periodHolder) throws ExoPlaybackException {
    if (playingPeriodHolder == periodHolder) {
        return;
    }
    int enabledRendererCount = 0;
    boolean[] rendererWasEnabledFlags = new boolean[renderers.length];
    for (int i = 0; i < renderers.length; i++) {
        Renderer renderer = renderers[i];
        rendererWasEnabledFlags[i] = renderer.getState() != Renderer.STATE_DISABLED;
        TrackSelection newSelection = periodHolder.trackSelectorResult.selections.get(i);
        if (newSelection != null) {
            enabledRendererCount++;
        }
        if (rendererWasEnabledFlags[i] && (newSelection == null || (renderer.isCurrentStreamFinal() && renderer.getStream() == playingPeriodHolder.sampleStreams[i]))) {
            // is final and it's not reading ahead.
            if (renderer == rendererMediaClockSource) {
                // Sync standaloneMediaClock so that it can take over timing responsibilities.
                standaloneMediaClock.setPositionUs(rendererMediaClock.getPositionUs());
                rendererMediaClock = null;
                rendererMediaClockSource = null;
            }
            ensureStopped(renderer);
            renderer.disable();
        }
    }
    playingPeriodHolder = periodHolder;
    eventHandler.obtainMessage(MSG_TRACKS_CHANGED, periodHolder.trackSelectorResult).sendToTarget();
    enableRenderers(rendererWasEnabledFlags, enabledRendererCount);
}
Also used : TrackSelection(com.google.android.exoplayer2.trackselection.TrackSelection)

Aggregations

TrackSelection (com.google.android.exoplayer2.trackselection.TrackSelection)1