From 25c1760b17a37877cd7bcee6f28633d9b7b70968 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Mon, 31 Mar 2025 05:42:00 -0700 Subject: [PATCH] Add VIDEO_APV mimetype to FrameworkMuxer supported types Came up in github issue https://github.com/androidx/media/issues/2275. PiperOrigin-RevId: 742233737 --- .../transformer/TransformerEndToEndTest.java | 19 +++++++++++++++++++ .../media3/transformer/FrameworkMuxer.java | 3 +++ 2 files changed, 22 insertions(+) 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 25dfc8dd45..326a844300 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/TransformerEndToEndTest.java @@ -19,6 +19,7 @@ import static android.media.MediaCodecInfo.CodecProfileLevel.AACObjectHE; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkState; import static androidx.media3.common.util.MediaFormatUtil.createFormatFromMediaFormat; +import static androidx.media3.common.util.Util.SDK_INT; import static androidx.media3.common.util.Util.isRunningOnEmulator; import static androidx.media3.test.utils.TestUtil.retrieveTrackFormat; import static androidx.media3.transformer.AndroidTestUtil.JPG_ASSET; @@ -2557,6 +2558,24 @@ public class TransformerEndToEndTest { () -> new Composition.Builder(firstSequence, secondSequence).build()); } + @Test + public void transmux_apvFile_transmuxesSuccessfully() throws Exception { + // MediaMuxer supports APV from API 36. + assumeTrue(SDK_INT >= 36); + String apvFile = "asset:///media/mp4/sample_with_apvc.mp4"; + EditedMediaItem editedMediaItem = + new EditedMediaItem.Builder(MediaItem.fromUri(Uri.parse(apvFile))).build(); + + ExportTestResult result = + new TransformerAndroidTestRunner.Builder(context, new Transformer.Builder(context).build()) + .build() + .run(testId, editedMediaItem); + + Format format = retrieveTrackFormat(context, result.filePath, C.TRACK_TYPE_VIDEO); + assertThat(format.sampleMimeType).isEqualTo(MimeTypes.VIDEO_APV); + assertThat(result.exportResult.videoConversionProcess).isEqualTo(CONVERSION_PROCESS_TRANSMUXED); + } + private static boolean shouldSkipDeviceForAacObjectHeProfileEncoding() { return Util.SDK_INT < 29; } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java index e28ebdb777..50105054a5 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java @@ -321,6 +321,9 @@ import java.util.Locale; if (SDK_INT >= 34) { supportedMimeTypes.add(MimeTypes.VIDEO_AV1); } + if (SDK_INT >= 36) { + supportedMimeTypes.add(MimeTypes.VIDEO_APV); + } return supportedMimeTypes.build(); }