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:
parent
6b4abf2643
commit
26db5be49a
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user