@observertc/client-monitor-js
Version:
ObserveRTC Client Integration Javascript Library
1 lines • 1.15 kB
JavaScript
export class PlayoutDiscrepancyDetector{trackMonitor;static ISSUE_TYPE="inbound-video-playout-discrepancy";name="playout-discrepancy-detector";constructor(e){this.trackMonitor=e}get peerConnection(){return this.trackMonitor.getPeerConnection()}get config(){return this.peerConnection.parent.config.playoutDiscrepancyDetector}active=!1;update(){if(this.config.disabled)return;const e=this.trackMonitor.getInboundRtp();if(!(e&&e.deltaFramesReceived&&e.deltaFramesRendered&&e.ewmaFps))return;const t=e.deltaFramesReceived-e.deltaFramesRendered;if(this.active)return t<this.config.lowSkewThreshold?(this._resolveIssue(),void(this.active=!1)):void 0;if(t<this.config.highSkewThreshold)return;this.active=!0;const r=this.peerConnection.parent;r.emit(PlayoutDiscrepancyDetector.ISSUE_TYPE,{trackMonitor:this.trackMonitor,clientMonitor:r}),this.config.createIssue&&r.addIssue({type:PlayoutDiscrepancyDetector.ISSUE_TYPE,payload:{trackId:this.trackMonitor.track.id,frameSkew:t,ewmaFps:e.ewmaFps}})}_resolveIssue(){this.peerConnection.parent.resolveActiveIssues(PlayoutDiscrepancyDetector.ISSUE_TYPE,(e=>e.payload?.trackId===this.trackMonitor.track.id))}}