diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTrackPositionTracker.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTrackPositionTracker.java index 8ce02f9987..4077872649 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTrackPositionTracker.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioTrackPositionTracker.java @@ -450,9 +450,13 @@ import java.lang.reflect.Method; * @return Whether the audio track has any pending data to play out. */ public boolean hasPendingData(long writtenFrames) { - long currentPositionUs = getCurrentPositionUs(/* sourceEnded= */ false); - return writtenFrames > durationUsToSampleCount(currentPositionUs, outputSampleRate) - || forceHasPendingData(); + if (stopTimestampUs != C.TIME_UNSET) { + return writtenFrames > getPlaybackHeadPosition() || forceHasPendingData(); + } else { + long currentPositionUs = getCurrentPositionUs(/* sourceEnded= */ false); + return writtenFrames > durationUsToSampleCount(currentPositionUs, outputSampleRate) + || forceHasPendingData(); + } } /**