diff --git a/libraries/test_data/src/test/assets/media/mp4/sample_with_increasing_timestamps_360p.mp4 b/libraries/test_data/src/test/assets/media/mp4/sample_with_increasing_timestamps_360p.mp4 new file mode 100644 index 0000000000..d1176df993 Binary files /dev/null and b/libraries/test_data/src/test/assets/media/mp4/sample_with_increasing_timestamps_360p.mp4 differ diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java index 08e9e31041..903aed6da5 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -57,6 +57,10 @@ public final class AndroidTestUtil { .setFrameRate(30.00f) .build(); + /** Baseline profile level 3.0 H.264 stream, which should be supported on all devices. */ + public static final String MP4_ASSET_WITH_INCREASING_TIMESTAMPS_360P_15S_URI_STRING = + "asset:///media/mp4/sample_with_increasing_timestamps_360p.mp4"; + public static final String MP4_ASSET_SEF_URI_STRING = "asset:///media/mp4/sample_sef_slow_motion.mp4"; public static final Format MP4_ASSET_SEF_FORMAT = diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java index 7b092db27b..db33a2ee19 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/TranscodeQualityTest.java @@ -86,4 +86,29 @@ public final class TranscodeQualityTest { assertThat(result.ssim).isGreaterThan(0.90); } + + @Test + public void transcodeAvcToAvc360p_ssimIsGreaterThan90Percent() throws Exception { + Context context = ApplicationProvider.getApplicationContext(); + String testId = "transcodeAvcToAvc360p_ssim"; + + // Note: We never skip this test as the input and output formats should be within CDD + // requirements on all supported API versions. + + Transformer transformer = + new Transformer.Builder(context) + .setTransformationRequest( + new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build()) + .setEncoderFactory(AndroidTestUtil.FORCE_ENCODE_ENCODER_FACTORY) + .setRemoveAudio(true) + .build(); + + TransformationTestResult result = + new TransformerAndroidTestRunner.Builder(context, transformer) + .setCalculateSsim(true) + .build() + .run(testId, AndroidTestUtil.MP4_ASSET_WITH_INCREASING_TIMESTAMPS_360P_15S_URI_STRING); + + assertThat(result.ssim).isGreaterThan(0.90); + } }