diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java index d376ffee14..b3700695e5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioTrack.java @@ -1002,9 +1002,13 @@ public final class AudioTrack { ? playbackParametersCheckpoints.getLast().playbackParameters : this.playbackParameters; if (!playbackParameters.equals(lastSetPlaybackParameters)) { - // We need to change the playback parameters. Drain the audio processors so we can determine - // the frame position at which the new parameters apply. - drainingPlaybackParameters = playbackParameters; + if (isInitialized()) { + // Drain the audio processors so we can determine the frame position at which the new + // parameters apply. + drainingPlaybackParameters = playbackParameters; + } else { + this.playbackParameters = playbackParameters; + } } return this.playbackParameters; } @@ -1132,6 +1136,7 @@ public final class AudioTrack { framesPerEncodedSample = 0; if (drainingPlaybackParameters != null) { playbackParameters = drainingPlaybackParameters; + drainingPlaybackParameters = null; } else if (!playbackParametersCheckpoints.isEmpty()) { playbackParameters = playbackParametersCheckpoints.getLast().playbackParameters; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/SonicAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/SonicAudioProcessor.java index 2dc14a094d..ba18ebd65a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/SonicAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/SonicAudioProcessor.java @@ -201,9 +201,11 @@ import java.nio.ShortBuffer; @Override public void release() { sonic = null; + channelCount = Format.NO_VALUE; + sampleRateHz = Format.NO_VALUE; buffer = EMPTY_BUFFER; + shortBuffer = buffer.asShortBuffer(); outputBuffer = EMPTY_BUFFER; - shortBuffer = null; } }