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

Side by Side Diff: webrtc/modules/rtp_rtcp/test/testAPI/test_api_audio.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 <algorithm> 11 #include <algorithm>
12 #include <memory> 12 #include <memory>
13 #include <vector> 13 #include <vector>
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 #include "webrtc/modules/rtp_rtcp/test/testAPI/test_api.h" 16 #include "webrtc/modules/rtp_rtcp/test/testAPI/test_api.h"
17 17
18 #include "webrtc/base/rate_limiter.h"
18 #include "webrtc/common_types.h" 19 #include "webrtc/common_types.h"
19 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" 20 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
20 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" 21 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
21 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h" 22 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h"
22 23
23 namespace webrtc { 24 namespace webrtc {
24 namespace { 25 namespace {
25 #define test_rate 64000u 26 #define test_rate 64000u
26 27
27 class VerifyingAudioReceiver : public NullRtpData { 28 class VerifyingAudioReceiver : public NullRtpData {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 if (payloadType == 96) { 71 if (payloadType == 96) {
71 EXPECT_EQ(test_rate, rate) << 72 EXPECT_EQ(test_rate, rate) <<
72 "The rate should be 64K for this payloadType"; 73 "The rate should be 64K for this payloadType";
73 } 74 }
74 return 0; 75 return 0;
75 } 76 }
76 }; 77 };
77 78
78 class RtpRtcpAudioTest : public ::testing::Test { 79 class RtpRtcpAudioTest : public ::testing::Test {
79 protected: 80 protected:
80 RtpRtcpAudioTest() : fake_clock(123456) { 81 RtpRtcpAudioTest()
82 : fake_clock(123456), retransmission_rate_limiter_(&fake_clock, 1000) {
81 test_CSRC[0] = 1234; 83 test_CSRC[0] = 1234;
82 test_CSRC[2] = 2345; 84 test_CSRC[2] = 2345;
83 test_ssrc = 3456; 85 test_ssrc = 3456;
84 test_timestamp = 4567; 86 test_timestamp = 4567;
85 test_sequence_number = 2345; 87 test_sequence_number = 2345;
86 } 88 }
87 ~RtpRtcpAudioTest() {} 89 ~RtpRtcpAudioTest() {}
88 90
89 void SetUp() override { 91 void SetUp() override {
90 data_receiver1 = new VerifyingAudioReceiver(); 92 data_receiver1 = new VerifyingAudioReceiver();
91 data_receiver2 = new VerifyingAudioReceiver(); 93 data_receiver2 = new VerifyingAudioReceiver();
92 rtp_callback = new RTPCallback(); 94 rtp_callback = new RTPCallback();
93 transport1 = new LoopBackTransport(); 95 transport1 = new LoopBackTransport();
94 transport2 = new LoopBackTransport(); 96 transport2 = new LoopBackTransport();
95 97
96 receive_statistics1_.reset(ReceiveStatistics::Create(&fake_clock)); 98 receive_statistics1_.reset(ReceiveStatistics::Create(&fake_clock));
97 receive_statistics2_.reset(ReceiveStatistics::Create(&fake_clock)); 99 receive_statistics2_.reset(ReceiveStatistics::Create(&fake_clock));
98 100
99 rtp_payload_registry1_.reset(new RTPPayloadRegistry( 101 rtp_payload_registry1_.reset(new RTPPayloadRegistry(
100 RTPPayloadStrategy::CreateStrategy(true))); 102 RTPPayloadStrategy::CreateStrategy(true)));
101 rtp_payload_registry2_.reset(new RTPPayloadRegistry( 103 rtp_payload_registry2_.reset(new RTPPayloadRegistry(
102 RTPPayloadStrategy::CreateStrategy(true))); 104 RTPPayloadStrategy::CreateStrategy(true)));
103 105
104 RtpRtcp::Configuration configuration; 106 RtpRtcp::Configuration configuration;
105 configuration.audio = true; 107 configuration.audio = true;
106 configuration.clock = &fake_clock; 108 configuration.clock = &fake_clock;
107 configuration.receive_statistics = receive_statistics1_.get(); 109 configuration.receive_statistics = receive_statistics1_.get();
108 configuration.outgoing_transport = transport1; 110 configuration.outgoing_transport = transport1;
111 configuration.retransmission_rate_limiter = &retransmission_rate_limiter_;
109 112
110 module1 = RtpRtcp::CreateRtpRtcp(configuration); 113 module1 = RtpRtcp::CreateRtpRtcp(configuration);
111 rtp_receiver1_.reset(RtpReceiver::CreateAudioReceiver( 114 rtp_receiver1_.reset(RtpReceiver::CreateAudioReceiver(
112 &fake_clock, data_receiver1, NULL, rtp_payload_registry1_.get())); 115 &fake_clock, data_receiver1, NULL, rtp_payload_registry1_.get()));
113 116
114 configuration.receive_statistics = receive_statistics2_.get(); 117 configuration.receive_statistics = receive_statistics2_.get();
115 configuration.outgoing_transport = transport2; 118 configuration.outgoing_transport = transport2;
116 119
117 module2 = RtpRtcp::CreateRtpRtcp(configuration); 120 module2 = RtpRtcp::CreateRtpRtcp(configuration);
118 rtp_receiver2_.reset(RtpReceiver::CreateAudioReceiver( 121 rtp_receiver2_.reset(RtpReceiver::CreateAudioReceiver(
(...skipping 26 matching lines...) Expand all
145 VerifyingAudioReceiver* data_receiver1; 148 VerifyingAudioReceiver* data_receiver1;
146 VerifyingAudioReceiver* data_receiver2; 149 VerifyingAudioReceiver* data_receiver2;
147 LoopBackTransport* transport1; 150 LoopBackTransport* transport1;
148 LoopBackTransport* transport2; 151 LoopBackTransport* transport2;
149 RTPCallback* rtp_callback; 152 RTPCallback* rtp_callback;
150 uint32_t test_ssrc; 153 uint32_t test_ssrc;
151 uint32_t test_timestamp; 154 uint32_t test_timestamp;
152 uint16_t test_sequence_number; 155 uint16_t test_sequence_number;
153 uint32_t test_CSRC[webrtc::kRtpCsrcSize]; 156 uint32_t test_CSRC[webrtc::kRtpCsrcSize];
154 SimulatedClock fake_clock; 157 SimulatedClock fake_clock;
158 RateLimiter retransmission_rate_limiter_;
155 }; 159 };
156 160
157 TEST_F(RtpRtcpAudioTest, Basic) { 161 TEST_F(RtpRtcpAudioTest, Basic) {
158 module1->SetSSRC(test_ssrc); 162 module1->SetSSRC(test_ssrc);
159 module1->SetStartTimestamp(test_timestamp); 163 module1->SetStartTimestamp(test_timestamp);
160 164
161 // Test detection at the end of a DTMF tone. 165 // Test detection at the end of a DTMF tone.
162 // EXPECT_EQ(0, module2->SetTelephoneEventForwardToDecoder(true)); 166 // EXPECT_EQ(0, module2->SetTelephoneEventForwardToDecoder(true));
163 167
164 EXPECT_EQ(0, module1->SetSendingStatus(true)); 168 EXPECT_EQ(0, module1->SetSendingStatus(true));
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 for (; timeStamp <= 740 * 160; timeStamp += 160) { 343 for (; timeStamp <= 740 * 160; timeStamp += 160) {
340 EXPECT_EQ(0, module1->SendOutgoingData(webrtc::kAudioFrameSpeech, 96, 344 EXPECT_EQ(0, module1->SendOutgoingData(webrtc::kAudioFrameSpeech, 96,
341 timeStamp, -1, test, 4)); 345 timeStamp, -1, test, 4));
342 fake_clock.AdvanceTimeMilliseconds(20); 346 fake_clock.AdvanceTimeMilliseconds(20);
343 module1->Process(); 347 module1->Process();
344 } 348 }
345 } 349 }
346 350
347 } // namespace 351 } // namespace
348 } // namespace webrtc 352 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/test/testAPI/test_api.cc ('k') | webrtc/modules/rtp_rtcp/test/testAPI/test_api_rtcp.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698