Return and pass around clock skew to be used in latency calculations.

Closes #1920
This commit is contained in:
Gabe Kangas
2022-05-23 15:15:32 -07:00
parent ade4d68c0d
commit afeef6f276
5 changed files with 52 additions and 20 deletions

View File

@@ -57,6 +57,8 @@ class OwncastPlayer {
this.hasStartedPlayback = false;
this.latencyCompensatorEnabled = false;
this.clockSkewMs = 0;
// bind all the things because safari
this.startPlayer = this.startPlayer.bind(this);
this.handleReady = this.handleReady.bind(this);
@@ -92,6 +94,18 @@ class OwncastPlayer {
this.vjsPlayer.ready(this.handleReady);
}
setClockSkew(skewMs) {
this.clockSkewMs = skewMs;
if (this.playbackMetrics) {
this.playbackMetrics.setClockSkew(skewMs);
}
if (this.latencyCompensator) {
this.latencyCompensator.setClockSkew(skewMs);
}
}
setupPlayerCallbacks(callbacks) {
const { onReady, onPlaying, onEnded, onError } = callbacks;
@@ -116,6 +130,7 @@ class OwncastPlayer {
setupPlaybackMetrics() {
this.playbackMetrics = new PlaybackMetrics(this.vjsPlayer, videojs);
this.playbackMetrics.setClockSkew(this.clockSkewMs);
}
setupLatencyCompensator() {
@@ -139,6 +154,7 @@ class OwncastPlayer {
startLatencyCompensator() {
this.latencyCompensator = new LatencyCompensator(this.vjsPlayer);
this.playbackMetrics.setClockSkew(this.clockSkewMs);
this.latencyCompensator.enable();
this.latencyCompensatorEnabled = true;
this.setLatencyCompensatorItemTitle('disable minimized latency');