From 493e5a5eb1ddbfb845de07fcc3f7d4349b5d51d7 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Mon, 24 Feb 2025 08:01:01 -0800 Subject: [PATCH] Refactor common input feeding method into MuxerTestUtil PiperOrigin-RevId: 730452200 --- .../Mp4MuxerEndToEndParameterizedTest.java | 45 +---------------- .../media3/muxer/Mp4MuxerEndToEndTest.java | 49 ++----------------- .../androidx/media3/muxer/MuxerTestUtil.java | 42 ++++++++++++++++ 3 files changed, 48 insertions(+), 88 deletions(-) diff --git a/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java b/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java index 6a06133d6e..acfd5c6e7f 100644 --- a/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java +++ b/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndParameterizedTest.java @@ -16,15 +16,11 @@ package androidx.media3.muxer; import static androidx.media3.common.util.Assertions.checkNotNull; -import static androidx.media3.common.util.Util.getBufferFlagsFromMediaCodecFlags; -import static androidx.media3.muxer.MuxerTestUtil.MP4_FILE_ASSET_DIRECTORY; +import static androidx.media3.muxer.MuxerTestUtil.feedInputDataToMp4Muxer; import android.content.Context; -import android.net.Uri; import androidx.annotation.Nullable; -import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.container.Mp4TimestampData; -import androidx.media3.exoplayer.MediaExtractorCompat; import androidx.media3.extractor.mp4.Mp4Extractor; import androidx.media3.test.utils.DumpFileAsserts; import androidx.media3.test.utils.FakeExtractorOutput; @@ -33,9 +29,6 @@ import androidx.test.core.app.ApplicationProvider; import com.google.common.collect.ImmutableList; import java.io.FileOutputStream; import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.junit.After; import org.junit.Before; @@ -125,7 +118,7 @@ public class Mp4MuxerEndToEndParameterizedTest { new Mp4TimestampData( /* creationTimestampSeconds= */ 100_000_000L, /* modificationTimestampSeconds= */ 500_000_000L)); - feedInputDataToMuxer(context, mp4Muxer, checkNotNull(inputFile)); + feedInputDataToMp4Muxer(context, mp4Muxer, checkNotNull(inputFile)); } finally { if (mp4Muxer != null) { mp4Muxer.close(); @@ -137,38 +130,4 @@ public class Mp4MuxerEndToEndParameterizedTest { DumpFileAsserts.assertOutput( context, fakeExtractorOutput, MuxerTestUtil.getExpectedDumpFilePath(inputFile)); } - - private static void feedInputDataToMuxer(Context context, Mp4Muxer muxer, String inputFileName) - throws IOException, MuxerException { - MediaExtractorCompat extractor = new MediaExtractorCompat(context); - Uri fileUri = Uri.parse(MP4_FILE_ASSET_DIRECTORY + inputFileName); - extractor.setDataSource(fileUri, /* offset= */ 0); - - List addedTracks = new ArrayList<>(); - for (int i = 0; i < extractor.getTrackCount(); i++) { - int trackId = - muxer.addTrack(MediaFormatUtil.createFormatFromMediaFormat(extractor.getTrackFormat(i))); - addedTracks.add(trackId); - extractor.selectTrack(i); - } - - do { - int sampleSize = (int) extractor.getSampleSize(); - BufferInfo bufferInfo = - new BufferInfo( - extractor.getSampleTime(), - sampleSize, - getBufferFlagsFromMediaCodecFlags(extractor.getSampleFlags())); - - ByteBuffer sampleBuffer = ByteBuffer.allocateDirect(sampleSize); - extractor.readSampleData(sampleBuffer, /* offset= */ 0); - - sampleBuffer.rewind(); - - muxer.writeSampleData( - addedTracks.get(extractor.getSampleTrackIndex()), sampleBuffer, bufferInfo); - } while (extractor.advance()); - - extractor.release(); - } } diff --git a/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndTest.java b/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndTest.java index 365e848253..e1553635fa 100644 --- a/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndTest.java +++ b/libraries/muxer/src/test/java/androidx/media3/muxer/Mp4MuxerEndToEndTest.java @@ -16,27 +16,23 @@ package androidx.media3.muxer; import static androidx.media3.common.util.Assertions.checkNotNull; -import static androidx.media3.common.util.Util.getBufferFlagsFromMediaCodecFlags; import static androidx.media3.muxer.Mp4Muxer.LAST_SAMPLE_DURATION_BEHAVIOR_SET_FROM_END_OF_STREAM_BUFFER_OR_DUPLICATE_PREVIOUS; import static androidx.media3.muxer.MuxerTestUtil.FAKE_VIDEO_FORMAT; -import static androidx.media3.muxer.MuxerTestUtil.MP4_FILE_ASSET_DIRECTORY; import static androidx.media3.muxer.MuxerTestUtil.XMP_SAMPLE_DATA; +import static androidx.media3.muxer.MuxerTestUtil.feedInputDataToMp4Muxer; import static androidx.media3.muxer.MuxerTestUtil.getFakeSampleAndSampleInfo; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import android.content.Context; -import android.net.Uri; import android.util.Pair; import androidx.media3.common.C; -import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.common.util.Util; 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 androidx.media3.exoplayer.MediaExtractorCompat; import androidx.media3.extractor.mp4.Mp4Extractor; import androidx.media3.extractor.text.DefaultSubtitleParserFactory; import androidx.media3.test.utils.DumpFileAsserts; @@ -46,10 +42,7 @@ import androidx.media3.test.utils.TestUtil; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import java.io.FileOutputStream; -import java.io.IOException; import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -133,7 +126,7 @@ public class Mp4MuxerEndToEndTest { new Mp4TimestampData( /* creationTimestampSeconds= */ 100_000_000L, /* modificationTimestampSeconds= */ 500_000_000L)); - feedInputDataToMuxer(context, mp4Muxer, H265_HDR10_MP4); + feedInputDataToMp4Muxer(context, mp4Muxer, H265_HDR10_MP4); // Muxer not closed. @@ -859,7 +852,7 @@ public class Mp4MuxerEndToEndTest { /* creationTimestampSeconds= */ 100_000_000L, /* modificationTimestampSeconds= */ 500_000_000L)); try { - feedInputDataToMuxer(context, mp4Muxer, checkNotNull(H265_HDR10_MP4)); + feedInputDataToMp4Muxer(context, mp4Muxer, checkNotNull(H265_HDR10_MP4)); } finally { mp4Muxer.close(); } @@ -888,7 +881,7 @@ public class Mp4MuxerEndToEndTest { /* creationTimestampSeconds= */ 100_000_000L, /* modificationTimestampSeconds= */ 500_000_000L)); try { - feedInputDataToMuxer(context, mp4Muxer, checkNotNull(H265_HDR10_MP4)); + feedInputDataToMp4Muxer(context, mp4Muxer, checkNotNull(H265_HDR10_MP4)); } finally { mp4Muxer.close(); } @@ -911,38 +904,4 @@ public class Mp4MuxerEndToEndTest { muxer.writeSampleData(trackId, sampleAndSampleInfo.first, sampleAndSampleInfo.second); } } - - private static void feedInputDataToMuxer(Context context, Mp4Muxer muxer, String inputFileName) - throws IOException, MuxerException { - MediaExtractorCompat extractor = new MediaExtractorCompat(context); - Uri fileUri = Uri.parse(MP4_FILE_ASSET_DIRECTORY + inputFileName); - extractor.setDataSource(fileUri, /* offset= */ 0); - - List addedTracks = new ArrayList<>(); - for (int i = 0; i < extractor.getTrackCount(); i++) { - int trackId = - muxer.addTrack(MediaFormatUtil.createFormatFromMediaFormat(extractor.getTrackFormat(i))); - addedTracks.add(trackId); - extractor.selectTrack(i); - } - - do { - int sampleSize = (int) extractor.getSampleSize(); - BufferInfo bufferInfo = - new BufferInfo( - extractor.getSampleTime(), - sampleSize, - getBufferFlagsFromMediaCodecFlags(extractor.getSampleFlags())); - - ByteBuffer sampleBuffer = ByteBuffer.allocateDirect(sampleSize); - extractor.readSampleData(sampleBuffer, /* offset= */ 0); - - sampleBuffer.rewind(); - - muxer.writeSampleData( - addedTracks.get(extractor.getSampleTrackIndex()), sampleBuffer, bufferInfo); - } while (extractor.advance()); - - extractor.release(); - } } diff --git a/libraries/muxer/src/test/java/androidx/media3/muxer/MuxerTestUtil.java b/libraries/muxer/src/test/java/androidx/media3/muxer/MuxerTestUtil.java index ee6a7be764..12546670af 100644 --- a/libraries/muxer/src/test/java/androidx/media3/muxer/MuxerTestUtil.java +++ b/libraries/muxer/src/test/java/androidx/media3/muxer/MuxerTestUtil.java @@ -17,13 +17,21 @@ package androidx.media3.muxer; import static androidx.media3.common.MimeTypes.AUDIO_AAC; import static androidx.media3.common.MimeTypes.VIDEO_H264; +import static androidx.media3.common.util.Util.getBufferFlagsFromMediaCodecFlags; +import android.content.Context; +import android.net.Uri; import android.util.Pair; import androidx.media3.common.C; import androidx.media3.common.Format; +import androidx.media3.common.util.MediaFormatUtil; +import androidx.media3.exoplayer.MediaExtractorCompat; import com.google.common.collect.ImmutableList; import com.google.common.io.BaseEncoding; +import java.io.IOException; import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; /** Utilities for muxer test cases. */ /* package */ class MuxerTestUtil { @@ -71,5 +79,39 @@ import java.nio.ByteBuffer; return new Pair<>(sampleDirectBuffer, bufferInfo); } + public static void feedInputDataToMp4Muxer(Context context, Mp4Muxer muxer, String inputFileName) + throws IOException, MuxerException { + MediaExtractorCompat extractor = new MediaExtractorCompat(context); + Uri fileUri = Uri.parse(MP4_FILE_ASSET_DIRECTORY + inputFileName); + extractor.setDataSource(fileUri, /* offset= */ 0); + + List addedTracks = new ArrayList<>(); + for (int i = 0; i < extractor.getTrackCount(); i++) { + int trackId = + muxer.addTrack(MediaFormatUtil.createFormatFromMediaFormat(extractor.getTrackFormat(i))); + addedTracks.add(trackId); + extractor.selectTrack(i); + } + + do { + int sampleSize = (int) extractor.getSampleSize(); + BufferInfo bufferInfo = + new BufferInfo( + extractor.getSampleTime(), + sampleSize, + getBufferFlagsFromMediaCodecFlags(extractor.getSampleFlags())); + + ByteBuffer sampleBuffer = ByteBuffer.allocateDirect(sampleSize); + extractor.readSampleData(sampleBuffer, /* offset= */ 0); + + sampleBuffer.rewind(); + + muxer.writeSampleData( + addedTracks.get(extractor.getSampleTrackIndex()), sampleBuffer, bufferInfo); + } while (extractor.advance()); + + extractor.release(); + } + private MuxerTestUtil() {} }