UNPKG

@observertc/client-monitor-js

Version:

ObserveRTC Client Integration Javascript Library

1 lines 3.5 kB
export class OutboundRtpMonitor{_peerConnection;_visited=!0;timestamp;id;ssrc;kind;qualityLimitationDurations;transportId;codecId;packetsSent;bytesSent;mid;mediaSourceId;remoteId;rid;headerBytesSent;retransmittedPacketsSent;retransmittedBytesSent;rtxSsrc;targetBitrate;totalEncodedBytesTarget;frameWidth;frameHeight;framesPerSecond;framesSent;hugeFramesSent;framesEncoded;keyFramesEncoded;qpSum;totalEncodeTime;totalPacketSendDelay;qualityLimitationReason;qualityLimitationResolutionChanges;nackCount;firCount;pliCount;encoderImplementation;powerEfficientEncoder;active;scalabilityMode;bitrate;payloadBitrate;packetRate;bitPerPixel;deltaPacketsSent;deltaBytesSent;attachments;appData;constructor(t,e){this._peerConnection=t,this.id=e.id,this.timestamp=e.timestamp,this.ssrc=e.ssrc,this.kind=e.kind,Object.assign(this,e)}get visited(){const t=this._visited;return this._visited=!1,t}get trackIdentifier(){return this.getMediaSource()?.trackIdentifier}getPeerConnection(){return this._peerConnection}getRemoteInboundRtp(){return this._peerConnection.mappedRemoteInboundRtpMonitors.get(this.ssrc)}getCodec(){return this._peerConnection.mappedCodecMonitors.get(this.codecId??"")}getMediaSource(){return this._peerConnection.mappedMediaSourceMonitors.get(this.mediaSourceId??"")}getTrack(){return this.getMediaSource()?.getTrack()??this._peerConnection.mappedOutboundTracks.get(this.trackIdentifier??"")}accept(t){this._visited=!0;const e=t.timestamp-this.timestamp;if(e<=0)return;const i=e/1e3;if(void 0!==t.packetsSent&&void 0!==this.packetsSent&&(this.deltaPacketsSent=t.packetsSent-this.packetsSent,this.packetRate=this.deltaPacketsSent/i),void 0!==t.bytesSent&&void 0!==this.bytesSent&&(this.deltaBytesSent=t.bytesSent-this.bytesSent,this.bitrate=Math.max(0,8*this.deltaBytesSent/i),void 0!==t.headerBytesSent&&void 0!==this.headerBytesSent)){const e=t.headerBytesSent-this.headerBytesSent,s=(t.retransmittedBytesSent??0)-(this.retransmittedBytesSent??0),a=this.deltaBytesSent-e-s;this.payloadBitrate=Math.max(0,8*a/i)}Object.assign(this,t),this.frameWidth&&this.frameHeight&&this.framesPerSecond&&this.bitrate&&(this.bitPerPixel=this.bitrate/(this.frameHeight*this.frameWidth*this.framesPerSecond))}createSample(){return{timestamp:this.timestamp,id:this.id,ssrc:this.ssrc,kind:this.kind,qualityLimitationDurations:this.qualityLimitationDurations,transportId:this.transportId,codecId:this.codecId,packetsSent:this.packetsSent,bytesSent:this.bytesSent,mid:this.mid,mediaSourceId:this.mediaSourceId,remoteId:this.remoteId,rid:this.rid,headerBytesSent:this.headerBytesSent,retransmittedPacketsSent:this.retransmittedPacketsSent,retransmittedBytesSent:this.retransmittedBytesSent,rtxSsrc:this.rtxSsrc,targetBitrate:this.targetBitrate,totalEncodedBytesTarget:this.totalEncodedBytesTarget,frameWidth:this.frameWidth,frameHeight:this.frameHeight,framesPerSecond:this.framesPerSecond,framesSent:this.framesSent,hugeFramesSent:this.hugeFramesSent,framesEncoded:this.framesEncoded,keyFramesEncoded:this.keyFramesEncoded,qpSum:this.qpSum,totalEncodeTime:this.totalEncodeTime,totalPacketSendDelay:this.totalPacketSendDelay,qualityLimitationReason:this.qualityLimitationReason,qualityLimitationResolutionChanges:this.qualityLimitationResolutionChanges,nackCount:this.nackCount,firCount:this.firCount,pliCount:this.pliCount,encoderImplementation:this.encoderImplementation,powerEfficientEncoder:this.powerEfficientEncoder,active:this.active,scalabilityMode:this.scalabilityMode,attachments:this.attachments}}}