- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
113 lines
4.2 KiB
Java
113 lines
4.2 KiB
Java
package com.mbridge.msdk.playercommon.exoplayer2;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.util.Clock;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.util.MediaClock;
|
|
import com.mbridge.msdk.playercommon.exoplayer2.util.StandaloneMediaClock;
|
|
|
|
/* loaded from: classes4.dex */
|
|
final class DefaultMediaClock implements MediaClock {
|
|
private final PlaybackParameterListener listener;
|
|
|
|
@Nullable
|
|
private MediaClock rendererClock;
|
|
|
|
@Nullable
|
|
private Renderer rendererClockSource;
|
|
private final StandaloneMediaClock standaloneMediaClock;
|
|
|
|
public interface PlaybackParameterListener {
|
|
void onPlaybackParametersChanged(PlaybackParameters playbackParameters);
|
|
}
|
|
|
|
public final void onRendererDisabled(Renderer renderer) {
|
|
if (renderer == this.rendererClockSource) {
|
|
this.rendererClock = null;
|
|
this.rendererClockSource = null;
|
|
}
|
|
}
|
|
|
|
public DefaultMediaClock(PlaybackParameterListener playbackParameterListener, Clock clock) {
|
|
this.listener = playbackParameterListener;
|
|
this.standaloneMediaClock = new StandaloneMediaClock(clock);
|
|
}
|
|
|
|
public final void start() {
|
|
this.standaloneMediaClock.start();
|
|
}
|
|
|
|
public final void stop() {
|
|
this.standaloneMediaClock.stop();
|
|
}
|
|
|
|
public final void resetPosition(long j) {
|
|
this.standaloneMediaClock.resetPosition(j);
|
|
}
|
|
|
|
public final void onRendererEnabled(Renderer renderer) throws ExoPlaybackException {
|
|
MediaClock mediaClock;
|
|
MediaClock mediaClock2 = renderer.getMediaClock();
|
|
if (mediaClock2 == null || mediaClock2 == (mediaClock = this.rendererClock)) {
|
|
return;
|
|
}
|
|
if (mediaClock != null) {
|
|
throw ExoPlaybackException.createForUnexpected(new IllegalStateException("Multiple renderer media clocks enabled."));
|
|
}
|
|
this.rendererClock = mediaClock2;
|
|
this.rendererClockSource = renderer;
|
|
mediaClock2.setPlaybackParameters(this.standaloneMediaClock.getPlaybackParameters());
|
|
ensureSynced();
|
|
}
|
|
|
|
public final long syncAndGetPositionUs() {
|
|
if (isUsingRendererClock()) {
|
|
ensureSynced();
|
|
return this.rendererClock.getPositionUs();
|
|
}
|
|
return this.standaloneMediaClock.getPositionUs();
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.util.MediaClock
|
|
public final long getPositionUs() {
|
|
if (isUsingRendererClock()) {
|
|
return this.rendererClock.getPositionUs();
|
|
}
|
|
return this.standaloneMediaClock.getPositionUs();
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.util.MediaClock
|
|
public final PlaybackParameters setPlaybackParameters(PlaybackParameters playbackParameters) {
|
|
MediaClock mediaClock = this.rendererClock;
|
|
if (mediaClock != null) {
|
|
playbackParameters = mediaClock.setPlaybackParameters(playbackParameters);
|
|
}
|
|
this.standaloneMediaClock.setPlaybackParameters(playbackParameters);
|
|
this.listener.onPlaybackParametersChanged(playbackParameters);
|
|
return playbackParameters;
|
|
}
|
|
|
|
@Override // com.mbridge.msdk.playercommon.exoplayer2.util.MediaClock
|
|
public final PlaybackParameters getPlaybackParameters() {
|
|
MediaClock mediaClock = this.rendererClock;
|
|
if (mediaClock != null) {
|
|
return mediaClock.getPlaybackParameters();
|
|
}
|
|
return this.standaloneMediaClock.getPlaybackParameters();
|
|
}
|
|
|
|
private void ensureSynced() {
|
|
this.standaloneMediaClock.resetPosition(this.rendererClock.getPositionUs());
|
|
PlaybackParameters playbackParameters = this.rendererClock.getPlaybackParameters();
|
|
if (playbackParameters.equals(this.standaloneMediaClock.getPlaybackParameters())) {
|
|
return;
|
|
}
|
|
this.standaloneMediaClock.setPlaybackParameters(playbackParameters);
|
|
this.listener.onPlaybackParametersChanged(playbackParameters);
|
|
}
|
|
|
|
private boolean isUsingRendererClock() {
|
|
Renderer renderer = this.rendererClockSource;
|
|
return (renderer == null || renderer.isEnded() || (!this.rendererClockSource.isReady() && this.rendererClockSource.hasReadStreamToEnd())) ? false : true;
|
|
}
|
|
}
|