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

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

Issue 2181383002: Add NACK rate throttling for audio channels. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase Created 4 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) 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 <memory> 11 #include <memory>
12 12
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 #include "webrtc/base/rate_limiter.h"
16 #include "webrtc/common_types.h" 17 #include "webrtc/common_types.h"
17 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_observer.h" 18 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_observer.h"
18 #include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_singl e_stream.h" 19 #include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_singl e_stream.h"
19 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" 20 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
20 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h" 21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet.h"
21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" 22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h"
22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" 23 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h"
23 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h" 24 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/compound_packet.h"
24 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h" 25 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_jitter_report.h"
25 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h" 26 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/extended_reports.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 }; 74 };
74 75
75 class RtcpReceiverTest : public ::testing::Test { 76 class RtcpReceiverTest : public ::testing::Test {
76 protected: 77 protected:
77 RtcpReceiverTest() 78 RtcpReceiverTest()
78 : over_use_detector_options_(), 79 : over_use_detector_options_(),
79 system_clock_(1335900000), 80 system_clock_(1335900000),
80 remote_bitrate_observer_(), 81 remote_bitrate_observer_(),
81 remote_bitrate_estimator_( 82 remote_bitrate_estimator_(
82 new RemoteBitrateEstimatorSingleStream(&remote_bitrate_observer_, 83 new RemoteBitrateEstimatorSingleStream(&remote_bitrate_observer_,
83 &system_clock_)) { 84 &system_clock_)),
84 test_transport_ = new TestTransport(); 85 retransmission_rate_limiter_(&system_clock_, 1000) {
86 test_transport_.reset(new TestTransport());
85 87
86 RtpRtcp::Configuration configuration; 88 RtpRtcp::Configuration configuration;
87 configuration.audio = false; 89 configuration.audio = false;
88 configuration.clock = &system_clock_; 90 configuration.clock = &system_clock_;
89 configuration.outgoing_transport = test_transport_; 91 configuration.outgoing_transport = test_transport_.get();
90 configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get(); 92 configuration.remote_bitrate_estimator = remote_bitrate_estimator_.get();
91 rtp_rtcp_impl_ = new ModuleRtpRtcpImpl(configuration); 93 configuration.retransmission_rate_limiter = &retransmission_rate_limiter_;
92 rtcp_receiver_ = new RTCPReceiver(&system_clock_, false, nullptr, nullptr, 94 rtp_rtcp_impl_.reset(new ModuleRtpRtcpImpl(configuration));
93 nullptr, nullptr, rtp_rtcp_impl_); 95 rtcp_receiver_.reset(new RTCPReceiver(&system_clock_, false, nullptr,
94 test_transport_->SetRTCPReceiver(rtcp_receiver_); 96 nullptr, nullptr, nullptr,
97 rtp_rtcp_impl_.get()));
98 test_transport_->SetRTCPReceiver(rtcp_receiver_.get());
95 } 99 }
96 ~RtcpReceiverTest() { 100
97 delete rtcp_receiver_; 101 ~RtcpReceiverTest() {}
98 delete rtp_rtcp_impl_;
99 delete test_transport_;
100 }
101 102
102 // Injects an RTCP packet into the receiver. 103 // Injects an RTCP packet into the receiver.
103 // Returns 0 for OK, non-0 for failure. 104 // Returns 0 for OK, non-0 for failure.
104 int InjectRtcpPacket(const uint8_t* packet, 105 int InjectRtcpPacket(const uint8_t* packet,
105 uint16_t packet_len) { 106 uint16_t packet_len) {
106 RTCPUtility::RTCPParserV2 rtcpParser(packet, 107 RTCPUtility::RTCPParserV2 rtcpParser(packet,
107 packet_len, 108 packet_len,
108 true); // Allow non-compound RTCP 109 true); // Allow non-compound RTCP
109 110
110 RTCPHelp::RTCPPacketInformation rtcpPacketInformation; 111 RTCPHelp::RTCPPacketInformation rtcpPacketInformation;
(...skipping 24 matching lines...) Expand all
135 rtcp_packet_info_.xr_dlrr_item = rtcpPacketInformation.xr_dlrr_item; 136 rtcp_packet_info_.xr_dlrr_item = rtcpPacketInformation.xr_dlrr_item;
136 if (rtcpPacketInformation.VoIPMetric) 137 if (rtcpPacketInformation.VoIPMetric)
137 rtcp_packet_info_.AddVoIPMetric(rtcpPacketInformation.VoIPMetric.get()); 138 rtcp_packet_info_.AddVoIPMetric(rtcpPacketInformation.VoIPMetric.get());
138 rtcp_packet_info_.transport_feedback_.reset( 139 rtcp_packet_info_.transport_feedback_.reset(
139 rtcpPacketInformation.transport_feedback_.release()); 140 rtcpPacketInformation.transport_feedback_.release());
140 return 0; 141 return 0;
141 } 142 }
142 143
143 OverUseDetectorOptions over_use_detector_options_; 144 OverUseDetectorOptions over_use_detector_options_;
144 SimulatedClock system_clock_; 145 SimulatedClock system_clock_;
145 ModuleRtpRtcpImpl* rtp_rtcp_impl_; 146 std::unique_ptr<TestTransport> test_transport_;
146 RTCPReceiver* rtcp_receiver_; 147 std::unique_ptr<ModuleRtpRtcpImpl> rtp_rtcp_impl_;
147 TestTransport* test_transport_; 148 std::unique_ptr<RTCPReceiver> rtcp_receiver_;
148 RTCPHelp::RTCPPacketInformation rtcp_packet_info_; 149 RTCPHelp::RTCPPacketInformation rtcp_packet_info_;
149 MockRemoteBitrateObserver remote_bitrate_observer_; 150 MockRemoteBitrateObserver remote_bitrate_observer_;
150 std::unique_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_; 151 std::unique_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_;
152 RateLimiter retransmission_rate_limiter_;
151 }; 153 };
152 154
153 155
154 TEST_F(RtcpReceiverTest, BrokenPacketIsIgnored) { 156 TEST_F(RtcpReceiverTest, BrokenPacketIsIgnored) {
155 const uint8_t bad_packet[] = {0, 0, 0, 0}; 157 const uint8_t bad_packet[] = {0, 0, 0, 0};
156 EXPECT_EQ(0, InjectRtcpPacket(bad_packet, sizeof(bad_packet))); 158 EXPECT_EQ(0, InjectRtcpPacket(bad_packet, sizeof(bad_packet)));
157 EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags); 159 EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags);
158 } 160 }
159 161
160 TEST_F(RtcpReceiverTest, InvalidFeedbackPacketIsIgnored) { 162 TEST_F(RtcpReceiverTest, InvalidFeedbackPacketIsIgnored) {
(...skipping 1128 matching lines...) Expand 10 before | Expand all | Expand 10 after
1289 1291
1290 // Transport feedback should be ignored, but next packet should work. 1292 // Transport feedback should be ignored, but next packet should work.
1291 EXPECT_EQ(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpTransportFeedback); 1293 EXPECT_EQ(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpTransportFeedback);
1292 EXPECT_NE(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpRemb); 1294 EXPECT_NE(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpRemb);
1293 EXPECT_EQ(kBitrateBps, rtcp_packet_info_.receiverEstimatedMaxBitrate); 1295 EXPECT_EQ(kBitrateBps, rtcp_packet_info_.receiverEstimatedMaxBitrate);
1294 } 1296 }
1295 1297
1296 } // Anonymous namespace 1298 } // Anonymous namespace
1297 1299
1298 } // namespace webrtc 1300 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_format_remb_unittest.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698