From 728619018bc30bcbfd0396ff92d65c38385100ef Mon Sep 17 00:00:00 2001 From: samrobinson Date: Wed, 25 Jan 2023 19:10:21 +0000 Subject: [PATCH] Move audio buffer/array test utility methods to TestUtil. PiperOrigin-RevId: 504611069 --- .../transformer/AudioMixerImplTest.java | 25 ++------------ .../FloatAudioMixingAlgorithmTest.java | 25 ++------------ .../android/exoplayer2/testutil/TestUtil.java | 33 ++++++++++++++++--- 3 files changed, 33 insertions(+), 50 deletions(-) diff --git a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/AudioMixerImplTest.java b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/AudioMixerImplTest.java index 6c008ebbac..ca85412328 100644 --- a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/AudioMixerImplTest.java +++ b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/AudioMixerImplTest.java @@ -15,14 +15,14 @@ */ package com.google.android.exoplayer2.transformer; +import static com.google.android.exoplayer2.testutil.TestUtil.createByteBuffer; +import static com.google.android.exoplayer2.testutil.TestUtil.createFloatArray; import static com.google.common.truth.Truth.assertThat; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.audio.AudioProcessor.AudioFormat; import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.FloatBuffer; import org.junit.Test; import org.junit.runner.RunWith; @@ -318,25 +318,4 @@ public final class AudioMixerImplTest { assertThat(mixer.getOutput().remaining()).isEqualTo(0); } - - private static ByteBuffer createByteBuffer(float[] content) { - ByteBuffer buffer = - ByteBuffer.allocateDirect(content.length * 4).order(ByteOrder.nativeOrder()); - buffer.asFloatBuffer().put(content); - return buffer; - } - - private static ByteBuffer createByteBuffer(short[] content) { - ByteBuffer byteBuffer = - ByteBuffer.allocateDirect(content.length * 2).order(ByteOrder.nativeOrder()); - byteBuffer.asShortBuffer().put(content); - return byteBuffer; - } - - private static float[] createFloatArray(ByteBuffer byteBuffer) { - FloatBuffer buffer = byteBuffer.asFloatBuffer(); - float[] content = new float[buffer.remaining()]; - buffer.get(content); - return content; - } } diff --git a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/FloatAudioMixingAlgorithmTest.java b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/FloatAudioMixingAlgorithmTest.java index b27e8d8410..eb49b4679c 100644 --- a/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/FloatAudioMixingAlgorithmTest.java +++ b/library/transformer/src/test/java/com/google/android/exoplayer2/transformer/FloatAudioMixingAlgorithmTest.java @@ -15,14 +15,14 @@ */ package com.google.android.exoplayer2.transformer; +import static com.google.android.exoplayer2.testutil.TestUtil.createByteBuffer; +import static com.google.android.exoplayer2.testutil.TestUtil.createFloatArray; import static com.google.common.truth.Truth.assertThat; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.audio.AudioProcessor.AudioFormat; import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.FloatBuffer; import org.junit.Test; import org.junit.runner.RunWith; @@ -201,25 +201,4 @@ public final class FloatAudioMixingAlgorithmTest { /* sampleRate= */ 44100, /* channelCount= */ 2, C.ENCODING_PCM_32BIT))) .isFalse(); } - - private static ByteBuffer createByteBuffer(float[] content) { - ByteBuffer byteBuffer = - ByteBuffer.allocateDirect(content.length * 4).order(ByteOrder.nativeOrder()); - byteBuffer.asFloatBuffer().put(content); - return byteBuffer; - } - - private static ByteBuffer createByteBuffer(short[] content) { - ByteBuffer byteBuffer = - ByteBuffer.allocateDirect(content.length * 2).order(ByteOrder.nativeOrder()); - byteBuffer.asShortBuffer().put(content); - return byteBuffer; - } - - private static float[] createFloatArray(ByteBuffer byteBuffer) { - FloatBuffer buffer = byteBuffer.asFloatBuffer(); - float[] content = new float[buffer.remaining()]; - buffer.get(content); - return content; - } } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestUtil.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestUtil.java index bd85f4eaea..5d721d82ab 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestUtil.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/TestUtil.java @@ -51,6 +51,8 @@ import java.io.InputStream; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; @@ -121,12 +123,35 @@ public class TestUtil { * @return The equivalent byte array. */ public static byte[] createByteArray(int... bytes) { - byte[] byteArray = new byte[bytes.length]; - for (int i = 0; i < byteArray.length; i++) { + byte[] array = new byte[bytes.length]; + for (int i = 0; i < array.length; i++) { Assertions.checkState(0x00 <= bytes[i] && bytes[i] <= 0xFF); - byteArray[i] = (byte) bytes[i]; + array[i] = (byte) bytes[i]; } - return byteArray; + return array; + } + + /** Gets the underlying data of the {@link ByteBuffer} as a {@code float[]}. */ + public static float[] createFloatArray(ByteBuffer byteBuffer) { + FloatBuffer buffer = byteBuffer.asFloatBuffer(); + float[] content = new float[buffer.remaining()]; + buffer.get(content); + return content; + } + + /** Creates a {@link ByteBuffer} containing the {@code data}. */ + public static ByteBuffer createByteBuffer(float[] data) { + ByteBuffer buffer = + ByteBuffer.allocateDirect(data.length * C.BYTES_PER_FLOAT).order(ByteOrder.nativeOrder()); + buffer.asFloatBuffer().put(data); + return buffer; + } + + /** Creates a {@link ByteBuffer} containing the {@code data}. */ + public static ByteBuffer createByteBuffer(short[] data) { + ByteBuffer buffer = ByteBuffer.allocateDirect(data.length * 2).order(ByteOrder.nativeOrder()); + buffer.asShortBuffer().put(data); + return buffer; } /**