|
37 | 37 | import androidx.media3.muxer.Muxer;
|
38 | 38 | import androidx.media3.test.utils.DumpFileAsserts;
|
39 | 39 | import androidx.media3.test.utils.FakeExtractorOutput;
|
| 40 | +import androidx.media3.test.utils.FakeTrackOutput; |
40 | 41 | import androidx.media3.test.utils.TestTransformerBuilder;
|
41 | 42 | import androidx.test.core.app.ApplicationProvider;
|
42 | 43 | import androidx.test.ext.junit.runners.AndroidJUnit4;
|
@@ -252,6 +253,30 @@ public void transmux_withSettingVideoDuration_writesCorrectVideoDuration() throw
|
252 | 253 | assertThat(fakeExtractorOutput.seekMap.getDurationUs()).isEqualTo(expectedDurationUs);
|
253 | 254 | }
|
254 | 255 |
|
| 256 | + @Test |
| 257 | + public void transmux_audioWithEditList_preservesDuration() throws Exception { |
| 258 | + Transformer transformer = |
| 259 | + new TestTransformerBuilder(context).setMuxerFactory(new InAppMp4Muxer.Factory()).build(); |
| 260 | + MediaItem mediaItem = |
| 261 | + MediaItem.fromUri(Uri.parse("asset:///media/mp4/long_edit_list_audioonly.mp4")); |
| 262 | + |
| 263 | + transformer.start(mediaItem, outputPath); |
| 264 | + TransformerTestRunner.runLooper(transformer); |
| 265 | + |
| 266 | + Mp4Extractor mp4Extractor = new Mp4Extractor(new DefaultSubtitleParserFactory()); |
| 267 | + FakeExtractorOutput fakeExtractorOutput = |
| 268 | + androidx.media3.test.utils.TestUtil.extractAllSamplesFromFilePath(mp4Extractor, outputPath); |
| 269 | + assertThat(fakeExtractorOutput.seekMap.getDurationUs()).isEqualTo(1_562_100); |
| 270 | + assertThat(fakeExtractorOutput.numberOfTracks).isEqualTo(1); |
| 271 | + FakeTrackOutput audioTrack = fakeExtractorOutput.trackOutputs.get(0); |
| 272 | + int expectedSampleCount = 68; |
| 273 | + audioTrack.assertSampleCount(expectedSampleCount); |
| 274 | + assertThat(audioTrack.lastFormat.encoderDelay).isEqualTo(742); |
| 275 | + assertThat(audioTrack.getSampleTimeUs(/* index= */ 0)).isEqualTo(0); |
| 276 | + assertThat(audioTrack.getSampleTimeUs(/* index= */ expectedSampleCount - 1)) |
| 277 | + .isEqualTo(1_555_736); |
| 278 | + } |
| 279 | + |
255 | 280 | /**
|
256 | 281 | * Returns specific {@linkplain Metadata.Entry metadata} from the media file.
|
257 | 282 | *
|
|
0 commit comments