mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Make resetPosition reset the position if true
Issue: #8024 PiperOrigin-RevId: 335846035
This commit is contained in:
parent
64d5be8719
commit
0a9b11d3dd
@ -309,6 +309,13 @@ public final class CastPlayer extends BasePlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
|
||||||
|
int windowIndex = resetPosition ? 0 : getCurrentWindowIndex();
|
||||||
|
long startPositionMs = resetPosition ? C.TIME_UNSET : getContentPosition();
|
||||||
|
setMediaItems(mediaItems, windowIndex, startPositionMs);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMediaItems(
|
public void setMediaItems(
|
||||||
List<MediaItem> mediaItems, int startWindowIndex, long startPositionMs) {
|
List<MediaItem> mediaItems, int startWindowIndex, long startPositionMs) {
|
||||||
|
@ -44,12 +44,6 @@ public abstract class BasePlayer implements Player {
|
|||||||
setMediaItems(Collections.singletonList(mediaItem), resetPosition);
|
setMediaItems(Collections.singletonList(mediaItem), resetPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
|
|
||||||
setMediaItems(
|
|
||||||
mediaItems, /* startWindowIndex= */ C.INDEX_UNSET, /* startPositionMs= */ C.TIME_UNSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMediaItems(List<MediaItem> mediaItems) {
|
public void setMediaItems(List<MediaItem> mediaItems) {
|
||||||
setMediaItems(mediaItems, /* resetPosition= */ true);
|
setMediaItems(mediaItems, /* resetPosition= */ true);
|
||||||
|
@ -338,6 +338,11 @@ import java.util.concurrent.TimeoutException;
|
|||||||
prepare();
|
prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
|
||||||
|
setMediaSources(createMediaSources(mediaItems), resetPosition);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setMediaItems(
|
public void setMediaItems(
|
||||||
List<MediaItem> mediaItems, int startWindowIndex, long startPositionMs) {
|
List<MediaItem> mediaItems, int startWindowIndex, long startPositionMs) {
|
||||||
|
@ -109,6 +109,7 @@ import com.google.android.exoplayer2.util.Assertions;
|
|||||||
import com.google.android.exoplayer2.util.Clock;
|
import com.google.android.exoplayer2.util.Clock;
|
||||||
import com.google.android.exoplayer2.util.MimeTypes;
|
import com.google.android.exoplayer2.util.MimeTypes;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -5706,6 +5707,42 @@ public final class ExoPlayerTest {
|
|||||||
assertArrayEquals(new int[] {0, 0, 0}, currentWindowIndices);
|
assertArrayEquals(new int[] {0, 0, 0}, currentWindowIndices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setMediaItems_resetPosition_resetsPosition() throws Exception {
|
||||||
|
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET};
|
||||||
|
final long[] currentPositions = {C.INDEX_UNSET, C.INDEX_UNSET};
|
||||||
|
ActionSchedule actionSchedule =
|
||||||
|
new ActionSchedule.Builder(TAG)
|
||||||
|
.pause()
|
||||||
|
.executeRunnable(
|
||||||
|
new PlayerRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run(SimpleExoPlayer player) {
|
||||||
|
player.seekTo(/* windowIndex= */ 1, /* positionMs= */ 1000);
|
||||||
|
currentWindowIndices[0] = player.getCurrentWindowIndex();
|
||||||
|
currentPositions[0] = player.getCurrentPosition();
|
||||||
|
List<MediaItem> listOfTwo =
|
||||||
|
Lists.newArrayList(
|
||||||
|
MediaItem.fromUri(Uri.EMPTY), MediaItem.fromUri(Uri.EMPTY));
|
||||||
|
player.setMediaItems(listOfTwo, /* resetPosition= */ true);
|
||||||
|
currentWindowIndices[1] = player.getCurrentWindowIndex();
|
||||||
|
currentPositions[1] = player.getCurrentPosition();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.prepare()
|
||||||
|
.waitForTimelineChanged()
|
||||||
|
.play()
|
||||||
|
.build();
|
||||||
|
new ExoPlayerTestRunner.Builder(context)
|
||||||
|
.setActionSchedule(actionSchedule)
|
||||||
|
.build()
|
||||||
|
.start(/* doPrepare= */ false)
|
||||||
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
assertArrayEquals(new int[] {1, 0}, currentWindowIndices);
|
||||||
|
assertArrayEquals(new long[] {1000, 0}, currentPositions);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setMediaSources_empty_whenEmpty_validInitialSeek_correctMaskingWindowIndex()
|
public void setMediaSources_empty_whenEmpty_validInitialSeek_correctMaskingWindowIndex()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user