mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Define TestMuxer Factory and Holder as inner classes.
PiperOrigin-RevId: 552469061
This commit is contained in:
parent
c16840573b
commit
9e975b25d1
@ -33,7 +33,6 @@ import android.content.Context;
|
||||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.test.utils.DumpFileAsserts;
|
||||
import androidx.media3.transformer.TestUtil.TestMuxerFactory.TestMuxerHolder;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@ -53,13 +52,13 @@ public class CompositionExportTest {
|
||||
|
||||
private Context context;
|
||||
private String outputPath;
|
||||
private TestMuxerHolder testMuxerHolder;
|
||||
private TestMuxer.Holder muxerHolder;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
testMuxerHolder = new TestMuxerHolder();
|
||||
muxerHolder = new TestMuxer.Holder();
|
||||
createEncodersAndDecoders();
|
||||
}
|
||||
|
||||
@ -73,7 +72,7 @@ public class CompositionExportTest {
|
||||
public void start_audioVideoTransmuxedFromDifferentSequences_producesExpectedResult()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
transformer.start(mediaItem, outputPath);
|
||||
ExportResult expectedExportResult = TransformerTestRunner.runLooper(transformer);
|
||||
@ -105,7 +104,7 @@ public class CompositionExportTest {
|
||||
@Test
|
||||
public void start_loopingTransmuxedAudio_producesExpectedResult() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem audioEditedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_ONLY)).build();
|
||||
EditedMediaItemSequence audioSequence =
|
||||
@ -135,7 +134,7 @@ public class CompositionExportTest {
|
||||
@Test
|
||||
public void start_loopingTransmuxedVideo_producesExpectedResult() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem audioEditedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_ONLY)).build();
|
||||
EditedMediaItemSequence audioSequence =
|
||||
@ -165,7 +164,7 @@ public class CompositionExportTest {
|
||||
@Test
|
||||
public void start_loopingRawAudio_producesExpectedResult() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItemSequence audioSequence =
|
||||
new EditedMediaItemSequence(
|
||||
ImmutableList.of(
|
||||
@ -198,7 +197,7 @@ public class CompositionExportTest {
|
||||
@Test
|
||||
public void start_compositionOfConcurrentAudio_isCorrect() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
|
||||
EditedMediaItem rawAudioItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
|
||||
@ -215,15 +214,13 @@ public class CompositionExportTest {
|
||||
|
||||
assertThat(exportResult.processedInputs).hasSize(2);
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW + ".concurrent"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_RAW + ".concurrent"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_audioVideoCompositionWithExtraAudio_isCorrect() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem audioVideoItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
|
||||
.build();
|
||||
@ -250,7 +247,7 @@ public class CompositionExportTest {
|
||||
@Test
|
||||
public void start_audioVideoCompositionWithLoopingAudio_isCorrect() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem audioVideoItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
|
||||
.build();
|
||||
|
@ -73,8 +73,6 @@ 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.media3.transformer.TestUtil.TestMuxerFactory;
|
||||
import androidx.media3.transformer.TestUtil.TestMuxerFactory.TestMuxerHolder;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@ -105,7 +103,7 @@ public final class MediaItemExportTest {
|
||||
|
||||
private Context context;
|
||||
private String outputPath;
|
||||
private TestMuxerHolder testMuxerHolder;
|
||||
private TestMuxer.Holder muxerHolder;
|
||||
private ProgressHolder progressHolder;
|
||||
private ArgumentCaptor<Composition> compositionArgumentCaptor;
|
||||
|
||||
@ -113,7 +111,7 @@ public final class MediaItemExportTest {
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
testMuxerHolder = new TestMuxerHolder();
|
||||
muxerHolder = new TestMuxer.Holder();
|
||||
progressHolder = new ProgressHolder();
|
||||
compositionArgumentCaptor = ArgumentCaptor.forClass(Composition.class);
|
||||
createEncodersAndDecoders();
|
||||
@ -128,20 +126,20 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_videoOnlyPassthrough_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_VIDEO_ONLY));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_VIDEO_ONLY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_audioOnlyPassthrough_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
@ -149,14 +147,14 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_UNSUPPORTED_BY_ENCODER));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_audioOnlyTranscoding_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
@ -165,27 +163,27 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_AUDIO_RAW + ".aac"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_RAW + ".aac"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_audioAndVideo_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_audioAndVideo_withClippingStartAtKeyFrame_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem =
|
||||
new MediaItem.Builder()
|
||||
.setUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S)
|
||||
@ -202,14 +200,14 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S + ".clipped"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_withSubtitles_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAudioMimeType(MimeTypes.AUDIO_AAC)
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_WITH_SUBTITLES);
|
||||
@ -218,13 +216,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_WITH_SUBTITLES));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_WITH_SUBTITLES));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_successiveExports_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
// Transform first media item.
|
||||
@ -237,13 +235,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_concurrentExports_throwsError() {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
@ -254,7 +252,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_removeAudio_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
|
||||
.setRemoveAudio(true)
|
||||
@ -264,15 +262,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".noaudio"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO + ".noaudio"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_removeVideo_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
|
||||
.setRemoveVideo(true)
|
||||
@ -282,15 +278,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".novideo"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO + ".novideo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_forceAudioTrackOnAudioOnly_isIgnored() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER);
|
||||
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||
EditedMediaItemSequence sequence =
|
||||
@ -305,14 +299,14 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_UNSUPPORTED_BY_ENCODER));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_forceAudioTrackOnAudioVideo_isIgnored() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||
EditedMediaItemSequence sequence =
|
||||
@ -326,13 +320,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_forceAudioTrackAndRemoveAudio_generatesSilentAudio() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
|
||||
.setRemoveAudio(true)
|
||||
@ -349,7 +343,7 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".silentaudio"));
|
||||
}
|
||||
|
||||
@ -357,7 +351,7 @@ public final class MediaItemExportTest {
|
||||
public void start_forceAudioTrackAndRemoveAudioWithEffects_generatesSilentAudio()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
||||
sonicAudioProcessor.setOutputSampleRateHz(48000);
|
||||
EditedMediaItem editedMediaItem =
|
||||
@ -377,14 +371,14 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".silentaudio_48000hz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_forceAudioTrackAndRemoveVideo_isIgnored() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
|
||||
.setRemoveVideo(true)
|
||||
@ -399,15 +393,13 @@ public final class MediaItemExportTest {
|
||||
transformer.start(composition, outputPath);
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".novideo"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO + ".novideo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_forceAudioTrackOnVideoOnly_generatesSilentAudio() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||
EditedMediaItemSequence sequence =
|
||||
@ -422,7 +414,7 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_VIDEO_ONLY + ".silentaudio"));
|
||||
}
|
||||
|
||||
@ -431,7 +423,7 @@ public final class MediaItemExportTest {
|
||||
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
||||
sonicAudioProcessor.setOutputSampleRateHz(48000);
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
ImmutableList<AudioProcessor> audioProcessors = ImmutableList.of(sonicAudioProcessor);
|
||||
Effects effects = new Effects(audioProcessors, /* videoEffects= */ ImmutableList.of());
|
||||
@ -442,9 +434,7 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".48000hz"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO + ".48000hz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -452,7 +442,7 @@ public final class MediaItemExportTest {
|
||||
SonicAudioProcessor sonicAudioProcessor = new SonicAudioProcessor();
|
||||
sonicAudioProcessor.setOutputSampleRateHz(48000);
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
ImmutableList<AudioProcessor> audioProcessors = ImmutableList.of(sonicAudioProcessor);
|
||||
Effects effects = new Effects(audioProcessors, /* videoEffects= */ ImmutableList.of());
|
||||
@ -469,9 +459,7 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".48000hz"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO + ".48000hz"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -480,7 +468,7 @@ public final class MediaItemExportTest {
|
||||
Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
|
||||
Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.addListener(mockListener1)
|
||||
.addListener(mockListener2)
|
||||
.addListener(mockListener3)
|
||||
@ -502,7 +490,7 @@ public final class MediaItemExportTest {
|
||||
Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
|
||||
Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.addListener(mockListener1)
|
||||
.addListener(mockListener2)
|
||||
.addListener(mockListener3)
|
||||
@ -530,7 +518,7 @@ public final class MediaItemExportTest {
|
||||
TransformationRequest fallbackTransformationRequest =
|
||||
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ true)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ true)
|
||||
.addListener(mockListener1)
|
||||
.addListener(mockListener2)
|
||||
.addListener(mockListener3)
|
||||
@ -559,7 +547,7 @@ public final class MediaItemExportTest {
|
||||
AtomicBoolean deprecatedFallbackCalled1 = new AtomicBoolean();
|
||||
AtomicBoolean deprecatedFallbackCalled2 = new AtomicBoolean();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.addListener(
|
||||
new Transformer.Listener() {
|
||||
@Override
|
||||
@ -591,7 +579,7 @@ public final class MediaItemExportTest {
|
||||
AtomicBoolean deprecatedFallbackCalled2 = new AtomicBoolean();
|
||||
AtomicBoolean deprecatedFallbackCalled3 = new AtomicBoolean();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.addListener(
|
||||
new Transformer.Listener() {
|
||||
@Override
|
||||
@ -636,7 +624,7 @@ public final class MediaItemExportTest {
|
||||
public void start_withFallback_callsDeprecatedFallbackCallbacks() throws Exception {
|
||||
AtomicBoolean deprecatedFallbackCalled = new AtomicBoolean();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ true)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ true)
|
||||
.addListener(
|
||||
new Transformer.Listener() {
|
||||
@Override
|
||||
@ -663,7 +651,7 @@ public final class MediaItemExportTest {
|
||||
Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
|
||||
Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
|
||||
Transformer transformer1 =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.addListener(mockListener1)
|
||||
.addListener(mockListener2)
|
||||
.addListener(mockListener3)
|
||||
@ -682,7 +670,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_flattenForSlowMotion_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
EditedMediaItem editedMediaItem =
|
||||
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_WITH_SEF_SLOW_MOTION))
|
||||
.setFlattenForSlowMotion(true)
|
||||
@ -692,15 +680,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_WITH_SEF_SLOW_MOTION));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_WITH_SEF_SLOW_MOTION));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_completesWithValidBitrate() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
@ -713,7 +699,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_withAudioEncoderFormatUnsupported_completesWithError() {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAudioMimeType(MimeTypes.AUDIO_AMR_NB) // unsupported by encoder, supported by muxer
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
|
||||
@ -729,7 +715,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_withAudioDecoderFormatUnsupported_completesWithError() {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER);
|
||||
@ -745,7 +731,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_withIoError_completesWithError() {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4");
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
@ -764,7 +750,7 @@ public final class MediaItemExportTest {
|
||||
TransformationRequest fallbackTransformationRequest =
|
||||
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.addListener(mockListener)
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
|
||||
@ -774,7 +760,7 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_UNSUPPORTED_BY_MUXER + ".fallback"));
|
||||
verify(mockListener)
|
||||
.onFallbackApplied(
|
||||
@ -791,7 +777,7 @@ public final class MediaItemExportTest {
|
||||
TransformationRequest fallbackTransformationRequest =
|
||||
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ true)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ true)
|
||||
.addListener(mockListener)
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
|
||||
@ -801,7 +787,7 @@ public final class MediaItemExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_UNSUPPORTED_BY_MUXER + ".fallback"));
|
||||
verify(mockListener)
|
||||
.onFallbackApplied(
|
||||
@ -824,9 +810,9 @@ public final class MediaItemExportTest {
|
||||
new FakeClock(/* isAutoAdvancing= */ true),
|
||||
mediaSourceFactory);
|
||||
Muxer.Factory muxerFactory =
|
||||
new TestMuxerFactory(testMuxerHolder, /* maxDelayBetweenSamplesMs= */ 1);
|
||||
new TestMuxer.Factory(muxerHolder, /* maxDelayBetweenSamplesMs= */ 1);
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAssetLoaderFactory(assetLoaderFactory)
|
||||
.setMuxerFactory(muxerFactory)
|
||||
.build();
|
||||
@ -842,9 +828,9 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_withUnsetMaxDelayBetweenSamples_completesSuccessfully() throws Exception {
|
||||
Muxer.Factory muxerFactory =
|
||||
new TestMuxerFactory(testMuxerHolder, /* maxDelayBetweenSamplesMs= */ C.TIME_UNSET);
|
||||
new TestMuxer.Factory(muxerHolder, /* maxDelayBetweenSamplesMs= */ C.TIME_UNSET);
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setMuxerFactory(muxerFactory)
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
@ -853,13 +839,13 @@ public final class MediaItemExportTest {
|
||||
TransformerTestRunner.runLooper(transformer);
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_afterCancellation_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
@ -880,7 +866,7 @@ public final class MediaItemExportTest {
|
||||
anotherThread.start();
|
||||
Looper looper = anotherThread.getLooper();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setLooper(looper)
|
||||
.build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
@ -903,13 +889,13 @@ public final class MediaItemExportTest {
|
||||
|
||||
assertThat(exception.get()).isNull();
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_fromWrongThread_throwsError() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
HandlerThread anotherThread = new HandlerThread("AnotherThread");
|
||||
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
|
||||
@ -936,7 +922,7 @@ public final class MediaItemExportTest {
|
||||
public void start_withAssetLoaderAlwaysDecoding_exporterExpectsDecoded() throws Exception {
|
||||
AtomicReference<SampleConsumer> sampleConsumerRef = new AtomicReference<>();
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAssetLoaderFactory(
|
||||
new FakeAssetLoader.Factory(SUPPORTED_OUTPUT_TYPE_DECODED, sampleConsumerRef))
|
||||
.build();
|
||||
@ -951,7 +937,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_withAssetLoaderNotDecodingAndDecodingNeeded_completesWithError() {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false)
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false)
|
||||
.setAssetLoaderFactory(
|
||||
new FakeAssetLoader.Factory(
|
||||
SUPPORTED_OUTPUT_TYPE_ENCODED, /* sampleConsumerRef= */ null))
|
||||
@ -972,7 +958,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void start_withNoOpEffects_transmuxes() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
int mediaItemHeightPixels = 720;
|
||||
ImmutableList<Effect> videoEffects =
|
||||
@ -988,13 +974,13 @@ public final class MediaItemExportTest {
|
||||
|
||||
// Video transcoding in unit tests is not supported.
|
||||
DumpFileAsserts.assertOutput(
|
||||
context, checkNotNull(testMuxerHolder.testMuxer), getDumpFileName(FILE_VIDEO_ONLY));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_VIDEO_ONLY));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void start_withOnlyRegularRotationEffect_transmuxesAndRotates() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
ImmutableList<Effect> videoEffects =
|
||||
ImmutableList.of(
|
||||
@ -1008,15 +994,13 @@ public final class MediaItemExportTest {
|
||||
|
||||
// Video transcoding in unit tests is not supported.
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".rotated"));
|
||||
context, checkNotNull(muxerHolder.muxer), getDumpFileName(FILE_AUDIO_VIDEO + ".rotated"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getProgress_knownDuration_returnsConsistentStates() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
AtomicInteger previousProgressState =
|
||||
new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY);
|
||||
@ -1063,7 +1047,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void getProgress_knownDuration_givesIncreasingPercentages() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
List<Integer> progresses = new ArrayList<>();
|
||||
Handler progressHandler =
|
||||
@ -1098,7 +1082,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void getProgress_noCurrentExport_returnsNotStarted() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
@Transformer.ProgressState int stateBeforeTransform = transformer.getProgress(progressHolder);
|
||||
@ -1113,7 +1097,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void getProgress_unknownDuration_returnsConsistentStates() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_UNKNOWN_DURATION);
|
||||
AtomicInteger previousProgressState =
|
||||
new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY);
|
||||
@ -1157,7 +1141,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void getProgress_fromWrongThread_throwsError() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
HandlerThread anotherThread = new HandlerThread("AnotherThread");
|
||||
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
|
||||
CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
@ -1182,7 +1166,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void cancel_afterCompletion_doesNotThrow() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
|
||||
|
||||
transformer.start(mediaItem, outputPath);
|
||||
@ -1193,7 +1177,7 @@ public final class MediaItemExportTest {
|
||||
@Test
|
||||
public void cancel_fromWrongThread_throwsError() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
HandlerThread anotherThread = new HandlerThread("AnotherThread");
|
||||
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
|
||||
CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
|
@ -36,7 +36,6 @@ import androidx.media3.common.audio.SonicAudioProcessor;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.effect.RgbFilter;
|
||||
import androidx.media3.test.utils.DumpFileAsserts;
|
||||
import androidx.media3.transformer.TestUtil.TestMuxerFactory.TestMuxerHolder;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@ -63,13 +62,13 @@ public final class SequenceExportTest {
|
||||
|
||||
private Context context;
|
||||
private String outputPath;
|
||||
private TestMuxerHolder testMuxerHolder;
|
||||
private TestMuxer.Holder muxerHolder;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
context = ApplicationProvider.getApplicationContext();
|
||||
outputPath = Util.createTempFile(context, "TransformerTest").getPath();
|
||||
testMuxerHolder = new TestMuxerHolder();
|
||||
muxerHolder = new TestMuxer.Holder();
|
||||
createEncodersAndDecoders();
|
||||
}
|
||||
|
||||
@ -82,7 +81,7 @@ public final class SequenceExportTest {
|
||||
@Test
|
||||
public void start_concatenateSameMediaItemWithTransmux_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||
EditedMediaItemSequence editedMediaItemSequence =
|
||||
@ -98,7 +97,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated_transmux"));
|
||||
}
|
||||
|
||||
@ -106,7 +105,7 @@ public final class SequenceExportTest {
|
||||
public void start_concatenateSameMediaItemWithEffectsAndTransmux_ignoresEffects()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
|
||||
SonicAudioProcessor sonicAudioProcessor = createPitchChangingAudioProcessor(/* pitch= */ 2f);
|
||||
Effect videoEffect = RgbFilter.createGrayscaleFilter();
|
||||
@ -127,7 +126,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_VIDEO + ".concatenated_transmux"));
|
||||
}
|
||||
|
||||
@ -135,7 +134,7 @@ public final class SequenceExportTest {
|
||||
public void start_concatenateClippedMediaItemsWithTransmux_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem.ClippingConfiguration clippingConfiguration1 =
|
||||
new MediaItem.ClippingConfiguration.Builder()
|
||||
.setStartPositionMs(0) // Corresponds to key frame.
|
||||
@ -171,7 +170,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(
|
||||
FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S + ".clipped_concatenated_transmux"));
|
||||
}
|
||||
@ -180,7 +179,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateAudioAndSilence_withTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem audioVideoMediaItem = new EditedMediaItem.Builder(mediaItem).build();
|
||||
EditedMediaItem videoOnlyMediaItem =
|
||||
@ -198,7 +197,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".audio_then_silence"));
|
||||
}
|
||||
|
||||
@ -206,7 +205,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateSilenceAndAudio_withTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem videoOnlyMediaItem =
|
||||
new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).build();
|
||||
@ -224,7 +223,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".silence_then_audio"));
|
||||
}
|
||||
|
||||
@ -232,7 +231,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateAudioAndSilence_withEffectsAndTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem audioEditedMediaItem =
|
||||
new EditedMediaItem.Builder(mediaItem)
|
||||
@ -262,7 +261,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".audio_then_silence_with_effects"));
|
||||
}
|
||||
|
||||
@ -270,7 +269,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateSilenceAndAudio_withEffectsAndTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem noAudioEditedMediaItem =
|
||||
new EditedMediaItem.Builder(mediaItem)
|
||||
@ -301,7 +300,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".silence_then_audio_with_effects"));
|
||||
}
|
||||
|
||||
@ -309,7 +308,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateSilenceAndSilence_withTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem videoOnlyMediaItem =
|
||||
new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).build();
|
||||
@ -326,7 +325,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".silence_then_silence"));
|
||||
}
|
||||
|
||||
@ -334,7 +333,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateEditedSilenceAndSilence_withTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem silenceWithEffectsItem =
|
||||
new EditedMediaItem.Builder(mediaItem)
|
||||
@ -365,7 +364,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".silence-effects_then_silence"));
|
||||
}
|
||||
|
||||
@ -373,7 +372,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateSilenceAndEditedSilence_withTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem silenceWithEffectsItem =
|
||||
new EditedMediaItem.Builder(mediaItem)
|
||||
@ -404,7 +403,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".silence_then_silence-effects"));
|
||||
}
|
||||
|
||||
@ -412,7 +411,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateSilenceAndSilence_withEffectsAndTransmuxVideo_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
|
||||
EditedMediaItem firstItem =
|
||||
new EditedMediaItem.Builder(mediaItem)
|
||||
@ -443,14 +442,14 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_VIDEO + ".silence_then_silence_with_effects"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void concatenateTwoAudioItems_withSameFormat_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem audioOnlyMediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(audioOnlyMediaItem).build();
|
||||
EditedMediaItemSequence editedMediaItemSequence =
|
||||
@ -463,7 +462,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW + ".concatenated"));
|
||||
}
|
||||
|
||||
@ -471,7 +470,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateTwoAudioItems_withSameFormatAndSameEffects_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem audioOnlyMediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
SonicAudioProcessor sonicAudioProcessor = createPitchChangingAudioProcessor(/* pitch= */ 2f);
|
||||
Effects effects =
|
||||
@ -488,7 +487,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW + ".concatenated_high_pitch"));
|
||||
}
|
||||
|
||||
@ -496,7 +495,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateTwoAudioItems_withSameFormatAndDiffEffects_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem audioOnlyMediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
Effects highPitchEffects =
|
||||
new Effects(
|
||||
@ -525,14 +524,14 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW + ".high_pitch_then_low_pitch"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void concatenateTwoAudioItems_withDiffFormat_completesSuccessfully() throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
MediaItem stereo48000Audio =
|
||||
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ);
|
||||
MediaItem mono44100Audio = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
|
||||
@ -549,7 +548,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_STEREO_48000KHZ + "_then_sample.wav"));
|
||||
}
|
||||
|
||||
@ -557,7 +556,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateTwoAudioItems_withDiffFormatAndSameEffects_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
|
||||
Effects highPitch =
|
||||
new Effects(
|
||||
@ -584,7 +583,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_STEREO_48000KHZ + "-high_pitch_then_sample.wav-high_pitch"));
|
||||
}
|
||||
|
||||
@ -592,7 +591,7 @@ public final class SequenceExportTest {
|
||||
public void concatenateTwoAudioItems_withDiffFormatAndDiffEffects_completesSuccessfully()
|
||||
throws Exception {
|
||||
Transformer transformer =
|
||||
createTransformerBuilder(testMuxerHolder, /* enableFallback= */ false).build();
|
||||
createTransformerBuilder(muxerHolder, /* enableFallback= */ false).build();
|
||||
|
||||
EditedMediaItem stereo48000AudioHighPitch =
|
||||
new EditedMediaItem.Builder(
|
||||
@ -620,7 +619,7 @@ public final class SequenceExportTest {
|
||||
|
||||
DumpFileAsserts.assertOutput(
|
||||
context,
|
||||
checkNotNull(testMuxerHolder.testMuxer),
|
||||
checkNotNull(muxerHolder.muxer),
|
||||
getDumpFileName(FILE_AUDIO_RAW_STEREO_48000KHZ + "-high_pitch_then_sample.wav-low_pitch"));
|
||||
}
|
||||
}
|
||||
|
@ -15,11 +15,13 @@
|
||||
*/
|
||||
package androidx.media3.transformer;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.Format;
|
||||
import androidx.media3.common.Metadata;
|
||||
import androidx.media3.test.utils.DumpableFormat;
|
||||
import androidx.media3.test.utils.Dumper;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@ -34,13 +36,43 @@ import java.util.Map;
|
||||
*/
|
||||
public final class TestMuxer implements Muxer, Dumper.Dumpable {
|
||||
|
||||
public static final class Holder {
|
||||
@Nullable public TestMuxer muxer;
|
||||
}
|
||||
|
||||
public static final class Factory implements Muxer.Factory {
|
||||
|
||||
private final Holder muxerHolder;
|
||||
private final Muxer.Factory defaultMuxerFactory;
|
||||
|
||||
public Factory(Holder muxerHolder) {
|
||||
this(muxerHolder, /* maxDelayBetweenSamplesMs= */ C.TIME_UNSET);
|
||||
}
|
||||
|
||||
public Factory(Holder muxerHolder, long maxDelayBetweenSamplesMs) {
|
||||
this.muxerHolder = muxerHolder;
|
||||
defaultMuxerFactory = new DefaultMuxer.Factory(maxDelayBetweenSamplesMs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Muxer create(String path) throws Muxer.MuxerException {
|
||||
muxerHolder.muxer = new TestMuxer(defaultMuxerFactory.create(path));
|
||||
return muxerHolder.muxer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImmutableList<String> getSupportedSampleMimeTypes(@C.TrackType int trackType) {
|
||||
return defaultMuxerFactory.getSupportedSampleMimeTypes(trackType);
|
||||
}
|
||||
}
|
||||
|
||||
private final Muxer muxer;
|
||||
private final Map<Integer, List<DumpableSample>> trackIndexToSampleDumpables;
|
||||
private final List<Dumper.Dumpable> dumpables;
|
||||
|
||||
/** Creates a new test muxer. */
|
||||
public TestMuxer(String path, Muxer.Factory muxerFactory) throws MuxerException {
|
||||
muxer = muxerFactory.create(path);
|
||||
private TestMuxer(Muxer muxer) {
|
||||
this.muxer = muxer;
|
||||
dumpables = new ArrayList<>();
|
||||
trackIndexToSampleDumpables = new HashMap<>();
|
||||
}
|
||||
|
@ -43,36 +43,6 @@ import org.robolectric.shadows.ShadowMediaCodecList;
|
||||
@UnstableApi
|
||||
public final class TestUtil {
|
||||
|
||||
public static final class TestMuxerFactory implements Muxer.Factory {
|
||||
|
||||
public static final class TestMuxerHolder {
|
||||
@Nullable public TestMuxer testMuxer;
|
||||
}
|
||||
|
||||
private final TestMuxerHolder testMuxerHolder;
|
||||
private final Muxer.Factory defaultMuxerFactory;
|
||||
|
||||
public TestMuxerFactory(TestMuxerHolder testMuxerHolder) {
|
||||
this(testMuxerHolder, /* maxDelayBetweenSamplesMs= */ C.TIME_UNSET);
|
||||
}
|
||||
|
||||
public TestMuxerFactory(TestMuxerHolder testMuxerHolder, long maxDelayBetweenSamplesMs) {
|
||||
this.testMuxerHolder = testMuxerHolder;
|
||||
defaultMuxerFactory = new DefaultMuxer.Factory(maxDelayBetweenSamplesMs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Muxer create(String path) throws Muxer.MuxerException {
|
||||
testMuxerHolder.testMuxer = new TestMuxer(path, defaultMuxerFactory);
|
||||
return testMuxerHolder.testMuxer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImmutableList<String> getSupportedSampleMimeTypes(@C.TrackType int trackType) {
|
||||
return defaultMuxerFactory.getSupportedSampleMimeTypes(trackType);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class FakeAssetLoader implements AssetLoader {
|
||||
|
||||
public static final class Factory implements AssetLoader.Factory {
|
||||
@ -234,11 +204,11 @@ public final class TestUtil {
|
||||
}
|
||||
|
||||
public static Transformer.Builder createTransformerBuilder(
|
||||
TestMuxerFactory.TestMuxerHolder testMuxerHolder, boolean enableFallback) {
|
||||
TestMuxer.Holder testMuxerHolder, boolean enableFallback) {
|
||||
Context context = ApplicationProvider.getApplicationContext();
|
||||
return new Transformer.Builder(context)
|
||||
.setClock(new FakeClock(/* isAutoAdvancing= */ true))
|
||||
.setMuxerFactory(new TestMuxerFactory(testMuxerHolder))
|
||||
.setMuxerFactory(new TestMuxer.Factory(testMuxerHolder))
|
||||
.setEncoderFactory(
|
||||
new DefaultEncoderFactory.Builder(context).setEnableFallback(enableFallback).build());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user