Makes treatment of received reports of packets lost signed.
Bug: webrtc:9598 Change-Id: I0f6ffe348585b8ec69753089652812da516d33d8 Reviewed-on: https://webrtc-review.googlesource.com/93021 Reviewed-by: Björn Terelius <terelius@webrtc.org> Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24291}
This commit is contained in:

committed by
Commit Bot

parent
f3122e0efe
commit
9701e0ce2f
@ -379,8 +379,7 @@ TEST(AudioSendStreamTest, GetStats) {
|
||||
EXPECT_EQ(kSsrc, stats.local_ssrc);
|
||||
EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesSent), stats.bytes_sent);
|
||||
EXPECT_EQ(kCallStats.packetsSent, stats.packets_sent);
|
||||
EXPECT_EQ(static_cast<int32_t>(kReportBlock.cumulative_num_packets_lost),
|
||||
stats.packets_lost);
|
||||
EXPECT_EQ(kReportBlock.cumulative_num_packets_lost, stats.packets_lost);
|
||||
EXPECT_EQ(Q8ToFloat(kReportBlock.fraction_lost), stats.fraction_lost);
|
||||
EXPECT_EQ(std::string(kIsacCodec.plname), stats.codec_name);
|
||||
EXPECT_EQ(static_cast<int32_t>(kReportBlock.extended_highest_sequence_number),
|
||||
|
@ -80,7 +80,7 @@ struct ReportBlock {
|
||||
uint32_t sender_SSRC; // SSRC of sender
|
||||
uint32_t source_SSRC;
|
||||
uint8_t fraction_lost;
|
||||
uint32_t cumulative_num_packets_lost;
|
||||
int32_t cumulative_num_packets_lost;
|
||||
uint32_t extended_highest_sequence_number;
|
||||
uint32_t interarrival_jitter;
|
||||
uint32_t last_SR_timestamp;
|
||||
|
@ -193,7 +193,7 @@ struct RTCPReportBlock {
|
||||
uint32_t sender_ssrc; // SSRC of sender of this report.
|
||||
uint32_t source_ssrc; // SSRC of the RTP packet sender.
|
||||
uint8_t fraction_lost;
|
||||
uint32_t packets_lost; // 24 bits valid.
|
||||
int32_t packets_lost; // 24 bits valid.
|
||||
uint32_t extended_highest_sequence_number;
|
||||
uint32_t jitter;
|
||||
uint32_t last_sender_report_timestamp;
|
||||
|
@ -441,7 +441,7 @@ TEST_F(RtcpReceiverTest, InjectRrPacketWithTwoReportBlocks) {
|
||||
TEST_F(RtcpReceiverTest, InjectRrPacketsFromTwoRemoteSsrcs) {
|
||||
const uint32_t kSenderSsrc2 = 0x20304;
|
||||
const uint16_t kSequenceNumbers[] = {10, 12423};
|
||||
const uint32_t kCumLost[] = {13, 555};
|
||||
const int32_t kCumLost[] = {13, 555};
|
||||
const uint8_t kFracLost[] = {20, 11};
|
||||
|
||||
rtcp::ReportBlock rb1;
|
||||
|
@ -213,7 +213,7 @@ TEST_F(RtpRtcpRtcpTest, RemoteRTCPStatRemote) {
|
||||
EXPECT_EQ(test_ssrc + 1, report_blocks[0].sender_ssrc);
|
||||
EXPECT_EQ(test_ssrc, report_blocks[0].source_ssrc);
|
||||
|
||||
EXPECT_EQ(0u, report_blocks[0].packets_lost);
|
||||
EXPECT_EQ(0, report_blocks[0].packets_lost);
|
||||
EXPECT_LT(0u, report_blocks[0].delay_since_last_sender_report);
|
||||
EXPECT_EQ(test_sequence_number,
|
||||
report_blocks[0].extended_highest_sequence_number);
|
||||
|
@ -35,8 +35,7 @@ void ReportBlockStats::Store(const RtcpStatistics& rtcp_stats,
|
||||
uint32_t remote_ssrc,
|
||||
uint32_t source_ssrc) {
|
||||
RTCPReportBlock block;
|
||||
// TODO(srte): Remove this clamp when packets_lost is made signed.
|
||||
block.packets_lost = std::max(0, rtcp_stats.packets_lost);
|
||||
block.packets_lost = rtcp_stats.packets_lost;
|
||||
block.fraction_lost = rtcp_stats.fraction_lost;
|
||||
block.extended_highest_sequence_number =
|
||||
rtcp_stats.extended_highest_sequence_number;
|
||||
|
@ -82,7 +82,7 @@ TEST_F(ReportBlockStatsTest, AggregateAndStore_NoSsrc) {
|
||||
std::vector<RTCPReportBlock> empty;
|
||||
RTCPReportBlock aggregated = stats.AggregateAndStore(empty);
|
||||
EXPECT_EQ(0U, aggregated.fraction_lost);
|
||||
EXPECT_EQ(0U, aggregated.packets_lost);
|
||||
EXPECT_EQ(0, aggregated.packets_lost);
|
||||
EXPECT_EQ(0U, aggregated.jitter);
|
||||
EXPECT_EQ(0U, aggregated.extended_highest_sequence_number);
|
||||
}
|
||||
@ -92,13 +92,13 @@ TEST_F(ReportBlockStatsTest, AggregateAndStore_OneSsrc) {
|
||||
RTCPReportBlock aggregated = stats.AggregateAndStore(ssrc1block1_);
|
||||
// One ssrc, no aggregation done.
|
||||
EXPECT_EQ(123U, aggregated.fraction_lost);
|
||||
EXPECT_EQ(10U, aggregated.packets_lost);
|
||||
EXPECT_EQ(10, aggregated.packets_lost);
|
||||
EXPECT_EQ(777U, aggregated.jitter);
|
||||
EXPECT_EQ(24000U, aggregated.extended_highest_sequence_number);
|
||||
|
||||
aggregated = stats.AggregateAndStore(ssrc1block2_);
|
||||
EXPECT_EQ(0U, aggregated.fraction_lost);
|
||||
EXPECT_EQ(15U, aggregated.packets_lost);
|
||||
EXPECT_EQ(15, aggregated.packets_lost);
|
||||
EXPECT_EQ(222U, aggregated.jitter);
|
||||
EXPECT_EQ(24100U, aggregated.extended_highest_sequence_number);
|
||||
|
||||
@ -110,14 +110,14 @@ TEST_F(ReportBlockStatsTest, AggregateAndStore_TwoSsrcs) {
|
||||
ReportBlockStats stats;
|
||||
RTCPReportBlock aggregated = stats.AggregateAndStore(ssrc12block1_);
|
||||
EXPECT_EQ(0U, aggregated.fraction_lost);
|
||||
EXPECT_EQ(10U + 111U, aggregated.packets_lost);
|
||||
EXPECT_EQ(10 + 111, aggregated.packets_lost);
|
||||
EXPECT_EQ((777U + 555U) / 2, aggregated.jitter);
|
||||
EXPECT_EQ(0U, aggregated.extended_highest_sequence_number);
|
||||
|
||||
aggregated = stats.AggregateAndStore(ssrc12block2_);
|
||||
// fl: 255 * ((15-10) + (136-111)) / ((24100-24000) + (8800-8500)) = 19
|
||||
EXPECT_EQ(19U, aggregated.fraction_lost);
|
||||
EXPECT_EQ(15U + 136U, aggregated.packets_lost);
|
||||
EXPECT_EQ(15 + 136, aggregated.packets_lost);
|
||||
EXPECT_EQ((222U + 888U) / 2, aggregated.jitter);
|
||||
EXPECT_EQ(0U, aggregated.extended_highest_sequence_number);
|
||||
|
||||
|
Reference in New Issue
Block a user