From 683cb0260eec01fa358c3ac2189c33c511cd8be3 Mon Sep 17 00:00:00 2001 From: bachinger Date: Wed, 11 Mar 2020 22:31:57 +0000 Subject: [PATCH] add get/setPlaybackSpeed and listener callback This change deprecates the PlaybackParameters and remove the skipSilenceField from the PlaybackParameters. This implies that enabling and disabling skipping silences needs to be done on the Player.AudioComponent after this change. After submission of the change, all Player API changes are done which are required to bring playbackSpeed and skipSilenceEnabled in the converged Player API state. PiperOrigin-RevId: 300420843 --- .../exoplayer2/ext/cast/CastPlayer.java | 16 +++++ .../android/exoplayer2/ExoPlayerImpl.java | 68 +++++++++++++------ .../exoplayer2/ExoPlayerImplInternal.java | 4 +- .../exoplayer2/PlaybackParameters.java | 29 ++------ .../com/google/android/exoplayer2/Player.java | 58 +++++++++++----- .../android/exoplayer2/SimpleExoPlayer.java | 45 +++++++----- .../analytics/AnalyticsCollector.java | 14 ++++ .../analytics/AnalyticsListener.java | 16 +++-- .../android/exoplayer2/audio/AudioSink.java | 1 + .../exoplayer2/audio/DefaultAudioSink.java | 12 ++-- .../exoplayer2/audio/ForwardingAudioSink.java | 7 +- .../android/exoplayer2/util/EventLogger.java | 9 ++- .../analytics/AnalyticsCollectorTest.java | 9 ++- .../android/exoplayer2/testutil/Action.java | 4 +- .../exoplayer2/testutil/StubExoPlayer.java | 16 +++++ 15 files changed, 202 insertions(+), 106 deletions(-) diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java index fa63599701..b15fca4154 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java @@ -406,16 +406,32 @@ public final class CastPlayer extends BasePlayer { flushNotifications(); } + /** @deprecated Use {@link #setPlaybackSpeed(float)} instead. */ + @SuppressWarnings("deprecation") + @Deprecated @Override public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) { // Unsupported by the RemoteMediaClient API. Do nothing. } + /** @deprecated Use {@link #getPlaybackSpeed()} instead. */ + @SuppressWarnings("deprecation") + @Deprecated @Override public PlaybackParameters getPlaybackParameters() { return PlaybackParameters.DEFAULT; } + @Override + public void setPlaybackSpeed(float playbackSpeed) { + // Unsupported by the RemoteMediaClient API. Do nothing. + } + + @Override + public float getPlaybackSpeed() { + return Player.DEFAULT_PLAYBACK_SPEED; + } + @Override public void stop(boolean reset) { playbackState = STATE_IDLE; 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 8ea9679569..7b56e99111 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 @@ -78,8 +78,8 @@ import java.util.concurrent.TimeoutException; @DiscontinuityReason private int pendingDiscontinuityReason; @PlayWhenReadyChangeReason private int pendingPlayWhenReadyChangeReason; private boolean foregroundMode; - private int pendingSetPlaybackParametersAcks; - private PlaybackParameters playbackParameters; + private int pendingSetPlaybackSpeedAcks; + private float playbackSpeed; private SeekParameters seekParameters; private ShuffleOrder shuffleOrder; @@ -132,7 +132,7 @@ import java.util.concurrent.TimeoutException; new TrackSelection[renderers.length], null); period = new Timeline.Period(); - playbackParameters = PlaybackParameters.DEFAULT; + playbackSpeed = Player.DEFAULT_PLAYBACK_SPEED; seekParameters = SeekParameters.DEFAULT; maskingWindowIndex = C.INDEX_UNSET; eventHandler = @@ -535,24 +535,44 @@ import java.util.concurrent.TimeoutException; notifyListeners(listener -> listener.onPositionDiscontinuity(DISCONTINUITY_REASON_SEEK)); } + /** @deprecated Use {@link #setPlaybackSpeed(float)} instead. */ + @SuppressWarnings("deprecation") + @Deprecated @Override public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) { - if (playbackParameters == null) { - playbackParameters = PlaybackParameters.DEFAULT; - } - if (this.playbackParameters.equals(playbackParameters)) { + setPlaybackSpeed( + playbackParameters != null ? playbackParameters.speed : Player.DEFAULT_PLAYBACK_SPEED); + } + + /** @deprecated Use {@link #getPlaybackSpeed()} instead. */ + @SuppressWarnings("deprecation") + @Deprecated + @Override + public PlaybackParameters getPlaybackParameters() { + return new PlaybackParameters(playbackSpeed); + } + + @SuppressWarnings("deprecation") + @Override + public void setPlaybackSpeed(float playbackSpeed) { + Assertions.checkState(playbackSpeed > 0); + if (this.playbackSpeed == playbackSpeed) { return; } - pendingSetPlaybackParametersAcks++; - this.playbackParameters = playbackParameters; + pendingSetPlaybackSpeedAcks++; + this.playbackSpeed = playbackSpeed; + PlaybackParameters playbackParameters = new PlaybackParameters(playbackSpeed); internalPlayer.setPlaybackParameters(playbackParameters); - PlaybackParameters playbackParametersToNotify = playbackParameters; - notifyListeners(listener -> listener.onPlaybackParametersChanged(playbackParametersToNotify)); + notifyListeners( + listener -> { + listener.onPlaybackParametersChanged(playbackParameters); + listener.onPlaybackSpeedChanged(playbackSpeed); + }); } @Override - public PlaybackParameters getPlaybackParameters() { - return playbackParameters; + public float getPlaybackSpeed() { + return playbackSpeed; } @Override @@ -764,8 +784,8 @@ import java.util.concurrent.TimeoutException; case ExoPlayerImplInternal.MSG_PLAYBACK_INFO_CHANGED: handlePlaybackInfo((ExoPlayerImplInternal.PlaybackInfoUpdate) msg.obj); break; - case ExoPlayerImplInternal.MSG_PLAYBACK_PARAMETERS_CHANGED: - handlePlaybackParameters((PlaybackParameters) msg.obj, /* operationAck= */ msg.arg1 != 0); + case ExoPlayerImplInternal.MSG_PLAYBACK_SPEED_CHANGED: + handlePlaybackSpeed((Float) msg.obj, /* operationAck= */ msg.arg1 != 0); break; default: throw new IllegalStateException(); @@ -781,15 +801,19 @@ import java.util.concurrent.TimeoutException; } } - private void handlePlaybackParameters( - PlaybackParameters playbackParameters, boolean operationAck) { + @SuppressWarnings("deprecation") + private void handlePlaybackSpeed(float playbackSpeed, boolean operationAck) { if (operationAck) { - pendingSetPlaybackParametersAcks--; + pendingSetPlaybackSpeedAcks--; } - if (pendingSetPlaybackParametersAcks == 0) { - if (!this.playbackParameters.equals(playbackParameters)) { - this.playbackParameters = playbackParameters; - notifyListeners(listener -> listener.onPlaybackParametersChanged(playbackParameters)); + if (pendingSetPlaybackSpeedAcks == 0) { + if (this.playbackSpeed != playbackSpeed) { + this.playbackSpeed = playbackSpeed; + notifyListeners( + listener -> { + listener.onPlaybackParametersChanged(new PlaybackParameters(playbackSpeed)); + listener.onPlaybackSpeedChanged(playbackSpeed); + }); } } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java index a81deb1ba5..dd28459cd3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -64,7 +64,7 @@ import java.util.concurrent.atomic.AtomicBoolean; // External messages public static final int MSG_PLAYBACK_INFO_CHANGED = 0; - public static final int MSG_PLAYBACK_PARAMETERS_CHANGED = 1; + public static final int MSG_PLAYBACK_SPEED_CHANGED = 1; // Internal messages private static final int MSG_PREPARE = 0; @@ -1902,7 +1902,7 @@ import java.util.concurrent.atomic.AtomicBoolean; throws ExoPlaybackException { eventHandler .obtainMessage( - MSG_PLAYBACK_PARAMETERS_CHANGED, acknowledgeCommand ? 1 : 0, 0, playbackParameters) + MSG_PLAYBACK_SPEED_CHANGED, acknowledgeCommand ? 1 : 0, 0, playbackParameters.speed) .sendToTarget(); updateTrackSelectionPlaybackSpeed(playbackParameters.speed); for (Renderer renderer : renderers) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/PlaybackParameters.java b/library/core/src/main/java/com/google/android/exoplayer2/PlaybackParameters.java index 2cee02896f..afa0a7ebc4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/PlaybackParameters.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/PlaybackParameters.java @@ -19,8 +19,11 @@ import androidx.annotation.Nullable; import com.google.android.exoplayer2.util.Assertions; /** - * The parameters that apply to playback. + * @deprecated Use {@link Player#setPlaybackSpeed(float)} and {@link + * Player.AudioComponent#setSkipSilenceEnabled(boolean)} instead. */ +@SuppressWarnings("deprecation") +@Deprecated public final class PlaybackParameters { /** The default playback parameters: real-time playback with no silence skipping. */ @@ -29,9 +32,6 @@ public final class PlaybackParameters { /** The factor by which playback will be sped up. */ public final float speed; - /** Whether to skip silence in the input. */ - public final boolean skipSilence; - private final int scaledUsPerMs; /** @@ -40,20 +40,8 @@ public final class PlaybackParameters { * @param speed The factor by which playback will be sped up. Must be greater than zero. */ public PlaybackParameters(float speed) { - this(speed, /* skipSilence= */ false); - } - - /** - * Creates new playback parameters that set the playback speed and whether to skip silence in the - * audio stream. - * - * @param speed The factor by which playback will be sped up. Must be greater than zero. - * @param skipSilence Whether to skip silences in the audio stream. - */ - public PlaybackParameters(float speed, boolean skipSilence) { Assertions.checkArgument(speed > 0); this.speed = speed; - this.skipSilence = skipSilence; scaledUsPerMs = Math.round(speed * 1000f); } @@ -77,16 +65,11 @@ public final class PlaybackParameters { return false; } PlaybackParameters other = (PlaybackParameters) obj; - return this.speed == other.speed - && this.skipSilence == other.skipSilence; + return this.speed == other.speed; } @Override public int hashCode() { - int result = 17; - result = 31 * result + Float.floatToRawIntBits(speed); - result = 31 * result + (skipSilence ? 1 : 0); - return result; + return Float.floatToRawIntBits(speed); } - } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Player.java b/library/core/src/main/java/com/google/android/exoplayer2/Player.java index c1c26b59e9..f3bdb5ef0d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/Player.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/Player.java @@ -515,15 +515,21 @@ public interface Player { default void onPositionDiscontinuity(@DiscontinuityReason int reason) {} /** - * Called when the current playback parameters change. The playback parameters may change due to - * a call to {@link #setPlaybackParameters(PlaybackParameters)}, or the player itself may change - * them (for example, if audio playback switches to passthrough mode, where speed adjustment is - * no longer possible). - * - * @param playbackParameters The playback parameters. + * @deprecated Use {@link #onPlaybackSpeedChanged(float)} and {@link + * AudioListener#onSkipSilenceEnabledChanged(boolean)} instead. */ + @SuppressWarnings("deprecation") + @Deprecated default void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {} + /** + * Called when the current playback speed changes. The normal playback speed is 1. The speed may + * change due to a call to {@link #setPlaybackSpeed(float)}, or the player itself may change it + * (for example, if audio playback switches to passthrough mode, where speed adjustment is no + * longer possible). + */ + default void onPlaybackSpeedChanged(float playbackSpeed) {} + /** * Called when all pending seek requests have been processed by the player. This is guaranteed * to happen after any necessary changes to the player state were reported to {@link @@ -701,6 +707,9 @@ public interface Player { /** Timeline changed as a result of a dynamic update introduced by the played media. */ int TIMELINE_CHANGE_REASON_SOURCE_UPDATE = 1; + /** The default playback speed. */ + float DEFAULT_PLAYBACK_SPEED = 1.0f; + /** Returns the component of this player for audio output, or null if audio is not supported. */ @Nullable AudioComponent getAudioComponent(); @@ -913,24 +922,39 @@ public interface Player { void next(); /** - * Attempts to set the playback parameters. Passing {@code null} sets the parameters to the - * default, {@link PlaybackParameters#DEFAULT}, which means there is no speed or pitch adjustment. - * - *

Playback parameters changes may cause the player to buffer. {@link - * EventListener#onPlaybackParametersChanged(PlaybackParameters)} will be called whenever the - * currently active playback parameters change. - * - * @param playbackParameters The playback parameters, or {@code null} to use the defaults. + * @deprecated Use {@link #setPlaybackSpeed(float)} or {@link + * AudioComponent#setSkipSilenceEnabled(boolean)} instead. */ + @SuppressWarnings("deprecation") + @Deprecated void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters); /** - * Returns the currently active playback parameters. - * - * @see EventListener#onPlaybackParametersChanged(PlaybackParameters) + * @deprecated Use {@link #getPlaybackSpeed()} or {@link AudioComponent#getSkipSilenceEnabled()} + * instead. */ + @SuppressWarnings("deprecation") + @Deprecated PlaybackParameters getPlaybackParameters(); + /** + * Attempts to set the playback speed. + * + *

Playback speed changes may cause the player to buffer. {@link + * EventListener#onPlaybackSpeedChanged(float)} will be called whenever the currently active + * playback speed change. + * + * @param playbackSpeed The playback speed. + */ + void setPlaybackSpeed(float playbackSpeed); + + /** + * Returns the currently active playback speed. + * + * @see EventListener#onPlaybackSpeedChanged(float) + */ + float getPlaybackSpeed(); + /** * Stops playback without resetting the player. Use {@link #pause()} rather than this method if * the intention is to pause playback. 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 6e183ba811..67a3657607 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 @@ -853,23 +853,19 @@ public class SimpleExoPlayer extends BasePlayer this.priorityTaskManager = priorityTaskManager; } - /** - * Sets the {@link PlaybackParams} governing audio playback. - * - * @deprecated Use {@link #setPlaybackParameters(PlaybackParameters)}. - * @param params The {@link PlaybackParams}, or null to clear any previously set parameters. - */ + /** @deprecated Use {@link #setPlaybackSpeed(float)} instead. */ + @SuppressWarnings("deprecation") @Deprecated @RequiresApi(23) public void setPlaybackParams(@Nullable PlaybackParams params) { - PlaybackParameters playbackParameters; + float playbackSpeed; if (params != null) { params.allowDefaults(); - playbackParameters = new PlaybackParameters(params.getSpeed()); + playbackSpeed = params.getSpeed(); } else { - playbackParameters = null; + playbackSpeed = 1.0f; } - setPlaybackParameters(playbackParameters); + setPlaybackSpeed(playbackSpeed); } /** Returns the video format currently being played, or null if no video is being played. */ @@ -1390,26 +1386,39 @@ public class SimpleExoPlayer extends BasePlayer player.seekTo(windowIndex, positionMs); } + /** + * @deprecated Use {@link #setPlaybackSpeed(float)} and {@link #setSkipSilenceEnabled(boolean)} + * instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) { verifyApplicationThread(); - boolean newSkipSilenceEnabled = - playbackParameters != null - ? playbackParameters.skipSilence - : PlaybackParameters.DEFAULT.skipSilence; - if (skipSilenceEnabled != newSkipSilenceEnabled) { - skipSilenceEnabled = newSkipSilenceEnabled; - notifySkipSilenceEnabledChanged(); - } player.setPlaybackParameters(playbackParameters); } + /** @deprecated Use {@link #getPlaybackSpeed()} and {@link #getSkipSilenceEnabled()} instead. */ + @SuppressWarnings("deprecation") + @Deprecated @Override public PlaybackParameters getPlaybackParameters() { verifyApplicationThread(); return player.getPlaybackParameters(); } + @Override + public void setPlaybackSpeed(float playbackSpeed) { + verifyApplicationThread(); + player.setPlaybackSpeed(playbackSpeed); + } + + @Override + public float getPlaybackSpeed() { + verifyApplicationThread(); + return player.getPlaybackSpeed(); + } + @Override public void setSeekParameters(@Nullable SeekParameters seekParameters) { verifyApplicationThread(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java index c86f4e2e4a..30eee75650 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java @@ -531,6 +531,12 @@ public class AnalyticsCollector } } + /** + * @deprecated Use {@link #onPlaybackSpeedChanged(float)} and {@link + * #onSkipSilenceEnabledChanged(boolean)} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override public final void onPlaybackParametersChanged(PlaybackParameters playbackParameters) { EventTime eventTime = generateCurrentPlayerMediaPeriodEventTime(); @@ -539,6 +545,14 @@ public class AnalyticsCollector } } + @Override + public void onPlaybackSpeedChanged(float playbackSpeed) { + EventTime eventTime = generateCurrentPlayerMediaPeriodEventTime(); + for (AnalyticsListener listener : listeners) { + listener.onPlaybackSpeedChanged(eventTime, playbackSpeed); + } + } + @Override public final void onSeekProcessed() { if (isSeeking) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java index fbaa6a9781..77bc211ee3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java @@ -197,14 +197,22 @@ public interface AnalyticsListener { default void onSeekProcessed(EventTime eventTime) {} /** - * Called when the playback parameters changed. - * - * @param eventTime The event time. - * @param playbackParameters The new playback parameters. + * @deprecated Use {@link #onPlaybackSpeedChanged(EventTime, float)} and {@link + * #onSkipSilenceEnabledChanged(EventTime, boolean)} instead. */ + @SuppressWarnings("deprecation") + @Deprecated default void onPlaybackParametersChanged( EventTime eventTime, PlaybackParameters playbackParameters) {} + /** + * Called when the playback speed changes. + * + * @param eventTime The event time. + * @param playbackSpeed The playback speed. + */ + default void onPlaybackSpeedChanged(EventTime eventTime, float playbackSpeed) {} + /** * Called when the repeat mode changed. * diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java index 477b1fd1c1..725e0a8d39 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java @@ -276,6 +276,7 @@ public interface AudioSink { void setPlaybackParameters(PlaybackParameters playbackParameters); /** @deprecated Use {@link #getPlaybackSpeed()} and {@link #getSkipSilenceEnabled()} instead. */ + @SuppressWarnings("deprecation") @Deprecated PlaybackParameters getPlaybackParameters(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java index a4702f8242..e23ce3e5ad 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java @@ -158,12 +158,11 @@ public final class DefaultAudioSink implements AudioSink { * @deprecated Use {@link #applyPlaybackSpeed(float)} and {@link * #applySkipSilenceEnabled(boolean)} instead. */ + @SuppressWarnings("deprecation") @Deprecated @Override public PlaybackParameters applyPlaybackParameters(PlaybackParameters playbackParameters) { - return new PlaybackParameters( - applyPlaybackSpeed(playbackParameters.speed), - applySkipSilenceEnabled(playbackParameters.skipSilence)); + return new PlaybackParameters(applyPlaybackSpeed(playbackParameters.speed)); } @Override @@ -866,19 +865,20 @@ public final class DefaultAudioSink implements AudioSink { * @deprecated Use {@link #setPlaybackSpeed(float)} and {@link #setSkipSilenceEnabled(boolean)} * instead. */ + @SuppressWarnings("deprecation") @Deprecated @Override public void setPlaybackParameters(PlaybackParameters playbackParameters) { - setPlaybackSpeedAndSkipSilence(playbackParameters.speed, playbackParameters.skipSilence); + setPlaybackSpeedAndSkipSilence(playbackParameters.speed, getSkipSilenceEnabled()); } /** @deprecated Use {@link #getPlaybackSpeed()} and {@link #getSkipSilenceEnabled()} instead. */ + @SuppressWarnings("deprecation") @Deprecated @Override public PlaybackParameters getPlaybackParameters() { MediaPositionParameters mediaPositionParameters = getMediaPositionParameters(); - return new PlaybackParameters( - mediaPositionParameters.playbackSpeed, mediaPositionParameters.skipSilence); + return new PlaybackParameters(mediaPositionParameters.playbackSpeed); } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/ForwardingAudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/ForwardingAudioSink.java index fefaa6db23..7ab1cdade4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/ForwardingAudioSink.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/ForwardingAudioSink.java @@ -99,18 +99,19 @@ public class ForwardingAudioSink implements AudioSink { * @deprecated Use {@link #setPlaybackSpeed(float)} and {@link #setSkipSilenceEnabled(boolean)} * instead. */ + @SuppressWarnings("deprecation") @Deprecated @Override public void setPlaybackParameters(PlaybackParameters playbackParameters) { - sink.setPlaybackSpeed(playbackParameters.speed); - sink.setSkipSilenceEnabled(playbackParameters.skipSilence); + sink.setPlaybackParameters(playbackParameters); } /** @deprecated Use {@link #getPlaybackSpeed()} and {@link #getSkipSilenceEnabled()} instead. */ + @SuppressWarnings("deprecation") @Deprecated @Override public PlaybackParameters getPlaybackParameters() { - return new PlaybackParameters(sink.getPlaybackSpeed(), sink.getSkipSilenceEnabled()); + return sink.getPlaybackParameters(); } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java index b2e15d69e4..5bc2894fa6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java @@ -149,9 +149,12 @@ public class EventLogger implements AnalyticsListener { logd( eventTime, "playbackParameters", - Util.formatInvariant( - "speed=%.2f, skipSilence=%s", - playbackParameters.speed, playbackParameters.skipSilence)); + Util.formatInvariant("speed=%.2f", playbackParameters.speed)); + } + + @Override + public void onPlaybackSpeedChanged(EventTime eventTime, float playbackSpeed) { + logd(eventTime, "playbackSpeed", Float.toString(playbackSpeed)); } @Override diff --git a/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java index ac0c444769..1a148ac4a0 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java @@ -26,7 +26,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.Format; -import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.Renderer; import com.google.android.exoplayer2.RenderersFactory; @@ -76,7 +75,7 @@ public final class AnalyticsCollectorTest { private static final int EVENT_POSITION_DISCONTINUITY = 2; private static final int EVENT_SEEK_STARTED = 3; private static final int EVENT_SEEK_PROCESSED = 4; - private static final int EVENT_PLAYBACK_PARAMETERS_CHANGED = 5; + private static final int EVENT_PLAYBACK_SPEED_CHANGED = 5; private static final int EVENT_REPEAT_MODE_CHANGED = 6; private static final int EVENT_SHUFFLE_MODE_CHANGED = 7; private static final int EVENT_LOADING_CHANGED = 8; @@ -1464,10 +1463,10 @@ public final class AnalyticsCollectorTest { reportedEvents.add(new ReportedEvent(EVENT_SEEK_PROCESSED, eventTime)); } + @SuppressWarnings("deprecation") @Override - public void onPlaybackParametersChanged( - EventTime eventTime, PlaybackParameters playbackParameters) { - reportedEvents.add(new ReportedEvent(EVENT_PLAYBACK_PARAMETERS_CHANGED, eventTime)); + public void onPlaybackSpeedChanged(EventTime eventTime, float playbackSpeed) { + reportedEvents.add(new ReportedEvent(EVENT_PLAYBACK_SPEED_CHANGED, eventTime)); } @Override diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java index 4f30b20da2..feac36f5f8 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/Action.java @@ -622,9 +622,7 @@ public abstract class Action { super( tag, "SetPlaybackParameters:" - + (playbackParameters == null - ? "null" - : playbackParameters.speed + ":" + playbackParameters.skipSilence)); + + (playbackParameters == null ? "null" : playbackParameters.speed)); this.playbackParameters = playbackParameters; } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java index f8488155b5..c8151afd14 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java @@ -256,16 +256,32 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer { throw new UnsupportedOperationException(); } + /** @deprecated Use {@link #setPlaybackSpeed(float)} instead. */ + @SuppressWarnings("deprecation") + @Deprecated @Override public void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters) { throw new UnsupportedOperationException(); } + /** @deprecated Use {@link #getPlaybackSpeed()} instead. */ + @SuppressWarnings("deprecation") + @Deprecated @Override public PlaybackParameters getPlaybackParameters() { throw new UnsupportedOperationException(); } + @Override + public void setPlaybackSpeed(float playbackSpeed) { + throw new UnsupportedOperationException(); + } + + @Override + public float getPlaybackSpeed() { + throw new UnsupportedOperationException(); + } + @Override public void setSeekParameters(@Nullable SeekParameters seekParameters) { throw new UnsupportedOperationException();