From 56e97783ebb1c87b3df7131d36c7f1fd8c9b5eac Mon Sep 17 00:00:00 2001 From: kimvde Date: Wed, 16 Jun 2021 17:00:44 +0100 Subject: [PATCH] Simplify DefaultControlDispatcher by using Player methods PiperOrigin-RevId: 379732136 --- .../exoplayer2/DefaultControlDispatcher.java | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/DefaultControlDispatcher.java b/library/common/src/main/java/com/google/android/exoplayer2/DefaultControlDispatcher.java index a90305f1a2..a3f64892bd 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/DefaultControlDispatcher.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/DefaultControlDispatcher.java @@ -28,7 +28,6 @@ public class DefaultControlDispatcher implements ControlDispatcher { private static final int MAX_POSITION_FOR_SEEK_TO_PREVIOUS = 3000; - private final Timeline.Window window; private final long rewindIncrementMs; private final long fastForwardIncrementMs; @@ -48,7 +47,6 @@ public class DefaultControlDispatcher implements ControlDispatcher { public DefaultControlDispatcher(long fastForwardIncrementMs, long rewindIncrementMs) { this.fastForwardIncrementMs = fastForwardIncrementMs; this.rewindIncrementMs = rewindIncrementMs; - window = new Timeline.Window(); } @Override @@ -75,16 +73,14 @@ public class DefaultControlDispatcher implements ControlDispatcher { if (timeline.isEmpty() || player.isPlayingAd()) { return true; } - int windowIndex = player.getCurrentWindowIndex(); - timeline.getWindow(windowIndex, window); - int previousWindowIndex = player.getPreviousWindowIndex(); - boolean isUnseekableLiveStream = window.isLive() && !window.isSeekable; - if (previousWindowIndex != C.INDEX_UNSET + boolean isUnseekableLiveStream = + player.isCurrentWindowLive() && !player.isCurrentWindowSeekable(); + if (player.hasPrevious() && (player.getCurrentPosition() <= MAX_POSITION_FOR_SEEK_TO_PREVIOUS || isUnseekableLiveStream)) { - player.seekTo(previousWindowIndex, C.TIME_UNSET); + player.previous(); } else if (!isUnseekableLiveStream) { - player.seekTo(windowIndex, /* positionMs= */ 0); + player.seekTo(/* positionMs= */ 0); } return true; } @@ -95,13 +91,10 @@ public class DefaultControlDispatcher implements ControlDispatcher { if (timeline.isEmpty() || player.isPlayingAd()) { return true; } - int windowIndex = player.getCurrentWindowIndex(); - timeline.getWindow(windowIndex, window); - int nextWindowIndex = player.getNextWindowIndex(); - if (nextWindowIndex != C.INDEX_UNSET) { - player.seekTo(nextWindowIndex, C.TIME_UNSET); - } else if (window.isLive() && window.isDynamic) { - player.seekTo(windowIndex, C.TIME_UNSET); + if (player.hasNext()) { + player.next(); + } else if (player.isCurrentWindowLive() && player.isCurrentWindowDynamic()) { + player.seekToDefaultPosition(); } return true; } @@ -176,6 +169,6 @@ public class DefaultControlDispatcher implements ControlDispatcher { positionMs = min(positionMs, durationMs); } positionMs = max(positionMs, 0); - player.seekTo(player.getCurrentWindowIndex(), positionMs); + player.seekTo(positionMs); } }