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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc

Issue 2274573002: Adjust RtcpReceiver to be testable with callbacks: (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: RtpRtcpSender -> ModuleRtpRtcp Created 4 years, 3 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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
11 #include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h" 11 #include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h"
12 12
13 #include <assert.h> 13 #include <assert.h>
14 #include <string.h> 14 #include <string.h>
15 15
16 #include <limits> 16 #include <limits>
17 17
18 #include "webrtc/base/checks.h" 18 #include "webrtc/base/checks.h"
19 #include "webrtc/base/logging.h" 19 #include "webrtc/base/logging.h"
20 #include "webrtc/base/trace_event.h" 20 #include "webrtc/base/trace_event.h"
21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h" 21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
22 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h" 22 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
23 #include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h"
24 #include "webrtc/modules/rtp_rtcp/source/time_util.h" 23 #include "webrtc/modules/rtp_rtcp/source/time_util.h"
25 #include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h" 24 #include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h"
26 #include "webrtc/system_wrappers/include/ntp_time.h" 25 #include "webrtc/system_wrappers/include/ntp_time.h"
27 26
28 namespace webrtc { 27 namespace webrtc {
29 using RTCPHelp::RTCPPacketInformation; 28 using RTCPHelp::RTCPPacketInformation;
30 using RTCPHelp::RTCPReceiveInformation; 29 using RTCPHelp::RTCPReceiveInformation;
31 using RTCPHelp::RTCPReportBlockInformation; 30 using RTCPHelp::RTCPReportBlockInformation;
32 using RTCPUtility::kBtVoipMetric; 31 using RTCPUtility::kBtVoipMetric;
33 using RTCPUtility::RTCPCnameInformation; 32 using RTCPUtility::RTCPCnameInformation;
34 using RTCPUtility::RTCPPacketReportBlockItem; 33 using RTCPUtility::RTCPPacketReportBlockItem;
35 using RTCPUtility::RTCPPacketTypes; 34 using RTCPUtility::RTCPPacketTypes;
36 35
37 // The number of RTCP time intervals needed to trigger a timeout. 36 // The number of RTCP time intervals needed to trigger a timeout.
38 const int kRrTimeoutIntervals = 3; 37 const int kRrTimeoutIntervals = 3;
39 38
40 const int64_t kMaxWarningLogIntervalMs = 10000; 39 const int64_t kMaxWarningLogIntervalMs = 10000;
41 40
42 RTCPReceiver::RTCPReceiver( 41 RTCPReceiver::RTCPReceiver(
43 Clock* clock, 42 Clock* clock,
44 bool receiver_only, 43 bool receiver_only,
45 RtcpPacketTypeCounterObserver* packet_type_counter_observer, 44 RtcpPacketTypeCounterObserver* packet_type_counter_observer,
46 RtcpBandwidthObserver* rtcp_bandwidth_observer, 45 RtcpBandwidthObserver* rtcp_bandwidth_observer,
47 RtcpIntraFrameObserver* rtcp_intra_frame_observer, 46 RtcpIntraFrameObserver* rtcp_intra_frame_observer,
48 TransportFeedbackObserver* transport_feedback_observer, 47 TransportFeedbackObserver* transport_feedback_observer,
49 ModuleRtpRtcpImpl* owner) 48 ModuleRtpRtcp* owner)
50 : _clock(clock), 49 : _clock(clock),
51 receiver_only_(receiver_only), 50 receiver_only_(receiver_only),
52 _lastReceived(0), 51 _lastReceived(0),
53 _rtpRtcp(*owner), 52 _rtpRtcp(*owner),
54 _cbRtcpBandwidthObserver(rtcp_bandwidth_observer), 53 _cbRtcpBandwidthObserver(rtcp_bandwidth_observer),
55 _cbRtcpIntraFrameObserver(rtcp_intra_frame_observer), 54 _cbRtcpIntraFrameObserver(rtcp_intra_frame_observer),
56 _cbTransportFeedbackObserver(transport_feedback_observer), 55 _cbTransportFeedbackObserver(transport_feedback_observer),
57 main_ssrc_(0), 56 main_ssrc_(0),
58 _remoteSSRC(0), 57 _remoteSSRC(0),
59 _remoteSenderInfo(), 58 _remoteSenderInfo(),
(...skipping 30 matching lines...) Expand all
90 _receivedInfoMap.erase(first); 89 _receivedInfoMap.erase(first);
91 } 90 }
92 while (!_receivedCnameMap.empty()) { 91 while (!_receivedCnameMap.empty()) {
93 std::map<uint32_t, RTCPCnameInformation*>::iterator first = 92 std::map<uint32_t, RTCPCnameInformation*>::iterator first =
94 _receivedCnameMap.begin(); 93 _receivedCnameMap.begin();
95 delete first->second; 94 delete first->second;
96 _receivedCnameMap.erase(first); 95 _receivedCnameMap.erase(first);
97 } 96 }
98 } 97 }
99 98
99 bool RTCPReceiver::IncomingPacket(const uint8_t* packet, size_t packet_size) {
100 // Allow receive of non-compound RTCP packets.
101 RTCPUtility::RTCPParserV2 rtcp_parser(packet, packet_size, true);
102
103 if (!rtcp_parser.IsValid()) {
104 LOG(LS_WARNING) << "Incoming invalid RTCP packet";
105 return false;
106 }
107 RTCPHelp::RTCPPacketInformation rtcp_packet_information;
108 IncomingRTCPPacket(rtcp_packet_information, &rtcp_parser);
109 TriggerCallbacksFromRTCPPacket(rtcp_packet_information);
110 return true;
111 }
112
100 int64_t RTCPReceiver::LastReceived() { 113 int64_t RTCPReceiver::LastReceived() {
101 rtc::CritScope lock(&_criticalSectionRTCPReceiver); 114 rtc::CritScope lock(&_criticalSectionRTCPReceiver);
102 return _lastReceived; 115 return _lastReceived;
103 } 116 }
104 117
105 int64_t RTCPReceiver::LastReceivedReceiverReport() const { 118 int64_t RTCPReceiver::LastReceivedReceiverReport() const {
106 rtc::CritScope lock(&_criticalSectionRTCPReceiver); 119 rtc::CritScope lock(&_criticalSectionRTCPReceiver);
107 int64_t last_received_rr = -1; 120 int64_t last_received_rr = -1;
108 for (ReceivedInfoMap::const_iterator it = _receivedInfoMap.begin(); 121 for (ReceivedInfoMap::const_iterator it = _receivedInfoMap.begin();
109 it != _receivedInfoMap.end(); ++it) { 122 it != _receivedInfoMap.end(); ++it) {
(...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after
1366 1379
1367 for (const auto& kv : _receivedInfoMap) { 1380 for (const auto& kv : _receivedInfoMap) {
1368 RTCPReceiveInformation* receive_info = kv.second; 1381 RTCPReceiveInformation* receive_info = kv.second;
1369 RTC_DCHECK(receive_info); 1382 RTC_DCHECK(receive_info);
1370 receive_info->GetTmmbrSet(now_ms, &candidates); 1383 receive_info->GetTmmbrSet(now_ms, &candidates);
1371 } 1384 }
1372 return candidates; 1385 return candidates;
1373 } 1386 }
1374 1387
1375 } // namespace webrtc 1388 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_receiver.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698