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 8194d8f235..cb8219248f 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java @@ -211,6 +211,20 @@ public class TransformerAndroidTestRunner { } } + /** + * Transforms the {@link MediaItem}, saving a summary of the transformation to the application + * cache. + * + * @param testId A unique identifier for the transformer test run. + * @param mediaItem The {@link MediaItem} to transform. + * @return The {@link TransformationTestResult}. + * @throws Exception The cause of the transformation not completing. + */ + public TransformationTestResult run(String testId, MediaItem mediaItem) throws Exception { + EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); + return run(testId, editedMediaItem); + } + /** * Transforms the {@link EditedMediaItem}. * 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 56c9ad09b2..829a41cf50 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -101,12 +101,11 @@ public class TransformerEndToEndTest { .setEndPositionMs(clippingEndMs) .build()) .build(); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); TransformationTestResult result = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(/* testId= */ "clippedMedia_completesWithClippedDuration", editedMediaItem); + .run(/* testId= */ "clippedMedia_completesWithClippedDuration", mediaItem); assertThat(result.transformationResult.durationMs).isAtMost(clippingEndMs - clippingStartMs); } 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 68c79d6cd5..a5869915e8 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 @@ -27,7 +27,6 @@ import androidx.media3.common.C; import androidx.media3.common.MediaItem; import androidx.media3.common.util.Log; import androidx.media3.transformer.AndroidTestUtil; -import androidx.media3.transformer.EditedMediaItem; import androidx.media3.transformer.TransformationException; import androidx.media3.transformer.TransformationRequest; import androidx.media3.transformer.TransformationTestResult; @@ -68,14 +67,12 @@ public class ForceInterpretHdrVideoAsSdrTest { TransformationRequest.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR) .build()) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_SDR); Log.i(TAG, "Transformed."); } catch (TransformationException exception) { @@ -107,14 +104,12 @@ public class ForceInterpretHdrVideoAsSdrTest { TransformationRequest.HDR_MODE_EXPERIMENTAL_FORCE_INTERPRET_HDR_AS_SDR) .build()) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_SDR); Log.i(TAG, "Transformed."); } catch (TransformationException exception) { diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java index 2d9c079f69..8db693bba5 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/HdrEditingTest.java @@ -74,15 +74,13 @@ public class HdrEditingTest { Context context = ApplicationProvider.getApplicationContext(); Transformer transformer = new Transformer.Builder(context).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); Log.i(TAG, "Transformed."); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_ST2084); } catch (TransformationException exception) { @@ -99,15 +97,13 @@ public class HdrEditingTest { Context context = ApplicationProvider.getApplicationContext(); Transformer transformer = new Transformer.Builder(context).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); Log.i(TAG, "Transformed."); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_HLG); } catch (TransformationException exception) { @@ -295,10 +291,7 @@ public class HdrEditingTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_1_SECOND_HDR10_VIDEO_SDR_CONTAINER)); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + new TransformerAndroidTestRunner.Builder(context, transformer).build().run(testId, mediaItem); } private static boolean deviceSupportsHdrEditing(String mimeType, ColorInfo colorInfo) { 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 923e0c3559..23b6408f70 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 @@ -75,15 +75,13 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { } }) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); Log.i(TAG, "Tone mapped."); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_SDR); } catch (TransformationException exception) { @@ -121,15 +119,13 @@ public class ToneMapHdrToSdrUsingMediaCodecTest { } }) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); Log.i(TAG, "Tone mapped."); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_SDR); } catch (TransformationException exception) { 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 8cc3dfd313..637ed6a77a 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 @@ -32,7 +32,6 @@ import androidx.media3.common.util.GlUtil; import androidx.media3.common.util.Log; import androidx.media3.common.util.Util; import androidx.media3.transformer.AndroidTestUtil; -import androidx.media3.transformer.EditedMediaItem; import androidx.media3.transformer.TransformationException; import androidx.media3.transformer.TransformationRequest; import androidx.media3.transformer.TransformationTestResult; @@ -86,14 +85,12 @@ public class ToneMapHdrToSdrUsingOpenGlTest { .setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) .build()) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_5_SECOND_HLG10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); Log.i(TAG, "Tone mapped."); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_SDR); } catch (TransformationException exception) { @@ -139,14 +136,12 @@ public class ToneMapHdrToSdrUsingOpenGlTest { .setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL) .build()) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_1080P_4_SECOND_HDR10)); try { TransformationTestResult transformationTestResult = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); Log.i(TAG, "Tone mapped."); assertFileHasColorTransfer(transformationTestResult.filePath, C.COLOR_TRANSFER_SDR); } catch (TransformationException exception) { diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformationTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformationTest.java index d574c5775c..419d5b6656 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformationTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformationTest.java @@ -60,11 +60,10 @@ public class TransformationTest { .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING)); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); new TransformerAndroidTestRunner.Builder(context, transformer) .setRequestCalculateSsim(true) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); } @Test @@ -74,11 +73,8 @@ public class TransformationTest { Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING)); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); // No need to calculate SSIM because no decode/encoding, so input frames match output frames. - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + new TransformerAndroidTestRunner.Builder(context, transformer).build().run(testId, mediaItem); } @Test @@ -122,12 +118,11 @@ public class TransformationTest { .setEncoderFactory(new ForceEncodeEncoderFactory(context)) .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_REMOTE_4K60_PORTRAIT_URI_STRING)); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); new TransformerAndroidTestRunner.Builder(context, transformer) .setRequestCalculateSsim(true) .setTimeoutSeconds(180) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); } @Test @@ -146,14 +141,12 @@ public class TransformationTest { new Transformer.Builder(context) .setEncoderFactory(new ForceEncodeEncoderFactory(context)) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_REMOTE_8K24_URI_STRING))) - .build(); + MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_REMOTE_8K24_URI_STRING)); new TransformerAndroidTestRunner.Builder(context, transformer) .setRequestCalculateSsim(true) .setTimeoutSeconds(180) .build() - .run(testId, editedMediaItem); + .run(testId, mediaItem); } @Test 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 ca7e944268..7d5cb74b67 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -664,7 +664,6 @@ public final class Transformer { * it. * @param path The path to the output file. * @throws IllegalArgumentException If the path is invalid. - * @throws IllegalArgumentException If the {@link MediaItem} is not supported. * @throws IllegalStateException If this method is called from the wrong thread. * @throws IllegalStateException If a transformation is already in progress. */ @@ -673,9 +672,30 @@ public final class Transformer { } /** - * @deprecated Use {@link #startTransformation(EditedMediaItem, String)} instead. + * Starts an asynchronous operation to transform the given {@link MediaItem}. + * + *

