getSenderStats method
Future<AudioSenderStats?>
getSenderStats(
)
Implementation
Future<AudioSenderStats?> getSenderStats() async {
if (sender == null) {
return null;
}
late List<rtc.StatsReport> stats;
try {
stats = await sender!.getStats();
} catch (e) {
rethrow;
}
AudioSenderStats? senderStats;
for (var v in stats) {
if (v.type == 'outbound-rtp') {
senderStats ??= AudioSenderStats(v.id, v.timestamp);
senderStats.packetsSent = getNumValFromReport(v.values, 'packetsSent');
senderStats.packetsLost = getNumValFromReport(v.values, 'packetsLost');
senderStats.bytesSent = getNumValFromReport(v.values, 'bytesSent');
senderStats.roundTripTime =
getNumValFromReport(v.values, 'roundTripTime');
senderStats.jitter = getNumValFromReport(v.values, 'jitter');
final c = stats.firstWhereOrNull((element) => element.type == 'codec');
if (c != null) {
senderStats.mimeType = getStringValFromReport(c.values, 'mimeType');
senderStats.payloadType =
getNumValFromReport(c.values, 'payloadType');
senderStats.channels = getNumValFromReport(c.values, 'channels');
senderStats.clockRate = getNumValFromReport(c.values, 'clockRate');
}
} else if (v.type == 'media-source') {
senderStats ??= AudioSenderStats(v.id, v.timestamp);
senderStats.audioSourceStats = AudioSourceStats.fromReport(v);
}
}
return senderStats;
}