diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java index ce43772d8d..0a0e2b0147 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java @@ -242,4 +242,7 @@ public interface ExoPlayer extends Player { * @param seekParameters The seek parameters, or {@code null} to use the defaults. */ void setSeekParameters(@Nullable SeekParameters seekParameters); + + /** Returns the currently active {@link SeekParameters} of the player. */ + SeekParameters getSeekParameters(); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index 9a224aca5d..51858a5cae 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -64,6 +64,7 @@ import java.util.concurrent.CopyOnWriteArraySet; private boolean hasPendingPrepare; private boolean hasPendingSeek; private PlaybackParameters playbackParameters; + private SeekParameters seekParameters; private @Nullable ExoPlaybackException playbackError; // Playback information when there is no pending seek/set source operation. @@ -108,6 +109,7 @@ import java.util.concurrent.CopyOnWriteArraySet; window = new Timeline.Window(); period = new Timeline.Period(); playbackParameters = PlaybackParameters.DEFAULT; + seekParameters = SeekParameters.DEFAULT; eventHandler = new Handler(looper) { @Override @@ -339,7 +341,15 @@ import java.util.concurrent.CopyOnWriteArraySet; if (seekParameters == null) { seekParameters = SeekParameters.DEFAULT; } - internalPlayer.setSeekParameters(seekParameters); + if (!this.seekParameters.equals(seekParameters)) { + this.seekParameters = seekParameters; + internalPlayer.setSeekParameters(seekParameters); + } + } + + @Override + public SeekParameters getSeekParameters() { + return seekParameters; } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index 7ca801da6b..10f6b5c540 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -791,6 +791,11 @@ public class SimpleExoPlayer player.setSeekParameters(seekParameters); } + @Override + public SeekParameters getSeekParameters() { + return player.getSeekParameters(); + } + @Override public @Nullable Object getCurrentTag() { return player.getCurrentTag(); diff --git a/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java b/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java index 0718c5dd26..246e2918c4 100644 --- a/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java +++ b/testutils_robolectric/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java @@ -159,6 +159,11 @@ public abstract class StubExoPlayer implements ExoPlayer { throw new UnsupportedOperationException(); } + @Override + public SeekParameters getSeekParameters() { + throw new UnsupportedOperationException(); + } + @Override public @Nullable Object getCurrentTag() { throw new UnsupportedOperationException();