diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DecoderAudioRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DecoderAudioRenderer.java index d216d18c30..5c0bb4b7fc 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DecoderAudioRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DecoderAudioRenderer.java @@ -158,7 +158,6 @@ public abstract class DecoderAudioRenderer< private boolean audioTrackNeedsConfigure; private long currentPositionUs; - private boolean allowFirstBufferPositionDiscontinuity; private boolean allowPositionDiscontinuity; private boolean inputStreamEnded; private boolean outputStreamEnded; @@ -528,7 +527,6 @@ public abstract class DecoderAudioRenderer< } inputBuffer.flip(); inputBuffer.format = inputFormat; - onQueueInputBuffer(inputBuffer); decoder.queueInputBuffer(inputBuffer); decoderReceivedBuffers = true; decoderCounters.queuedInputBufferCount++; @@ -611,7 +609,6 @@ public abstract class DecoderAudioRenderer< } currentPositionUs = positionUs; - allowFirstBufferPositionDiscontinuity = true; allowPositionDiscontinuity = true; inputStreamEnded = false; outputStreamEnded = false; @@ -812,18 +809,6 @@ public abstract class DecoderAudioRenderer< eventDispatcher.inputFormatChanged(inputFormat, evaluation); } - protected void onQueueInputBuffer(DecoderInputBuffer buffer) { - if (allowFirstBufferPositionDiscontinuity && !buffer.isDecodeOnly()) { - // TODO: Remove this hack once we have a proper fix for [Internal: b/71876314]. - // Allow the position to jump if the first presentable input buffer has a timestamp that - // differs significantly from what was expected. - if (Math.abs(buffer.timeUs - currentPositionUs) > 500000) { - currentPositionUs = buffer.timeUs; - } - allowFirstBufferPositionDiscontinuity = false; - } - } - private void updateCurrentPosition() { long newCurrentPositionUs = audioSink.getCurrentPositionUs(isEnded()); if (newCurrentPositionUs != AudioSink.CURRENT_POSITION_NOT_SET) { diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java index 9d1dc65cb4..746e531093 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java @@ -45,7 +45,6 @@ import androidx.media3.common.util.Log; import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; -import androidx.media3.decoder.DecoderInputBuffer; import androidx.media3.exoplayer.DecoderReuseEvaluation; import androidx.media3.exoplayer.DecoderReuseEvaluation.DecoderDiscardReasons; import androidx.media3.exoplayer.ExoPlaybackException; @@ -112,7 +111,6 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media @Nullable private Format decryptOnlyCodecFormat; private long currentPositionUs; - private boolean allowFirstBufferPositionDiscontinuity; private boolean allowPositionDiscontinuity; private boolean audioSinkNeedsReset; @@ -624,7 +622,6 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media } currentPositionUs = positionUs; - allowFirstBufferPositionDiscontinuity = true; allowPositionDiscontinuity = true; } @@ -701,28 +698,6 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media return audioSink.getPlaybackParameters(); } - @Override - protected void onQueueInputBuffer(DecoderInputBuffer buffer) { - if (allowFirstBufferPositionDiscontinuity && !buffer.isDecodeOnly()) { - // TODO: Remove this hack once we have a proper fix for [Internal: b/71876314]. - // Allow the position to jump if the first presentable input buffer has a timestamp that - // differs significantly from what was expected. - if (Math.abs(buffer.timeUs - currentPositionUs) > 500000) { - currentPositionUs = buffer.timeUs; - } - allowFirstBufferPositionDiscontinuity = false; - } - } - - @CallSuper - @Override - protected void onProcessedOutputBuffer(long presentationTimeUs) { - super.onProcessedOutputBuffer(presentationTimeUs); - // An output buffer has been successfully processed. If this value is not set to false then - // onQueueInputBuffer on transition from offload to codec-based playback may occur early. - allowFirstBufferPositionDiscontinuity = false; - } - @Override protected void onProcessedStreamChange() { super.onProcessedStreamChange();