Skip to content

Commit

Permalink
DefaultAudioSink: Fix issue if last processor is not active
Browse files Browse the repository at this point in the history
It's incorrect to use an AudioFormat returned from AudioProcessor.configure
unless the AudioProcessor is active.

Issue: #7134
PiperOrigin-RevId: 302674132
  • Loading branch information
ojw28 committed Mar 30, 2020
1 parent 54c6084 commit ddc9833
Showing 1 changed file with 8 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -437,22 +437,21 @@ && supportsOutput(inputChannelCount, C.ENCODING_PCM_FLOAT)
if (processingEnabled) {
trimmingAudioProcessor.setTrimFrameCount(trimStartFrames, trimEndFrames);
channelMappingAudioProcessor.setChannelMap(outputChannels);
AudioProcessor.AudioFormat inputAudioFormat =
AudioProcessor.AudioFormat outputFormat =
new AudioProcessor.AudioFormat(sampleRate, channelCount, encoding);
AudioProcessor.AudioFormat outputAudioFormat = inputAudioFormat;
for (AudioProcessor audioProcessor : availableAudioProcessors) {
try {
outputAudioFormat = audioProcessor.configure(inputAudioFormat);
AudioProcessor.AudioFormat nextFormat = audioProcessor.configure(outputFormat);
if (audioProcessor.isActive()) {
outputFormat = nextFormat;
}
} catch (UnhandledAudioFormatException e) {
throw new ConfigurationException(e);
}
if (audioProcessor.isActive()) {
inputAudioFormat = outputAudioFormat;
}
}
sampleRate = outputAudioFormat.sampleRate;
channelCount = outputAudioFormat.channelCount;
encoding = outputAudioFormat.encoding;
sampleRate = outputFormat.sampleRate;
channelCount = outputFormat.channelCount;
encoding = outputFormat.encoding;
}

int outputChannelConfig = getChannelConfig(channelCount, isInputPcm);
Expand Down

0 comments on commit ddc9833

Please sign in to comment.