mirror of
https://github.com/samsonjs/media.git
synced 2026-04-01 10:35:48 +00:00
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
This commit is contained in:
parent
27bc2e6844
commit
74fa0ed6bf
2 changed files with 75 additions and 79 deletions
|
|
@ -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<SampleConsumer> sampleConsumerRef;
|
||||
|
||||
public Factory(
|
||||
@SupportedOutputTypes int supportedOutputTypes,
|
||||
@Nullable AtomicReference<SampleConsumer> 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<SampleConsumer> sampleConsumerRef;
|
||||
|
||||
public FakeAssetLoader(
|
||||
Listener listener,
|
||||
@SupportedOutputTypes int supportedOutputTypes,
|
||||
@Nullable AtomicReference<SampleConsumer> 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<Integer, String> getDecoderNames() {
|
||||
return ImmutableMap.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void release() {}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SampleConsumer> sampleConsumerRef;
|
||||
|
||||
public Factory(
|
||||
@SupportedOutputTypes int supportedOutputTypes,
|
||||
@Nullable AtomicReference<SampleConsumer> 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<SampleConsumer> sampleConsumerRef;
|
||||
|
||||
public FakeAssetLoader(
|
||||
Listener listener,
|
||||
@SupportedOutputTypes int supportedOutputTypes,
|
||||
@Nullable AtomicReference<SampleConsumer> 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<Integer, String> 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";
|
||||
|
|
|
|||
Loading…
Reference in a new issue