From 414dbebc2ba89ba9582dc024a338ed8964701d90 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Thu, 23 May 2024 04:14:41 -0700 Subject: [PATCH] Assert file size in E2E android tests that claim to complete. Remove redundant test logic to add file size to ExportResult because the file size is already added to export result as part of an export finishing. PiperOrigin-RevId: 636499236 --- .../androidx/media3/test/utils/TestUtil.java | 1 + .../transformer/ForceEndOfStreamTest.java | 3 + .../TransformerAndroidTestRunner.java | 6 +- .../transformer/TransformerEndToEndTest.java | 28 +++ .../TransformerMixedInputEndToEndTest.java | 5 + ...ansformerMultiSequenceCompositionTest.java | 10 +- .../TransformerPauseResumeTest.java | 53 +++--- .../TransformerSequenceEffectTest.java | 31 ++-- .../transformer/TransformerUltraHdrTest.java | 11 -- ...rmerWithInAppMuxerEndToEndAndroidTest.java | 20 ++- .../media3/transformer/mh/ExportTest.java | 160 +++++++++++------- .../mh/TransformerMhUltraHdrTest.java | 8 - .../TransformerSequenceEffectTestWithHdr.java | 7 +- ...ansformerWithInAppMuxerEndToEndMhTest.java | 2 + 14 files changed, 202 insertions(+), 143 deletions(-) diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestUtil.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestUtil.java index 21fba35eee..c338868508 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestUtil.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestUtil.java @@ -375,6 +375,7 @@ public class TestUtil { public static Format retrieveTrackFormat( Context context, String fileUri, @C.TrackType int trackType) throws ExecutionException, InterruptedException { + checkState(new File(fileUri).length() > 0); TrackGroupArray trackGroupArray; trackGroupArray = MetadataRetriever.retrieveMetadata(context, MediaItem.fromUri(fileUri)).get(); for (int i = 0; i < trackGroupArray.length; i++) { 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 2b51132011..62a82cba8b 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java @@ -34,6 +34,7 @@ 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 java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import org.json.JSONException; @@ -81,6 +82,7 @@ public class ForceEndOfStreamTest { assertThat(testResult.analysisException).isNull(); assertThat(testResult.exportResult.videoFrameCount) .isEqualTo(MP4_ASSET_FRAME_COUNT - framesToSkip); + assertThat(new File(testResult.filePath).length()).isGreaterThan(0); } @Test @@ -100,6 +102,7 @@ public class ForceEndOfStreamTest { assertThat(testResult.analysisException).isNull(); assertThat(testResult.exportResult.videoFrameCount).isEqualTo(MP4_ASSET_FRAME_COUNT); + assertThat(new File(testResult.filePath).length()).isGreaterThan(0); } private static boolean skipTestBelowApi29(Context context, String testId) 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 aa39b99f06..7b5970402c 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerAndroidTestRunner.java @@ -432,11 +432,7 @@ public class TransformerAndroidTestRunner { // No exceptions raised, export has succeeded. ExportTestResult.Builder testResultBuilder = - new ExportTestResult.Builder( - checkNotNull(exportResultReference.get()) - .buildUpon() - .setFileSizeBytes(outputVideoFile.length()) - .build()) + new ExportTestResult.Builder(checkNotNull(exportResultReference.get())) .setElapsedTimeMs(elapsedTimeMs) .setFallbackDetails(fallbackDetails) .setFilePath(outputVideoFile.getPath()); 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 4f02c429df..216582b94f 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -94,6 +94,7 @@ import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import java.io.File; import java.nio.ByteBuffer; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.junit.Before; @@ -186,6 +187,7 @@ public class TransformerEndToEndTest { // audioSequence duration: ~2s (2 inputs). // loopingAudioSequence: Matches max other sequence (~3.5s) -> 4 inputs of ~1s audio item. assertThat(result.exportResult.processedInputs).hasSize(9); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -226,6 +228,7 @@ public class TransformerEndToEndTest { // loopingAudioSequence: Matches other sequence (~0.5s) and is cut short. assertThat(result.exportResult.durationMs).isAtLeast(450); assertThat(result.exportResult.durationMs).isAtMost(500); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -250,6 +253,7 @@ public class TransformerEndToEndTest { // Expected timestamp of the last frame. assertThat(result.exportResult.durationMs) .isEqualTo((C.MILLIS_PER_SECOND / expectedFrameCount) * (expectedFrameCount - 1)); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -271,6 +275,7 @@ public class TransformerEndToEndTest { // Expected timestamp of the last frame. assertThat(result.exportResult.durationMs) .isEqualTo((C.MILLIS_PER_SECOND / expectedFrameCount) * (expectedFrameCount - 1)); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -325,6 +330,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.videoFrameCount).isEqualTo(expectedFrameCount); // Expected timestamp of the last frame. assertThat(result.exportResult.durationMs).isEqualTo(C.MILLIS_PER_SECOND / 2); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -376,6 +382,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.videoFrameCount).isEqualTo(expectedFrameCount); // Expected timestamp of the last frame. assertThat(result.exportResult.durationMs).isEqualTo(C.MILLIS_PER_SECOND / 2); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -402,6 +409,7 @@ public class TransformerEndToEndTest { .run(testId, editedMediaItem); assertThat(result.exportResult.videoFrameCount).isEqualTo(expectedFrameCount); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -437,6 +445,7 @@ public class TransformerEndToEndTest { .run(testId, editedMediaItem); assertThat(result.exportResult.videoFrameCount).isEqualTo(expectedFrameCount); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -461,6 +470,7 @@ public class TransformerEndToEndTest { .run(testId, editedMediaItem); assertThat(result.exportResult.durationMs).isEqualTo(expectedDurationMs); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -489,6 +499,7 @@ public class TransformerEndToEndTest { .run(testId, mediaItem); assertThat(result.exportResult.durationMs).isAtMost(clippingEndMs - clippingStartMs); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -565,6 +576,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.durationMs).isAtMost(clippingEndMs - clippingStartMs); assertThat(result.exportResult.videoConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSCODED); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -646,6 +658,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.durationMs).isAtMost(clippingEndMs - clippingStartMs); assertThat(result.exportResult.videoConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSCODED); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -680,6 +693,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.durationMs).isAtMost(1_017); assertThat(result.exportResult.videoConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSCODED); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -714,6 +728,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.videoConversionProcess) .isEqualTo(CONVERSION_PROCESS_TRANSMUXED_AND_TRANSCODED); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -873,6 +888,7 @@ public class TransformerEndToEndTest { .isEqualTo(OPTIMIZATION_ABANDONED_TRIM_AND_TRANSCODING_TRANSFORMATION_REQUESTED); assertThat(result.exportResult.videoConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSCODED); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -908,6 +924,7 @@ public class TransformerEndToEndTest { // 3 / 0.5 + 3 / 0.75 + 3 + 3 / 1.5 + 3.537 / 2 rounds up to 16_770 assertThat(result.exportResult.durationMs).isAtLeast(16_750); assertThat(result.exportResult.durationMs).isAtMost(16_770); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -949,6 +966,7 @@ public class TransformerEndToEndTest { // 3 / 0.5 + 3 / 0.75 + 3 + 3 / 1.5 + 3.537 / 2 rounds up to 16_770 assertThat(result.exportResult.durationMs).isAtLeast(16_720); assertThat(result.exportResult.durationMs).isAtMost(16_770); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1003,6 +1021,7 @@ public class TransformerEndToEndTest { .run(testId, composition); assertThat(result.exportResult.durationMs).isEqualTo(10_351L); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1032,6 +1051,7 @@ public class TransformerEndToEndTest { .run(testId, composition); assertThat(result.exportResult.durationMs).isAtMost(20_720L); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1078,6 +1098,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.videoFrameCount) .isEqualTo(expectedResult.exportResult.videoFrameCount); assertThat(result.exportResult.durationMs).isEqualTo(expectedResult.exportResult.durationMs); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1117,6 +1138,7 @@ public class TransformerEndToEndTest { // will be seen in result.exportResult.durationMs. assertThat(result.exportResult.durationMs).isAtLeast(2970); assertThat(result.exportResult.durationMs).isAtMost(3020); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1154,6 +1176,7 @@ public class TransformerEndToEndTest { // will be seen in result.exportResult.durationMs. assertThat(result.exportResult.durationMs).isAtLeast(3100); assertThat(result.exportResult.durationMs).isAtMost(3150); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1190,6 +1213,7 @@ public class TransformerEndToEndTest { assertThat(result.exportResult.durationMs).isAtLeast(3120); assertThat(result.exportResult.durationMs).isAtMost(3140); assertThat(result.exportResult.videoFrameCount).isEqualTo(95); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1223,6 +1247,7 @@ public class TransformerEndToEndTest { // will be seen in result.exportResult.durationMs. assertThat(result.exportResult.durationMs).isAtLeast(1000); assertThat(result.exportResult.durationMs).isAtMost(1050); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1286,6 +1311,7 @@ public class TransformerEndToEndTest { .run(testId, composition); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1306,6 +1332,7 @@ public class TransformerEndToEndTest { .run(testId, composition); assertThat(result.exportResult.audioConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSCODED); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -1592,6 +1619,7 @@ public class TransformerEndToEndTest { // will be seen in result.exportResult.durationMs. assertThat(result.exportResult.durationMs).isAtLeast(1_360); assertThat(result.exportResult.durationMs).isAtMost(1_400); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } private static AudioProcessor createSonic(float pitch) { 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 8547c6c6fa..c5a643ad52 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMixedInputEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMixedInputEndToEndTest.java @@ -34,6 +34,7 @@ import androidx.media3.effect.Presentation; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; +import java.io.File; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -84,6 +85,7 @@ public class TransformerMixedInputEndToEndTest { assertThat(result.exportResult.videoFrameCount) .isEqualTo(imageFrameCount + MP4_ASSET_FRAME_COUNT); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -109,6 +111,7 @@ public class TransformerMixedInputEndToEndTest { assertThat(result.exportResult.videoFrameCount) .isEqualTo(imageFrameCount + MP4_ASSET_FRAME_COUNT); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -146,6 +149,7 @@ public class TransformerMixedInputEndToEndTest { assertThat(result.exportResult.videoFrameCount) .isEqualTo(3 * imageFrameCount + 4 * MP4_ASSET_FRAME_COUNT); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -183,6 +187,7 @@ public class TransformerMixedInputEndToEndTest { assertThat(result.exportResult.videoFrameCount) .isEqualTo(4 * imageFrameCount + 3 * MP4_ASSET_FRAME_COUNT); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } /** Creates an {@link EditedMediaItem} with image, with duration of one second. */ diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMultiSequenceCompositionTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMultiSequenceCompositionTest.java index b0314831ed..f8124d9f65 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMultiSequenceCompositionTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerMultiSequenceCompositionTest.java @@ -46,6 +46,7 @@ import androidx.media3.effect.VideoCompositorSettings; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; +import java.io.File; import java.io.IOException; import java.util.List; import org.junit.Before; @@ -108,8 +109,7 @@ public final class TransformerMultiSequenceCompositionTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpected( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -143,8 +143,7 @@ public final class TransformerMultiSequenceCompositionTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpected( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -200,8 +199,7 @@ public final class TransformerMultiSequenceCompositionTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpected( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java index cecb42b874..34ea085fe3 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerPauseResumeTest.java @@ -42,6 +42,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.platform.app.InstrumentationRegistry; import com.google.common.base.Ascii; import com.google.common.collect.ImmutableList; +import java.io.File; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -97,13 +98,14 @@ public class TransformerPauseResumeTest { "Transformer timed out after " + DEFAULT_TIMEOUT_SECONDS + " seconds."); } InstrumentationRegistry.getInstrumentation().runOnMainSync(blockingTransformer::cancel); - TransformerAndroidTestRunner testRunner = - new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) - .build(); // Resume the export. - ExportResult exportResult = testRunner.run(testId, composition, firstOutputPath).exportResult; + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) + .build() + .run(testId, composition, firstOutputPath); + ExportResult exportResult = result.exportResult; assertThat(exportResult.processedInputs).hasSize(4); assertThat(exportResult.videoFrameCount).isEqualTo(MP4_ASSET_FRAME_COUNT); // The first processed media item corresponds to remuxing previous output video. @@ -120,6 +122,7 @@ public class TransformerPauseResumeTest { // The fourth processed media item corresponds to transmuxing processed video. assertThat(exportResult.processedInputs.get(3).audioDecoderName).isNull(); assertThat(exportResult.processedInputs.get(3).videoDecoderName).isNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -146,15 +149,16 @@ public class TransformerPauseResumeTest { }); // Resume the export. - ExportResult exportResult = + ExportTestResult result = new TransformerAndroidTestRunner.Builder(context, transformer) .build() - .run(testId, composition, firstOutputPath) - .exportResult; + .run(testId, composition, firstOutputPath); + ExportResult exportResult = result.exportResult; // The first export did not progress because of the immediate cancellation hence resuming // actually restarts the export. assertThat(exportResult.processedInputs).hasSize(1); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -190,12 +194,12 @@ public class TransformerPauseResumeTest { InstrumentationRegistry.getInstrumentation().runOnMainSync(blockingTransformer::cancel); // Resume the export. - ExportResult exportResultWithResume = + ExportTestResult resultWithResume = new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) .build() - .run(testId, composition, firstOutputPath) - .exportResult; + .run(testId, composition, firstOutputPath); + ExportResult exportResultWithResume = resultWithResume.exportResult; assertThat(exportResultWithResume.processedInputs).hasSize(4); assertThat(exportResultWithResume.audioEncoderName) .isEqualTo(exportResultWithoutResume.audioEncoderName); @@ -208,6 +212,7 @@ public class TransformerPauseResumeTest { int maxDiffExpectedInDurationMs = 2; assertThat(exportResultWithResume.durationMs - exportResultWithoutResume.durationMs) .isLessThan(maxDiffExpectedInDurationMs); + assertThat(new File(resultWithResume.filePath).length()).isGreaterThan(0); } @Test @@ -244,12 +249,12 @@ public class TransformerPauseResumeTest { InstrumentationRegistry.getInstrumentation().runOnMainSync(blockingTransformer::cancel); // Resume the export. - ExportResult exportResultWithResume = + ExportTestResult resultWithResume = new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) .build() - .run(testId, composition, firstOutputPath) - .exportResult; + .run(testId, composition, firstOutputPath); + ExportResult exportResultWithResume = resultWithResume.exportResult; assertThat(exportResultWithResume.processedInputs).hasSize(4); assertThat(exportResultWithResume.audioEncoderName) .isEqualTo(exportResultWithoutResume.audioEncoderName); @@ -260,6 +265,7 @@ public class TransformerPauseResumeTest { int maxDiffExpectedInDurationMs = 2; assertThat(exportResultWithResume.durationMs - exportResultWithoutResume.durationMs) .isLessThan(maxDiffExpectedInDurationMs); + assertThat(new File(resultWithResume.filePath).length()).isGreaterThan(0); } @Test @@ -286,12 +292,13 @@ public class TransformerPauseResumeTest { "Transformer timed out after " + DEFAULT_TIMEOUT_SECONDS + " seconds."); } InstrumentationRegistry.getInstrumentation().runOnMainSync(blockingTransformer::cancel); - TransformerAndroidTestRunner testRunner = + + ExportTestResult result = new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) - .build(); - - ExportResult exportResult = testRunner.run(testId, composition, firstOutputPath).exportResult; + .build() + .run(testId, composition, firstOutputPath); + ExportResult exportResult = result.exportResult; assertThat(exportResult.processedInputs).hasSize(6); int expectedVideoFrameCount = 2 * MP4_ASSET_FRAME_COUNT; assertThat(exportResult.videoFrameCount).isEqualTo(expectedVideoFrameCount); @@ -313,6 +320,7 @@ public class TransformerPauseResumeTest { // The last processed media item corresponds to transmuxing processed video. assertThat(exportResult.processedInputs.get(5).audioDecoderName).isNull(); assertThat(exportResult.processedInputs.get(5).videoDecoderName).isNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -346,13 +354,13 @@ public class TransformerPauseResumeTest { "Transformer timed out after " + DEFAULT_TIMEOUT_SECONDS + " seconds."); } InstrumentationRegistry.getInstrumentation().runOnMainSync(blockingTransformer::cancel); - TransformerAndroidTestRunner testRunner = + + ExportTestResult resultWithResume = new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) - .build(); - - ExportResult exportResultWithResume = - testRunner.run(testId, composition, firstOutputPath).exportResult; + .build() + .run(testId, composition, firstOutputPath); + ExportResult exportResultWithResume = resultWithResume.exportResult; assertThat(exportResultWithResume.processedInputs).hasSize(6); assertThat(exportResultWithResume.audioEncoderName) .isEqualTo(exportResultWithoutResume.audioEncoderName); @@ -363,6 +371,7 @@ public class TransformerPauseResumeTest { int maxDiffExpectedInDurationMs = 2; assertThat(exportResultWithResume.durationMs - exportResultWithoutResume.durationMs) .isLessThan(maxDiffExpectedInDurationMs); + assertThat(new File(resultWithResume.filePath).length()).isGreaterThan(0); } private static Composition buildSingleSequenceComposition( 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 890cefe9e1..c14e765890 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerSequenceEffectTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerSequenceEffectTest.java @@ -71,6 +71,7 @@ import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.base.Ascii; import com.google.common.collect.ImmutableList; +import java.io.File; import java.io.IOException; import java.util.List; import org.junit.After; @@ -140,8 +141,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpectedAndSave( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -174,7 +174,7 @@ public final class TransformerSequenceEffectTest { } atLeastOneDecoderSucceeds = true; - assertThat(checkNotNull(result).filePath).isNotNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertFirstFrameMatchesExpectedPsnrAndSave( context, testId, checkNotNull(result.filePath), PSNR_THRESHOLD_HD); } @@ -214,7 +214,7 @@ public final class TransformerSequenceEffectTest { } atLeastOneDecoderSucceeds = true; - assertThat(checkNotNull(result).filePath).isNotNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertFirstFrameMatchesExpectedPsnrAndSave( context, testId, checkNotNull(result.filePath), PSNR_THRESHOLD_HD); } @@ -252,7 +252,7 @@ public final class TransformerSequenceEffectTest { } atLeastOneDecoderSucceeds = true; - assertThat(checkNotNull(result).filePath).isNotNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertFirstFrameMatchesExpectedPsnrAndSave( context, testId, checkNotNull(result.filePath), PSNR_THRESHOLD); } @@ -293,7 +293,7 @@ public final class TransformerSequenceEffectTest { } atLeastOneDecoderSucceeds = true; - assertThat(checkNotNull(result).filePath).isNotNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertFirstFrameMatchesExpectedPsnrAndSave( context, testId, checkNotNull(result.filePath), PSNR_THRESHOLD_HD); } @@ -335,7 +335,7 @@ public final class TransformerSequenceEffectTest { } atLeastOneDecoderSucceeds = true; - assertThat(checkNotNull(result).filePath).isNotNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertFirstFrameMatchesExpectedPsnrAndSave( context, testId, checkNotNull(result.filePath), PSNR_THRESHOLD); } @@ -388,7 +388,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(checkNotNull(result).filePath).isNotNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); // The PSNR threshold was chosen based on: // Pixel 8 with coordinate rounding error during texture sampling, hits PSNR 23.4. With fix -> // 29.5 @@ -438,8 +438,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpectedAndSave( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -462,8 +461,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpectedAndSave( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -487,8 +485,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpectedAndSave( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -513,8 +510,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpectedAndSave( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } @@ -539,8 +535,7 @@ public final class TransformerSequenceEffectTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); assertBitmapsMatchExpectedAndSave( extractBitmapsFromVideo(context, checkNotNull(result.filePath)), testId); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java index fcd72c2776..f9c7363167 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerUltraHdrTest.java @@ -24,7 +24,6 @@ import static androidx.media3.transformer.AndroidTestUtil.assumeFormatsSupported import static androidx.media3.transformer.Composition.HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL; import static androidx.media3.transformer.SequenceEffectTestUtil.NO_EFFECT; import static androidx.media3.transformer.SequenceEffectTestUtil.oneFrameFromImage; -import static com.google.common.truth.Truth.assertThat; import static org.junit.Assume.assumeTrue; import android.content.Context; @@ -94,8 +93,6 @@ public final class TransformerUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); assertSdrColors(context, result.filePath); } @@ -116,8 +113,6 @@ public final class TransformerUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); assertSdrColors(context, result.filePath); } @@ -139,8 +134,6 @@ public final class TransformerUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); assertSdrColors(context, result.filePath); } @@ -155,8 +148,6 @@ public final class TransformerUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); assertSdrColors(context, result.filePath); } @@ -173,8 +164,6 @@ public final class TransformerUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); assertSdrColors(context, result.filePath); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndAndroidTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndAndroidTest.java index 73aa3ec717..7d1985e24e 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndAndroidTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndAndroidTest.java @@ -18,6 +18,7 @@ package androidx.media3.transformer; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET_FORMAT; import static androidx.media3.transformer.AndroidTestUtil.assumeFormatsSupported; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assume.assumeTrue; import android.content.Context; @@ -29,6 +30,7 @@ import androidx.media3.common.audio.ChannelMixingMatrix; import androidx.media3.effect.RgbFilter; import androidx.test.core.app.ApplicationProvider; import com.google.common.collect.ImmutableList; +import java.io.File; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.junit.Test; import org.junit.runner.RunWith; @@ -71,9 +73,12 @@ public class TransformerWithInAppMuxerEndToEndAndroidTest { .setEffects(new Effects(/* audioProcessors= */ ImmutableList.of(), videoEffects)) .build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -98,8 +103,11 @@ public class TransformerWithInAppMuxerEndToEndAndroidTest { /* videoEffects= */ ImmutableList.of())) .build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java index 5949d74935..f75dc4cfd3 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/ExportTest.java @@ -63,6 +63,7 @@ import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.base.Ascii; import com.google.common.collect.ImmutableList; +import java.io.File; import org.junit.AssumptionViolatedException; import org.junit.Before; import org.junit.Rule; @@ -93,7 +94,6 @@ public class ExportTest { testId, /* inputFormat= */ MP4_ASSET_WITH_INCREASING_TIMESTAMPS_FORMAT, /* outputFormat= */ null); - Transformer transformer = new Transformer.Builder(context) .setEncoderFactory(new ForceEncodeEncoderFactory(context)) @@ -103,10 +103,14 @@ public class ExportTest { boolean skipCalculateSsim = (Util.SDK_INT < 33 && (Util.MODEL.equals("SM-F711U1") || Util.MODEL.equals("SM-F926U1"))) || (Util.SDK_INT == 33 && Util.MODEL.equals("LE2121")); - new TransformerAndroidTestRunner.Builder(context, transformer) - .setRequestCalculateSsim(!skipCalculateSsim) - .build() - .run(testId, mediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .setRequestCalculateSsim(!skipCalculateSsim) + .build() + .run(testId, mediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -116,7 +120,13 @@ public class ExportTest { MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING)); // No need to calculate SSIM because no decode/encoding, so input frames match output frames. - new TransformerAndroidTestRunner.Builder(context, transformer).build().run(testId, mediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, mediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -143,10 +153,14 @@ public class ExportTest { boolean skipCalculateSsim = (Util.SDK_INT < 33 && (Util.MODEL.equals("SM-F711U1") || Util.MODEL.equals("SM-F926U1"))) || (Util.SDK_INT == 33 && Util.MODEL.equals("LE2121")); - new TransformerAndroidTestRunner.Builder(context, transformer) - .setRequestCalculateSsim(!skipCalculateSsim) - .build() - .run(testId, editedMediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .setRequestCalculateSsim(!skipCalculateSsim) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -161,18 +175,21 @@ public class ExportTest { assumeFalse( "Skip due to over-reported encoder capabilities", Util.SDK_INT == 29 && Ascii.equalsIgnoreCase(Util.MODEL, "pixel 3")); - Transformer transformer = new Transformer.Builder(context) .setEncoderFactory(new ForceEncodeEncoderFactory(context)) .build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_4K60_PORTRAIT_URI_STRING)); boolean skipCalculateSsim = Util.SDK_INT < 30 && Util.DEVICE.equals("joyeuse"); - new TransformerAndroidTestRunner.Builder(context, transformer) - .setRequestCalculateSsim(!skipCalculateSsim) - .setTimeoutSeconds(180) - .build() - .run(testId, mediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .setRequestCalculateSsim(!skipCalculateSsim) + .setTimeoutSeconds(180) + .build() + .run(testId, mediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -184,11 +201,9 @@ public class ExportTest { || Ascii.equalsIgnoreCase(Util.MODEL, "sm-f916u1") || Ascii.equalsIgnoreCase(Util.MODEL, "sm-g981u1") || Ascii.equalsIgnoreCase(Util.MODEL, "le2121")); - Context context = ApplicationProvider.getApplicationContext(); assumeFormatsSupported( context, testId, /* inputFormat= */ MP4_ASSET_8K24_FORMAT, /* outputFormat= */ null); - Transformer transformer = new Transformer.Builder(context) .setEncoderFactory(new ForceEncodeEncoderFactory(context)) @@ -196,11 +211,15 @@ public class ExportTest { MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_8K24_URI_STRING)); // TODO: b/281824052 - have requestCalculateSsim always be true after linked bug is fixed. boolean requestCalculateSsim = !Util.MODEL.equals("SM-G991B"); - new TransformerAndroidTestRunner.Builder(context, transformer) - .setRequestCalculateSsim(requestCalculateSsim) - .setTimeoutSeconds(120) - .build() - .run(testId, mediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .setRequestCalculateSsim(requestCalculateSsim) + .setTimeoutSeconds(120) + .build() + .run(testId, mediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -208,7 +227,6 @@ public class ExportTest { // This test is to cover devices that are able to either decode or encode 8K, but not transcode. int downscaledWidth = 320; int downscaledHeight = 240; - Context context = ApplicationProvider.getApplicationContext(); assumeFormatsSupported( context, @@ -220,21 +238,24 @@ public class ExportTest { .setHeight(downscaledHeight) .build()); - new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) - .setTimeoutSeconds(120) - .build() - .run( - testId, - new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_8K24_URI_STRING))) - .setEffects( - new Effects( - /* audioProcessors= */ ImmutableList.of(), - /* videoEffects= */ ImmutableList.of( - Presentation.createForWidthAndHeight( - downscaledWidth, - downscaledHeight, - Presentation.LAYOUT_SCALE_TO_FIT)))) - .build()); + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) + .setTimeoutSeconds(120) + .build() + .run( + testId, + new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_8K24_URI_STRING))) + .setEffects( + new Effects( + /* audioProcessors= */ ImmutableList.of(), + /* videoEffects= */ ImmutableList.of( + Presentation.createForWidthAndHeight( + downscaledWidth, + downscaledHeight, + Presentation.LAYOUT_SCALE_TO_FIT)))) + .build()); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -245,7 +266,6 @@ public class ExportTest { testId, /* inputFormat= */ MP4_ASSET_WITH_INCREASING_TIMESTAMPS_FORMAT, /* outputFormat= */ null); - Transformer transformer = new Transformer.Builder(context) .setEncoderFactory(new ForceEncodeEncoderFactory(context)) @@ -257,10 +277,14 @@ public class ExportTest { boolean skipCalculateSsim = (Util.SDK_INT < 33 && (Util.MODEL.equals("SM-F711U1") || Util.MODEL.equals("SM-F926U1"))) || (Util.SDK_INT == 33 && Util.MODEL.equals("LE2121")); - new TransformerAndroidTestRunner.Builder(context, transformer) - .setRequestCalculateSsim(!skipCalculateSsim) - .build() - .run(testId, editedMediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .setRequestCalculateSsim(!skipCalculateSsim) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -274,27 +298,30 @@ public class ExportTest { new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_URI_STRING))) .setRemoveVideo(true) .build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test public void exportSef() throws Exception { Context context = ApplicationProvider.getApplicationContext(); - if (SDK_INT < 25) { // TODO(b/210593256): Remove test skipping after using an in-app muxer that supports B-frames // before API 25. recordTestSkipped(context, testId, /* reason= */ "API version lacks muxing support"); return; } - Transformer transformer = new Transformer.Builder(context).build(); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_SEF_URI_STRING))) .setFlattenForSlowMotion(true) .build(); + ExportTestResult result = new TransformerAndroidTestRunner.Builder(context, transformer) .build() @@ -302,27 +329,30 @@ public class ExportTest { assertThat(result.exportResult.durationMs).isGreaterThan(800); assertThat(result.exportResult.durationMs).isLessThan(950); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test public void exportSefH265() throws Exception { Context context = ApplicationProvider.getApplicationContext(); - if (SDK_INT < 25) { // TODO(b/210593256): Remove test skipping after using an in-app muxer that supports B-frames // before API 25. recordTestSkipped(context, testId, /* reason= */ "API version lacks muxing support"); return; } - Transformer transformer = new Transformer.Builder(context).build(); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(MP4_ASSET_SEF_H265_URI_STRING))) .setFlattenForSlowMotion(true) .build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -333,7 +363,6 @@ public class ExportTest { testId, /* inputFormat= */ MP4_ASSET_WITH_INCREASING_TIMESTAMPS_FORMAT, /* outputFormat= */ null); - Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_WITH_INCREASING_TIMESTAMPS_URI_STRING)); @@ -343,9 +372,12 @@ public class ExportTest { EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(effects).build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -359,15 +391,17 @@ public class ExportTest { } assumeFormatsSupported( context, testId, /* inputFormat= */ MP4_ASSET_BT2020_SDR_FORMAT, /* outputFormat= */ null); - Transformer transformer = new Transformer.Builder(context).build(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse(MP4_ASSET_BT2020_SDR)); EditedMediaItem editedMediaItem = new EditedMediaItem.Builder(mediaItem).setEffects(FORCE_TRANSCODE_VIDEO_EFFECTS).build(); - new TransformerAndroidTestRunner.Builder(context, transformer) - .build() - .run(testId, editedMediaItem); + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .build() + .run(testId, editedMediaItem); + + assertThat(new File(result.filePath).length()).isGreaterThan(0); } @Test @@ -399,6 +433,7 @@ public class ExportTest { new TransformerAndroidTestRunner.Builder(context, transformer) .build() .run(testId, editedMediaItem); + Mp4Extractor mp4Extractor = new Mp4Extractor(new DefaultSubtitleParserFactory()); FakeExtractorOutput fakeExtractorOutput = TestUtil.extractAllSamplesFromFilePath(mp4Extractor, result.filePath); @@ -406,7 +441,6 @@ public class ExportTest { byte[] sps = videoTrack.lastFormat.initializationData.get(0); // Skip 7 bytes: NAL unit start code (4) and NAL unit type, profile, and reserved fields. int spsLevelIndex = 7; - assertThat(result.exportResult.optimizationResult).isEqualTo(OPTIMIZATION_SUCCEEDED); assertThat(result.exportResult.durationMs).isAtMost(700); assertThat(result.exportResult.videoConversionProcess) diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java index 6711ec72ee..f33b1e9f2a 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerMhUltraHdrTest.java @@ -83,8 +83,6 @@ public final class TransformerMhUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); ColorInfo colorInfo = retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT2020); @@ -105,8 +103,6 @@ public final class TransformerMhUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); ColorInfo colorInfo = retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT2020); @@ -127,8 +123,6 @@ public final class TransformerMhUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); ColorInfo colorInfo = retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO).colorInfo; assertThat(colorInfo.colorSpace).isEqualTo(C.COLOR_SPACE_BT2020); @@ -149,8 +143,6 @@ public final class TransformerMhUltraHdrTest { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); assertSdrColors(context, result.filePath); } diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerSequenceEffectTestWithHdr.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerSequenceEffectTestWithHdr.java index 6476190cd9..09e5d8c87b 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerSequenceEffectTestWithHdr.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerSequenceEffectTestWithHdr.java @@ -59,6 +59,7 @@ 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.File; import java.util.List; import org.junit.Before; import org.junit.Rule; @@ -107,8 +108,7 @@ public final class TransformerSequenceEffectTestWithHdr { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); // Expected bitmaps were generated on the Pixel 7 Pro, because emulators don't // support decoding HDR. assertBitmapsMatchExpectedAndSave( @@ -186,8 +186,7 @@ public final class TransformerSequenceEffectTestWithHdr { .build() .run(testId, composition); - assertThat(result.filePath).isNotEmpty(); - assertThat(result.exportResult.fileSizeBytes).isGreaterThan(0); + assertThat(new File(result.filePath).length()).isGreaterThan(0); // Expected bitmaps were generated on the Samsung S22 Ultra (US), because emulators don't // support decoding HDR, and the Pixel 7 Pro does support HDR editing. assertBitmapsMatchExpectedAndSave( diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerWithInAppMuxerEndToEndMhTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerWithInAppMuxerEndToEndMhTest.java index c5ddd2c2e3..546de622ca 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerWithInAppMuxerEndToEndMhTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TransformerWithInAppMuxerEndToEndMhTest.java @@ -34,6 +34,7 @@ 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.File; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -74,5 +75,6 @@ public class TransformerWithInAppMuxerEndToEndMhTest { .run(testId, editedMediaItem); assertThat(result.exportResult.exportException).isNull(); + assertThat(new File(result.filePath).length()).isGreaterThan(0); } }