/** * Returns the period holder in the front of the queue which is the playing period holder when * playing, or null if the queue is empty. */ public MediaPeriodHolder getFrontPeriod() { return hasPlayingPeriod() ? playing : loading; }
private void resetRendererPosition(long periodPositionUs) throws ExoPlaybackException { rendererPositionUs = !queue.hasPlayingPeriod() ? periodPositionUs : queue.getPlayingPeriod().toRendererTime(periodPositionUs); mediaClock.resetPosition(rendererPositionUs); for (Renderer renderer : enabledRenderers) { renderer.resetPosition(rendererPositionUs); } }
info); if (loading != null) { Assertions.checkState(hasPlayingPeriod()); loading.next = newPeriodHolder;
return !readingPeriodRemoved || !hasPlayingPeriod();
private void handlePeriodPrepared(MediaPeriod mediaPeriod) throws ExoPlaybackException { if (!queue.isLoading(mediaPeriod)) { // Stale event. return; } MediaPeriodHolder loadingPeriodHolder = queue.getLoadingPeriod(); loadingPeriodHolder.handlePrepared(mediaClock.getPlaybackParameters().speed); updateLoadControlTrackSelection( loadingPeriodHolder.trackGroups, loadingPeriodHolder.trackSelectorResult); if (!queue.hasPlayingPeriod()) { // This is the first prepared period, so start playing it. MediaPeriodHolder playingPeriodHolder = queue.advancePlayingPeriod(); resetRendererPosition(playingPeriodHolder.info.startPositionUs); updatePlayingPeriodRenderers(/* oldPlayingPeriodHolder= */ null); } maybeContinueLoading(); }
private void updatePlaybackPositions() throws ExoPlaybackException { if (!queue.hasPlayingPeriod()) { return;
private void reselectTracksInternal() throws ExoPlaybackException { if (!queue.hasPlayingPeriod()) {
private void doSomeWork() throws ExoPlaybackException, IOException { long operationStartTimeMs = clock.uptimeMillis(); updatePeriods(); if (!queue.hasPlayingPeriod()) {
if (!queue.hasPlayingPeriod()) {