The transformation state is notified through the {@linkplain Builder#addListener(Listener) + * listener}. + * + *

Concurrent transformations on the same Transformer object are not allowed. + * + *

If no custom {@link Muxer.Factory} is specified, the output is an MP4 file. + * + *

The output can contain at most one video track and one audio track. Other track types are + * ignored. For adaptive bitrate, if no custom {@link AssetLoader.Factory} is specified, the + * highest bitrate video and audio streams are selected. + * + *

If encoding the output's video track is needed, the output frames' dimensions will be + * swapped if the height is larger than the width. This is to improve compatibility among + * different device encoders. + * + * @param mediaItem The {@link MediaItem} to transform. + * @param path The path to the output file. + * @throws IllegalArgumentException If the path is invalid. + * @throws IllegalArgumentException If the {@link MediaItem} is not supported. + * @throws IllegalStateException If this method is called from the wrong thread. + * @throws IllegalStateException If a transformation is already in progress. */ - @Deprecated public void startTransformation(MediaItem mediaItem, String path) { if (!mediaItem.clippingConfiguration.equals(MediaItem.ClippingConfiguration.UNSET) && flattenForSlowMotion) { diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java index 0cc72a0f21..ead0c18513 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -129,10 +129,9 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_videoOnlyPassthrough_completesSuccessfully() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput(context, testMuxer, getDumpFileName(FILE_VIDEO_ONLY)); @@ -142,9 +141,8 @@ public final class TransformerEndToEndTest { public void startTransformation_audioOnlyPassthrough_completesSuccessfully() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( @@ -161,9 +159,8 @@ public final class TransformerEndToEndTest { .build()) .build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( @@ -173,10 +170,9 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_audioAndVideo_completesSuccessfully() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput(context, testMuxer, getDumpFileName(FILE_AUDIO_VIDEO)); @@ -196,9 +192,8 @@ public final class TransformerEndToEndTest { .setStartsAtKeyFrame(true) .build()) .build(); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( @@ -214,11 +209,9 @@ public final class TransformerEndToEndTest { .setTransformationRequest( new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build()) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_WITH_SUBTITLES)) - .build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_WITH_SUBTITLES); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput(context, testMuxer, getDumpFileName(FILE_WITH_SUBTITLES)); @@ -228,16 +221,15 @@ public final class TransformerEndToEndTest { public void startTransformation_successiveTransformations_completesSuccessfully() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); // Transform first media item. - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); Files.delete(Paths.get(outputPath)); // Transform second media item. - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput(context, testMuxer, getDumpFileName(FILE_AUDIO_VIDEO)); @@ -246,14 +238,12 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_concurrentTransformations_throwsError() { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); assertThrows( - IllegalStateException.class, - () -> transformer.startTransformation(editedMediaItem, outputPath)); + IllegalStateException.class, () -> transformer.startTransformation(mediaItem, outputPath)); } @Test @@ -293,9 +283,8 @@ public final class TransformerEndToEndTest { .experimentalSetGenerateSilentAudio(true) .build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( @@ -308,10 +297,9 @@ public final class TransformerEndToEndTest { createTransformerBuilder(/* enableFallback= */ false) .experimentalSetGenerateSilentAudio(true) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput(context, testMuxer, getDumpFileName(FILE_AUDIO_VIDEO)); @@ -358,10 +346,9 @@ public final class TransformerEndToEndTest { createTransformerBuilder(/* enableFallback= */ false) .experimentalSetGenerateSilentAudio(true) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( @@ -397,15 +384,14 @@ public final class TransformerEndToEndTest { .addListener(mockListener2) .addListener(mockListener3) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); - verify(mockListener1).onTransformationCompleted(eq(editedMediaItem.mediaItem), any()); - verify(mockListener2).onTransformationCompleted(eq(editedMediaItem.mediaItem), any()); - verify(mockListener3).onTransformationCompleted(eq(editedMediaItem.mediaItem), any()); + verify(mockListener1).onTransformationCompleted(eq(mediaItem), any()); + verify(mockListener2).onTransformationCompleted(eq(mediaItem), any()); + verify(mockListener3).onTransformationCompleted(eq(mediaItem), any()); } @Test @@ -422,19 +408,15 @@ public final class TransformerEndToEndTest { new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build()) .build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationException exception = assertThrows( TransformationException.class, () -> TransformerTestRunner.runLooper(transformer)); - verify(mockListener1) - .onTransformationError(eq(editedMediaItem.mediaItem), any(), eq(exception)); - verify(mockListener2) - .onTransformationError(eq(editedMediaItem.mediaItem), any(), eq(exception)); - verify(mockListener3) - .onTransformationError(eq(editedMediaItem.mediaItem), any(), eq(exception)); + verify(mockListener1).onTransformationError(eq(mediaItem), any(), eq(exception)); + verify(mockListener2).onTransformationError(eq(mediaItem), any(), eq(exception)); + verify(mockListener3).onTransformationError(eq(mediaItem), any(), eq(exception)); } @Test @@ -453,26 +435,16 @@ public final class TransformerEndToEndTest { .addListener(mockListener3) .build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); verify(mockListener1) - .onFallbackApplied( - editedMediaItem.mediaItem, - originalTransformationRequest, - fallbackTransformationRequest); + .onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest); verify(mockListener2) - .onFallbackApplied( - editedMediaItem.mediaItem, - originalTransformationRequest, - fallbackTransformationRequest); + .onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest); verify(mockListener3) - .onFallbackApplied( - editedMediaItem.mediaItem, - originalTransformationRequest, - fallbackTransformationRequest); + .onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest); } @Test @@ -488,15 +460,14 @@ public final class TransformerEndToEndTest { .addListener(mockListener3) .build(); Transformer transformer2 = transformer1.buildUpon().removeListener(mockListener2).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer2.startTransformation(editedMediaItem, outputPath); + transformer2.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer2); - verify(mockListener1).onTransformationCompleted(eq(editedMediaItem.mediaItem), any()); - verify(mockListener2, never()).onTransformationCompleted(eq(editedMediaItem.mediaItem), any()); - verify(mockListener3).onTransformationCompleted(eq(editedMediaItem.mediaItem), any()); + verify(mockListener1).onTransformationCompleted(eq(mediaItem), any()); + verify(mockListener2, never()).onTransformationCompleted(eq(mediaItem), any()); + verify(mockListener3).onTransformationCompleted(eq(mediaItem), any()); } @Test @@ -516,10 +487,9 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_completesWithValidBitrate() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationResult result = TransformerTestRunner.runLooper(transformer); assertThat(result.averageAudioBitrate).isGreaterThan(0); @@ -537,9 +507,8 @@ public final class TransformerEndToEndTest { .build()) .build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationException exception = assertThrows( TransformationException.class, () -> TransformerTestRunner.runLooper(transformer)); @@ -558,9 +527,8 @@ public final class TransformerEndToEndTest { .build()) .build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_DECODER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationException exception = assertThrows( TransformationException.class, () -> TransformerTestRunner.runLooper(transformer)); @@ -572,10 +540,9 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_withIoError_completesWithError() { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri("asset:///non-existing-path.mp4")).build(); + MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4"); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationException exception = assertThrows( TransformationException.class, () -> TransformerTestRunner.runLooper(transformer)); @@ -595,18 +562,14 @@ public final class TransformerEndToEndTest { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).addListener(mockListener).build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( context, testMuxer, getDumpFileName(FILE_AUDIO_UNSUPPORTED_BY_MUXER + ".fallback")); verify(mockListener) - .onFallbackApplied( - editedMediaItem.mediaItem, - originalTransformationRequest, - fallbackTransformationRequest); + .onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest); } @Test @@ -620,18 +583,14 @@ public final class TransformerEndToEndTest { Transformer transformer = createTransformerBuilder(/* enableFallback= */ true).addListener(mockListener).build(); MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER); - EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).build(); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput( context, testMuxer, getDumpFileName(FILE_AUDIO_UNSUPPORTED_BY_MUXER + ".fallback")); verify(mockListener) - .onFallbackApplied( - editedMediaItem.mediaItem, - originalTransformationRequest, - fallbackTransformationRequest); + .onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest); } @Test @@ -648,10 +607,9 @@ public final class TransformerEndToEndTest { .setAssetLoaderFactory(assetLoaderFactory) .setMuxerFactory(muxerFactory) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationException exception = assertThrows( TransformationException.class, () -> TransformerTestRunner.runLooper(transformer)); @@ -665,10 +623,9 @@ public final class TransformerEndToEndTest { Muxer.Factory muxerFactory = new TestMuxerFactory(/* maxDelayBetweenSamplesMs= */ C.TIME_UNSET); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).setMuxerFactory(muxerFactory).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); DumpFileAsserts.assertOutput(context, testMuxer, getDumpFileName(FILE_AUDIO_VIDEO)); @@ -677,15 +634,14 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_afterCancellation_completesSuccessfully() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); transformer.cancel(); Files.delete(Paths.get(outputPath)); // This would throw if the previous transformation had not been cancelled. - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformationResult transformationResult = TransformerTestRunner.runLooper(transformer); // TODO(b/264974805): Make transformation output deterministic and check it against dump file. @@ -699,8 +655,7 @@ public final class TransformerEndToEndTest { Looper looper = anotherThread.getLooper(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).setLooper(looper).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); AtomicReference exception = new AtomicReference<>(); CountDownLatch countDownLatch = new CountDownLatch(1); @@ -708,7 +663,7 @@ public final class TransformerEndToEndTest { .post( () -> { try { - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); } catch (Exception e) { exception.set(e); @@ -725,8 +680,7 @@ public final class TransformerEndToEndTest { @Test public void startTransformation_fromWrongThread_throwsError() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); HandlerThread anotherThread = new HandlerThread("AnotherThread"); AtomicReference illegalStateException = new AtomicReference<>(); CountDownLatch countDownLatch = new CountDownLatch(1); @@ -736,7 +690,7 @@ public final class TransformerEndToEndTest { .post( () -> { try { - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); } catch (IllegalStateException e) { illegalStateException.set(e); } finally { @@ -757,10 +711,9 @@ public final class TransformerEndToEndTest { .setAssetLoaderFactory( new FakeAssetLoader.Factory(SUPPORTED_OUTPUT_TYPE_DECODED, sampleConsumerRef)) .build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_VIDEO); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); runLooperUntil(transformer.getApplicationLooper(), () -> sampleConsumerRef.get() != null); assertThat(sampleConsumerRef.get().expectsDecodedData()).isTrue(); @@ -811,8 +764,7 @@ public final class TransformerEndToEndTest { @Test public void getProgress_knownDuration_returnsConsistentStates() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); AtomicInteger previousProgressState = new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY); AtomicBoolean foundInconsistentState = new AtomicBoolean(); @@ -848,7 +800,7 @@ public final class TransformerEndToEndTest { } }; - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); progressHandler.sendEmptyMessage(0); TransformerTestRunner.runLooper(transformer); @@ -858,8 +810,7 @@ public final class TransformerEndToEndTest { @Test public void getProgress_knownDuration_givesIncreasingPercentages() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); List progresses = new ArrayList<>(); Handler progressHandler = new Handler(Looper.myLooper()) { @@ -878,7 +829,7 @@ public final class TransformerEndToEndTest { } }; - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); progressHandler.sendEmptyMessage(0); TransformerTestRunner.runLooper(transformer); @@ -894,11 +845,10 @@ public final class TransformerEndToEndTest { @Test public void getProgress_noCurrentTransformation_returnsNoTransformation() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); @Transformer.ProgressState int stateBeforeTransform = transformer.getProgress(progressHolder); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); @Transformer.ProgressState int stateAfterTransform = transformer.getProgress(progressHolder); @@ -909,9 +859,7 @@ public final class TransformerEndToEndTest { @Test public void getProgress_unknownDuration_returnsConsistentStates() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_UNKNOWN_DURATION)) - .build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_UNKNOWN_DURATION); AtomicInteger previousProgressState = new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY); AtomicBoolean foundInconsistentState = new AtomicBoolean(); @@ -944,7 +892,7 @@ public final class TransformerEndToEndTest { } }; - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); progressHandler.sendEmptyMessage(0); TransformerTestRunner.runLooper(transformer); @@ -978,10 +926,9 @@ public final class TransformerEndToEndTest { @Test public void cancel_afterCompletion_doesNotThrow() throws Exception { Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build(); - EditedMediaItem editedMediaItem = - new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY)).build(); + MediaItem mediaItem = MediaItem.fromUri(ASSET_URI_PREFIX + FILE_VIDEO_ONLY); - transformer.startTransformation(editedMediaItem, outputPath); + transformer.startTransformation(mediaItem, outputPath); TransformerTestRunner.runLooper(transformer); transformer.cancel(); }