@observertc/client-monitor-js
Version:
ObserveRTC Client Integration Javascript Library
356 lines (355 loc) • 9.95 kB
TypeScript
export declare const schemaVersion = "3.0.0";
export type ExtensionStat = {
type: string;
payload?: string;
};
export type ClientMetaData = {
type: string;
payload?: string;
peerConnectionId?: string;
trackId?: string;
ssrc?: number;
timestamp?: number;
};
export type ClientIssue = {
type: string;
payload?: string;
timestamp?: number;
};
export type ClientEvent = {
type: string;
payload?: string;
timestamp?: number;
};
export type CertificateStats = {
timestamp: number;
id: string;
fingerprint?: string;
fingerprintAlgorithm?: string;
base64Certificate?: string;
issuerCertificateId?: string;
attachments?: Record<string, unknown>;
};
export type IceCandidatePairStats = {
id: string;
timestamp: number;
transportId?: string;
localCandidateId?: string;
remoteCandidateId?: string;
state?: "new" | "in-progress" | "waiting" | "failed" | "succeeded" | "cancelled" | "inprogress";
nominated?: boolean;
packetsSent?: number;
packetsReceived?: number;
bytesSent?: number;
bytesReceived?: number;
lastPacketSentTimestamp?: number;
lastPacketReceivedTimestamp?: number;
totalRoundTripTime?: number;
currentRoundTripTime?: number;
availableOutgoingBitrate?: number;
availableIncomingBitrate?: number;
requestsReceived?: number;
requestsSent?: number;
responsesReceived?: number;
responsesSent?: number;
consentRequestsSent?: number;
packetsDiscardedOnSend?: number;
bytesDiscardedOnSend?: number;
attachments?: Record<string, unknown>;
};
export type IceCandidateStats = {
timestamp: number;
id: string;
transportId?: string;
address?: string;
port?: number;
protocol?: string;
candidateType?: string;
priority?: number;
url?: string;
relayProtocol?: string;
foundation?: string;
relatedAddress?: string;
relatedPort?: number;
usernameFragment?: string;
tcpType?: string;
attachments?: Record<string, unknown>;
};
export type IceTransportStats = {
timestamp: number;
id: string;
packetsSent?: number;
packetsReceived?: number;
bytesSent?: number;
bytesReceived?: number;
iceRole?: string;
iceLocalUsernameFragment?: string;
dtlsState?: string;
iceState?: string;
selectedCandidatePairId?: string;
localCertificateId?: string;
remoteCertificateId?: string;
tlsVersion?: string;
dtlsCipher?: string;
dtlsRole?: string;
srtpCipher?: string;
selectedCandidatePairChanges?: number;
attachments?: Record<string, unknown>;
};
export type DataChannelStats = {
timestamp: number;
id: string;
label?: string;
protocol?: string;
dataChannelIdentifier?: number;
state?: string;
messagesSent?: number;
bytesSent?: number;
messagesReceived?: number;
bytesReceived?: number;
attachments?: Record<string, unknown>;
};
export type PeerConnectionTransportStats = {
timestamp: number;
id: string;
dataChannelsOpened?: number;
dataChannelsClosed?: number;
attachments?: Record<string, unknown>;
};
export type MediaPlayoutStats = {
timestamp: number;
id: string;
kind: string;
synthesizedSamplesDuration?: number;
synthesizedSamplesEvents?: number;
totalSamplesDuration?: number;
totalPlayoutDelay?: number;
totalSamplesCount?: number;
attachments?: Record<string, unknown>;
};
export type MediaSourceStats = {
timestamp: number;
id: string;
kind: string;
trackIdentifier?: string;
audioLevel?: number;
totalAudioEnergy?: number;
totalSamplesDuration?: number;
echoReturnLoss?: number;
echoReturnLossEnhancement?: number;
width?: number;
height?: number;
frames?: number;
framesPerSecond?: number;
attachments?: Record<string, unknown>;
};
export type RemoteOutboundRtpStats = {
timestamp: number;
id: string;
ssrc: number;
kind: string;
transportId?: string;
codecId?: string;
packetsSent?: number;
bytesSent?: number;
localId?: string;
remoteTimestamp?: number;
reportsSent?: number;
roundTripTime?: number;
totalRoundTripTime?: number;
roundTripTimeMeasurements?: number;
attachments?: Record<string, unknown>;
};
export type QualityLimitationDurations = {
none: number;
cpu: number;
bandwidth: number;
other: number;
};
export type OutboundRtpStats = {
timestamp: number;
id: string;
ssrc: number;
kind: string;
transportId?: string;
codecId?: string;
packetsSent?: number;
bytesSent?: number;
mid?: string;
mediaSourceId?: string;
remoteId?: string;
rid?: string;
headerBytesSent?: number;
retransmittedPacketsSent?: number;
retransmittedBytesSent?: number;
rtxSsrc?: number;
targetBitrate?: number;
totalEncodedBytesTarget?: number;
frameWidth?: number;
frameHeight?: number;
framesPerSecond?: number;
framesSent?: number;
hugeFramesSent?: number;
framesEncoded?: number;
keyFramesEncoded?: number;
qpSum?: number;
totalEncodeTime?: number;
totalPacketSendDelay?: number;
qualityLimitationReason?: string;
qualityLimitationResolutionChanges?: number;
nackCount?: number;
firCount?: number;
pliCount?: number;
encoderImplementation?: string;
powerEfficientEncoder?: boolean;
active?: boolean;
scalabilityMode?: string;
qualityLimitationDurations?: QualityLimitationDurations;
attachments?: Record<string, unknown>;
};
export type RemoteInboundRtpStats = {
timestamp: number;
id: string;
ssrc: number;
kind: string;
transportId?: string;
codecId?: string;
packetsReceived?: number;
packetsLost?: number;
jitter?: number;
localId?: string;
roundTripTime?: number;
totalRoundTripTime?: number;
fractionLost?: number;
roundTripTimeMeasurements?: number;
attachments?: Record<string, unknown>;
};
export type InboundRtpStats = {
timestamp: number;
id: string;
ssrc: number;
kind: string;
trackIdentifier: string;
transportId?: string;
codecId?: string;
packetsReceived?: number;
packetsLost?: number;
jitter?: number;
mid?: string;
remoteId?: string;
framesDecoded?: number;
keyFramesDecoded?: number;
framesRendered?: number;
framesDropped?: number;
frameWidth?: number;
frameHeight?: number;
framesPerSecond?: number;
qpSum?: number;
totalDecodeTime?: number;
totalInterFrameDelay?: number;
totalSquaredInterFrameDelay?: number;
pauseCount?: number;
totalPausesDuration?: number;
freezeCount?: number;
totalFreezesDuration?: number;
lastPacketReceivedTimestamp?: number;
headerBytesReceived?: number;
packetsDiscarded?: number;
fecBytesReceived?: number;
fecPacketsReceived?: number;
fecPacketsDiscarded?: number;
bytesReceived?: number;
nackCount?: number;
firCount?: number;
pliCount?: number;
totalProcessingDelay?: number;
estimatedPlayoutTimestamp?: number;
jitterBufferDelay?: number;
jitterBufferTargetDelay?: number;
jitterBufferEmittedCount?: number;
jitterBufferMinimumDelay?: number;
totalSamplesReceived?: number;
concealedSamples?: number;
silentConcealedSamples?: number;
concealmentEvents?: number;
insertedSamplesForDeceleration?: number;
removedSamplesForAcceleration?: number;
audioLevel?: number;
totalAudioEnergy?: number;
totalSamplesDuration?: number;
framesReceived?: number;
decoderImplementation?: string;
playoutId?: string;
powerEfficientDecoder?: boolean;
framesAssembledFromMultiplePackets?: number;
totalAssemblyTime?: number;
retransmittedPacketsReceived?: number;
retransmittedBytesReceived?: number;
rtxSsrc?: number;
fecSsrc?: number;
totalCorruptionProbability?: number;
totalSquaredCorruptionProbability?: number;
corruptionMeasurements?: number;
attachments?: Record<string, unknown>;
};
export type CodecStats = {
timestamp: number;
id: string;
mimeType: string;
payloadType?: number;
transportId?: string;
clockRate?: number;
channels?: number;
sdpFmtpLine?: string;
attachments?: Record<string, unknown>;
};
export type OutboundTrackSample = {
timestamp: number;
id: string;
kind: string;
score?: number;
scoreReasons?: string;
attachments?: Record<string, unknown>;
};
export type InboundTrackSample = {
timestamp: number;
id: string;
kind: string;
score?: number;
scoreReasons?: string;
attachments?: Record<string, unknown>;
};
export type PeerConnectionSample = {
peerConnectionId: string;
attachments?: Record<string, unknown>;
score?: number;
scoreReasons?: string;
inboundTracks?: InboundTrackSample[];
outboundTracks?: OutboundTrackSample[];
codecs?: CodecStats[];
inboundRtps?: InboundRtpStats[];
remoteInboundRtps?: RemoteInboundRtpStats[];
outboundRtps?: OutboundRtpStats[];
remoteOutboundRtps?: RemoteOutboundRtpStats[];
mediaSources?: MediaSourceStats[];
mediaPlayouts?: MediaPlayoutStats[];
peerConnectionTransports?: PeerConnectionTransportStats[];
dataChannels?: DataChannelStats[];
iceTransports?: IceTransportStats[];
iceCandidates?: IceCandidateStats[];
iceCandidatePairs?: IceCandidatePairStats[];
certificates?: CertificateStats[];
};
export type ClientSample = {
timestamp: number;
callId?: string;
clientId?: string;
attachments?: Record<string, unknown>;
score?: number;
scoreReasons?: string;
peerConnections?: PeerConnectionSample[];
clientEvents?: ClientEvent[];
clientIssues?: ClientIssue[];
clientMetaItems?: ClientMetaData[];
extensionStats?: ExtensionStat[];
};