diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java index a289965dba..05eec98b78 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java @@ -614,12 +614,6 @@ public interface AudioSink { */ void flush(); - /** - * @deprecated Use {@link #flush()}. - */ - @Deprecated - void experimentalFlushWithoutAudioTrackRelease(); - /** Resets the sink, releasing any resources that it currently holds. */ void reset(); 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 3f4faa6ee7..3a70febabd 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 @@ -145,7 +145,6 @@ public abstract class DecoderAudioRenderer< private int encoderDelay; private int encoderPadding; - private boolean experimentalKeepAudioTrackOnSeek; private boolean firstStreamSampleRead; @Nullable private T decoder; @@ -229,14 +228,6 @@ public abstract class DecoderAudioRenderer< pendingOutputStreamOffsetsUs = new long[MAX_PENDING_OUTPUT_STREAM_OFFSET_COUNT]; } - /** - * @deprecated Experimental method being removed. - */ - @Deprecated - public void experimentalSetEnableKeepAudioTrackOnSeek(boolean enableKeepAudioTrackOnSeek) { - this.experimentalKeepAudioTrackOnSeek = enableKeepAudioTrackOnSeek; - } - @Override @Nullable public MediaClock getMediaClock() { @@ -610,11 +601,7 @@ public abstract class DecoderAudioRenderer< @Override protected void onPositionReset(long positionUs, boolean joining) throws ExoPlaybackException { - if (experimentalKeepAudioTrackOnSeek) { - audioSink.experimentalFlushWithoutAudioTrackRelease(); - } else { - audioSink.flush(); - } + audioSink.flush(); currentPositionUs = positionUs; allowPositionDiscontinuity = true; diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java index 5c070e9eeb..62c202849f 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java @@ -1444,39 +1444,6 @@ public final class DefaultAudioSink implements AudioSink { initializationExceptionPendingExceptionHolder.clear(); } - @Override - public void experimentalFlushWithoutAudioTrackRelease() { - // Prior to SDK 25, AudioTrack flush does not work as intended, and therefore it must be - // released and reinitialized. (Internal reference: b/143500232) - if (Util.SDK_INT < 25) { - flush(); - return; - } - - writeExceptionPendingExceptionHolder.clear(); - initializationExceptionPendingExceptionHolder.clear(); - - if (!isAudioTrackInitialized()) { - return; - } - - resetSinkStateForFlush(); - if (audioTrackPositionTracker.isPlaying()) { - audioTrack.pause(); - } - audioTrack.flush(); - - audioTrackPositionTracker.reset(); - audioTrackPositionTracker.setAudioTrack( - audioTrack, - /* isPassthrough= */ configuration.outputMode == OUTPUT_MODE_PASSTHROUGH, - configuration.outputEncoding, - configuration.outputPcmFrameSize, - configuration.bufferSize); - - startMediaTimeUsNeedsInit = true; - } - @Override public void reset() { flush(); diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ForwardingAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ForwardingAudioSink.java index e8472b47b5..62bfa34b3c 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ForwardingAudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ForwardingAudioSink.java @@ -199,11 +199,6 @@ public class ForwardingAudioSink implements AudioSink { sink.flush(); } - @Override - public void experimentalFlushWithoutAudioTrackRelease() { - sink.experimentalFlushWithoutAudioTrackRelease(); - } - @Override public void reset() { sink.reset(); 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 e5bb9f2f62..f2395eb1bc 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 @@ -117,8 +117,6 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media private boolean allowPositionDiscontinuity; private boolean audioSinkNeedsReset; - private boolean experimentalKeepAudioTrackOnSeek; - @Nullable private WakeupListener wakeupListener; /** @@ -273,14 +271,6 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media return TAG; } - /** - * @deprecated Experimental method being removed. - */ - @Deprecated - public void experimentalSetEnableKeepAudioTrackOnSeek(boolean enableKeepAudioTrackOnSeek) { - this.experimentalKeepAudioTrackOnSeek = enableKeepAudioTrackOnSeek; - } - @Override protected @Capabilities int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) throws DecoderQueryException { @@ -620,11 +610,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media @Override protected void onPositionReset(long positionUs, boolean joining) throws ExoPlaybackException { super.onPositionReset(positionUs, joining); - if (experimentalKeepAudioTrackOnSeek) { - audioSink.experimentalFlushWithoutAudioTrackRelease(); - } else { - audioSink.flush(); - } + audioSink.flush(); currentPositionUs = positionUs; allowPositionDiscontinuity = true; diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/DefaultAudioSinkTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/DefaultAudioSinkTest.java index bccb71ab02..0805e4d1a4 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/DefaultAudioSinkTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/DefaultAudioSinkTest.java @@ -15,7 +15,6 @@ */ package androidx.media3.exoplayer.audio; -import static androidx.media3.exoplayer.audio.AudioSink.CURRENT_POSITION_NOT_SET; import static androidx.media3.exoplayer.audio.AudioSink.SINK_FORMAT_SUPPORTED_DIRECTLY; import static androidx.media3.exoplayer.audio.AudioSink.SINK_FORMAT_SUPPORTED_WITH_TRANSCODING; import static com.google.common.truth.Truth.assertThat; @@ -317,42 +316,6 @@ public final class DefaultAudioSinkTest { assertThat(defaultAudioSink.supportsFormat(aacLcFormat)).isFalse(); } - @Test - public void handlesBufferAfterExperimentalFlush() throws Exception { - // This is demonstrating that no Exceptions are thrown as a result of handling a buffer after an - // experimental flush. - configureDefaultAudioSink(CHANNEL_COUNT_STEREO); - assertThat( - defaultAudioSink.handleBuffer( - createDefaultSilenceBuffer(), - /* presentationTimeUs= */ 0, - /* encodedAccessUnitCount= */ 1)) - .isTrue(); - - // After the experimental flush we can successfully queue more input. - defaultAudioSink.experimentalFlushWithoutAudioTrackRelease(); - assertThat( - defaultAudioSink.handleBuffer( - createDefaultSilenceBuffer(), - /* presentationTimeUs= */ 5_000, - /* encodedAccessUnitCount= */ 1)) - .isTrue(); - } - - @Test - public void getCurrentPosition_returnsUnset_afterExperimentalFlush() throws Exception { - configureDefaultAudioSink(CHANNEL_COUNT_STEREO); - assertThat( - defaultAudioSink.handleBuffer( - createDefaultSilenceBuffer(), - /* presentationTimeUs= */ 5 * C.MICROS_PER_SECOND, - /* encodedAccessUnitCount= */ 1)) - .isTrue(); - defaultAudioSink.experimentalFlushWithoutAudioTrackRelease(); - assertThat(defaultAudioSink.getCurrentPositionUs(/* sourceEnded= */ false)) - .isEqualTo(CURRENT_POSITION_NOT_SET); - } - @Test public void configure_throwsConfigurationException_withInvalidInput() { Format format = new Format.Builder().setSampleMimeType(MimeTypes.AUDIO_AAC).build();