|
22 | 22 | import androidx.media3.common.MediaItem;
|
23 | 23 | import androidx.media3.common.Player;
|
24 | 24 | import androidx.media3.datasource.DefaultDataSource;
|
| 25 | +import androidx.media3.exoplayer.DefaultLoadControl; |
25 | 26 | import androidx.media3.exoplayer.ExoPlayer;
|
26 | 27 | import androidx.media3.exoplayer.SeekParameters;
|
27 | 28 | import androidx.media3.exoplayer.hls.HlsMediaSource;
|
@@ -167,14 +168,19 @@ public void multiSegment_withSeekToPrevSyncFrame_startsRenderingAtBeginningOfSeg
|
167 | 168 | new HlsMediaSource.Factory(new DefaultDataSource.Factory(applicationContext))
|
168 | 169 | .experimentalParseSubtitlesDuringExtraction(true))
|
169 | 170 | .setClock(new FakeClock(/* isAutoAdvancing= */ true))
|
| 171 | + .setLoadControl( |
| 172 | + new DefaultLoadControl.Builder() |
| 173 | + .setBackBuffer( |
| 174 | + /* backBufferDurationMs= */ 10000, /* retainBackBufferFromKeyframe= */ true) |
| 175 | + .build()) |
170 | 176 | .build();
|
171 |
| - // Prepare media fully to ensure we have all the segment data available. |
172 | 177 | player.setVideoSurface(new Surface(new SurfaceTexture(/* texName= */ 1)));
|
173 | 178 | PlaybackOutput playbackOutput = PlaybackOutput.register(player, capturingRenderersFactory);
|
| 179 | + // Play media fully (with back buffer) to ensure we have all the segment data available. |
174 | 180 | player.setMediaItem(MediaItem.fromUri("asset:///media/hls/multi-segment/playlist.m3u8"));
|
175 | 181 | player.prepare();
|
176 |
| - TestPlayerRunHelper.runUntilIsLoading(player, true); |
177 |
| - TestPlayerRunHelper.runUntilIsLoading(player, false); |
| 182 | + player.play(); |
| 183 | + TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED); |
178 | 184 |
|
179 | 185 | // Seek to beginning of second segment (at 500ms according to playlist)
|
180 | 186 | player.setSeekParameters(SeekParameters.PREVIOUS_SYNC);
|
|
0 commit comments