mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Save input format in Configuration
This will allow for better exception on AudioTrack error. PiperOrigin-RevId: 326091883
This commit is contained in:
parent
511a6c729e
commit
b02398ff75
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user