import { StatsReport, TrackStatsReport, CalculationStats, AudioExtraStats, VideoExtraStats, MediaStatisticStatsWithCalculationReport, NetworkGrade } from "../types"; declare class ExpFilter { static kValueUndefined: number; static AlphaForPacketLossFractionSmoother: number; /** * the smooth should be done when rtcp packet arrive/send, but we can't get the rtcp * packet arrive/send time. according to webrtc and media server, the default rtcp * interval is: * * kDefaultVideoReportInterval = 1000; * kDefaultAudioReportInterval = 5000; * so we define the value accordingly */ static SMOOTH_VIDEO_INTERVAL: number; static SMOOTH_AUDIO_INTERVAL: number; mAlpha: number; mFiltered: number; mMax: number; mLastFilteredTimestamp: number; smooth_interval: number; applied: boolean; constructor(filterType: "audio" | "video", alpha?: number); Reset(alpha: number): void; Apply(sample: number): void; Filtered(): number; LastFilteredTime(): number; UpdateBase(alpha: number): void; } /** * TrackStatsReport and MediaStatisticStatsWithCalculationReport use different timer * So two filters for each here. */ export declare const getReportExpFilter: (id: string, filterType: "audio" | "video") => ExpFilter; export declare const getStatisticExpFilter: (id: string, filterType: "audio" | "video") => ExpFilter; export declare const defaultStatsReport: StatsReport; export declare const defaultTrackStatsReport: () => TrackStatsReport; export declare function getNetworkGrade(maxLostRate: number, maxRtt: number): NetworkGrade; export declare function getStats(pc: RTCPeerConnection, track: MediaStreamTrack, pctype: "send" | "recv"): Promise; export declare const defaultAudioExtraStats: AudioExtraStats; export declare const defaultVideoExtraStats: VideoExtraStats; export declare const defaultCalculationStats: CalculationStats; export declare enum MediaType { Video = "video", Audio = "audio" } export declare enum StatsReportType { MediaSource = "media-source", Track = "track", OutBoundRtp = "outbound-rtp", InBoundRtp = "inbound-rtp", RemoteInBound = "remote-inbound-rtp" } export declare enum BoundType { In = "in", Out = "out" } export declare function getDefaultMediaStatisticWithCalculationReport(id: string, trackId: string, mediaType: MediaType): MediaStatisticStatsWithCalculationReport; export declare function getMediaStatisticStats(pc: RTCPeerConnection): Promise; /** * Note that: * - packetsLost means total number of RTP packets lost for this SSRC and can be negative if more packets are received than sent. * - packetsTrans stands for packetsSent in outbound-rtp or packetsReceived in inbound-rtp. * - packetsSent means total number of RTP packets sent for this SSRC. * - packetsReceived means total number of RTP packets received for this SSRC. * * So we calculate packets lost rate by following math: * packetsLostRate = difference of packetsLost between two gatherings / difference of packetsTrans between two gatherings */ export declare function calculatePacketsLostRate(lastPacketsLost: number, currentPacketsLost: number, lastPacketsTrans: number, currentPacketsTrans: number): number; export interface CalculationReport { framerate: number; kbps: number; packet_lost_rate: number; } export declare function calculationMediaStatisticReport(calculation: CalculationStats, lastCalculation: CalculationStats, expFilter: ExpFilter): CalculationReport; export {};