From 03006f0595ee6b82fdee6dd5050df53d00451140 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Thu, 14 Feb 2019 21:23:47 +0000 Subject: [PATCH] Fix some AudioProcessor nits - Fix nullness warnings - Fix annotations - Make TeeAudioProcessor flush its sink for every format change PiperOrigin-RevId: 234017068 --- .../exoplayer2/ext/gvr/GvrAudioProcessor.java | 5 ++--- .../audio/ChannelMappingAudioProcessor.java | 6 +++--- .../audio/FloatResamplingAudioProcessor.java | 2 +- .../audio/ResamplingAudioProcessor.java | 2 +- .../audio/SilenceSkippingAudioProcessor.java | 2 +- .../exoplayer2/audio/SonicAudioProcessor.java | 7 +++---- .../exoplayer2/audio/TeeAudioProcessor.java | 19 ++++++++++--------- .../audio/TrimmingAudioProcessor.java | 2 +- 8 files changed, 22 insertions(+), 23 deletions(-) diff --git a/extensions/gvr/src/main/java/com/google/android/exoplayer2/ext/gvr/GvrAudioProcessor.java b/extensions/gvr/src/main/java/com/google/android/exoplayer2/ext/gvr/GvrAudioProcessor.java index eca31c98e4..b3429ef06d 100644 --- a/extensions/gvr/src/main/java/com/google/android/exoplayer2/ext/gvr/GvrAudioProcessor.java +++ b/extensions/gvr/src/main/java/com/google/android/exoplayer2/ext/gvr/GvrAudioProcessor.java @@ -194,10 +194,9 @@ public final class GvrAudioProcessor implements AudioProcessor { } private void maybeReleaseGvrAudioSurround() { - if (this.gvrAudioSurround != null) { - GvrAudioSurround gvrAudioSurround = this.gvrAudioSurround; - this.gvrAudioSurround = null; + if (gvrAudioSurround != null) { gvrAudioSurround.release(); + gvrAudioSurround = null; } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/ChannelMappingAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/ChannelMappingAudioProcessor.java index e53eb08c83..a6d4d08077 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/ChannelMappingAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/ChannelMappingAudioProcessor.java @@ -32,10 +32,10 @@ import java.util.Arrays; private int channelCount; private int sampleRateHz; - private @Nullable int[] pendingOutputChannels; + @Nullable private int[] pendingOutputChannels; private boolean active; - private @Nullable int[] outputChannels; + @Nullable private int[] outputChannels; private ByteBuffer buffer; private ByteBuffer outputBuffer; private boolean inputEnded; @@ -112,7 +112,7 @@ import java.util.Arrays; @Override public void queueInput(ByteBuffer inputBuffer) { - Assertions.checkState(outputChannels != null); + int[] outputChannels = Assertions.checkNotNull(this.outputChannels); int position = inputBuffer.position(); int limit = inputBuffer.limit(); int frameCount = (limit - position) / (2 * channelCount); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/FloatResamplingAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/FloatResamplingAudioProcessor.java index e3c91cd344..c347cce0d8 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/FloatResamplingAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/FloatResamplingAudioProcessor.java @@ -32,7 +32,7 @@ import java.nio.ByteOrder; private int sampleRateHz; private int channelCount; - private @C.PcmEncoding int sourceEncoding; + @C.PcmEncoding private int sourceEncoding; private ByteBuffer buffer; private ByteBuffer outputBuffer; private boolean inputEnded; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/ResamplingAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/ResamplingAudioProcessor.java index 3ae1a393f9..ba84b06e95 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/ResamplingAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/ResamplingAudioProcessor.java @@ -28,7 +28,7 @@ import java.nio.ByteOrder; private int sampleRateHz; private int channelCount; - private @C.PcmEncoding int encoding; + @C.PcmEncoding private int encoding; private ByteBuffer buffer; private ByteBuffer outputBuffer; private boolean inputEnded; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessor.java index a1ff7028c1..1149a10fb8 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/SilenceSkippingAudioProcessor.java @@ -93,7 +93,7 @@ public final class SilenceSkippingAudioProcessor implements AudioProcessor { */ private byte[] paddingBuffer; - private @State int state; + @State private int state; private int maybeSilenceBufferSize; private int paddingSize; private boolean hasOutputNoise; 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 2ca2d47828..28fd38cccb 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 @@ -69,7 +69,7 @@ public final class SonicAudioProcessor implements AudioProcessor { private int outputSampleRateHz; private int pendingOutputSampleRateHz; - private @Nullable Sonic sonic; + @Nullable private Sonic sonic; private ByteBuffer buffer; private ShortBuffer shortBuffer; private ByteBuffer outputBuffer; @@ -201,7 +201,7 @@ public final class SonicAudioProcessor implements AudioProcessor { @Override public void queueInput(ByteBuffer inputBuffer) { - Assertions.checkState(sonic != null); + Sonic sonic = Assertions.checkNotNull(this.sonic); if (inputBuffer.hasRemaining()) { ShortBuffer shortBuffer = inputBuffer.asShortBuffer(); int inputSize = inputBuffer.remaining(); @@ -227,8 +227,7 @@ public final class SonicAudioProcessor implements AudioProcessor { @Override public void queueEndOfStream() { - Assertions.checkState(sonic != null); - sonic.queueEndOfStream(); + Assertions.checkNotNull(sonic).queueEndOfStream(); inputEnded = true; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/TeeAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/TeeAudioProcessor.java index 0072b7c2a3..442ade6afb 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/TeeAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/TeeAudioProcessor.java @@ -56,8 +56,7 @@ public final class TeeAudioProcessor implements AudioProcessor { private int sampleRateHz; private int channelCount; - private @C.Encoding int encoding; - private boolean isActive; + @C.Encoding private int encoding; private ByteBuffer buffer; private ByteBuffer outputBuffer; @@ -79,19 +78,21 @@ public final class TeeAudioProcessor implements AudioProcessor { } @Override - public boolean configure(int sampleRateHz, int channelCount, @C.Encoding int encoding) - throws UnhandledFormatException { + public boolean configure(int sampleRateHz, int channelCount, @C.Encoding int encoding) { + boolean formatChanged = + sampleRateHz != this.sampleRateHz + || channelCount != this.channelCount + || encoding != this.encoding; this.sampleRateHz = sampleRateHz; this.channelCount = channelCount; this.encoding = encoding; - boolean wasActive = isActive; - isActive = true; - return !wasActive; + // The sink always needs to be flushed if the format is changing. + return formatChanged; } @Override public boolean isActive() { - return isActive; + return sampleRateHz != Format.NO_VALUE; } @Override @@ -145,7 +146,7 @@ public final class TeeAudioProcessor implements AudioProcessor { @SuppressWarnings("ReferenceEquality") @Override public boolean isEnded() { - return inputEnded && buffer == EMPTY_BUFFER; + return inputEnded && outputBuffer == EMPTY_BUFFER; } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/TrimmingAudioProcessor.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/TrimmingAudioProcessor.java index 7b66bd63d2..3225defaf9 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/TrimmingAudioProcessor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/TrimmingAudioProcessor.java @@ -25,7 +25,7 @@ import java.nio.ByteOrder; /** Audio processor for trimming samples from the start/end of data. */ /* package */ final class TrimmingAudioProcessor implements AudioProcessor { - private static final int OUTPUT_ENCODING = C.ENCODING_PCM_16BIT; + @C.Encoding private static final int OUTPUT_ENCODING = C.ENCODING_PCM_16BIT; private boolean isActive; private int trimStartFrames;