diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java index 183b718932..14854a9284 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java @@ -2380,7 +2380,11 @@ import java.util.concurrent.atomic.AtomicBoolean; preloading.prepare(/* callback= */ this, preloading.info.startPositionUs); } else { preloading.continueLoading( - rendererPositionUs, playbackInfo.playbackParameters.speed, lastRebufferRealtimeMs); + new LoadingInfo.Builder() + .setPlaybackPositionUs(preloading.toPeriodTime(rendererPositionUs)) + .setPlaybackSpeed(mediaClock.getPlaybackParameters().speed) + .setLastRebufferRealtimeMs(lastRebufferRealtimeMs) + .build()); } } @@ -2647,10 +2651,13 @@ import java.util.concurrent.atomic.AtomicBoolean; private void maybeContinueLoading() { shouldContinueLoading = shouldContinueLoading(); if (shouldContinueLoading) { - queue - .getLoadingPeriod() - .continueLoading( - rendererPositionUs, mediaClock.getPlaybackParameters().speed, lastRebufferRealtimeMs); + MediaPeriodHolder loadingPeriod = checkNotNull(queue.getLoadingPeriod()); + loadingPeriod.continueLoading( + new LoadingInfo.Builder() + .setPlaybackPositionUs(loadingPeriod.toPeriodTime(rendererPositionUs)) + .setPlaybackSpeed(mediaClock.getPlaybackParameters().speed) + .setLastRebufferRealtimeMs(lastRebufferRealtimeMs) + .build()); } updateIsLoading(); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodHolder.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodHolder.java index e5721c40c9..cb82d463be 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodHolder.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodHolder.java @@ -235,25 +235,15 @@ import java.io.IOException; } /** - * Continues loading the media period at the given renderer position. Should only be called if + * Continues loading the media period with the given {@link LoadingInfo}. Should only be called if * this is the loading media period. * - * @param rendererPositionUs The load position in renderer time, in microseconds. - * @param playbackSpeed The playback speed indicating the current rate of playback. - * @param lastRebufferRealtimeMs The time at which the last rebuffering occurred, in milliseconds - * since boot including time spent in sleep. The time base used is the same as that measured - * by {@link android.os.SystemClock#elapsedRealtime}. + * @param loadingInfo The {@link LoadingInfo} about the current player state relevant to this load + * request. */ - public void continueLoading( - long rendererPositionUs, float playbackSpeed, long lastRebufferRealtimeMs) { + public void continueLoading(LoadingInfo loadingInfo) { checkState(isLoadingMediaPeriod()); - long loadingPeriodPositionUs = toPeriodTime(rendererPositionUs); - mediaPeriod.continueLoading( - new LoadingInfo.Builder() - .setPlaybackPositionUs(loadingPeriodPositionUs) - .setPlaybackSpeed(playbackSpeed) - .setLastRebufferRealtimeMs(lastRebufferRealtimeMs) - .build()); + mediaPeriod.continueLoading(loadingInfo); } /**