From 95f69b649d6b9e0c3b49e30ffd041f2a8a90c108 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Tue, 3 Sep 2024 03:15:01 -0700 Subject: [PATCH] Use InAppMuxer in tests for API < 25 MediaMuxer doesn't support B-frame before API 25. The fix is added only in those test which appeared in triage failure. It can be added to other tests as they are discovered. PiperOrigin-RevId: 670480966 --- .../java/androidx/media3/transformer/AndroidTestUtil.java | 7 +++++++ .../transformer/ParameterizedItemExportAndroidTest.java | 2 ++ .../media3/transformer/TransformerEndToEndTest.java | 6 +++++- 3 files changed, 14 insertions(+), 1 deletion(-) 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 17786b98ef..795632a139 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,7 @@ import androidx.media3.effect.GlShaderProgram; import androidx.media3.effect.PassthroughShaderProgram; import androidx.media3.effect.ScaleAndRotateTransformation; import androidx.media3.exoplayer.mediacodec.MediaCodecUtil; +import androidx.media3.muxer.Muxer; import androidx.media3.test.utils.BitmapPixelTestUtil; import androidx.media3.test.utils.VideoDecodingWrapper; import com.google.common.base.Ascii; @@ -1200,6 +1201,12 @@ public final class AndroidTestUtil { throw new AssumptionViolatedException(skipReason); } + /** Returns a {@link Muxer.Factory} depending upon the API level. */ + public static Muxer.Factory getMuxerFactoryBasedOnApi() { + // MediaMuxer supports B-frame from API > 24. + return SDK_INT > 24 ? new DefaultMuxer.Factory() : new InAppMuxer.Factory.Builder().build(); + } + private static boolean canDecode(Format format) { if (MimeTypes.isImage(format.sampleMimeType)) { return Util.isBitmapFactorySupportedMimeType(format.sampleMimeType); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ParameterizedItemExportAndroidTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ParameterizedItemExportAndroidTest.java index 72686867cc..fb69f1f1c9 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ParameterizedItemExportAndroidTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ParameterizedItemExportAndroidTest.java @@ -21,6 +21,7 @@ import static androidx.media3.transformer.AndroidTestUtil.JPG_ASSET; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET; import static androidx.media3.transformer.AndroidTestUtil.PNG_ASSET; import static androidx.media3.transformer.AndroidTestUtil.assumeFormatsSupported; +import static androidx.media3.transformer.AndroidTestUtil.getMuxerFactoryBasedOnApi; import static com.google.common.truth.Truth.assertThat; import android.content.Context; @@ -120,6 +121,7 @@ public final class ParameterizedItemExportAndroidTest { assumeFormatsSupported(context, testId, itemConfig.format, itemConfig.outputFormat); Transformer transformer = new Transformer.Builder(context) + .setMuxerFactory(getMuxerFactoryBasedOnApi()) .setEncoderFactory( new DefaultEncoderFactory.Builder(context).setEnableFallback(false).build()) .build(); 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 27a34ced98..195f830817 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -33,6 +33,7 @@ import static androidx.media3.transformer.AndroidTestUtil.assumeFormatsSupported import static androidx.media3.transformer.AndroidTestUtil.createFrameCountingEffect; import static androidx.media3.transformer.AndroidTestUtil.createOpenGlObjects; import static androidx.media3.transformer.AndroidTestUtil.generateTextureFromBitmap; +import static androidx.media3.transformer.AndroidTestUtil.getMuxerFactoryBasedOnApi; import static androidx.media3.transformer.AndroidTestUtil.recordTestSkipped; import static androidx.media3.transformer.ExportResult.CONVERSION_PROCESS_NA; import static androidx.media3.transformer.ExportResult.CONVERSION_PROCESS_TRANSCODED; @@ -679,7 +680,10 @@ public class TransformerEndToEndTest { /* outputFormat= */ MP4_ASSET_PHOTOS_TRIM_OPTIMIZATION_VIDEO.videoFormat); Transformer transformer = - new Transformer.Builder(context).experimentalSetTrimOptimizationEnabled(true).build(); + new Transformer.Builder(context) + .experimentalSetTrimOptimizationEnabled(true) + .setMuxerFactory(getMuxerFactoryBasedOnApi()) + .build(); // The previous sample is at 1137 and the next sample (which is a sync sample) is at 1171. long clippingStartMs = 1138;