Save input format in Configuration

This will allow for better exception
on AudioTrack error.

PiperOrigin-RevId: 326091883
This commit is contained in:
krocard 2020-08-11 21:39:01 +01:00 committed by kim-vde
parent 511a6c729e
commit b02398ff75

View File

@ -562,8 +562,8 @@ public final class DefaultAudioSink implements AudioSink {
Configuration pendingConfiguration = Configuration pendingConfiguration =
new Configuration( new Configuration(
inputFormat,
inputPcmFrameSize, inputPcmFrameSize,
inputFormat.sampleRate,
outputMode, outputMode,
outputPcmFrameSize, outputPcmFrameSize,
outputSampleRate, outputSampleRate,
@ -571,9 +571,7 @@ public final class DefaultAudioSink implements AudioSink {
outputEncoding, outputEncoding,
specifiedBufferSize, specifiedBufferSize,
canApplyPlaybackParameters, canApplyPlaybackParameters,
availableAudioProcessors, availableAudioProcessors);
inputFormat.encoderDelay,
inputFormat.encoderPadding);
if (isInitialized()) { if (isInitialized()) {
this.pendingConfiguration = pendingConfiguration; this.pendingConfiguration = pendingConfiguration;
} else { } else {
@ -616,7 +614,8 @@ public final class DefaultAudioSink implements AudioSink {
audioTrack = buildAudioTrack(); audioTrack = buildAudioTrack();
if (isOffloadedPlayback(audioTrack)) { if (isOffloadedPlayback(audioTrack)) {
registerStreamEventCallbackV29(audioTrack); registerStreamEventCallbackV29(audioTrack);
audioTrack.setOffloadDelayPadding(configuration.trimStartFrames, configuration.trimEndFrames); audioTrack.setOffloadDelayPadding(
configuration.inputFormat.encoderDelay, configuration.inputFormat.encoderPadding);
} }
int audioSessionId = audioTrack.getAudioSessionId(); int audioSessionId = audioTrack.getAudioSessionId();
if (enablePreV21AudioSessionWorkaround) { if (enablePreV21AudioSessionWorkaround) {
@ -698,7 +697,7 @@ public final class DefaultAudioSink implements AudioSink {
if (isOffloadedPlayback(audioTrack)) { if (isOffloadedPlayback(audioTrack)) {
audioTrack.setOffloadEndOfStream(); audioTrack.setOffloadEndOfStream();
audioTrack.setOffloadDelayPadding( audioTrack.setOffloadDelayPadding(
configuration.trimStartFrames, configuration.trimEndFrames); configuration.inputFormat.encoderDelay, configuration.inputFormat.encoderPadding);
} }
} }
// Re-apply playback parameters. // Re-apply playback parameters.
@ -1699,8 +1698,8 @@ public final class DefaultAudioSink implements AudioSink {
/** Stores configuration relating to the audio format. */ /** Stores configuration relating to the audio format. */
private static final class Configuration { private static final class Configuration {
public final Format inputFormat;
public final int inputPcmFrameSize; public final int inputPcmFrameSize;
public final int inputSampleRate;
@OutputMode public final int outputMode; @OutputMode public final int outputMode;
public final int outputPcmFrameSize; public final int outputPcmFrameSize;
public final int outputSampleRate; public final int outputSampleRate;
@ -1709,12 +1708,10 @@ public final class DefaultAudioSink implements AudioSink {
public final int bufferSize; public final int bufferSize;
public final boolean canApplyPlaybackParameters; public final boolean canApplyPlaybackParameters;
public final AudioProcessor[] availableAudioProcessors; public final AudioProcessor[] availableAudioProcessors;
public int trimStartFrames;
public int trimEndFrames;
public Configuration( public Configuration(
Format inputFormat,
int inputPcmFrameSize, int inputPcmFrameSize,
int inputSampleRate,
@OutputMode int outputMode, @OutputMode int outputMode,
int outputPcmFrameSize, int outputPcmFrameSize,
int outputSampleRate, int outputSampleRate,
@ -1722,11 +1719,9 @@ public final class DefaultAudioSink implements AudioSink {
int outputEncoding, int outputEncoding,
int specifiedBufferSize, int specifiedBufferSize,
boolean canApplyPlaybackParameters, boolean canApplyPlaybackParameters,
AudioProcessor[] availableAudioProcessors, AudioProcessor[] availableAudioProcessors) {
int trimStartFrames, this.inputFormat = inputFormat;
int trimEndFrames) {
this.inputPcmFrameSize = inputPcmFrameSize; this.inputPcmFrameSize = inputPcmFrameSize;
this.inputSampleRate = inputSampleRate;
this.outputMode = outputMode; this.outputMode = outputMode;
this.outputPcmFrameSize = outputPcmFrameSize; this.outputPcmFrameSize = outputPcmFrameSize;
this.outputSampleRate = outputSampleRate; this.outputSampleRate = outputSampleRate;
@ -1734,8 +1729,6 @@ public final class DefaultAudioSink implements AudioSink {
this.outputEncoding = outputEncoding; this.outputEncoding = outputEncoding;
this.canApplyPlaybackParameters = canApplyPlaybackParameters; this.canApplyPlaybackParameters = canApplyPlaybackParameters;
this.availableAudioProcessors = availableAudioProcessors; this.availableAudioProcessors = availableAudioProcessors;
this.trimStartFrames = trimStartFrames;
this.trimEndFrames = trimEndFrames;
// Call computeBufferSize() last as it depends on the other configuration values. // Call computeBufferSize() last as it depends on the other configuration values.
this.bufferSize = computeBufferSize(specifiedBufferSize); this.bufferSize = computeBufferSize(specifiedBufferSize);
@ -1751,7 +1744,7 @@ public final class DefaultAudioSink implements AudioSink {
} }
public long inputFramesToDurationUs(long frameCount) { public long inputFramesToDurationUs(long frameCount) {
return (frameCount * C.MICROS_PER_SECOND) / inputSampleRate; return (frameCount * C.MICROS_PER_SECOND) / inputFormat.sampleRate;
} }
public long framesToDurationUs(long frameCount) { public long framesToDurationUs(long frameCount) {