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) {
|
private void rewind(Player player) {
|
||||||
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
||||||
seekTo(player, player.getCurrentPosition() - rewindMs);
|
seekToOffset(player, /* offsetMs= */ -rewindMs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fastForward(Player player) {
|
private void fastForward(Player player) {
|
||||||
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
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) {
|
||||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
long positionMs = player.getCurrentPosition() + offsetMs;
|
||||||
}
|
|
||||||
|
|
||||||
private void seekTo(Player player, int windowIndex, long positionMs) {
|
|
||||||
long durationMs = player.getDuration();
|
long durationMs = player.getDuration();
|
||||||
if (durationMs != C.TIME_UNSET) {
|
if (durationMs != C.TIME_UNSET) {
|
||||||
positionMs = Math.min(positionMs, durationMs);
|
positionMs = Math.min(positionMs, durationMs);
|
||||||
}
|
}
|
||||||
positionMs = Math.max(positionMs, 0);
|
positionMs = Math.max(positionMs, 0);
|
||||||
|
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void seekTo(Player player, int windowIndex, long positionMs) {
|
||||||
controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1119,7 +1120,7 @@ public final class MediaSessionConnector {
|
|||||||
playbackPreparer.onPrepare(/* playWhenReady= */ true);
|
playbackPreparer.onPrepare(/* playWhenReady= */ true);
|
||||||
}
|
}
|
||||||
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
||||||
controlDispatcher.dispatchSeekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
seekTo(player, player.getCurrentWindowIndex(), C.TIME_UNSET);
|
||||||
}
|
}
|
||||||
controlDispatcher.dispatchSetPlayWhenReady(
|
controlDispatcher.dispatchSetPlayWhenReady(
|
||||||
Assertions.checkNotNull(player), /* playWhenReady= */ true);
|
Assertions.checkNotNull(player), /* playWhenReady= */ true);
|
||||||
@ -1136,7 +1137,7 @@ public final class MediaSessionConnector {
|
|||||||
@Override
|
@Override
|
||||||
public void onSeekTo(long positionMs) {
|
public void onSeekTo(long positionMs) {
|
||||||
if (canDispatchPlaybackAction(PlaybackStateCompat.ACTION_SEEK_TO)) {
|
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))) {
|
|| (window.isDynamic && !window.isSeekable))) {
|
||||||
seekTo(player, previousWindowIndex, C.TIME_UNSET);
|
seekTo(player, previousWindowIndex, C.TIME_UNSET);
|
||||||
} else {
|
} else {
|
||||||
seekTo(player, 0);
|
seekTo(player, windowIndex, /* positionMs= */ 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1017,27 +1017,24 @@ public class PlayerControlView extends FrameLayout {
|
|||||||
|
|
||||||
private void rewind(Player player) {
|
private void rewind(Player player) {
|
||||||
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
||||||
seekTo(player, player.getCurrentPosition() - rewindMs);
|
seekToOffset(player, -rewindMs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fastForward(Player player) {
|
private void fastForward(Player player) {
|
||||||
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
||||||
seekTo(player, player.getCurrentPosition() + fastForwardMs);
|
seekToOffset(player, fastForwardMs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void seekTo(Player player, long positionMs) {
|
private void seekToOffset(Player player, long offsetMs) {
|
||||||
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
long positionMs = player.getCurrentPosition() + offsetMs;
|
||||||
}
|
|
||||||
|
|
||||||
private boolean seekTo(Player player, int windowIndex, long positionMs) {
|
|
||||||
long durationMs = player.getDuration();
|
long durationMs = player.getDuration();
|
||||||
if (durationMs != C.TIME_UNSET) {
|
if (durationMs != C.TIME_UNSET) {
|
||||||
positionMs = Math.min(positionMs, durationMs);
|
positionMs = Math.min(positionMs, durationMs);
|
||||||
}
|
}
|
||||||
positionMs = Math.max(positionMs, 0);
|
positionMs = Math.max(positionMs, 0);
|
||||||
return controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void seekToTimeBarPosition(Player player, long 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
|
@Override
|
||||||
public void onAttachedToWindow() {
|
public void onAttachedToWindow() {
|
||||||
super.onAttachedToWindow();
|
super.onAttachedToWindow();
|
||||||
@ -1270,7 +1271,7 @@ public class PlayerControlView extends FrameLayout {
|
|||||||
playbackPreparer.preparePlayback();
|
playbackPreparer.preparePlayback();
|
||||||
}
|
}
|
||||||
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
} 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);
|
controlDispatcher.dispatchSetPlayWhenReady(player, true);
|
||||||
} else if (pauseButton == view) {
|
} else if (pauseButton == view) {
|
||||||
|
@ -1209,7 +1209,7 @@ public class PlayerNotificationManager {
|
|||||||
|| (window.isDynamic && !window.isSeekable))) {
|
|| (window.isDynamic && !window.isSeekable))) {
|
||||||
seekTo(player, previousWindowIndex, C.TIME_UNSET);
|
seekTo(player, previousWindowIndex, C.TIME_UNSET);
|
||||||
} else {
|
} else {
|
||||||
seekTo(player, 0);
|
seekTo(player, windowIndex, /* positionMs= */ 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1229,26 +1229,27 @@ public class PlayerNotificationManager {
|
|||||||
|
|
||||||
private void rewind(Player player) {
|
private void rewind(Player player) {
|
||||||
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
if (player.isCurrentWindowSeekable() && rewindMs > 0) {
|
||||||
seekTo(player, Math.max(player.getCurrentPosition() - rewindMs, 0));
|
seekToOffset(player, /* offsetMs= */ -rewindMs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void fastForward(Player player) {
|
private void fastForward(Player player) {
|
||||||
if (player.isCurrentWindowSeekable() && fastForwardMs > 0) {
|
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);
|
seekTo(player, player.getCurrentWindowIndex(), positionMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void seekTo(Player player, int windowIndex, long 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);
|
controlDispatcher.dispatchSeekTo(player, windowIndex, positionMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1369,7 +1370,7 @@ public class PlayerNotificationManager {
|
|||||||
playbackPreparer.preparePlayback();
|
playbackPreparer.preparePlayback();
|
||||||
}
|
}
|
||||||
} else if (player.getPlaybackState() == Player.STATE_ENDED) {
|
} 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);
|
controlDispatcher.dispatchSetPlayWhenReady(player, /* playWhenReady= */ true);
|
||||||
} else if (ACTION_PAUSE.equals(action)) {
|
} else if (ACTION_PAUSE.equals(action)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user