DefaultAudioSink: Misc cleanup

- Move output channel workaround to a block that's only executed for PCM
- Remove redundant variable

PiperOrigin-RevId: 321460898
This commit is contained in:
olly 2020-07-16 00:27:59 +01:00 committed by Oliver Woodman
parent 6b4abf2643
commit 26db5be49a

View File

@ -468,17 +468,7 @@ public final class DefaultAudioSink implements AudioSink {
@Override @Override
public void configure(Format inputFormat, int specifiedBufferSize, @Nullable int[] outputChannels) public void configure(Format inputFormat, int specifiedBufferSize, @Nullable int[] outputChannels)
throws ConfigurationException { throws ConfigurationException {
if (Util.SDK_INT < 21 && inputFormat.channelCount == 8 && outputChannels == null) {
// AudioTrack doesn't support 8 channel output before Android L. Discard the last two (side)
// channels to give a 6 channel stream that is supported.
outputChannels = new int[6];
for (int i = 0; i < outputChannels.length; i++) {
outputChannels[i] = i;
}
}
boolean isInputPcm = Util.isEncodingLinearPcm(inputFormat.encoding); boolean isInputPcm = Util.isEncodingLinearPcm(inputFormat.encoding);
boolean processingEnabled = isInputPcm;
int sampleRate = inputFormat.sampleRate; int sampleRate = inputFormat.sampleRate;
int channelCount = inputFormat.channelCount; int channelCount = inputFormat.channelCount;
@C.Encoding int encoding = inputFormat.encoding; @C.Encoding int encoding = inputFormat.encoding;
@ -486,10 +476,20 @@ public final class DefaultAudioSink implements AudioSink {
enableFloatOutput && Util.isEncodingHighResolutionPcm(inputFormat.encoding); enableFloatOutput && Util.isEncodingHighResolutionPcm(inputFormat.encoding);
AudioProcessor[] availableAudioProcessors = AudioProcessor[] availableAudioProcessors =
useFloatOutput ? toFloatPcmAvailableAudioProcessors : toIntPcmAvailableAudioProcessors; useFloatOutput ? toFloatPcmAvailableAudioProcessors : toIntPcmAvailableAudioProcessors;
if (processingEnabled) { if (isInputPcm) {
trimmingAudioProcessor.setTrimFrameCount( trimmingAudioProcessor.setTrimFrameCount(
inputFormat.encoderDelay, inputFormat.encoderPadding); inputFormat.encoderDelay, inputFormat.encoderPadding);
if (Util.SDK_INT < 21 && inputFormat.channelCount == 8 && outputChannels == null) {
// AudioTrack doesn't support 8 channel output before Android L. Discard the last two (side)
// channels to give a 6 channel stream that is supported.
outputChannels = new int[6];
for (int i = 0; i < outputChannels.length; i++) {
outputChannels[i] = i;
}
}
channelMappingAudioProcessor.setChannelMap(outputChannels); channelMappingAudioProcessor.setChannelMap(outputChannels);
AudioProcessor.AudioFormat outputFormat = AudioProcessor.AudioFormat outputFormat =
new AudioProcessor.AudioFormat(sampleRate, channelCount, encoding); new AudioProcessor.AudioFormat(sampleRate, channelCount, encoding);
for (AudioProcessor audioProcessor : availableAudioProcessors) { for (AudioProcessor audioProcessor : availableAudioProcessors) {
@ -518,7 +518,7 @@ public final class DefaultAudioSink implements AudioSink {
: C.LENGTH_UNSET; : C.LENGTH_UNSET;
int outputPcmFrameSize = int outputPcmFrameSize =
isInputPcm ? Util.getPcmFrameSize(encoding, channelCount) : C.LENGTH_UNSET; isInputPcm ? Util.getPcmFrameSize(encoding, channelCount) : C.LENGTH_UNSET;
boolean canApplyPlaybackParameters = processingEnabled && !useFloatOutput; boolean canApplyPlaybackParameters = isInputPcm && !useFloatOutput;
boolean useOffload = boolean useOffload =
enableOffload enableOffload
&& !isInputPcm && !isInputPcm
@ -540,7 +540,6 @@ public final class DefaultAudioSink implements AudioSink {
outputChannelConfig, outputChannelConfig,
encoding, encoding,
specifiedBufferSize, specifiedBufferSize,
processingEnabled,
canApplyPlaybackParameters, canApplyPlaybackParameters,
availableAudioProcessors, availableAudioProcessors,
inputFormat.encoderDelay, inputFormat.encoderDelay,
@ -900,8 +899,7 @@ public final class DefaultAudioSink implements AudioSink {
private boolean drainToEndOfStream() throws WriteException { private boolean drainToEndOfStream() throws WriteException {
boolean audioProcessorNeedsEndOfStream = false; boolean audioProcessorNeedsEndOfStream = false;
if (drainingAudioProcessorIndex == C.INDEX_UNSET) { if (drainingAudioProcessorIndex == C.INDEX_UNSET) {
drainingAudioProcessorIndex = drainingAudioProcessorIndex = configuration.isInputPcm ? 0 : activeAudioProcessors.length;
configuration.processingEnabled ? 0 : activeAudioProcessors.length;
audioProcessorNeedsEndOfStream = true; audioProcessorNeedsEndOfStream = true;
} }
while (drainingAudioProcessorIndex < activeAudioProcessors.length) { while (drainingAudioProcessorIndex < activeAudioProcessors.length) {
@ -1622,7 +1620,6 @@ public final class DefaultAudioSink implements AudioSink {
public final int outputChannelConfig; public final int outputChannelConfig;
@C.Encoding public final int outputEncoding; @C.Encoding public final int outputEncoding;
public final int bufferSize; public final int bufferSize;
public final boolean processingEnabled;
public final boolean canApplyPlaybackParameters; public final boolean canApplyPlaybackParameters;
public final AudioProcessor[] availableAudioProcessors; public final AudioProcessor[] availableAudioProcessors;
public int trimStartFrames; public int trimStartFrames;
@ -1638,7 +1635,6 @@ public final class DefaultAudioSink implements AudioSink {
int outputChannelConfig, int outputChannelConfig,
int outputEncoding, int outputEncoding,
int specifiedBufferSize, int specifiedBufferSize,
boolean processingEnabled,
boolean canApplyPlaybackParameters, boolean canApplyPlaybackParameters,
AudioProcessor[] availableAudioProcessors, AudioProcessor[] availableAudioProcessors,
int trimStartFrames, int trimStartFrames,
@ -1651,7 +1647,6 @@ public final class DefaultAudioSink implements AudioSink {
this.outputSampleRate = outputSampleRate; this.outputSampleRate = outputSampleRate;
this.outputChannelConfig = outputChannelConfig; this.outputChannelConfig = outputChannelConfig;
this.outputEncoding = outputEncoding; this.outputEncoding = outputEncoding;
this.processingEnabled = processingEnabled;
this.canApplyPlaybackParameters = canApplyPlaybackParameters; this.canApplyPlaybackParameters = canApplyPlaybackParameters;
this.availableAudioProcessors = availableAudioProcessors; this.availableAudioProcessors = availableAudioProcessors;
this.trimStartFrames = trimStartFrames; this.trimStartFrames = trimStartFrames;