@phenixrts/sdk
Version:
JavaScript SDK
58 lines (57 loc) • 1.84 kB
TypeScript
import IDisposable from '../lang/IDisposable';
import Subject from '../rx/Subject';
import ReadOnlySubject from '../rx/ReadOnlySubject';
import IPeerConnection from './IPeerConnection';
export interface IRtcPublishMonitorStatistic {
[kind: string]: IRtcPublishStatistic;
}
export interface ILegacyRTCStatsReport {
result: () => ILegacyRTCStatsReportItem[];
}
export interface ILegacyRTCStatsReportItem extends RTCStatsReport {
type: string;
names: () => string[];
stat: (name: string) => number;
}
export interface IRtcPublishStatistic {
lastPacketSentTimestamp?: number;
ssrc: string;
mediaType: string;
timestamp: number;
bitrate?: number;
bytesSent: number;
packetsSent: number;
retransmittedBytesSent?: number;
firCount?: number;
frameHeight?: number;
frameWidth?: number;
framesEncoded?: number;
framesSent?: number;
headerBytesSent?: number;
hugeFramesSent?: number;
pliCount?: number;
qpSum?: number;
totalEncodeTime?: number;
totalEncodedBytesTarget?: number;
codec: string;
fps?: number;
roundTripTime: number;
}
export default class RtcPublishMonitor implements IDisposable {
private readonly _logger;
private readonly _estimatedRoundTripTime;
private readonly _estimatedVideoCodec;
private readonly _estimatedAudioCodec;
private readonly _rtcStatistic;
private readonly _disposables;
private _peerConnection;
private _isMonitorRunning;
private _updateTimeout;
private _monitorGeneration;
private _availableTracks;
constructor(peerConnection: IPeerConnection, estimatedRoundTripTime: number, isForeground: ReadOnlySubject<boolean>);
get rtcStatistic(): Subject<IRtcPublishMonitorStatistic>;
dispose(): void;
private updateStatistic;
private getCodecByType;
}