private void setRepeatModeInternal(@Player.RepeatMode int repeatMode) throws ExoPlaybackException { this.repeatMode = repeatMode; if (!queue.updateRepeatMode(repeatMode)) { seekToCurrentPosition(/* sendDiscontinuity= */ true); } handleLoadingMediaPeriodChanged(/* loadingTrackSelectionChanged= */ false); }
private void setShuffleModeEnabledInternal(boolean shuffleModeEnabled) throws ExoPlaybackException { this.shuffleModeEnabled = shuffleModeEnabled; if (!queue.updateShuffleModeEnabled(shuffleModeEnabled)) { seekToCurrentPosition(/* sendDiscontinuity= */ true); } handleLoadingMediaPeriodChanged(/* loadingTrackSelectionChanged= */ false); }
private void maybeUpdateLoadingPeriod() throws IOException { queue.reevaluateBuffer(rendererPositionUs); if (queue.shouldLoadNextMediaPeriod()) { MediaPeriodInfo info = queue.getNextMediaPeriodInfo(rendererPositionUs, playbackInfo); if (info == null) { maybeThrowSourceInfoRefreshError(); } else { MediaPeriod mediaPeriod = queue.enqueueNextMediaPeriod( rendererCapabilities, trackSelector, loadControl.getAllocator(), mediaSource, info); mediaPeriod.prepare(this, info.startPositionUs); setIsLoading(true); handleLoadingMediaPeriodChanged(/* loadingTrackSelectionChanged= */ false); } } }
handleLoadingMediaPeriodChanged(/* loadingTrackSelectionChanged= */ false); handler.sendEmptyMessage(MSG_DO_SOME_WORK); return periodPositionUs;
handleLoadingMediaPeriodChanged(/* loadingTrackSelectionChanged= */ true); if (playbackInfo.playbackState != Player.STATE_ENDED) { maybeContinueLoading();
seekToCurrentPosition(/* sendDiscontinuity= */ false); handleLoadingMediaPeriodChanged(/* loadingTrackSelectionChanged= */ false);