feat: (for now android only!) method to get current call stats
This commit is contained in:
parent
82c1a3f96c
commit
94cbe1a2c5
6 changed files with 382 additions and 0 deletions
228
lib/models/call_stats.dart
Normal file
228
lib/models/call_stats.dart
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
class CallStats {
|
||||
/// Remote adress, duh
|
||||
final String remoteAddress;
|
||||
|
||||
/// Bandwidth measurement of the received stream, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double downloadBandwidth;
|
||||
|
||||
/// Estimated bandwidth measurement of the received stream, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double estimatedDownloadBandwidth;
|
||||
|
||||
/// If the FEC is enabled, gets the cumulative number of lost source packets of the RTP session that have not been repaired by the current FEC stream
|
||||
final int fecCumulativeLostPacketsNumber;
|
||||
|
||||
/// Bandwidth measurement of the part of the received stream dedicated to FEC, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double fecDownloadBandwidth;
|
||||
|
||||
/// If the FEC is enabled, gets the cumulative number of source packets of the RTP session that have been repaired by the current FEC stream
|
||||
final int fecRepairedPacketsNumber;
|
||||
|
||||
/// Bandwidth measurement of the part of the sent stream dedicated to FEC, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double fecUploadBandwidth;
|
||||
|
||||
/// State of ICE processing
|
||||
final String iceState;
|
||||
|
||||
/// Jitter buffer size in ms
|
||||
final double jitterBufferSizeMs;
|
||||
|
||||
/// Cumulative number of late packets
|
||||
final int latePacketsCumulativeNumber;
|
||||
|
||||
/// Local late rate since last report, expressed as a percentage
|
||||
final double localLateRate;
|
||||
|
||||
/// Local loss rate since last report, expressed as a percentage
|
||||
final double localLossRate;
|
||||
|
||||
/// Remote reported interarrival jitter, expressed in seconds
|
||||
final double receiverInterarrivalJitter;
|
||||
|
||||
/// Remote reported loss rate since last report, expressed as a percentage
|
||||
final double receiverLossRate;
|
||||
|
||||
/// Round trip delay in s
|
||||
final double roundTripDelay;
|
||||
|
||||
/// Bandwidth measurement of the received RTCP, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double rtcpDownloadBandwidth;
|
||||
|
||||
/// Bandwidth measurement of the sent RTCP, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double rtcpUploadBandwidth;
|
||||
|
||||
/// RTP cumulative number of incoming packet lost
|
||||
final int rtpCumPacketLoss;
|
||||
|
||||
/// RTP incoming packets discarded because the queue exceeds its max size
|
||||
final int rtpDiscarded;
|
||||
|
||||
/// Number of received bytes excluding IPv4/IPv6/UDP headers and including late and duplicate packets
|
||||
final int rtpHwRecv;
|
||||
|
||||
/// Number of RTP received packets
|
||||
final int rtpPacketRecv;
|
||||
|
||||
/// Number of RTP outgoing packets
|
||||
final int rtpPacketSent;
|
||||
|
||||
/// RTP incoming recv_bytes of payload and delivered in time to the application
|
||||
final int rtpRecv;
|
||||
|
||||
/// RTP outgoing sent_bytes (excluding IP header)
|
||||
final int rtpSent;
|
||||
|
||||
/// Local interarrival jitter, expressed in seconds
|
||||
final double senderInterarrivalJitter;
|
||||
|
||||
/// Local loss rate since last report, expressed as a percentage
|
||||
final double senderLossRate;
|
||||
|
||||
/// Method used for SRTP key exchange
|
||||
final String srtpSource;
|
||||
|
||||
/// SRTP Cryto suite in use
|
||||
final String srtpSuite;
|
||||
|
||||
/// Bandwidth measurement of the sent stream, expressed in kbit/s, including IP/UDP/RTP headers
|
||||
final double uploadBandwidth;
|
||||
|
||||
/// State of uPnP processing
|
||||
final String upnpState;
|
||||
|
||||
/// ZRTP algorithm statistics details (authentication method)
|
||||
final String zrtpAuthTagAlgo;
|
||||
|
||||
/// ZRTP algorithm statistics details (cipher)
|
||||
final String zrtpCipherAlgo;
|
||||
|
||||
/// ZRTP algorithm statistics details (hash function)
|
||||
final String zrtpHashAlgo;
|
||||
|
||||
/// ZRTP algorithm statistics details (key agreeement)
|
||||
final String zrtpKeyAgreementAlgo;
|
||||
|
||||
/// ZRTP algorithm statistics details (SAS display)
|
||||
final String zrtpSasAlgo;
|
||||
|
||||
/// Did ZRTP used a Post Quantum algorithm to perform a key exchange
|
||||
final bool isZrtpKeyAgreementAlgoPostQuantum;
|
||||
|
||||
const CallStats(
|
||||
this.remoteAddress,
|
||||
this.downloadBandwidth,
|
||||
this.estimatedDownloadBandwidth,
|
||||
this.fecCumulativeLostPacketsNumber,
|
||||
this.fecDownloadBandwidth,
|
||||
this.fecRepairedPacketsNumber,
|
||||
this.fecUploadBandwidth,
|
||||
this.iceState,
|
||||
this.jitterBufferSizeMs,
|
||||
this.latePacketsCumulativeNumber,
|
||||
this.localLateRate,
|
||||
this.localLossRate,
|
||||
this.receiverInterarrivalJitter,
|
||||
this.receiverLossRate,
|
||||
this.roundTripDelay,
|
||||
this.rtcpDownloadBandwidth,
|
||||
this.rtcpUploadBandwidth,
|
||||
this.rtpCumPacketLoss,
|
||||
this.rtpDiscarded,
|
||||
this.rtpHwRecv,
|
||||
this.rtpPacketRecv,
|
||||
this.rtpPacketSent,
|
||||
this.rtpRecv,
|
||||
this.rtpSent,
|
||||
this.senderInterarrivalJitter,
|
||||
this.senderLossRate,
|
||||
this.srtpSource,
|
||||
this.srtpSuite,
|
||||
this.uploadBandwidth,
|
||||
this.upnpState,
|
||||
this.zrtpAuthTagAlgo,
|
||||
this.zrtpCipherAlgo,
|
||||
this.zrtpHashAlgo,
|
||||
this.zrtpKeyAgreementAlgo,
|
||||
this.zrtpSasAlgo,
|
||||
this.isZrtpKeyAgreementAlgoPostQuantum,
|
||||
);
|
||||
|
||||
factory CallStats.fromJson(Map<dynamic, dynamic> json) => CallStats(
|
||||
json["remoteAddress"],
|
||||
json["downloadBandwidth"],
|
||||
json["estimatedDownloadBandwidth"],
|
||||
json["fecCumulativeLostPacketsNumber"],
|
||||
json["fecDownloadBandwidth"],
|
||||
json["fecRepairedPacketsNumber"],
|
||||
json["fecUploadBandwidth"],
|
||||
json["iceState"],
|
||||
json["jitterBufferSizeMs"],
|
||||
json["latePacketsCumulativeNumber"],
|
||||
json["localLateRate"],
|
||||
json["localLossRate"],
|
||||
json["receiverInterarrivalJitter"],
|
||||
json["receiverLossRate"],
|
||||
json["roundTripDelay"],
|
||||
json["rtcpDownloadBandwidth"],
|
||||
json["rtcpUploadBandwidth"],
|
||||
json["rtpCumPacketLoss"],
|
||||
json["rtpDiscarded"],
|
||||
json["rtpHwRecv"],
|
||||
json["rtpPacketRecv"],
|
||||
json["rtpPacketSent"],
|
||||
json["rtpRecv"],
|
||||
json["rtpSent"],
|
||||
json["senderInterarrivalJitter"],
|
||||
json["senderLossRate"],
|
||||
json["srtpSource"],
|
||||
json["srtpSuite"],
|
||||
json["uploadBandwidth"],
|
||||
json["upnpState"],
|
||||
json["zrtpAuthTagAlgo"],
|
||||
json["zrtpCipherAlgo"],
|
||||
json["zrtpHashAlgo"],
|
||||
json["zrtpKeyAgreementAlgo"],
|
||||
json["zrtpSasAlgo"],
|
||||
json["isZrtpKeyAgreementAlgoPostQuantum"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
"remoteAddress": remoteAddress,
|
||||
"downloadBandwidth": downloadBandwidth,
|
||||
"estimatedDownloadBandwidth": estimatedDownloadBandwidth,
|
||||
"fecCumulativeLostPacketsNumber": fecCumulativeLostPacketsNumber,
|
||||
"fecDownloadBandwidth": fecDownloadBandwidth,
|
||||
"fecRepairedPacketsNumber": fecRepairedPacketsNumber,
|
||||
"fecUploadBandwidth": fecUploadBandwidth,
|
||||
"iceState": iceState,
|
||||
"jitterBufferSizeMs": jitterBufferSizeMs,
|
||||
"latePacketsCumulativeNumber": latePacketsCumulativeNumber,
|
||||
"localLateRate": localLateRate,
|
||||
"localLossRate": localLossRate,
|
||||
"receiverInterarrivalJitter": receiverInterarrivalJitter,
|
||||
"receiverLossRate": receiverLossRate,
|
||||
"roundTripDelay": roundTripDelay,
|
||||
"rtcpDownloadBandwidth": rtcpDownloadBandwidth,
|
||||
"rtcpUploadBandwidth": rtcpUploadBandwidth,
|
||||
"rtpCumPacketLoss": rtpCumPacketLoss,
|
||||
"rtpDiscarded": rtpDiscarded,
|
||||
"rtpHwRecv": rtpHwRecv,
|
||||
"rtpPacketRecv": rtpPacketRecv,
|
||||
"rtpPacketSent": rtpPacketSent,
|
||||
"rtpRecv": rtpRecv,
|
||||
"rtpSent": rtpSent,
|
||||
"senderInterarrivalJitter": senderInterarrivalJitter,
|
||||
"senderLossRate": senderLossRate,
|
||||
"srtpSource": srtpSource,
|
||||
"srtpSuite": srtpSuite,
|
||||
"uploadBandwidth": uploadBandwidth,
|
||||
"upnpState": upnpState,
|
||||
"zrtpAuthTagAlgo": zrtpAuthTagAlgo,
|
||||
"zrtpCipherAlgo": zrtpCipherAlgo,
|
||||
"zrtpHashAlgo": zrtpHashAlgo,
|
||||
"zrtpKeyAgreementAlgo": zrtpKeyAgreementAlgo,
|
||||
"zrtpSasAlgo": zrtpSasAlgo,
|
||||
"isZrtpKeyAgreementAlgoPostQuantum": isZrtpKeyAgreementAlgoPostQuantum,
|
||||
};
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue