|
27 | 27 | */ |
28 | 28 | /* package */ final class DefaultMediaClock implements MediaClock { |
29 | 29 |
|
30 | | - /** Listener interface to be notified of changes to the active playback speed. */ |
31 | | - public interface PlaybackSpeedListener { |
| 30 | + /** Listener interface to be notified of changes to the active playback parameters. */ |
| 31 | + public interface PlaybackParametersListener { |
32 | 32 |
|
33 | 33 | /** |
34 | | - * Called when the active playback speed changed. Will not be called for {@link |
35 | | - * #setPlaybackSpeed(float)}. |
| 34 | + * Called when the active playback parameters changed. Will not be called for {@link |
| 35 | + * #setPlaybackParameters(PlaybackParameters)}. |
36 | 36 | * |
37 | | - * @param newPlaybackSpeed The newly active playback speed. |
| 37 | + * @param newPlaybackParameters The newly active playback parameters. |
38 | 38 | */ |
39 | | - void onPlaybackSpeedChanged(float newPlaybackSpeed); |
| 39 | + void onPlaybackParametersChanged(PlaybackParameters newPlaybackParameters); |
40 | 40 | } |
41 | 41 |
|
42 | 42 | private final StandaloneMediaClock standaloneClock; |
43 | | - private final PlaybackSpeedListener listener; |
| 43 | + private final PlaybackParametersListener listener; |
44 | 44 |
|
45 | 45 | @Nullable private Renderer rendererClockSource; |
46 | 46 | @Nullable private MediaClock rendererClock; |
47 | 47 | private boolean isUsingStandaloneClock; |
48 | 48 | private boolean standaloneClockIsStarted; |
49 | 49 |
|
50 | 50 | /** |
51 | | - * Creates a new instance with listener for playback speed changes and a {@link Clock} to use for |
52 | | - * the standalone clock implementation. |
| 51 | + * Creates a new instance with a listener for playback parameters changes and a {@link Clock} to |
| 52 | + * use for the standalone clock implementation. |
53 | 53 | * |
54 | | - * @param listener A {@link PlaybackSpeedListener} to listen for playback speed changes. |
| 54 | + * @param listener A {@link PlaybackParametersListener} to listen for playback parameters changes. |
55 | 55 | * @param clock A {@link Clock}. |
56 | 56 | */ |
57 | | - public DefaultMediaClock(PlaybackSpeedListener listener, Clock clock) { |
| 57 | + public DefaultMediaClock(PlaybackParametersListener listener, Clock clock) { |
58 | 58 | this.listener = listener; |
59 | 59 | this.standaloneClock = new StandaloneMediaClock(clock); |
60 | 60 | isUsingStandaloneClock = true; |
@@ -102,7 +102,7 @@ public void onRendererEnabled(Renderer renderer) throws ExoPlaybackException { |
102 | 102 | } |
103 | 103 | this.rendererClock = rendererMediaClock; |
104 | 104 | this.rendererClockSource = renderer; |
105 | | - rendererClock.setPlaybackSpeed(standaloneClock.getPlaybackSpeed()); |
| 105 | + rendererClock.setPlaybackParameters(standaloneClock.getPlaybackParameters()); |
106 | 106 | } |
107 | 107 | } |
108 | 108 |
|
@@ -140,19 +140,19 @@ public long getPositionUs() { |
140 | 140 | } |
141 | 141 |
|
142 | 142 | @Override |
143 | | - public void setPlaybackSpeed(float playbackSpeed) { |
| 143 | + public void setPlaybackParameters(PlaybackParameters playbackParameters) { |
144 | 144 | if (rendererClock != null) { |
145 | | - rendererClock.setPlaybackSpeed(playbackSpeed); |
146 | | - playbackSpeed = rendererClock.getPlaybackSpeed(); |
| 145 | + rendererClock.setPlaybackParameters(playbackParameters); |
| 146 | + playbackParameters = rendererClock.getPlaybackParameters(); |
147 | 147 | } |
148 | | - standaloneClock.setPlaybackSpeed(playbackSpeed); |
| 148 | + standaloneClock.setPlaybackParameters(playbackParameters); |
149 | 149 | } |
150 | 150 |
|
151 | 151 | @Override |
152 | | - public float getPlaybackSpeed() { |
| 152 | + public PlaybackParameters getPlaybackParameters() { |
153 | 153 | return rendererClock != null |
154 | | - ? rendererClock.getPlaybackSpeed() |
155 | | - : standaloneClock.getPlaybackSpeed(); |
| 154 | + ? rendererClock.getPlaybackParameters() |
| 155 | + : standaloneClock.getPlaybackParameters(); |
156 | 156 | } |
157 | 157 |
|
158 | 158 | private void syncClocks(boolean isReadingAhead) { |
@@ -180,10 +180,10 @@ private void syncClocks(boolean isReadingAhead) { |
180 | 180 | } |
181 | 181 | // Continuously sync stand-alone clock to renderer clock so that it can take over if needed. |
182 | 182 | standaloneClock.resetPosition(rendererClockPositionUs); |
183 | | - float playbackSpeed = rendererClock.getPlaybackSpeed(); |
184 | | - if (playbackSpeed != standaloneClock.getPlaybackSpeed()) { |
185 | | - standaloneClock.setPlaybackSpeed(playbackSpeed); |
186 | | - listener.onPlaybackSpeedChanged(playbackSpeed); |
| 183 | + PlaybackParameters playbackParameters = rendererClock.getPlaybackParameters(); |
| 184 | + if (!playbackParameters.equals(standaloneClock.getPlaybackParameters())) { |
| 185 | + standaloneClock.setPlaybackParameters(playbackParameters); |
| 186 | + listener.onPlaybackParametersChanged(playbackParameters); |
187 | 187 | } |
188 | 188 | } |
189 | 189 |
|
|
0 commit comments