Skip to content

Commit 1918a25

Browse files
shahdDaghashcopybara-github
authored andcommitted
Add a test for playing CompositionPlayer again after playback ends
A problem was discovered in Composition demo app where after playing a composition using CompositionPlayer, pressing the "play" button again would not restart the playback. This issue has been resolved, just adding a test to make sure we're not missing any regressions. PiperOrigin-RevId: 735793488
1 parent 2729dbb commit 1918a25

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
AudioSink:
2+
buffer count = 20
3+
config:
4+
pcmEncoding = 2
5+
channelCount = 1
6+
sampleRate = 44100
7+
buffer #0:
8+
time = 0
9+
data = -85819864
10+
buffer #1:
11+
time = 100000
12+
data = 566487491
13+
buffer #2:
14+
time = 200000
15+
data = -1256531710
16+
buffer #3:
17+
time = 300000
18+
data = 793455796
19+
buffer #4:
20+
time = 400000
21+
data = -268235582
22+
buffer #5:
23+
time = 500000
24+
data = -8136122
25+
buffer #6:
26+
time = 600000
27+
data = 1750866613
28+
buffer #7:
29+
time = 700000
30+
data = -1100753636
31+
buffer #8:
32+
time = 800000
33+
data = 507833230
34+
buffer #9:
35+
time = 900000
36+
data = 1472467506
37+
buffer #10:
38+
time = 0
39+
data = -85819864
40+
buffer #11:
41+
time = 100000
42+
data = 566487491
43+
buffer #12:
44+
time = 200000
45+
data = -1256531710
46+
buffer #13:
47+
time = 300000
48+
data = 793455796
49+
buffer #14:
50+
time = 400000
51+
data = -268235582
52+
buffer #15:
53+
time = 500000
54+
data = -8136122
55+
buffer #16:
56+
time = 600000
57+
data = 1750866613
58+
buffer #17:
59+
time = 700000
60+
data = -1100753636
61+
buffer #18:
62+
time = 800000
63+
data = 507833230
64+
buffer #19:
65+
time = 900000
66+
data = 1472467506

libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java

+27
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,33 @@ public void seekTo_singleSequenceWithClipping_outputsCorrectSamples() throws Exc
609609
+ "_then_sample_rf64.wav_clipped_seek_to_800_ms.dump");
610610
}
611611

612+
@Test
613+
public void playSingleSequence_replayAfterEnd_outputCorrectSamples() throws Exception {
614+
CompositionPlayer player = createCompositionPlayer(context, capturingAudioSink);
615+
EditedMediaItem editedMediaItem =
616+
new EditedMediaItem.Builder(MediaItem.fromUri(ASSET_URI_PREFIX + FILE_AUDIO_RAW))
617+
.setDurationUs(1_000_000L)
618+
.build();
619+
EditedMediaItemSequence sequence = new EditedMediaItemSequence.Builder(editedMediaItem).build();
620+
Composition composition = new Composition.Builder(sequence).build();
621+
622+
player.setComposition(composition);
623+
player.prepare();
624+
// First Play
625+
player.play();
626+
TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED);
627+
// Second Play
628+
player.seekToDefaultPosition();
629+
player.play();
630+
TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED);
631+
player.release();
632+
633+
DumpFileAsserts.assertOutput(
634+
context,
635+
capturingAudioSink,
636+
PREVIEW_DUMP_FILE_EXTENSION + FILE_AUDIO_RAW + "_playedTwice.dump");
637+
}
638+
612639
private static CompositionPlayer createCompositionPlayer(Context context, AudioSink audioSink) {
613640
return new CompositionPlayer.Builder(context)
614641
.setClock(new FakeClock(/* isAutoAdvancing= */ true))

0 commit comments

Comments
 (0)