Commit e87e2318 by andrewlewis Committed by Oliver Woodman

Fully reset AudioProcessors on releasing AudioTrack

Issue: #2675

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=153445372
parent 83583945
...@@ -152,14 +152,19 @@ public final class GvrAudioProcessor implements AudioProcessor { ...@@ -152,14 +152,19 @@ public final class GvrAudioProcessor implements AudioProcessor {
@Override @Override
public void flush() { public void flush() {
if (gvrAudioSurround != null) {
gvrAudioSurround.flush(); gvrAudioSurround.flush();
}
inputEnded = false; inputEnded = false;
} }
@Override @Override
public synchronized void release() { public synchronized void reset() {
buffer = null;
maybeReleaseGvrAudioSurround(); maybeReleaseGvrAudioSurround();
inputEnded = false;
buffer = null;
sampleRateHz = Format.NO_VALUE;
channelCount = Format.NO_VALUE;
} }
private void maybeReleaseGvrAudioSurround() { private void maybeReleaseGvrAudioSurround() {
......
...@@ -116,8 +116,8 @@ public interface AudioProcessor { ...@@ -116,8 +116,8 @@ public interface AudioProcessor {
void flush(); void flush();
/** /**
* Releases any resources associated with this instance. * Resets the processor to its initial state.
*/ */
void release(); void reset();
} }
...@@ -1187,7 +1187,7 @@ public final class AudioTrack { ...@@ -1187,7 +1187,7 @@ public final class AudioTrack {
reset(); reset();
releaseKeepSessionIdAudioTrack(); releaseKeepSessionIdAudioTrack();
for (AudioProcessor audioProcessor : availableAudioProcessors) { for (AudioProcessor audioProcessor : availableAudioProcessors) {
audioProcessor.release(); audioProcessor.reset();
} }
audioSessionId = C.AUDIO_SESSION_ID_UNSET; audioSessionId = C.AUDIO_SESSION_ID_UNSET;
playing = false; playing = false;
......
...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.audio; ...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.audio;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.C.Encoding; import com.google.android.exoplayer2.C.Encoding;
import com.google.android.exoplayer2.Format;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;
import java.util.Arrays; import java.util.Arrays;
...@@ -43,6 +44,8 @@ import java.util.Arrays; ...@@ -43,6 +44,8 @@ import java.util.Arrays;
public ChannelMappingAudioProcessor() { public ChannelMappingAudioProcessor() {
buffer = EMPTY_BUFFER; buffer = EMPTY_BUFFER;
outputBuffer = EMPTY_BUFFER; outputBuffer = EMPTY_BUFFER;
channelCount = Format.NO_VALUE;
sampleRateHz = Format.NO_VALUE;
} }
/** /**
...@@ -147,9 +150,13 @@ import java.util.Arrays; ...@@ -147,9 +150,13 @@ import java.util.Arrays;
} }
@Override @Override
public void release() { public void reset() {
flush(); flush();
buffer = EMPTY_BUFFER; buffer = EMPTY_BUFFER;
channelCount = Format.NO_VALUE;
sampleRateHz = Format.NO_VALUE;
outputChannels = null;
active = false;
} }
} }
...@@ -168,9 +168,12 @@ import java.nio.ByteOrder; ...@@ -168,9 +168,12 @@ import java.nio.ByteOrder;
} }
@Override @Override
public void release() { public void reset() {
flush(); flush();
buffer = EMPTY_BUFFER; buffer = EMPTY_BUFFER;
sampleRateHz = Format.NO_VALUE;
channelCount = Format.NO_VALUE;
encoding = C.ENCODING_INVALID;
} }
} }
...@@ -58,9 +58,8 @@ import java.nio.ShortBuffer; ...@@ -58,9 +58,8 @@ import java.nio.ShortBuffer;
private float speed; private float speed;
private float pitch; private float pitch;
private ShortBuffer shortBuffer;
private ByteBuffer buffer; private ByteBuffer buffer;
private ShortBuffer shortBuffer;
private ByteBuffer outputBuffer; private ByteBuffer outputBuffer;
private long inputBytes; private long inputBytes;
private long outputBytes; private long outputBytes;
...@@ -199,13 +198,16 @@ import java.nio.ShortBuffer; ...@@ -199,13 +198,16 @@ import java.nio.ShortBuffer;
} }
@Override @Override
public void release() { public void reset() {
sonic = null; sonic = null;
channelCount = Format.NO_VALUE;
sampleRateHz = Format.NO_VALUE;
buffer = EMPTY_BUFFER; buffer = EMPTY_BUFFER;
shortBuffer = buffer.asShortBuffer(); shortBuffer = buffer.asShortBuffer();
outputBuffer = EMPTY_BUFFER; outputBuffer = EMPTY_BUFFER;
channelCount = Format.NO_VALUE;
sampleRateHz = Format.NO_VALUE;
inputBytes = 0;
outputBytes = 0;
inputEnded = false;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment