Add setPlaybackSpeed as a convenience method to change speed.

PiperOrigin-RevId: 359734928
This commit is contained in:
krocard 2021-02-26 13:03:38 +00:00 committed by Oliver Woodman
parent 1c40c75433
commit 72aec83a9e
3 changed files with 31 additions and 0 deletions

View File

@ -137,6 +137,11 @@ public abstract class BasePlayer implements Player {
}
}
@Override
public final void setPlaybackSpeed(float speed) {
setPlaybackParameters(getPlaybackParameters().withSpeed(speed));
}
@Override
public final void stop() {
stop(/* reset= */ false);

View File

@ -1304,6 +1304,18 @@ public interface Player {
*/
void setPlaybackParameters(@Nullable PlaybackParameters playbackParameters);
/**
* Changes the rate at which playback occurs.
*
* <p>The pitch is not changed.
*
* <p>This is equivalent to {@code setPlaybackParameter(getPlaybackParameter().withSpeed(speed))}.
*
* @param speed The linear factor by which playback will be sped up. Must be higher than 0. 1 is
* normal speed, 2 is twice as fast, 0.5 is half normal speed...
*/
void setPlaybackSpeed(float speed);
/**
* Returns the currently active playback parameters.
*

View File

@ -8605,6 +8605,20 @@ public final class ExoPlayerTest {
assertThat(liveOffsetAtEnd).isIn(Range.closed(3_900L, 4_100L));
}
@Test
public void playerIdle_withSetPlaybackSpeed_usesPlaybackParameterSpeedWithPitchUnchanged() {
ExoPlayer player = new TestExoPlayerBuilder(context).build();
player.setPlaybackParameters(new PlaybackParameters(/* speed= */ 1, /* pitch= */ 2));
Player.EventListener mockListener = mock(Player.EventListener.class);
player.addListener(mockListener);
player.prepare();
player.setPlaybackSpeed(2);
verify(mockListener)
.onPlaybackParametersChanged(new PlaybackParameters(/* speed= */ 2, /* pitch= */ 2));
}
@Test
public void targetLiveOffsetInMedia_withSetPlaybackParameters_usesPlaybackParameterSpeed()
throws Exception {