diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingFirstAndLastAudio_succeeds.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingFirstAndLastAudio_succeeds.dump deleted file mode 100644 index f6b458bd2d..0000000000 --- a/libraries/test_data/src/test/assets/audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingFirstAndLastAudio_succeeds.dump +++ /dev/null @@ -1,81 +0,0 @@ -AudioSink: - buffer count = 25 - config: - pcmEncoding = 2 - channelCount = 2 - sampleRate = 44100 - buffer #0: - time = 0 - data = 1742602241 - buffer #1: - time = 23219 - data = 1742602241 - buffer #2: - time = 46439 - data = 1742602241 - buffer #3: - time = 69659 - data = 1742602241 - buffer #4: - time = 92879 - data = 1742602241 - buffer #5: - time = 116099 - data = 1742602241 - buffer #6: - time = 139319 - data = 1742602241 - buffer #7: - time = 162539 - data = 1742602241 - buffer #8: - time = 185759 - data = 1742602241 - buffer #9: - time = 208979 - data = 1742602241 - buffer #10: - time = 232199 - data = 1742602241 - buffer #11: - time = 255419 - data = 1742602241 - buffer #12: - time = 278639 - data = 1742602241 - buffer #13: - time = 301859 - data = 1742602241 - buffer #14: - time = 325079 - data = 1865678849 - buffer #15: - time = 464399 - data = 820010753 - buffer #16: - time = 500000 - data = 1407885569 - buffer #17: - time = 719818 - data = 1339014657 - buffer #18: - time = 1000000 - data = 38127629 - buffer #19: - time = 1209750 - data = 765431113 - buffer #20: - time = 1500000 - data = -245398331 - buffer #21: - time = 2000000 - data = -883339733 - buffer #22: - time = 2161768 - data = -1116029439 - buffer #23: - time = 2500000 - data = -164077823 - buffer #24: - time = 3000000 - data = -1619525631 diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingMiddleAudio_succeeds.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingMiddleAudio_succeeds.dump deleted file mode 100644 index 9d572a78fa..0000000000 --- a/libraries/test_data/src/test/assets/audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingMiddleAudio_succeeds.dump +++ /dev/null @@ -1,78 +0,0 @@ -AudioSink: - buffer count = 24 - config: - pcmEncoding = 2 - channelCount = 1 - sampleRate = 44100 - buffer #0: - time = 0 - data = -676819263 - buffer #1: - time = 67233 - data = -1276182527 - buffer #2: - time = 90453 - data = 1946193324 - buffer #3: - time = 113673 - data = 104315105 - buffer #4: - time = 136893 - data = 1010810964 - buffer #5: - time = 160113 - data = -826419418 - buffer #6: - time = 183333 - data = 371097263 - buffer #7: - time = 206553 - data = 2052827414 - buffer #8: - time = 229773 - data = -5216832 - buffer #9: - time = 252993 - data = -1419834910 - buffer #10: - time = 276213 - data = -298784263 - buffer #11: - time = 299433 - data = -689936200 - buffer #12: - time = 322653 - data = -1523709536 - buffer #13: - time = 461972 - data = -708375787 - buffer #14: - time = 500000 - data = 1992124950 - buffer #15: - time = 647732 - data = -1661880409 - buffer #16: - time = 1000000 - data = -1899662657 - buffer #17: - time = 1460430 - data = -1641541695 - buffer #18: - time = 1500000 - data = -1935405183 - buffer #19: - time = 2000000 - data = 1074468007 - buffer #20: - time = 2345102 - data = 329859524 - buffer #21: - time = 2500000 - data = -2047290594 - buffer #22: - time = 3000000 - data = -1193826308 - buffer #23: - time = 3343560 - data = -494005503 diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingFirstAndThirdAudio_outputsCorrectSamples.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingFirstAndThirdAudio_outputsCorrectSamples.dump new file mode 100644 index 0000000000..734f24fa12 --- /dev/null +++ b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingFirstAndThirdAudio_outputsCorrectSamples.dump @@ -0,0 +1,300 @@ +AudioSink: + buffer count = 98 + config: + pcmEncoding = 2 + channelCount = 2 + sampleRate = 44100 + buffer #0: + time = 0 + data = 1742602241 + buffer #1: + time = 23219 + data = 1742602241 + buffer #2: + time = 46439 + data = 1742602241 + buffer #3: + time = 69659 + data = 1742602241 + buffer #4: + time = 92879 + data = 1742602241 + buffer #5: + time = 116099 + data = 1742602241 + buffer #6: + time = 139319 + data = 1742602241 + buffer #7: + time = 162539 + data = 1742602241 + buffer #8: + time = 185759 + data = 1742602241 + buffer #9: + time = 208979 + data = 1742602241 + buffer #10: + time = 232199 + data = 1742602241 + buffer #11: + time = 255419 + data = 1742602241 + buffer #12: + time = 278639 + data = 1742602241 + buffer #13: + time = 301859 + data = 1742602241 + buffer #14: + time = 325079 + data = 1742602241 + buffer #15: + time = 348299 + data = 1742602241 + buffer #16: + time = 371519 + data = 1742602241 + buffer #17: + time = 394739 + data = 1742602241 + buffer #18: + time = 417959 + data = 1742602241 + buffer #19: + time = 441179 + data = 1742602241 + buffer #20: + time = 464399 + data = 1742602241 + buffer #21: + time = 487619 + data = 1728208641 + buffer #22: + time = 500000 + data = 620404993 + buffer #23: + time = 534058 + data = 1742602241 + buffer #24: + time = 557278 + data = 1742602241 + buffer #25: + time = 580498 + data = 1742602241 + buffer #26: + time = 603718 + data = 1742602241 + buffer #27: + time = 626938 + data = 1742602241 + buffer #28: + time = 650158 + data = 1742602241 + buffer #29: + time = 673378 + data = 1742602241 + buffer #30: + time = 696598 + data = 1742602241 + buffer #31: + time = 719818 + data = 1742602241 + buffer #32: + time = 743038 + data = 1742602241 + buffer #33: + time = 766258 + data = 1742602241 + buffer #34: + time = 789478 + data = 1742602241 + buffer #35: + time = 812698 + data = 1742602241 + buffer #36: + time = 835918 + data = 1742602241 + buffer #37: + time = 859138 + data = 1742602241 + buffer #38: + time = 882358 + data = 1742602241 + buffer #39: + time = 905578 + data = 1742602241 + buffer #40: + time = 928798 + data = 1742602241 + buffer #41: + time = 952018 + data = 1742602241 + buffer #42: + time = 975238 + data = 1742602241 + buffer #43: + time = 998458 + data = 1097317889 + buffer #44: + time = 1000000 + data = 1072516495 + buffer #45: + time = 1100000 + data = 1080356869 + buffer #46: + time = 1200000 + data = 885365699 + buffer #47: + time = 1300000 + data = -1015251545 + buffer #48: + time = 1400000 + data = -159485629 + buffer #49: + time = 1500000 + data = -797815221 + buffer #50: + time = 1600000 + data = -347578263 + buffer #51: + time = 1700000 + data = -943138441 + buffer #52: + time = 1800000 + data = -215647269 + buffer #53: + time = 1900000 + data = -667240285 + buffer #54: + time = 2000000 + data = 1742602241 + buffer #55: + time = 2023219 + data = 1742602241 + buffer #56: + time = 2046439 + data = 1742602241 + buffer #57: + time = 2069659 + data = 1742602241 + buffer #58: + time = 2092879 + data = 1742602241 + buffer #59: + time = 2116099 + data = 1742602241 + buffer #60: + time = 2139319 + data = 1742602241 + buffer #61: + time = 2162539 + data = 1742602241 + buffer #62: + time = 2185759 + data = 1742602241 + buffer #63: + time = 2208979 + data = 1742602241 + buffer #64: + time = 2232199 + data = 1742602241 + buffer #65: + time = 2255419 + data = 1742602241 + buffer #66: + time = 2278639 + data = 1742602241 + buffer #67: + time = 2301859 + data = 1742602241 + buffer #68: + time = 2325079 + data = 1742602241 + buffer #69: + time = 2348299 + data = 1742602241 + buffer #70: + time = 2371519 + data = 1742602241 + buffer #71: + time = 2394739 + data = 1742602241 + buffer #72: + time = 2417959 + data = 1742602241 + buffer #73: + time = 2441179 + data = 1742602241 + buffer #74: + time = 2464399 + data = 1742602241 + buffer #75: + time = 2487619 + data = 1728208641 + buffer #76: + time = 2500000 + data = 620404993 + buffer #77: + time = 2534058 + data = 1742602241 + buffer #78: + time = 2557278 + data = 1742602241 + buffer #79: + time = 2580498 + data = 1742602241 + buffer #80: + time = 2603718 + data = 1742602241 + buffer #81: + time = 2626938 + data = 1742602241 + buffer #82: + time = 2650158 + data = 1742602241 + buffer #83: + time = 2673378 + data = 1742602241 + buffer #84: + time = 2696598 + data = 1742602241 + buffer #85: + time = 2719818 + data = 1742602241 + buffer #86: + time = 2743038 + data = 1742602241 + buffer #87: + time = 2766258 + data = 1742602241 + buffer #88: + time = 2789478 + data = 1742602241 + buffer #89: + time = 2812698 + data = 1742602241 + buffer #90: + time = 2835918 + data = 1742602241 + buffer #91: + time = 2859138 + data = 1742602241 + buffer #92: + time = 2882358 + data = 1742602241 + buffer #93: + time = 2905578 + data = 1742602241 + buffer #94: + time = 2928798 + data = 1742602241 + buffer #95: + time = 2952018 + data = 1742602241 + buffer #96: + time = 2975238 + data = 1742602241 + buffer #97: + time = 2998458 + data = 1097317889 diff --git a/libraries/test_data/src/test/assets/audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingMiddleAudio_outputsCorrectSamples.dump b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingMiddleAudio_outputsCorrectSamples.dump new file mode 100644 index 0000000000..fa42442af3 --- /dev/null +++ b/libraries/test_data/src/test/assets/audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingMiddleAudio_outputsCorrectSamples.dump @@ -0,0 +1,198 @@ +AudioSink: + buffer count = 64 + config: + pcmEncoding = 2 + channelCount = 1 + sampleRate = 44100 + buffer #0: + time = 0 + data = -85819864 + buffer #1: + time = 100000 + data = 566487491 + buffer #2: + time = 200000 + data = -1256531710 + buffer #3: + time = 300000 + data = 793455796 + buffer #4: + time = 400000 + data = -268235582 + buffer #5: + time = 500000 + data = -8136122 + buffer #6: + time = 600000 + data = 1750866613 + buffer #7: + time = 700000 + data = -1100753636 + buffer #8: + time = 800000 + data = 507833230 + buffer #9: + time = 900000 + data = 1472467506 + buffer #10: + time = 1000000 + data = -1276182527 + buffer #11: + time = 1023219 + data = -1276182527 + buffer #12: + time = 1046439 + data = -1276182527 + buffer #13: + time = 1069659 + data = -1276182527 + buffer #14: + time = 1092879 + data = -1276182527 + buffer #15: + time = 1116099 + data = -1276182527 + buffer #16: + time = 1139319 + data = -1276182527 + buffer #17: + time = 1162539 + data = -1276182527 + buffer #18: + time = 1185759 + data = -1276182527 + buffer #19: + time = 1208979 + data = -1276182527 + buffer #20: + time = 1232199 + data = -1276182527 + buffer #21: + time = 1255419 + data = -1276182527 + buffer #22: + time = 1278639 + data = -1276182527 + buffer #23: + time = 1301859 + data = -1276182527 + buffer #24: + time = 1325079 + data = -1276182527 + buffer #25: + time = 1348299 + data = -1276182527 + buffer #26: + time = 1371519 + data = -1276182527 + buffer #27: + time = 1394739 + data = -1276182527 + buffer #28: + time = 1417959 + data = -1276182527 + buffer #29: + time = 1441179 + data = -1276182527 + buffer #30: + time = 1464399 + data = -1276182527 + buffer #31: + time = 1487619 + data = 1737035649 + buffer #32: + time = 1500000 + data = -345689983 + buffer #33: + time = 1534058 + data = -1276182527 + buffer #34: + time = 1557278 + data = -1276182527 + buffer #35: + time = 1580498 + data = -1276182527 + buffer #36: + time = 1603718 + data = -1276182527 + buffer #37: + time = 1626938 + data = -1276182527 + buffer #38: + time = 1650158 + data = -1276182527 + buffer #39: + time = 1673378 + data = -1276182527 + buffer #40: + time = 1696598 + data = -1276182527 + buffer #41: + time = 1719818 + data = -1276182527 + buffer #42: + time = 1743038 + data = -1276182527 + buffer #43: + time = 1766258 + data = -1276182527 + buffer #44: + time = 1789478 + data = -1276182527 + buffer #45: + time = 1812698 + data = -1276182527 + buffer #46: + time = 1835918 + data = -1276182527 + buffer #47: + time = 1859138 + data = -1276182527 + buffer #48: + time = 1882358 + data = -1276182527 + buffer #49: + time = 1905578 + data = -1276182527 + buffer #50: + time = 1928798 + data = -1276182527 + buffer #51: + time = 1952018 + data = -1276182527 + buffer #52: + time = 1975238 + data = -1276182527 + buffer #53: + time = 1998458 + data = 34823937 + buffer #54: + time = 2000000 + data = -85819864 + buffer #55: + time = 2100000 + data = 566487491 + buffer #56: + time = 2200000 + data = -1256531710 + buffer #57: + time = 2300000 + data = 793455796 + buffer #58: + time = 2400000 + data = -268235582 + buffer #59: + time = 2500000 + data = -8136122 + buffer #60: + time = 2600000 + data = 1750866613 + buffer #61: + time = 2700000 + data = -1100753636 + buffer #62: + time = 2800000 + data = 507833230 + buffer #63: + time = 2900000 + data = 1472467506 diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/performance/CompositionPlaybackTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/performance/CompositionPlaybackTest.java index c37d5d9707..a1ebb5d4f8 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/performance/CompositionPlaybackTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/mh/performance/CompositionPlaybackTest.java @@ -39,9 +39,6 @@ import androidx.media3.common.util.ConditionVariable; import androidx.media3.common.util.Size; import androidx.media3.common.util.Util; import androidx.media3.effect.GlEffect; -import androidx.media3.exoplayer.audio.DefaultAudioSink; -import androidx.media3.test.utils.CapturingAudioSink; -import androidx.media3.test.utils.DumpFileAsserts; import androidx.media3.transformer.Composition; import androidx.media3.transformer.CompositionPlayer; import androidx.media3.transformer.EditedMediaItem; @@ -387,14 +384,11 @@ public class CompositionPlaybackTest { Iterables.transform( VIDEO_TIMESTAMPS_US, timestampUs -> (2 * VIDEO_DURATION_US + timestampUs))) .build(); - CapturingAudioSink capturingAudioSink = - new CapturingAudioSink(new DefaultAudioSink.Builder(context).build()); getInstrumentation() .runOnMainSync( () -> { - player = - new CompositionPlayer.Builder(context).setAudioSink(capturingAudioSink).build(); + player = new CompositionPlayer.Builder(context).build(); player.addListener(playerTestListener); player.setComposition(composition); player.prepare(); @@ -404,10 +398,6 @@ public class CompositionPlaybackTest { assertThat(inputTimestampRecordingShaderProgram.getInputTimestampsUs()) .isEqualTo(expectedTimestampsUs); - DumpFileAsserts.assertOutput( - context, - capturingAudioSink, - "audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingFirstAndLastAudio_succeeds.dump"); } @Test @@ -440,14 +430,11 @@ public class CompositionPlaybackTest { Iterables.transform( VIDEO_TIMESTAMPS_US, timestampUs -> (2 * VIDEO_DURATION_US + timestampUs))) .build(); - CapturingAudioSink capturingAudioSink = - new CapturingAudioSink(new DefaultAudioSink.Builder(context).build()); getInstrumentation() .runOnMainSync( () -> { - player = - new CompositionPlayer.Builder(context).setAudioSink(capturingAudioSink).build(); + player = new CompositionPlayer.Builder(context).build(); player.addListener(playerTestListener); player.setComposition(composition); player.prepare(); @@ -457,10 +444,6 @@ public class CompositionPlaybackTest { assertThat(inputTimestampRecordingShaderProgram.getInputTimestampsUs()) .isEqualTo(expectedTimestampsUs); - DumpFileAsserts.assertOutput( - context, - capturingAudioSink, - "audiosinkdumps/wav/playback_sequenceOfThreeVideosWithRemovingMiddleAudio_succeeds.dump"); } @Test diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java index 6af89b789f..95087c5c14 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java @@ -297,6 +297,64 @@ public final class CompositionPlayerAudioPlaybackTest { "audiosinkdumps/wav/sample.wav_then_sample_rf64.wav_repeated.dump"); } + @Test + public void sequencePlayback_withThreeMediaAndRemovingMiddleAudio_outputsCorrectSamples() + throws Exception { + CompositionPlayer player = createCompositionPlayer(context, capturingAudioSink); + EditedMediaItem editedMediaItem = + new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)) + .setDurationUs(1_000_000L) + .build(); + EditedMediaItem audioRemovedMediaItem = + editedMediaItem.buildUpon().setRemoveAudio(true).build(); + Composition composition = + new Composition.Builder( + new EditedMediaItemSequence( + editedMediaItem, audioRemovedMediaItem, editedMediaItem)) + .build(); + player.setComposition(composition); + player.prepare(); + player.play(); + + TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED); + player.release(); + + // The silence should be in between the timestamp between [1, 2] seconds. + DumpFileAsserts.assertOutput( + context, + capturingAudioSink, + "audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingMiddleAudio_outputsCorrectSamples.dump"); + } + + @Test + public void sequencePlayback_withThreeMediaAndRemovingFirstAndThirdAudio_outputsCorrectSamples() + throws Exception { + CompositionPlayer player = createCompositionPlayer(context, capturingAudioSink); + EditedMediaItem editedMediaItem = + new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW)) + .setDurationUs(1_000_000L) + .build(); + EditedMediaItem audioRemovedMediaItem = + editedMediaItem.buildUpon().setRemoveAudio(true).build(); + Composition composition = + new Composition.Builder( + new EditedMediaItemSequence( + audioRemovedMediaItem, editedMediaItem, audioRemovedMediaItem)) + .build(); + player.setComposition(composition); + player.prepare(); + player.play(); + + TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED); + player.release(); + + // The silence should be in between the timestamp between [0, 1] and [2, 3] seconds. + DumpFileAsserts.assertOutput( + context, + capturingAudioSink, + "audiosinkdumps/wav/sequencePlayback_withThreeMediaAndRemovingFirstAndThirdAudio_outputsCorrectSamples.dump"); + } + // TODO - b/320014878: Enable this test. @Ignore("Preview audio is not fed to the sink in deterministic buffers - see b/320014878.") @Test