@100mslive/hms-video-store
Version:
@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow
138 lines (137 loc) • 4.52 kB
TypeScript
/**
* Missing properties in TS eventhough WebRTC supports it.
* Ref: https://www.w3.org/TR/webrtc-stats/#summary
*/
import { RID } from './simulcast-layers';
declare type QualityLimitationReason = RTCOutboundRtpStreamStats extends {
qualityLimitationReason?: infer Reason;
} ? Reason : string;
declare type QualityLimitationDurations = RTCOutboundRtpStreamStats extends {
qualityLimitationDurations?: infer Durations;
} ? Durations : {
none: number;
cpu: number;
bandwidth: number;
other: number;
};
declare type TrackIdentifierField = RTCInboundRtpStreamStats extends {
trackIdentifier: infer Identifier;
} ? {
trackIdentifier: Identifier;
} : RTCInboundRtpStreamStats extends {
trackIdentifier?: infer Identifier;
} ? {
trackIdentifier?: Identifier;
} : {
trackIdentifier?: string;
};
/**
* @internal
* Ref: https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats
*/
export interface RTCRemoteInboundRtpStreamStats extends RTCReceivedRtpStreamStats {
localId: string;
roundTripTime?: number;
totalRoundTripTime?: number;
fractionLost?: number;
reportsReceived?: number;
roundTripTimeMeasurements?: number;
}
declare type MissingCommonStats = TrackIdentifierField & {
frameHeight?: number;
frameWidth?: number;
framesPerSecond?: number;
roundTripTime?: number;
totalRoundTripTime?: number;
};
interface MissingOutboundStats extends RTCOutboundRtpStreamStats, MissingCommonStats {
bytesSent?: number;
packetsSent?: number;
qualityLimitationReason?: QualityLimitationReason;
qualityLimitationDurations?: QualityLimitationDurations;
totalPacketSendDelay?: number;
rid?: RID;
}
export interface MissingInboundStats extends RTCInboundRtpStreamStats, MissingCommonStats {
bytesReceived?: number;
framesReceived?: number;
framesDropped?: number;
jitter?: number;
packetsLost?: number;
packetsLostRate?: number;
packetsReceived?: number;
concealedSamples?: number;
silentConcealedSamples?: number;
audioLevel?: number;
totalSamplesReceived?: number;
concealmentEvents?: number;
fecPacketsDiscarded?: number;
fecPacketsReceived?: number;
totalSamplesDuration?: number;
pauseCount?: number;
totalPausesDuration?: number;
freezeCount?: number;
totalFreezesDuration?: number;
jitterBufferDelay?: number;
jitterBufferEmittedCount?: number;
estimatedPlayoutTimestamp?: DOMHighResTimeStamp;
}
export declare type PeerConnectionType = 'publish' | 'subscribe';
interface BaseTrackStats extends RTCRtpStreamStats {
peerID?: string;
peerName?: string;
bitrate: number;
codec?: string;
enabled?: boolean;
}
/**
* Extends RTCOutboundRtpStreamStats
* Ref: https://www.w3.org/TR/webrtc-stats/#dom-rtcoutboundrtpstreamstats
*/
export interface HMSLocalTrackStats extends BaseTrackStats, MissingOutboundStats {
/**
* Stats perceived by the server(SFU) while receiving the local track sent by the peer
* Ref:
* https://www.w3.org/TR/webrtc-stats/#dom-rtcstatstype-remote-inbound-rtp
* https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats
*/
remote?: RTCRemoteInboundRtpStreamStats & {
packetsLostRate?: number;
};
/**
* Capture/source stats from `media-source` (camera or screen).
*/
sourceFrameWidth?: number;
sourceFrameHeight?: number;
sourceFramesPerSecond?: number;
sourceFrames?: number;
sourceFramesDropped?: number;
sourceTimestamp?: DOMHighResTimeStamp;
sourceStatsAvailable?: boolean;
}
/**
* Extends RTCInboundRtpStreamStats
* Ref: https://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats
*/
export interface HMSRemoteTrackStats extends BaseTrackStats, MissingInboundStats {
}
export interface HMSTrackStats extends HMSLocalTrackStats, HMSRemoteTrackStats {
}
export interface HMSPeerStats {
publish?: RTCIceCandidatePairStats & {
bitrate: number;
/**
* Sum of `bytesSent` across active outbound-rtp streams at the time the stat was taken.
* Used internally to derive `bitrate` on the next sample so the value only reflects
* actual media traffic, not ICE/RTCP/BWE probe padding (LIV-243).
*/
outboundRtpBytesSent?: number;
};
subscribe?: RTCIceCandidatePairStats & {
bitrate: number;
packetsLost: number;
packetsLostRate: number;
jitter: number;
};
}
export {};