Add varargs convenience constructors to Sequence & Composition.Builder

Improves API ease-of-use & readability and reduces verbose boilerplate.

PiperOrigin-RevId: 558163557
This commit is contained in:
samrobinson 2023-08-18 17:13:26 +01:00 committed by Julia Bibik
parent 7f1ee0b390
commit 99ac6feeee
18 changed files with 185 additions and 265 deletions

View File

@ -102,7 +102,6 @@ import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
@ -371,10 +370,8 @@ public final class TransformerActivity extends AppCompatActivity {
bundle.getBoolean(ConfigurationActivity.SHOULD_FLATTEN_FOR_SLOW_MOTION))
.setEffects(new Effects(audioProcessors, videoEffects));
}
List<EditedMediaItem> editedMediaItems = ImmutableList.of(editedMediaItemBuilder.build());
List<EditedMediaItemSequence> sequences =
ImmutableList.of(new EditedMediaItemSequence(editedMediaItems));
Composition.Builder compositionBuilder = new Composition.Builder(sequences);
Composition.Builder compositionBuilder =
new Composition.Builder(new EditedMediaItemSequence(editedMediaItemBuilder.build()));
if (bundle != null) {
compositionBuilder
.setHdrMode(bundle.getInt(ConfigurationActivity.HDR_MODE))

View File

@ -33,7 +33,6 @@ import androidx.media3.common.util.Util;
import androidx.media3.decoder.DecoderInputBuffer;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.nio.ByteBuffer;
import org.json.JSONException;
@ -126,12 +125,10 @@ public class ForceEndOfStreamTest {
private static Composition createComposition(MediaItem mediaItem) {
return new Composition.Builder(
ImmutableList.of(
new EditedMediaItemSequence(
ImmutableList.of(
new EditedMediaItem.Builder(mediaItem)
.setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS)
.build()))))
new EditedMediaItemSequence(
new EditedMediaItem.Builder(mediaItem)
.setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS)
.build()))
.build();
}

View File

@ -36,7 +36,6 @@ import androidx.media3.effect.DebugTraceUtil;
import androidx.media3.test.utils.SsimHelper;
import androidx.test.platform.app.InstrumentationRegistry;
import com.google.common.base.Ascii;
import com.google.common.collect.ImmutableList;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.io.File;
import java.io.IOException;
@ -227,9 +226,8 @@ public class TransformerAndroidTestRunner {
* @throws Exception The cause of the export not completing.
*/
public ExportTestResult run(String testId, EditedMediaItem editedMediaItem) throws Exception {
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition = new Composition.Builder(ImmutableList.of(sequence)).build();
Composition composition =
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem)).build();
return run(testId, composition);
}

View File

@ -102,28 +102,27 @@ public class TransformerEndToEndTest {
.build();
EditedMediaItemSequence audioVideoSequence =
new EditedMediaItemSequence(ImmutableList.of(audioVideoItem, imageItem, audioVideoItem));
new EditedMediaItemSequence(audioVideoItem, imageItem, audioVideoItem);
EditedMediaItem.Builder audioBuilder =
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET_URI_STRING)).setRemoveVideo(true);
EditedMediaItemSequence audioSequence =
new EditedMediaItemSequence(
ImmutableList.of(
audioBuilder
.setEffects(
new Effects(
ImmutableList.of(createSonic(/* pitch= */ 1.3f)),
/* videoEffects= */ ImmutableList.of()))
.build(),
audioBuilder
.setEffects(
new Effects(
ImmutableList.of(createSonic(/* pitch= */ 0.85f)),
/* videoEffects= */ ImmutableList.of()))
.build()));
audioBuilder
.setEffects(
new Effects(
ImmutableList.of(createSonic(/* pitch= */ 1.3f)),
/* videoEffects= */ ImmutableList.of()))
.build(),
audioBuilder
.setEffects(
new Effects(
ImmutableList.of(createSonic(/* pitch= */ 0.85f)),
/* videoEffects= */ ImmutableList.of()))
.build());
EditedMediaItemSequence audioLoopingSequence =
EditedMediaItemSequence loopingAudioSequence =
new EditedMediaItemSequence(
ImmutableList.of(
audioBuilder
@ -135,9 +134,7 @@ public class TransformerEndToEndTest {
/* isLooping= */ true);
Composition composition =
new Composition.Builder(
ImmutableList.of(audioVideoSequence, audioSequence, audioLoopingSequence))
.build();
new Composition.Builder(audioVideoSequence, audioSequence, loopingAudioSequence).build();
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)
@ -148,7 +145,7 @@ public class TransformerEndToEndTest {
// Image asset duration is ~1.5s.
// audioVideoSequence duration: ~3.5s (3 inputs).
// audioSequence duration: ~2s (2 inputs).
// audioLoopingSequence: Matches max other sequence (~3.5s) -> 4 inputs of ~1s audio item.
// loopingAudioSequence: Matches max other sequence (~3.5s) -> 4 inputs of ~1s audio item.
assertThat(result.exportResult.processedInputs).hasSize(9);
}
@ -496,22 +493,22 @@ public class TransformerEndToEndTest {
new TransformerAndroidTestRunner.Builder(context, transformer)
.build()
.run(testId, editedMediaItem);
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(mediaItem)
.setEffects(new Effects(audioProcessors, /* videoEffects= */ ImmutableList.of()))
.setRemoveVideo(true)
.build();
EditedMediaItemSequence audioSequence =
new EditedMediaItemSequence(ImmutableList.of(audioEditedMediaItem));
EditedMediaItem videoEditedMediaItem =
new EditedMediaItem.Builder(mediaItem)
.setEffects(new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects))
.setRemoveAudio(true)
.build();
EditedMediaItemSequence videoSequence =
new EditedMediaItemSequence(ImmutableList.of(videoEditedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence)).build();
new Composition.Builder(
new EditedMediaItemSequence(audioEditedMediaItem),
new EditedMediaItemSequence(videoEditedMediaItem))
.build();
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)
@ -538,7 +535,7 @@ public class TransformerEndToEndTest {
}
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(MP3_ASSET_URI_STRING)).build();
EditedMediaItemSequence audioSequence =
EditedMediaItemSequence loopingAudioSequence =
new EditedMediaItemSequence(
ImmutableList.of(audioEditedMediaItem, audioEditedMediaItem), /* isLooping= */ true);
EditedMediaItem videoEditedMediaItem =
@ -548,11 +545,9 @@ public class TransformerEndToEndTest {
.build();
EditedMediaItemSequence videoSequence =
new EditedMediaItemSequence(
ImmutableList.of(videoEditedMediaItem, videoEditedMediaItem, videoEditedMediaItem));
videoEditedMediaItem, videoEditedMediaItem, videoEditedMediaItem);
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence))
.setTransmuxVideo(true)
.build();
new Composition.Builder(loopingAudioSequence, videoSequence).setTransmuxVideo(true).build();
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)
@ -580,16 +575,15 @@ public class TransformerEndToEndTest {
new EditedMediaItem.Builder(MediaItem.fromUri(MP3_ASSET_URI_STRING)).build();
EditedMediaItemSequence audioSequence =
new EditedMediaItemSequence(
ImmutableList.of(audioEditedMediaItem, audioEditedMediaItem, audioEditedMediaItem));
audioEditedMediaItem, audioEditedMediaItem, audioEditedMediaItem);
EditedMediaItem videoEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(MP4_ASSET_URI_STRING))
.setRemoveAudio(true)
.build();
EditedMediaItemSequence videoSequence =
EditedMediaItemSequence loopingVideoSequence =
new EditedMediaItemSequence(
ImmutableList.of(videoEditedMediaItem, videoEditedMediaItem), /* isLooping= */ true);
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence)).build();
Composition composition = new Composition.Builder(audioSequence, loopingVideoSequence).build();
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)
@ -610,17 +604,16 @@ public class TransformerEndToEndTest {
new EditedMediaItem.Builder(MediaItem.fromUri(MP3_ASSET_URI_STRING)).build();
EditedMediaItemSequence audioSequence =
new EditedMediaItemSequence(
ImmutableList.of(audioEditedMediaItem, audioEditedMediaItem, audioEditedMediaItem));
audioEditedMediaItem, audioEditedMediaItem, audioEditedMediaItem);
EditedMediaItem imageEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(PNG_ASSET_URI_STRING))
.setDurationUs(1_000_000)
.setFrameRate(30)
.build();
EditedMediaItemSequence imageSequence =
EditedMediaItemSequence loopingImageSequence =
new EditedMediaItemSequence(
ImmutableList.of(imageEditedMediaItem, imageEditedMediaItem), /* isLooping= */ true);
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, imageSequence)).build();
Composition composition = new Composition.Builder(audioSequence, loopingImageSequence).build();
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)

View File

@ -77,9 +77,7 @@ public class TransformerMixedInputEndToEndTest {
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)
.build()
.run(
testId,
buildComposition(ImmutableList.of(imageEditedMediaItem, videoEditedMediaItem)));
.run(testId, buildComposition(imageEditedMediaItem, videoEditedMediaItem));
assertThat(result.exportResult.videoFrameCount)
.isEqualTo(imageFrameCount + VIDEO_FRAME_COUNT_FOR_MP4_ASSET);
@ -110,9 +108,7 @@ public class TransformerMixedInputEndToEndTest {
ExportTestResult result =
new TransformerAndroidTestRunner.Builder(context, transformer)
.build()
.run(
testId,
buildComposition(ImmutableList.of(videoEditedMediaItem, imageEditedMediaItem)));
.run(testId, buildComposition(videoEditedMediaItem, imageEditedMediaItem));
assertThat(result.exportResult.videoFrameCount)
.isEqualTo(imageFrameCount + VIDEO_FRAME_COUNT_FOR_MP4_ASSET);
@ -150,14 +146,13 @@ public class TransformerMixedInputEndToEndTest {
.run(
testId,
buildComposition(
ImmutableList.of(
videoEditedMediaItem,
videoEditedMediaItem,
imageEditedMediaItem1,
imageEditedMediaItem2,
videoEditedMediaItem,
imageEditedMediaItem1,
videoEditedMediaItem)));
videoEditedMediaItem,
videoEditedMediaItem,
imageEditedMediaItem1,
imageEditedMediaItem2,
videoEditedMediaItem,
imageEditedMediaItem1,
videoEditedMediaItem));
assertThat(result.exportResult.videoFrameCount)
.isEqualTo(3 * imageFrameCount + 4 * VIDEO_FRAME_COUNT_FOR_MP4_ASSET);
@ -195,14 +190,13 @@ public class TransformerMixedInputEndToEndTest {
.run(
testId,
buildComposition(
ImmutableList.of(
imageEditedMediaItem,
videoEditedMediaItem,
videoEditedMediaItem,
imageEditedMediaItem,
imageEditedMediaItem,
videoEditedMediaItem,
imageEditedMediaItem)));
imageEditedMediaItem,
videoEditedMediaItem,
videoEditedMediaItem,
imageEditedMediaItem,
imageEditedMediaItem,
videoEditedMediaItem,
imageEditedMediaItem));
assertThat(result.exportResult.videoFrameCount)
.isEqualTo(4 * imageFrameCount + 3 * VIDEO_FRAME_COUNT_FOR_MP4_ASSET);
@ -230,11 +224,11 @@ public class TransformerMixedInputEndToEndTest {
.build();
}
private static Composition buildComposition(ImmutableList<EditedMediaItem> editedMediaItems) {
return new Composition.Builder(ImmutableList.of(new EditedMediaItemSequence(editedMediaItems)))
private static Composition buildComposition(EditedMediaItem... editedMediaItems) {
return new Composition.Builder(new EditedMediaItemSequence(editedMediaItems))
.setEffects(
new Effects(
ImmutableList.of(),
/* audioProcessors= */ ImmutableList.of(),
ImmutableList.of(
// To ensure that software encoders can encode.
Presentation.createForWidthAndHeight(

View File

@ -221,8 +221,7 @@ public final class TransformerSequenceEffectTest {
private static Composition createComposition(
@Nullable Presentation presentation, EditedMediaItem... editedMediaItems) {
Composition.Builder builder =
new Composition.Builder(
ImmutableList.of(new EditedMediaItemSequence(ImmutableList.copyOf(editedMediaItems))));
new Composition.Builder(new EditedMediaItemSequence(editedMediaItems));
if (presentation != null) {
builder.setEffects(
new Effects(/* audioProcessors= */ ImmutableList.of(), ImmutableList.of(presentation)));

View File

@ -38,7 +38,6 @@ import androidx.media3.transformer.Transformer;
import androidx.media3.transformer.TransformerAndroidTestRunner;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -74,12 +73,11 @@ public class ForceInterpretHdrVideoAsSdrTest {
}
Transformer transformer = new Transformer.Builder(context).build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10)))
.build();
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setHdrMode(Composition.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR)
.build();
ExportTestResult exportTestResult =
@ -114,12 +112,11 @@ public class ForceInterpretHdrVideoAsSdrTest {
}
Transformer transformer = new Transformer.Builder(context).build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)))
.build();
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setHdrMode(Composition.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR)
.build();
ExportTestResult exportTestResult =

View File

@ -39,7 +39,6 @@ import androidx.media3.transformer.Transformer;
import androidx.media3.transformer.TransformerAndroidTestRunner;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.collect.ImmutableList;
import java.util.Objects;
import org.junit.Test;
import org.junit.runner.RunWith;
@ -83,12 +82,11 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
}
})
.build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10)))
.build();
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
.build();
@ -145,12 +143,11 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
}
})
.build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)))
.build();
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
.build();
@ -207,13 +204,12 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
}
})
.build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_720P_4_SECOND_HDR10)))
.setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS)
.build();
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
.build();
@ -270,13 +266,12 @@ public class ToneMapHdrToSdrUsingMediaCodecTest {
}
})
.build();
MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10));
EditedMediaItem editedMediaItem =
new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)))
.setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS)
.build();
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC)
.build();

View File

@ -42,7 +42,6 @@ import androidx.media3.transformer.Transformer;
import androidx.media3.transformer.TransformerAndroidTestRunner;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import org.json.JSONException;
import org.junit.Test;
@ -92,12 +91,10 @@ public class ToneMapHdrToSdrUsingOpenGlTest {
private void runTransformerWithOpenGlToneMapping(String testId, String fileUri) throws Exception {
Transformer transformer = new Transformer.Builder(context).build();
MediaItem mediaItem = MediaItem.fromUri(fileUri);
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(
new EditedMediaItemSequence(
new EditedMediaItem.Builder(MediaItem.fromUri(fileUri)).build()))
.setHdrMode(Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL)
.build();
ExportTestResult exportTestResult =

View File

@ -60,6 +60,15 @@ public final class Composition {
hdrMode = composition.hdrMode;
}
/**
* Creates an instance.
*
* @see Builder#Builder(List)
*/
public Builder(EditedMediaItemSequence... sequences) {
this(ImmutableList.copyOf(sequences));
}
/**
* Creates an instance.
*

View File

@ -48,11 +48,12 @@ public final class EditedMediaItemSequence {
*/
public final boolean isLooping;
/**
* Creates an instance.
*
* @param editedMediaItems The {@link #editedMediaItems}.
*/
/** Creates a {@linkplain #isLooping non-looping} instance. */
public EditedMediaItemSequence(EditedMediaItem... editedMediaItems) {
this(ImmutableList.copyOf(editedMediaItems));
}
/** Creates a {@linkplain #isLooping non-looping} instance. */
public EditedMediaItemSequence(List<EditedMediaItem> editedMediaItems) {
this(editedMediaItems, /* isLooping= */ false);
}

View File

@ -900,9 +900,7 @@ public final class Transformer {
* @throws IllegalStateException If an export is already in progress.
*/
public void start(EditedMediaItem editedMediaItem, String path) {
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
start(new Composition.Builder(ImmutableList.of(sequence)).build(), path);
start(new Composition.Builder(new EditedMediaItemSequence(editedMediaItem)).build(), path);
}
/**

View File

@ -78,16 +78,15 @@ public class CompositionExportTest {
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
transformer.start(mediaItem, outputPath);
ExportResult expectedExportResult = TransformerTestRunner.runLooper(transformer);
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(mediaItem).setRemoveVideo(true).build();
EditedMediaItemSequence audioSequence =
new EditedMediaItemSequence(ImmutableList.of(audioEditedMediaItem));
EditedMediaItem videoEditedMediaItem =
new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).build();
EditedMediaItemSequence videoSequence =
new EditedMediaItemSequence(ImmutableList.of(videoEditedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence))
new Composition.Builder(
new EditedMediaItemSequence(audioEditedMediaItem),
new EditedMediaItemSequence(videoEditedMediaItem))
.setTransmuxAudio(true)
.setTransmuxVideo(true)
.build();
@ -109,16 +108,16 @@ public class CompositionExportTest {
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_ONLY)).build();
EditedMediaItemSequence audioSequence =
EditedMediaItemSequence loopingAudioSequence =
new EditedMediaItemSequence(
ImmutableList.of(audioEditedMediaItem, audioEditedMediaItem), /* isLooping= */ true);
EditedMediaItem videoEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build();
EditedMediaItemSequence videoSequence =
new EditedMediaItemSequence(
ImmutableList.of(videoEditedMediaItem, videoEditedMediaItem, videoEditedMediaItem));
videoEditedMediaItem, videoEditedMediaItem, videoEditedMediaItem);
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence))
new Composition.Builder(loopingAudioSequence, videoSequence)
.setTransmuxAudio(true)
.setTransmuxVideo(true)
.build();
@ -141,14 +140,14 @@ public class CompositionExportTest {
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_ONLY)).build();
EditedMediaItemSequence audioSequence =
new EditedMediaItemSequence(
ImmutableList.of(audioEditedMediaItem, audioEditedMediaItem, audioEditedMediaItem));
audioEditedMediaItem, audioEditedMediaItem, audioEditedMediaItem);
EditedMediaItem videoEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build();
EditedMediaItemSequence videoSequence =
EditedMediaItemSequence loopingVideoSequence =
new EditedMediaItemSequence(
ImmutableList.of(videoEditedMediaItem, videoEditedMediaItem), /* isLooping= */ true);
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence))
new Composition.Builder(audioSequence, loopingVideoSequence)
.setTransmuxAudio(true)
.setTransmuxVideo(true)
.build();
@ -167,24 +166,21 @@ public class CompositionExportTest {
public void start_loopingRawAudio_producesExpectedResult() throws Exception {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItemSequence audioSequence =
EditedMediaItemSequence loopingAudioSequence =
new EditedMediaItemSequence(
ImmutableList.of(
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW))
.build()),
/* isLooping= */ true);
EditedMediaItem videoEditedMediaItem =
new EditedMediaItem.Builder(
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO_INCREASING_TIMESTAMPS_15S))
.setRemoveAudio(true)
.build();
EditedMediaItemSequence videoSequence =
new EditedMediaItemSequence(ImmutableList.of(videoEditedMediaItem, videoEditedMediaItem));
new EditedMediaItemSequence(videoEditedMediaItem, videoEditedMediaItem);
Composition composition =
new Composition.Builder(ImmutableList.of(audioSequence, videoSequence))
.setTransmuxVideo(true)
.build();
new Composition.Builder(loopingAudioSequence, videoSequence).setTransmuxVideo(true).build();
transformer.start(composition, outputPath);
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
@ -201,17 +197,15 @@ public class CompositionExportTest {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItem rawAudioItem =
EditedMediaItem rawAudioEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)).build();
EditedMediaItemSequence firstSequence =
new EditedMediaItemSequence(ImmutableList.of(rawAudioItem));
Composition composition =
new Composition.Builder(
new EditedMediaItemSequence(rawAudioEditedMediaItem),
new EditedMediaItemSequence(rawAudioEditedMediaItem))
.build();
EditedMediaItemSequence secondSequence =
new EditedMediaItemSequence(ImmutableList.of(rawAudioItem));
transformer.start(
new Composition.Builder(ImmutableList.of(firstSequence, secondSequence)).build(),
outputPath);
transformer.start(composition, outputPath);
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
assertThat(exportResult.processedInputs).hasSize(2);
@ -223,23 +217,21 @@ public class CompositionExportTest {
public void start_audioVideoCompositionWithExtraAudio_isCorrect() throws Exception {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItem audioVideoItem =
EditedMediaItem audioVideoEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
.build();
EditedMediaItemSequence audioVideoSeq =
new EditedMediaItemSequence(ImmutableList.of(audioVideoItem));
EditedMediaItem audioItem =
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
.setRemoveVideo(true)
.build();
EditedMediaItemSequence audioSeq = new EditedMediaItemSequence(ImmutableList.of(audioItem));
transformer.start(
new Composition.Builder(ImmutableList.of(audioVideoSeq, audioSeq))
Composition composition =
new Composition.Builder(
new EditedMediaItemSequence(audioVideoEditedMediaItem),
new EditedMediaItemSequence(audioEditedMediaItem))
.setTransmuxVideo(true)
.build(),
outputPath);
.build();
transformer.start(composition, outputPath);
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
assertThat(exportResult.processedInputs).hasSize(2);
@ -250,25 +242,25 @@ public class CompositionExportTest {
public void start_audioVideoCompositionWithLoopingAudio_isCorrect() throws Exception {
Transformer transformer =
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
EditedMediaItem audioVideoItem =
EditedMediaItem audioVideoEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
.build();
EditedMediaItemSequence audioVideoSeq =
EditedMediaItemSequence audioVideoSequence =
new EditedMediaItemSequence(
ImmutableList.of(audioVideoItem, audioVideoItem, audioVideoItem));
EditedMediaItem audioItem =
audioVideoEditedMediaItem, audioVideoEditedMediaItem, audioVideoEditedMediaItem);
EditedMediaItem audioEditedMediaItem =
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO))
.setRemoveVideo(true)
.build();
EditedMediaItemSequence audioSeq =
new EditedMediaItemSequence(ImmutableList.of(audioItem), /* isLooping= */ true);
EditedMediaItemSequence loopingAudioSequence =
new EditedMediaItemSequence(ImmutableList.of(audioEditedMediaItem), /* isLooping= */ true);
transformer.start(
new Composition.Builder(ImmutableList.of(audioVideoSeq, audioSeq))
Composition composition =
new Composition.Builder(audioVideoSequence, loopingAudioSequence)
.setTransmuxVideo(true)
.build(),
outputPath);
.build();
transformer.start(composition, outputPath);
ExportResult exportResult = TransformerTestRunner.runLooper(transformer);
assertThat(exportResult.processedInputs).hasSize(7);

View File

@ -29,7 +29,6 @@ import androidx.media3.common.util.Clock;
import androidx.media3.common.util.HandlerWrapper;
import androidx.media3.common.util.ListenerSet;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.shadows.ShadowLooper;
@ -40,10 +39,8 @@ public class FallbackListenerTest {
private static final Composition PLACEHOLDER_COMPOSITION =
new Composition.Builder(
ImmutableList.of(
new EditedMediaItemSequence(
ImmutableList.of(
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.EMPTY)).build()))))
new EditedMediaItemSequence(
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.EMPTY)).build()))
.build();
@Test

View File

@ -298,10 +298,8 @@ public final class MediaItemExportTest {
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_AMR_NB);
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.experimentalSetForceAudioTrack(true)
.build();
@ -318,10 +316,8 @@ public final class MediaItemExportTest {
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.experimentalSetForceAudioTrack(true)
.build();
@ -340,10 +336,8 @@ public final class MediaItemExportTest {
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
.setRemoveAudio(true)
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.experimentalSetForceAudioTrack(true)
.build();
@ -368,10 +362,8 @@ public final class MediaItemExportTest {
.setRemoveAudio(true)
.setEffects(createAudioEffects(sonicAudioProcessor))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.experimentalSetForceAudioTrack(true)
.build();
@ -392,10 +384,8 @@ public final class MediaItemExportTest {
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO))
.setRemoveVideo(true)
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.experimentalSetForceAudioTrack(true)
.build();
@ -411,10 +401,8 @@ public final class MediaItemExportTest {
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY);
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.experimentalSetForceAudioTrack(true)
.build();
@ -456,10 +444,8 @@ public final class MediaItemExportTest {
new EditedMediaItem.Builder(mediaItem)
.setEffects(createAudioEffects(sonicAudioProcessor))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem))
.setTransmuxAudio(true)
.build();

View File

@ -131,16 +131,13 @@ public final class ParameterizedAudioExportTest {
this.itemConfigs = itemConfigs;
}
public EditedMediaItemSequence asSequence() {
public Composition asComposition() {
ImmutableList.Builder<EditedMediaItem> items = new ImmutableList.Builder<>();
for (ItemConfig itemConfig : itemConfigs) {
items.add(itemConfig.asItem());
}
return new EditedMediaItemSequence(items.build());
}
public Composition asComposition() {
return new Composition.Builder(ImmutableList.of(asSequence())).build();
return new Composition.Builder(new EditedMediaItemSequence(items.build())).build();
}
public int getSize() {

View File

@ -85,10 +85,8 @@ public final class SequenceExportTest {
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO);
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem, editedMediaItem))
.setTransmuxAudio(true)
.setTransmuxVideo(true)
.build();
@ -115,10 +113,8 @@ public final class SequenceExportTest {
ImmutableList.of(createPitchChangingAudioProcessor(/* pitch= */ 2f)),
ImmutableList.of(RgbFilter.createGrayscaleFilter())))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem, editedMediaItem))
.setTransmuxAudio(true)
.setTransmuxVideo(true)
.build();
@ -159,10 +155,8 @@ public final class SequenceExportTest {
.setClippingConfiguration(clippingConfiguration2)
.build();
EditedMediaItem editedMediaItem2 = new EditedMediaItem.Builder(mediaItem2).build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem1, editedMediaItem2));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence))
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem1, editedMediaItem2))
.setTransmuxAudio(true)
.setTransmuxVideo(true)
.build();
@ -186,10 +180,9 @@ public final class SequenceExportTest {
EditedMediaItem audioVideoMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItem videoOnlyMediaItem =
new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(audioVideoMediaItem, videoOnlyMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(
new EditedMediaItemSequence(audioVideoMediaItem, videoOnlyMediaItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -212,10 +205,9 @@ public final class SequenceExportTest {
EditedMediaItem videoOnlyMediaItem =
new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).build();
EditedMediaItem audioVideoMediaItem = new EditedMediaItem.Builder(mediaItem).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(videoOnlyMediaItem, audioVideoMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(
new EditedMediaItemSequence(videoOnlyMediaItem, audioVideoMediaItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -244,10 +236,9 @@ public final class SequenceExportTest {
.setRemoveAudio(true)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(audioEditedMediaItem, noAudioEditedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(
new EditedMediaItemSequence(audioEditedMediaItem, noAudioEditedMediaItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -278,9 +269,7 @@ public final class SequenceExportTest {
.build();
Composition composition =
new Composition.Builder(
ImmutableList.of(
new EditedMediaItemSequence(
ImmutableList.of(noAudioEditedMediaItem, audioEditedMediaItem))))
new EditedMediaItemSequence(noAudioEditedMediaItem, audioEditedMediaItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -302,10 +291,8 @@ public final class SequenceExportTest {
MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_VIDEO);
EditedMediaItem videoOnlyMediaItem =
new EditedMediaItem.Builder(mediaItem).setRemoveAudio(true).build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(videoOnlyMediaItem, videoOnlyMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(videoOnlyMediaItem, videoOnlyMediaItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -335,10 +322,8 @@ public final class SequenceExportTest {
.setRemoveAudio(true)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(silenceWithEffectsItem, silenceItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(silenceWithEffectsItem, silenceItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -368,10 +353,8 @@ public final class SequenceExportTest {
.setRemoveAudio(true)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(silenceItem, silenceWithEffectsItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(silenceItem, silenceWithEffectsItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -401,10 +384,8 @@ public final class SequenceExportTest {
.setRemoveAudio(true)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(firstItem, secondItem));
Composition composition =
new Composition.Builder(ImmutableList.of(sequence))
new Composition.Builder(new EditedMediaItemSequence(firstItem, secondItem))
.experimentalSetForceAudioTrack(true)
.setTransmuxVideo(true)
.build();
@ -424,10 +405,9 @@ public final class SequenceExportTest {
createTransformerBuilder(muxerFactory, /* enableFallback= */ false).build();
MediaItem audioOnlyMediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(audioOnlyMediaItem).build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem, editedMediaItem))
.build();
transformer.start(composition, outputPath);
TransformerTestRunner.runLooper(transformer);
@ -446,10 +426,9 @@ public final class SequenceExportTest {
new EditedMediaItem.Builder(audioOnlyMediaItem)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(editedMediaItem, editedMediaItem));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
new Composition.Builder(new EditedMediaItemSequence(editedMediaItem, editedMediaItem))
.build();
transformer.start(composition, outputPath);
TransformerTestRunner.runLooper(transformer);
@ -476,9 +455,9 @@ public final class SequenceExportTest {
.setRemoveVideo(true)
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 0.5f)))
.build();
EditedMediaItemSequence sequence =
new EditedMediaItemSequence(ImmutableList.of(highPitchMediaItem, lowPitchMediaItem));
Composition composition = new Composition.Builder(ImmutableList.of(sequence)).build();
Composition composition =
new Composition.Builder(new EditedMediaItemSequence(highPitchMediaItem, lowPitchMediaItem))
.build();
transformer.start(composition, outputPath);
TransformerTestRunner.runLooper(transformer);
@ -496,13 +475,12 @@ public final class SequenceExportTest {
MediaItem stereo48000Audio =
MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW_STEREO_48000KHZ);
MediaItem mono44100Audio = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW);
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(
ImmutableList.of(
new EditedMediaItem.Builder(stereo48000Audio).build(),
new EditedMediaItem.Builder(mono44100Audio).build()));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
new Composition.Builder(
new EditedMediaItemSequence(
new EditedMediaItem.Builder(stereo48000Audio).build(),
new EditedMediaItem.Builder(mono44100Audio).build()))
.build();
transformer.start(composition, outputPath);
TransformerTestRunner.runLooper(transformer);
@ -528,11 +506,9 @@ public final class SequenceExportTest {
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 2f)))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(ImmutableList.of(stereo48000Audio, mono44100Audio));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
new Composition.Builder(new EditedMediaItemSequence(stereo48000Audio, mono44100Audio))
.build();
transformer.start(composition, outputPath);
TransformerTestRunner.runLooper(transformer);
@ -558,11 +534,10 @@ public final class SequenceExportTest {
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW))
.setEffects(createAudioEffects(createPitchChangingAudioProcessor(/* pitch= */ 0.5f)))
.build();
EditedMediaItemSequence editedMediaItemSequence =
new EditedMediaItemSequence(
ImmutableList.of(stereo48000AudioHighPitch, mono44100AudioLowPitch));
Composition composition =
new Composition.Builder(ImmutableList.of(editedMediaItemSequence)).build();
new Composition.Builder(
new EditedMediaItemSequence(stereo48000AudioHighPitch, mono44100AudioLowPitch))
.build();
transformer.start(composition, outputPath);
TransformerTestRunner.runLooper(transformer);

View File

@ -46,10 +46,8 @@ import org.robolectric.shadows.ShadowMediaCodecList;
public final class VideoEncoderWrapperTest {
private static final Composition FAKE_COMPOSITION =
new Composition.Builder(
ImmutableList.of(
new EditedMediaItemSequence(
ImmutableList.of(
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.EMPTY)).build()))))
new EditedMediaItemSequence(
new EditedMediaItem.Builder(MediaItem.fromUri(Uri.EMPTY)).build()))
.build();
private final TransformationRequest emptyTransformationRequest =