@observertc/client-monitor-js
Version:
ObserveRTC Client Integration Javascript Library
1 lines • 1.25 kB
JavaScript
import{ClientEventTypes as e}from"../schema/ClientEventTypes";export class CodecChangeDetector{trackMonitor;name="codec-change-detector";disabled=!1;_mimeType;_fmtp;constructor(e){this.trackMonitor=e}get config(){return this.peerConnection.parent.config.codecChangeDetector}get peerConnection(){return this.trackMonitor.getPeerConnection()}update(){if(this.disabled)return;const t="inbound"===this.trackMonitor.direction?this.trackMonitor.getInboundRtp():this.trackMonitor.getHighestLayer(),i=t?.getCodec();if(!i?.mimeType)return;const n=this._mimeType,o=this._fmtp;if(this._mimeType=i.mimeType,this._fmtp=i.sdpFmtpLine,void 0===n)return;if(n===i.mimeType&&o===i.sdpFmtpLine)return;const r=this.peerConnection.parent;r.emit("codec-changed",{clientMonitor:r,trackMonitor:this.trackMonitor,from:{mimeType:n,sdpFmtpLine:o},to:{mimeType:i.mimeType,sdpFmtpLine:i.sdpFmtpLine}}),!1!==this.config.createEvent&&r.addEvent({type:e.CODEC_CHANGED,payload:{peerConnectionId:this.peerConnection.peerConnectionId,trackId:this.trackMonitor.track.id,direction:this.trackMonitor.direction,kind:this.trackMonitor.kind,fromMimeType:n,fromSdpFmtpLine:o,mimeType:i.mimeType,sdpFmtpLine:i.sdpFmtpLine,payloadType:i.payloadType,clockRate:i.clockRate,channels:i.channels}})}}