Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: webrtc/video/report_block_stats.cc

Issue 2994633002: Renamed fields in rtp_rtcp_defines.h/RTCPReportBlock (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 16 matching lines...) Expand all
27 // Helper class for rtcp statistics. 27 // Helper class for rtcp statistics.
28 ReportBlockStats::ReportBlockStats() 28 ReportBlockStats::ReportBlockStats()
29 : num_sequence_numbers_(0), 29 : num_sequence_numbers_(0),
30 num_lost_sequence_numbers_(0) { 30 num_lost_sequence_numbers_(0) {
31 } 31 }
32 32
33 void ReportBlockStats::Store(const RtcpStatistics& rtcp_stats, 33 void ReportBlockStats::Store(const RtcpStatistics& rtcp_stats,
34 uint32_t remote_ssrc, 34 uint32_t remote_ssrc,
35 uint32_t source_ssrc) { 35 uint32_t source_ssrc) {
36 RTCPReportBlock block; 36 RTCPReportBlock block;
37 block.cumulativeLost = rtcp_stats.packets_lost; 37 block.packets_lost = rtcp_stats.packets_lost;
38 block.fractionLost = rtcp_stats.fraction_lost; 38 block.fraction_lost = rtcp_stats.fraction_lost;
39 block.extendedHighSeqNum = rtcp_stats.extended_highest_sequence_number; 39 block.extended_highest_sequence_number =
40 rtcp_stats.extended_highest_sequence_number;
40 block.jitter = rtcp_stats.jitter; 41 block.jitter = rtcp_stats.jitter;
41 block.remoteSSRC = remote_ssrc; 42 block.sender_ssrc = remote_ssrc;
42 block.sourceSSRC = source_ssrc; 43 block.source_ssrc = source_ssrc;
43 uint32_t num_sequence_numbers = 0; 44 uint32_t num_sequence_numbers = 0;
44 uint32_t num_lost_sequence_numbers = 0; 45 uint32_t num_lost_sequence_numbers = 0;
45 StoreAndAddPacketIncrement( 46 StoreAndAddPacketIncrement(
46 block, &num_sequence_numbers, &num_lost_sequence_numbers); 47 block, &num_sequence_numbers, &num_lost_sequence_numbers);
47 } 48 }
48 49
49 RTCPReportBlock ReportBlockStats::AggregateAndStore( 50 RTCPReportBlock ReportBlockStats::AggregateAndStore(
50 const ReportBlockVector& report_blocks) { 51 const ReportBlockVector& report_blocks) {
51 RTCPReportBlock aggregate; 52 RTCPReportBlock aggregate;
52 if (report_blocks.empty()) { 53 if (report_blocks.empty()) {
53 return aggregate; 54 return aggregate;
54 } 55 }
55 uint32_t num_sequence_numbers = 0; 56 uint32_t num_sequence_numbers = 0;
56 uint32_t num_lost_sequence_numbers = 0; 57 uint32_t num_lost_sequence_numbers = 0;
57 ReportBlockVector::const_iterator report_block = report_blocks.begin(); 58 ReportBlockVector::const_iterator report_block = report_blocks.begin();
58 for (; report_block != report_blocks.end(); ++report_block) { 59 for (; report_block != report_blocks.end(); ++report_block) {
59 aggregate.cumulativeLost += report_block->cumulativeLost; 60 aggregate.packets_lost += report_block->packets_lost;
60 aggregate.jitter += report_block->jitter; 61 aggregate.jitter += report_block->jitter;
61 StoreAndAddPacketIncrement(*report_block, 62 StoreAndAddPacketIncrement(*report_block,
62 &num_sequence_numbers, 63 &num_sequence_numbers,
63 &num_lost_sequence_numbers); 64 &num_lost_sequence_numbers);
64 } 65 }
65 66
66 if (report_blocks.size() == 1) { 67 if (report_blocks.size() == 1) {
67 // No aggregation needed. 68 // No aggregation needed.
68 return report_blocks[0]; 69 return report_blocks[0];
69 } 70 }
70 // Fraction lost since previous report block. 71 // Fraction lost since previous report block.
71 aggregate.fractionLost = 72 aggregate.fraction_lost =
72 FractionLost(num_lost_sequence_numbers, num_sequence_numbers); 73 FractionLost(num_lost_sequence_numbers, num_sequence_numbers);
73 aggregate.jitter = static_cast<uint32_t>( 74 aggregate.jitter = static_cast<uint32_t>(
74 (aggregate.jitter + report_blocks.size() / 2) / report_blocks.size()); 75 (aggregate.jitter + report_blocks.size() / 2) / report_blocks.size());
75 return aggregate; 76 return aggregate;
76 } 77 }
77 78
78 void ReportBlockStats::StoreAndAddPacketIncrement( 79 void ReportBlockStats::StoreAndAddPacketIncrement(
79 const RTCPReportBlock& report_block, 80 const RTCPReportBlock& report_block,
80 uint32_t* num_sequence_numbers, 81 uint32_t* num_sequence_numbers,
81 uint32_t* num_lost_sequence_numbers) { 82 uint32_t* num_lost_sequence_numbers) {
82 // Get diff with previous report block. 83 // Get diff with previous report block.
83 ReportBlockMap::iterator prev_report_block = prev_report_blocks_.find( 84 ReportBlockMap::iterator prev_report_block =
84 report_block.sourceSSRC); 85 prev_report_blocks_.find(report_block.source_ssrc);
85 if (prev_report_block != prev_report_blocks_.end()) { 86 if (prev_report_block != prev_report_blocks_.end()) {
86 int seq_num_diff = report_block.extendedHighSeqNum - 87 int seq_num_diff =
87 prev_report_block->second.extendedHighSeqNum; 88 report_block.extended_highest_sequence_number -
88 int cum_loss_diff = report_block.cumulativeLost - 89 prev_report_block->second.extended_highest_sequence_number;
89 prev_report_block->second.cumulativeLost; 90 int cum_loss_diff =
91 report_block.packets_lost - prev_report_block->second.packets_lost;
90 if (seq_num_diff >= 0 && cum_loss_diff >= 0) { 92 if (seq_num_diff >= 0 && cum_loss_diff >= 0) {
91 *num_sequence_numbers += seq_num_diff; 93 *num_sequence_numbers += seq_num_diff;
92 *num_lost_sequence_numbers += cum_loss_diff; 94 *num_lost_sequence_numbers += cum_loss_diff;
93 // Update total number of packets/lost packets. 95 // Update total number of packets/lost packets.
94 num_sequence_numbers_ += seq_num_diff; 96 num_sequence_numbers_ += seq_num_diff;
95 num_lost_sequence_numbers_ += cum_loss_diff; 97 num_lost_sequence_numbers_ += cum_loss_diff;
96 } 98 }
97 } 99 }
98 // Store current report block. 100 // Store current report block.
99 prev_report_blocks_[report_block.sourceSSRC] = report_block; 101 prev_report_blocks_[report_block.source_ssrc] = report_block;
100 } 102 }
101 103
102 int ReportBlockStats::FractionLostInPercent() const { 104 int ReportBlockStats::FractionLostInPercent() const {
103 if (num_sequence_numbers_ == 0) { 105 if (num_sequence_numbers_ == 0) {
104 return -1; 106 return -1;
105 } 107 }
106 return FractionLost( 108 return FractionLost(
107 num_lost_sequence_numbers_, num_sequence_numbers_) * 100 / 255; 109 num_lost_sequence_numbers_, num_sequence_numbers_) * 100 / 255;
108 } 110 }
109 111
110 } // namespace webrtc 112 } // namespace webrtc
111 113
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698