From 74fa0ed6bf9a4183b9ad7e220bd6810fdb7d419e Mon Sep 17 00:00:00 2001 From: samrobinson Date: Wed, 16 Aug 2023 19:19:45 +0100 Subject: [PATCH] Move FakeAssetLoader to inner class of MediaItemExportTest. MediaItemExportTest is the only class using this FakeAssetLoader, so it should be moved out of TestUtil. PiperOrigin-RevId: 557546717 --- .../transformer/MediaItemExportTest.java | 76 +++++++++++++++++- .../androidx/media3/transformer/TestUtil.java | 78 ------------------- 2 files changed, 75 insertions(+), 79 deletions(-) diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java index 6a3504240a..fa4f676930 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java @@ -58,8 +58,10 @@ import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.view.Surface; +import androidx.annotation.Nullable; import androidx.media3.common.C; import androidx.media3.common.Effect; +import androidx.media3.common.Format; import androidx.media3.common.MediaItem; import androidx.media3.common.MimeTypes; import androidx.media3.common.audio.SonicAudioProcessor; @@ -76,10 +78,10 @@ import androidx.media3.extractor.ExtractorsFactory; import androidx.media3.extractor.PositionHolder; import androidx.media3.test.utils.DumpFileAsserts; import androidx.media3.test.utils.FakeClock; -import androidx.media3.transformer.TestUtil.FakeAssetLoader; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import java.io.IOException; import java.nio.ByteBuffer; @@ -1298,4 +1300,76 @@ public final class MediaItemExportTest { } } } + + public static final class FakeAssetLoader implements AssetLoader { + + public static final class Factory implements AssetLoader.Factory { + + private final @SupportedOutputTypes int supportedOutputTypes; + @Nullable private final AtomicReference sampleConsumerRef; + + public Factory( + @SupportedOutputTypes int supportedOutputTypes, + @Nullable AtomicReference sampleConsumerRef) { + this.supportedOutputTypes = supportedOutputTypes; + this.sampleConsumerRef = sampleConsumerRef; + } + + @Override + public AssetLoader createAssetLoader( + EditedMediaItem editedMediaItem, Looper looper, Listener listener) { + return new FakeAssetLoader(listener, supportedOutputTypes, sampleConsumerRef); + } + } + + private final AssetLoader.Listener listener; + private final @SupportedOutputTypes int supportedOutputTypes; + @Nullable private final AtomicReference sampleConsumerRef; + + public FakeAssetLoader( + Listener listener, + @SupportedOutputTypes int supportedOutputTypes, + @Nullable AtomicReference sampleConsumerRef) { + this.listener = listener; + this.supportedOutputTypes = supportedOutputTypes; + this.sampleConsumerRef = sampleConsumerRef; + } + + @Override + public void start() { + listener.onDurationUs(10_000_000); + listener.onTrackCount(1); + Format format = + new Format.Builder() + .setSampleMimeType(MimeTypes.AUDIO_AAC) + .setSampleRate(44100) + .setChannelCount(2) + .build(); + try { + if (listener.onTrackAdded(format, supportedOutputTypes)) { + format = format.buildUpon().setPcmEncoding(C.ENCODING_PCM_16BIT).build(); + } + + SampleConsumer sampleConsumer = listener.onOutputFormat(format); + if (sampleConsumerRef != null) { + sampleConsumerRef.set(sampleConsumer); + } + } catch (ExportException e) { + throw new IllegalStateException(e); + } + } + + @Override + public @Transformer.ProgressState int getProgress(ProgressHolder progressHolder) { + return 0; + } + + @Override + public ImmutableMap getDecoderNames() { + return ImmutableMap.of(); + } + + @Override + public void release() {} + } } diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/TestUtil.java b/libraries/transformer/src/test/java/androidx/media3/transformer/TestUtil.java index fa0534fd53..11b6f2409d 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/TestUtil.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/TestUtil.java @@ -17,10 +17,6 @@ package androidx.media3.transformer; import android.content.Context; import android.media.MediaFormat; -import android.os.Looper; -import androidx.annotation.Nullable; -import androidx.media3.common.C; -import androidx.media3.common.Format; import androidx.media3.common.MimeTypes; import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.audio.SonicAudioProcessor; @@ -29,10 +25,8 @@ import androidx.media3.common.util.Util; import androidx.media3.test.utils.FakeClock; import androidx.test.core.app.ApplicationProvider; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.primitives.Ints; import java.util.List; -import java.util.concurrent.atomic.AtomicReference; import org.robolectric.shadows.MediaCodecInfoBuilder; import org.robolectric.shadows.ShadowMediaCodec; import org.robolectric.shadows.ShadowMediaCodecList; @@ -41,78 +35,6 @@ import org.robolectric.shadows.ShadowMediaCodecList; @UnstableApi public final class TestUtil { - public static final class FakeAssetLoader implements AssetLoader { - - public static final class Factory implements AssetLoader.Factory { - - private final @SupportedOutputTypes int supportedOutputTypes; - @Nullable private final AtomicReference sampleConsumerRef; - - public Factory( - @SupportedOutputTypes int supportedOutputTypes, - @Nullable AtomicReference sampleConsumerRef) { - this.supportedOutputTypes = supportedOutputTypes; - this.sampleConsumerRef = sampleConsumerRef; - } - - @Override - public AssetLoader createAssetLoader( - EditedMediaItem editedMediaItem, Looper looper, Listener listener) { - return new FakeAssetLoader(listener, supportedOutputTypes, sampleConsumerRef); - } - } - - private final AssetLoader.Listener listener; - private final @SupportedOutputTypes int supportedOutputTypes; - @Nullable private final AtomicReference sampleConsumerRef; - - public FakeAssetLoader( - Listener listener, - @SupportedOutputTypes int supportedOutputTypes, - @Nullable AtomicReference sampleConsumerRef) { - this.listener = listener; - this.supportedOutputTypes = supportedOutputTypes; - this.sampleConsumerRef = sampleConsumerRef; - } - - @Override - public void start() { - listener.onDurationUs(10_000_000); - listener.onTrackCount(1); - Format format = - new Format.Builder() - .setSampleMimeType(MimeTypes.AUDIO_AAC) - .setSampleRate(44100) - .setChannelCount(2) - .build(); - try { - if (listener.onTrackAdded(format, supportedOutputTypes)) { - format = format.buildUpon().setPcmEncoding(C.ENCODING_PCM_16BIT).build(); - } - - SampleConsumer sampleConsumer = listener.onOutputFormat(format); - if (sampleConsumerRef != null) { - sampleConsumerRef.set(sampleConsumer); - } - } catch (ExportException e) { - throw new IllegalStateException(e); - } - } - - @Override - public @Transformer.ProgressState int getProgress(ProgressHolder progressHolder) { - return 0; - } - - @Override - public ImmutableMap getDecoderNames() { - return ImmutableMap.of(); - } - - @Override - public void release() {} - } - public static final String ASSET_URI_PREFIX = "asset:///media/"; public static final String FILE_VIDEO_ONLY = "mp4/sample_18byte_nclx_colr.mp4"; public static final String FILE_AUDIO_ONLY = "mp3/test.mp3";