DefaultAudioSink: Fix issue if last processor is not active
It's incorrect to use an AudioFormat returned from AudioProcessor.configure unless the AudioProcessor is active. Issue: #7134 PiperOrigin-RevId: 302674132
This commit is contained in:
parent
9ed471651e
commit
3a6a037520
@ -458,22 +458,21 @@ public final class DefaultAudioSink implements AudioSink {
|
|||||||
if (processingEnabled) {
|
if (processingEnabled) {
|
||||||
trimmingAudioProcessor.setTrimFrameCount(trimStartFrames, trimEndFrames);
|
trimmingAudioProcessor.setTrimFrameCount(trimStartFrames, trimEndFrames);
|
||||||
channelMappingAudioProcessor.setChannelMap(outputChannels);
|
channelMappingAudioProcessor.setChannelMap(outputChannels);
|
||||||
AudioProcessor.AudioFormat inputAudioFormat =
|
AudioProcessor.AudioFormat outputFormat =
|
||||||
new AudioProcessor.AudioFormat(sampleRate, channelCount, encoding);
|
new AudioProcessor.AudioFormat(sampleRate, channelCount, encoding);
|
||||||
AudioProcessor.AudioFormat outputAudioFormat = inputAudioFormat;
|
|
||||||
for (AudioProcessor audioProcessor : availableAudioProcessors) {
|
for (AudioProcessor audioProcessor : availableAudioProcessors) {
|
||||||
try {
|
try {
|
||||||
outputAudioFormat = audioProcessor.configure(inputAudioFormat);
|
AudioProcessor.AudioFormat nextFormat = audioProcessor.configure(outputFormat);
|
||||||
|
if (audioProcessor.isActive()) {
|
||||||
|
outputFormat = nextFormat;
|
||||||
|
}
|
||||||
} catch (UnhandledAudioFormatException e) {
|
} catch (UnhandledAudioFormatException e) {
|
||||||
throw new ConfigurationException(e);
|
throw new ConfigurationException(e);
|
||||||
}
|
}
|
||||||
if (audioProcessor.isActive()) {
|
|
||||||
inputAudioFormat = outputAudioFormat;
|
|
||||||
}
|
}
|
||||||
}
|
sampleRate = outputFormat.sampleRate;
|
||||||
sampleRate = outputAudioFormat.sampleRate;
|
channelCount = outputFormat.channelCount;
|
||||||
channelCount = outputAudioFormat.channelCount;
|
encoding = outputFormat.encoding;
|
||||||
encoding = outputAudioFormat.encoding;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int outputChannelConfig = getChannelConfig(channelCount, isInputPcm);
|
int outputChannelConfig = getChannelConfig(channelCount, isInputPcm);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user