mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-27 04:35:34 +08:00
[fix] fix loss rate calculation
This commit is contained in:
@@ -30,6 +30,7 @@ void RtpAudioReceiver::InsertRtpPacket(RtpPacket& rtp_packet) {
|
|||||||
if (io_statistics_) {
|
if (io_statistics_) {
|
||||||
io_statistics_->UpdateAudioInboundBytes(last_recv_bytes_);
|
io_statistics_->UpdateAudioInboundBytes(last_recv_bytes_);
|
||||||
io_statistics_->IncrementAudioInboundRtpPacketCount();
|
io_statistics_->IncrementAudioInboundRtpPacketCount();
|
||||||
|
io_statistics_->UpdateAudioPacketLossCount(rtp_packet.SequenceNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CheckIsTimeSendRR()) {
|
if (CheckIsTimeSendRR()) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ void RtpDataReceiver::InsertRtpPacket(RtpPacket& rtp_packet) {
|
|||||||
if (io_statistics_) {
|
if (io_statistics_) {
|
||||||
io_statistics_->UpdateDataInboundBytes(last_recv_bytes_);
|
io_statistics_->UpdateDataInboundBytes(last_recv_bytes_);
|
||||||
io_statistics_->IncrementDataInboundRtpPacketCount();
|
io_statistics_->IncrementDataInboundRtpPacketCount();
|
||||||
|
io_statistics_->UpdateDataPacketLossCount(rtp_packet.SequenceNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CheckIsTimeSendRR()) {
|
if (CheckIsTimeSendRR()) {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ void RtpVideoReceiver::InsertRtpPacket(RtpPacket& rtp_packet) {
|
|||||||
if (io_statistics_) {
|
if (io_statistics_) {
|
||||||
io_statistics_->UpdateVideoInboundBytes(last_recv_bytes_);
|
io_statistics_->UpdateVideoInboundBytes(last_recv_bytes_);
|
||||||
io_statistics_->IncrementVideoInboundRtpPacketCount();
|
io_statistics_->IncrementVideoInboundRtpPacketCount();
|
||||||
|
io_statistics_->UpdateVideoPacketLossCount(rtp_packet.SequenceNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CheckIsTimeSendRR()) {
|
if (CheckIsTimeSendRR()) {
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
#define RTP_SEQ_NUM_MAX 65535
|
||||||
|
|
||||||
IOStatistics::IOStatistics(
|
IOStatistics::IOStatistics(
|
||||||
std::function<void(const NetTrafficStats&)> io_report_callback)
|
std::function<void(const NetTrafficStats&)> io_report_callback)
|
||||||
: io_report_callback_(io_report_callback) {
|
: io_report_callback_(io_report_callback) {
|
||||||
@@ -52,7 +54,7 @@ void IOStatistics::Process() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (expected_audio_inbound_rtp_pkt_cnt_ > 0 &&
|
if (expected_audio_inbound_rtp_pkt_cnt_ > 0 &&
|
||||||
audio_inbound_rtp_pkt_cnt_tmp_ > 0) {
|
audio_inbound_rtp_pkt_cnt_tmp_ >= 0) {
|
||||||
audio_rtp_pkt_loss_rate_ =
|
audio_rtp_pkt_loss_rate_ =
|
||||||
audio_rtp_pkt_loss_cnt_ / (float)audio_inbound_rtp_pkt_cnt_;
|
audio_rtp_pkt_loss_cnt_ / (float)audio_inbound_rtp_pkt_cnt_;
|
||||||
} else {
|
} else {
|
||||||
@@ -60,7 +62,7 @@ void IOStatistics::Process() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (expected_data_inbound_rtp_pkt_cnt_ > 0 &&
|
if (expected_data_inbound_rtp_pkt_cnt_ > 0 &&
|
||||||
data_inbound_rtp_pkt_cnt_ > 0) {
|
data_inbound_rtp_pkt_cnt_ >= 0) {
|
||||||
data_rtp_pkt_loss_rate_ =
|
data_rtp_pkt_loss_rate_ =
|
||||||
data_rtp_pkt_loss_cnt_ / (float)data_inbound_rtp_pkt_cnt_;
|
data_rtp_pkt_loss_cnt_ / (float)data_inbound_rtp_pkt_cnt_;
|
||||||
} else {
|
} else {
|
||||||
@@ -122,6 +124,30 @@ void IOStatistics::Process() {
|
|||||||
video_outbound_rtp_pkt_cnt_ + audio_outbound_rtp_pkt_cnt_ +
|
video_outbound_rtp_pkt_cnt_ + audio_outbound_rtp_pkt_cnt_ +
|
||||||
data_outbound_rtp_pkt_cnt_;
|
data_outbound_rtp_pkt_cnt_;
|
||||||
|
|
||||||
|
LOG_ERROR(
|
||||||
|
"[{} {} {}] | [{} {}] | [{} {} {}] | [{} {}] | [{} {} {}] | [{} "
|
||||||
|
"{}] | [{} {} {}] | [{} {}]",
|
||||||
|
net_traffic_stats.video_inbound_stats.bitrate,
|
||||||
|
net_traffic_stats.video_inbound_stats.loss_rate,
|
||||||
|
net_traffic_stats.video_inbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.video_outbound_stats.bitrate,
|
||||||
|
net_traffic_stats.video_outbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.audio_inbound_stats.bitrate,
|
||||||
|
net_traffic_stats.audio_inbound_stats.loss_rate,
|
||||||
|
net_traffic_stats.audio_inbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.audio_outbound_stats.bitrate,
|
||||||
|
net_traffic_stats.audio_outbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.data_inbound_stats.bitrate,
|
||||||
|
net_traffic_stats.data_inbound_stats.loss_rate,
|
||||||
|
net_traffic_stats.data_inbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.data_outbound_stats.bitrate,
|
||||||
|
net_traffic_stats.data_outbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.total_inbound_stats.bitrate,
|
||||||
|
net_traffic_stats.total_inbound_stats.loss_rate,
|
||||||
|
net_traffic_stats.total_inbound_stats.rtp_packet_count,
|
||||||
|
net_traffic_stats.total_outbound_stats.bitrate,
|
||||||
|
net_traffic_stats.total_outbound_stats.rtp_packet_count);
|
||||||
|
|
||||||
io_report_callback_(net_traffic_stats);
|
io_report_callback_(net_traffic_stats);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -158,7 +184,7 @@ void IOStatistics::UpdateVideoPacketLossCount(uint16_t seq_num) {
|
|||||||
0xffff - last_received_video_rtp_pkt_seq_ + seq_num + 1;
|
0xffff - last_received_video_rtp_pkt_seq_ + seq_num + 1;
|
||||||
} else {
|
} else {
|
||||||
expected_video_inbound_rtp_pkt_cnt_ +=
|
expected_video_inbound_rtp_pkt_cnt_ +=
|
||||||
seq_num - last_received_video_rtp_pkt_seq_ - 1;
|
seq_num - last_received_video_rtp_pkt_seq_;
|
||||||
}
|
}
|
||||||
} else if (last_received_video_rtp_pkt_seq_ > seq_num) {
|
} else if (last_received_video_rtp_pkt_seq_ > seq_num) {
|
||||||
expected_video_inbound_rtp_pkt_cnt_ +=
|
expected_video_inbound_rtp_pkt_cnt_ +=
|
||||||
@@ -184,7 +210,7 @@ void IOStatistics::UpdateAudioPacketLossCount(uint16_t seq_num) {
|
|||||||
0xffff - last_received_audio_rtp_pkt_seq_ + seq_num + 1;
|
0xffff - last_received_audio_rtp_pkt_seq_ + seq_num + 1;
|
||||||
} else {
|
} else {
|
||||||
expected_audio_inbound_rtp_pkt_cnt_ +=
|
expected_audio_inbound_rtp_pkt_cnt_ +=
|
||||||
seq_num - last_received_audio_rtp_pkt_seq_ - 1;
|
seq_num - last_received_audio_rtp_pkt_seq_;
|
||||||
}
|
}
|
||||||
} else if (last_received_audio_rtp_pkt_seq_ > seq_num) {
|
} else if (last_received_audio_rtp_pkt_seq_ > seq_num) {
|
||||||
expected_audio_inbound_rtp_pkt_cnt_ +=
|
expected_audio_inbound_rtp_pkt_cnt_ +=
|
||||||
@@ -210,7 +236,7 @@ void IOStatistics::UpdateDataPacketLossCount(uint16_t seq_num) {
|
|||||||
0xffff - last_received_data_rtp_pkt_seq_ + seq_num + 1;
|
0xffff - last_received_data_rtp_pkt_seq_ + seq_num + 1;
|
||||||
} else {
|
} else {
|
||||||
expected_data_inbound_rtp_pkt_cnt_ +=
|
expected_data_inbound_rtp_pkt_cnt_ +=
|
||||||
seq_num - last_received_data_rtp_pkt_seq_ - 1;
|
seq_num - last_received_data_rtp_pkt_seq_;
|
||||||
}
|
}
|
||||||
} else if (last_received_data_rtp_pkt_seq_ > seq_num) {
|
} else if (last_received_data_rtp_pkt_seq_ > seq_num) {
|
||||||
expected_data_inbound_rtp_pkt_cnt_ +=
|
expected_data_inbound_rtp_pkt_cnt_ +=
|
||||||
|
|||||||
Reference in New Issue
Block a user