From c7972499984d4456bca4ff4630f9fed4a55b8d78 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Fri, 17 Jan 2025 08:49:31 -0800 Subject: [PATCH] Move supported sample mime types list in specific muxer This will reduce the risk of list becoming stale (its already stale, to be fixed). PiperOrigin-RevId: 716685242 --- .../media3/muxer/FragmentedMp4Muxer.java | 20 ++++++++++++++++ .../java/androidx/media3/muxer/Mp4Muxer.java | 20 ++++++++++++++++ .../transformer/InAppFragmentedMp4Muxer.java | 23 ++----------------- .../media3/transformer/InAppMp4Muxer.java | 23 ++----------------- 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java index a32569c019..0943008ca1 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/FragmentedMp4Muxer.java @@ -22,12 +22,14 @@ import android.media.MediaCodec.BufferInfo; import android.util.SparseArray; import androidx.media3.common.Format; import androidx.media3.common.Metadata; +import androidx.media3.common.MimeTypes; import androidx.media3.common.util.UnstableApi; import androidx.media3.container.MdtaMetadataEntry; import androidx.media3.container.Mp4LocationData; import androidx.media3.container.Mp4OrientationData; import androidx.media3.container.Mp4TimestampData; import androidx.media3.container.XmpData; +import com.google.common.collect.ImmutableList; import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.io.IOException; import java.io.OutputStream; @@ -140,6 +142,24 @@ public final class FragmentedMp4Muxer implements Muxer { } } + /** A list of supported video {@linkplain MimeTypes sample MIME types}. */ + public static final ImmutableList SUPPORTED_VIDEO_SAMPLE_MIME_TYPES = + ImmutableList.of( + MimeTypes.VIDEO_AV1, + MimeTypes.VIDEO_H263, + MimeTypes.VIDEO_H264, + MimeTypes.VIDEO_H265, + MimeTypes.VIDEO_MP4V); + + /** A list of supported audio {@linkplain MimeTypes sample MIME types}. */ + public static final ImmutableList SUPPORTED_AUDIO_SAMPLE_MIME_TYPES = + ImmutableList.of( + MimeTypes.AUDIO_AAC, + MimeTypes.AUDIO_AMR_NB, + MimeTypes.AUDIO_AMR_WB, + MimeTypes.AUDIO_OPUS, + MimeTypes.AUDIO_VORBIS); + private final FragmentedMp4Writer fragmentedMp4Writer; private final MetadataCollector metadataCollector; private final SparseArray trackIdToTrack; diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java index 5c0537fe8c..a8474b9dbb 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java @@ -34,6 +34,7 @@ import androidx.annotation.Nullable; import androidx.media3.common.C; import androidx.media3.common.Format; import androidx.media3.common.Metadata; +import androidx.media3.common.MimeTypes; import androidx.media3.common.util.Log; import androidx.media3.common.util.UnstableApi; import androidx.media3.container.MdtaMetadataEntry; @@ -41,6 +42,7 @@ import androidx.media3.container.Mp4LocationData; import androidx.media3.container.Mp4OrientationData; import androidx.media3.container.Mp4TimestampData; import androidx.media3.container.XmpData; +import com.google.common.collect.ImmutableList; import com.google.common.io.ByteStreams; import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.io.FileInputStream; @@ -335,6 +337,24 @@ public final class Mp4Muxer implements Muxer { } } + /** A list of supported video {@linkplain MimeTypes sample MIME types}. */ + public static final ImmutableList SUPPORTED_VIDEO_SAMPLE_MIME_TYPES = + ImmutableList.of( + MimeTypes.VIDEO_AV1, + MimeTypes.VIDEO_H263, + MimeTypes.VIDEO_H264, + MimeTypes.VIDEO_H265, + MimeTypes.VIDEO_MP4V); + + /** A list of supported audio {@linkplain MimeTypes sample MIME types}. */ + public static final ImmutableList SUPPORTED_AUDIO_SAMPLE_MIME_TYPES = + ImmutableList.of( + MimeTypes.AUDIO_AAC, + MimeTypes.AUDIO_AMR_NB, + MimeTypes.AUDIO_AMR_WB, + MimeTypes.AUDIO_OPUS, + MimeTypes.AUDIO_VORBIS); + private static final String TAG = "Mp4Muxer"; private final FileOutputStream outputStream; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java index 5c8c9765e4..7c51b8499e 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppFragmentedMp4Muxer.java @@ -41,25 +41,6 @@ import java.util.Locale; public final class InAppFragmentedMp4Muxer implements Muxer { /** {@link Muxer.Factory} for {@link InAppFragmentedMp4Muxer}. */ public static final class Factory implements Muxer.Factory { - // TODO: b/372417042 - Move these lists to FragmentedMp4Muxer. - /** A list of supported video sample MIME types. */ - private static final ImmutableList SUPPORTED_VIDEO_SAMPLE_MIME_TYPES = - ImmutableList.of( - MimeTypes.VIDEO_AV1, - MimeTypes.VIDEO_H263, - MimeTypes.VIDEO_H264, - MimeTypes.VIDEO_H265, - MimeTypes.VIDEO_MP4V); - - /** A list of supported audio sample MIME types. */ - private static final ImmutableList SUPPORTED_AUDIO_SAMPLE_MIME_TYPES = - ImmutableList.of( - MimeTypes.AUDIO_AAC, - MimeTypes.AUDIO_AMR_NB, - MimeTypes.AUDIO_AMR_WB, - MimeTypes.AUDIO_OPUS, - MimeTypes.AUDIO_VORBIS); - private final long fragmentDurationMs; private long videoDurationUs; @@ -121,9 +102,9 @@ public final class InAppFragmentedMp4Muxer implements Muxer { @Override public ImmutableList getSupportedSampleMimeTypes(@C.TrackType int trackType) { if (trackType == C.TRACK_TYPE_VIDEO) { - return SUPPORTED_VIDEO_SAMPLE_MIME_TYPES; + return FragmentedMp4Muxer.SUPPORTED_VIDEO_SAMPLE_MIME_TYPES; } else if (trackType == C.TRACK_TYPE_AUDIO) { - return SUPPORTED_AUDIO_SAMPLE_MIME_TYPES; + return FragmentedMp4Muxer.SUPPORTED_AUDIO_SAMPLE_MIME_TYPES; } return ImmutableList.of(); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java index 61a7c77e91..d0e2a88a24 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/InAppMp4Muxer.java @@ -60,25 +60,6 @@ public final class InAppMp4Muxer implements Muxer { /** {@link Muxer.Factory} for {@link InAppMp4Muxer}. */ public static final class Factory implements Muxer.Factory { - // TODO: b/372417042 - Move these lists to Mp4Muxer. - /** A list of supported video sample MIME types. */ - private static final ImmutableList SUPPORTED_VIDEO_SAMPLE_MIME_TYPES = - ImmutableList.of( - MimeTypes.VIDEO_AV1, - MimeTypes.VIDEO_H263, - MimeTypes.VIDEO_H264, - MimeTypes.VIDEO_H265, - MimeTypes.VIDEO_MP4V); - - /** A list of supported audio sample MIME types. */ - private static final ImmutableList SUPPORTED_AUDIO_SAMPLE_MIME_TYPES = - ImmutableList.of( - MimeTypes.AUDIO_AAC, - MimeTypes.AUDIO_AMR_NB, - MimeTypes.AUDIO_AMR_WB, - MimeTypes.AUDIO_OPUS, - MimeTypes.AUDIO_VORBIS); - @Nullable private final MetadataProvider metadataProvider; private long videoDurationUs; @@ -141,9 +122,9 @@ public final class InAppMp4Muxer implements Muxer { @Override public ImmutableList getSupportedSampleMimeTypes(@C.TrackType int trackType) { if (trackType == C.TRACK_TYPE_VIDEO) { - return SUPPORTED_VIDEO_SAMPLE_MIME_TYPES; + return Mp4Muxer.SUPPORTED_VIDEO_SAMPLE_MIME_TYPES; } else if (trackType == C.TRACK_TYPE_AUDIO) { - return SUPPORTED_AUDIO_SAMPLE_MIME_TYPES; + return Mp4Muxer.SUPPORTED_AUDIO_SAMPLE_MIME_TYPES; } return ImmutableList.of(); }