Commit eb496660 by samrobinson Committed by Rohit Singh

Move SonicAudioProcessor to media3.common module.

PiperOrigin-RevId: 501881646
parent 42aecce3
...@@ -29,7 +29,7 @@ import java.nio.ShortBuffer; ...@@ -29,7 +29,7 @@ import java.nio.ShortBuffer;
/** /**
* An {@link AudioProcessor} that uses the Sonic library to modify audio speed/pitch/sample rate. * An {@link AudioProcessor} that uses the Sonic library to modify audio speed/pitch/sample rate.
*/ */
public final class SonicAudioProcessor implements AudioProcessor { public class SonicAudioProcessor implements AudioProcessor {
/** Indicates that the output sample rate should be the same as the input. */ /** Indicates that the output sample rate should be the same as the input. */
public static final int SAMPLE_RATE_NO_CHANGE = -1; public static final int SAMPLE_RATE_NO_CHANGE = -1;
...@@ -82,7 +82,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -82,7 +82,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
* *
* @param speed The target factor by which playback should be sped up. * @param speed The target factor by which playback should be sped up.
*/ */
public void setSpeed(float speed) { public final void setSpeed(float speed) {
if (this.speed != speed) { if (this.speed != speed) {
this.speed = speed; this.speed = speed;
pendingSonicRecreation = true; pendingSonicRecreation = true;
...@@ -96,7 +96,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -96,7 +96,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
* *
* @param pitch The target pitch. * @param pitch The target pitch.
*/ */
public void setPitch(float pitch) { public final void setPitch(float pitch) {
if (this.pitch != pitch) { if (this.pitch != pitch) {
this.pitch = pitch; this.pitch = pitch;
pendingSonicRecreation = true; pendingSonicRecreation = true;
...@@ -111,7 +111,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -111,7 +111,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
* @param sampleRateHz The sample rate for output audio, in Hertz. * @param sampleRateHz The sample rate for output audio, in Hertz.
* @see #configure(AudioFormat) * @see #configure(AudioFormat)
*/ */
public void setOutputSampleRateHz(int sampleRateHz) { public final void setOutputSampleRateHz(int sampleRateHz) {
pendingOutputSampleRate = sampleRateHz; pendingOutputSampleRate = sampleRateHz;
} }
...@@ -126,7 +126,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -126,7 +126,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
* @param playoutDuration The playout duration to scale. * @param playoutDuration The playout duration to scale.
* @return The corresponding media duration, in the same units as {@code duration}. * @return The corresponding media duration, in the same units as {@code duration}.
*/ */
public long getMediaDuration(long playoutDuration) { public final long getMediaDuration(long playoutDuration) {
if (outputBytes >= MIN_BYTES_FOR_DURATION_SCALING_CALCULATION) { if (outputBytes >= MIN_BYTES_FOR_DURATION_SCALING_CALCULATION) {
long processedInputBytes = inputBytes - checkNotNull(sonic).getPendingInputBytes(); long processedInputBytes = inputBytes - checkNotNull(sonic).getPendingInputBytes();
return outputAudioFormat.sampleRate == inputAudioFormat.sampleRate return outputAudioFormat.sampleRate == inputAudioFormat.sampleRate
...@@ -142,7 +142,8 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -142,7 +142,8 @@ public final class SonicAudioProcessor implements AudioProcessor {
@Override @Override
@CanIgnoreReturnValue @CanIgnoreReturnValue
public AudioFormat configure(AudioFormat inputAudioFormat) throws UnhandledAudioFormatException { public final AudioFormat configure(AudioFormat inputAudioFormat)
throws UnhandledAudioFormatException {
if (inputAudioFormat.encoding != C.ENCODING_PCM_16BIT) { if (inputAudioFormat.encoding != C.ENCODING_PCM_16BIT) {
throw new UnhandledAudioFormatException(inputAudioFormat); throw new UnhandledAudioFormatException(inputAudioFormat);
} }
...@@ -158,7 +159,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -158,7 +159,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
} }
@Override @Override
public boolean isActive() { public final boolean isActive() {
return pendingOutputAudioFormat.sampleRate != Format.NO_VALUE return pendingOutputAudioFormat.sampleRate != Format.NO_VALUE
&& (Math.abs(speed - 1f) >= CLOSE_THRESHOLD && (Math.abs(speed - 1f) >= CLOSE_THRESHOLD
|| Math.abs(pitch - 1f) >= CLOSE_THRESHOLD || Math.abs(pitch - 1f) >= CLOSE_THRESHOLD
...@@ -166,7 +167,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -166,7 +167,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
} }
@Override @Override
public void queueInput(ByteBuffer inputBuffer) { public final void queueInput(ByteBuffer inputBuffer) {
if (!inputBuffer.hasRemaining()) { if (!inputBuffer.hasRemaining()) {
return; return;
} }
...@@ -179,7 +180,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -179,7 +180,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
} }
@Override @Override
public void queueEndOfStream() { public final void queueEndOfStream() {
// TODO(internal b/174554082): assert sonic is non-null here and in getOutput. // TODO(internal b/174554082): assert sonic is non-null here and in getOutput.
if (sonic != null) { if (sonic != null) {
sonic.queueEndOfStream(); sonic.queueEndOfStream();
...@@ -188,7 +189,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -188,7 +189,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
} }
@Override @Override
public ByteBuffer getOutput() { public final ByteBuffer getOutput() {
@Nullable Sonic sonic = this.sonic; @Nullable Sonic sonic = this.sonic;
if (sonic != null) { if (sonic != null) {
int outputSize = sonic.getOutputSize(); int outputSize = sonic.getOutputSize();
...@@ -212,12 +213,12 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -212,12 +213,12 @@ public final class SonicAudioProcessor implements AudioProcessor {
} }
@Override @Override
public boolean isEnded() { public final boolean isEnded() {
return inputEnded && (sonic == null || sonic.getOutputSize() == 0); return inputEnded && (sonic == null || sonic.getOutputSize() == 0);
} }
@Override @Override
public void flush() { public final void flush() {
if (isActive()) { if (isActive()) {
inputAudioFormat = pendingInputAudioFormat; inputAudioFormat = pendingInputAudioFormat;
outputAudioFormat = pendingOutputAudioFormat; outputAudioFormat = pendingOutputAudioFormat;
...@@ -240,7 +241,7 @@ public final class SonicAudioProcessor implements AudioProcessor { ...@@ -240,7 +241,7 @@ public final class SonicAudioProcessor implements AudioProcessor {
} }
@Override @Override
public void reset() { public final void reset() {
speed = 1f; speed = 1f;
pitch = 1f; pitch = 1f;
pendingInputAudioFormat = AudioFormat.NOT_SET; pendingInputAudioFormat = AudioFormat.NOT_SET;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment