diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java index 604b39fc92..98cc2cbc23 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java @@ -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 editedMediaItems = ImmutableList.of(editedMediaItemBuilder.build()); - List 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)) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java index d057eccb9f..eb4418a822 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java @@ -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(); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java index e8bf1c79c2..6451ed03a3 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java @@ -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); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java index 3a299fcf90..5912440e30 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -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) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMixedInputEndToEndTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMixedInputEndToEndTest.java index d501e0e218..523a71b1ea 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMixedInputEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMixedInputEndToEndTest.java @@ -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 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( diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerSequenceEffectTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerSequenceEffectTest.java index 3cb99482c0..e263165670 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerSequenceEffectTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerSequenceEffectTest.java @@ -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))); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ForceInterpretHdrVideoAsSdrTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ForceInterpretHdrVideoAsSdrTest.java index 14ea44a229..fcb5ed47fc 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ForceInterpretHdrVideoAsSdrTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ForceInterpretHdrVideoAsSdrTest.java @@ -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 = diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java index 059d866745..527065fc56 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingMediaCodecTest.java @@ -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(); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingOpenGlTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingOpenGlTest.java index 0382df5605..3ab8ea174a 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingOpenGlTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ToneMapHdrToSdrUsingOpenGlTest.java @@ -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 = diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Composition.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Composition.java index 9588bb451d..dca25f49cc 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Composition.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Composition.java @@ -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. * diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItemSequence.java b/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItemSequence.java index fd7e8674bf..82e85f19fd 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItemSequence.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/EditedMediaItemSequence.java @@ -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 editedMediaItems) { this(editedMediaItems, /* isLooping= */ false); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java index e2d045915d..f7ce22da4d 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -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); } /** diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java index 23eee959f2..38f86f4941 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java @@ -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); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/FallbackListenerTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/FallbackListenerTest.java index 51d2ececc9..f3d9ed89f3 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/FallbackListenerTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/FallbackListenerTest.java @@ -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 diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java index a37ca1e6b5..52c30d0b84 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java @@ -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(); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java index 96a24ca485..baa7f1549c 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java @@ -131,16 +131,13 @@ public final class ParameterizedAudioExportTest { this.itemConfigs = itemConfigs; } - public EditedMediaItemSequence asSequence() { + public Composition asComposition() { ImmutableList.Builder 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() { diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java index a6e78a431b..70dd30ee91 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java @@ -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); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/VideoEncoderWrapperTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/VideoEncoderWrapperTest.java index 88df2f66b8..d079a3ab40 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/VideoEncoderWrapperTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/VideoEncoderWrapperTest.java @@ -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 =