Cleanup: Only clamp seek positions for FFWD/RWND
It's confusing that seekTo(player, windowIndex, positionMs) does clamping, because it only makes sense if windowIndex is the current window. Note: This doesn't actually fix anything (other than code clarity). In cases where we were passing other windowIndices, we always passed 0 as the position and so the clamping logic wouldn't have had any effect. PiperOrigin-RevId: 272857104
This commit is contained in:
parent
6e65a71806
commit
efe6e6408a
@ -889,26 +889,27 @@ public final class MediaSessionConnector {
|
||||
|
||||
private void rewind(Player player) {
|
||||
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
||||
seekTo(player, player.getCurrentPosition() - rewindMs);
|
||||
seekToOffset(player, /* offsetMs= */ -rewindMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void fastForward(Player player) {
|
||||
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
||||
seekTo(player, player.getCurrentPosition() + fastForwardMs);
|
||||
seekToOffset(player, /* offsetMs= */ fastForwardMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void seekTo(Player player, long positionMs) {
|
||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||
}
|
||||
|
||||
private void seekTo(Player player, int windowIndex, long positionMs) {
|
||||
private void seekToOffset(Player player, long offsetMs) {
|
||||
long positionMs = player.getCurrentPosition() + offsetMs;
|
||||
long durationMs = player.getDuration();
|
||||
if (durationMs != C.TIME_UNSET) {
|
||||
positionMs = Math.min(positionMs, durationMs);
|
||||
}
|
||||
positionMs = Math.max(positionMs, 0);
|
||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||
}
|
||||
|
||||
private void seekTo(Player player, int windowIndex, long positionMs) {
|
||||
controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
||||
}
|
||||
|
||||
@ -1119,7 +1120,7 @@ public final class MediaSessionConnector {
|
||||
playbackPreparer.onPrepare(/* playWhenReady= */ true);
|
||||
}
|
||||
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
||||
controlDispatcher.dispatchSeekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||
seekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||
}
|
||||
controlDispatcher.dispatchSetPlayWhenReady(
|
||||
Assertions.checkNotNull(player), /* playWhenReady= */ true);
|
||||
@ -1136,7 +1137,7 @@ public final class MediaSessionConnector {
|
||||
@Override
|
||||
public void onSeekTo(long positionMs) {
|
||||
if (canDispatchPlaybackAction(PlaybackStateCompat.ACTION_SEEK_TO)) {
|
||||
seekTo(player, positionMs);
|
||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -997,7 +997,7 @@ public class PlayerControlView extends FrameLayout {
|
||||
|| (window.isDynamic && !window.isSeekable))) {
|
||||
seekTo(player, previousWindowIndex, C.TIME_UNSET);
|
||||
} else {
|
||||
seekTo(player, 0);
|
||||
seekTo(player, windowIndex, /* positionMs= */ 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1017,27 +1017,24 @@ public class PlayerControlView extends FrameLayout {
|
||||
|
||||
private void rewind(Player player) {
|
||||
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
||||
seekTo(player, player.getCurrentPosition() - rewindMs);
|
||||
seekToOffset(player, -rewindMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void fastForward(Player player) {
|
||||
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
||||
seekTo(player, player.getCurrentPosition() + fastForwardMs);
|
||||
seekToOffset(player, fastForwardMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void seekTo(Player player, long positionMs) {
|
||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||
}
|
||||
|
||||
private boolean seekTo(Player player, int windowIndex, long positionMs) {
|
||||
private void seekToOffset(Player player, long offsetMs) {
|
||||
long positionMs = player.getCurrentPosition() + offsetMs;
|
||||
long durationMs = player.getDuration();
|
||||
if (durationMs != C.TIME_UNSET) {
|
||||
positionMs = Math.min(positionMs, durationMs);
|
||||
}
|
||||
positionMs = Math.max(positionMs, 0);
|
||||
return controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||
}
|
||||
|
||||
private void seekToTimeBarPosition(Player player, long positionMs) {
|
||||
@ -1069,6 +1066,10 @@ public class PlayerControlView extends FrameLayout {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean seekTo(Player player, int windowIndex, long positionMs) {
|
||||
return controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
@ -1270,7 +1271,7 @@ public class PlayerControlView extends FrameLayout {
|
||||
playbackPreparer.preparePlayback();
|
||||
}
|
||||
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
||||
controlDispatcher.dispatchSeekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||
seekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||
}
|
||||
controlDispatcher.dispatchSetPlayWhenReady(player, true);
|
||||
} else if (pauseButton == view) {
|
||||
|
@ -1209,7 +1209,7 @@ public class PlayerNotificationManager {
|
||||
|| (window.isDynamic && !window.isSeekable))) {
|
||||
seekTo(player, previousWindowIndex, C.TIME_UNSET);
|
||||
} else {
|
||||
seekTo(player, 0);
|
||||
seekTo(player, windowIndex, /* positionMs= */ 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1229,26 +1229,27 @@ public class PlayerNotificationManager {
|
||||
|
||||
private void rewind(Player player) {
|
||||
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
||||
seekTo(player, Math.max(player.getCurrentPosition() - rewindMs, 0));
|
||||
seekToOffset(player, /* offsetMs= */ -rewindMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void fastForward(Player player) {
|
||||
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
||||
seekTo(player, player.getCurrentPosition() + fastForwardMs);
|
||||
seekToOffset(player, /* offsetMs= */ fastForwardMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void seekTo(Player player, long positionMs) {
|
||||
private void seekToOffset(Player player, long offsetMs) {
|
||||
long positionMs = player.getCurrentPosition() + offsetMs;
|
||||
long durationMs = player.getDuration();
|
||||
if (durationMs != C.TIME_UNSET) {
|
||||
positionMs = Math.min(positionMs, durationMs);
|
||||
}
|
||||
positionMs = Math.max(positionMs, 0);
|
||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||
}
|
||||
|
||||
private void seekTo(Player player, int windowIndex, long positionMs) {
|
||||
long duration = player.getDuration();
|
||||
if (duration != C.TIME_UNSET) {
|
||||
positionMs = Math.min(positionMs, duration);
|
||||
}
|
||||
positionMs = Math.max(positionMs, 0);
|
||||
controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
||||
}
|
||||
|
||||
@ -1369,7 +1370,7 @@ public class PlayerNotificationManager {
|
||||
playbackPreparer.preparePlayback();
|
||||
}
|
||||
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
||||
controlDispatcher.dispatchSeekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||
seekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||
}
|
||||
controlDispatcher.dispatchSetPlayWhenReady(player, /* playWhenReady= */ true);
|
||||
} else if (ACTION_PAUSE.equals(action)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user