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

Side by Side Diff: webrtc/audio/audio_receive_stream_unittest.cc

Issue 2516983004: Move ownership of PacketRouter from CongestionController to Call. (Closed)
Patch Set: Add back packet_router method and 4-argument constructor. Created 4 years 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
« no previous file with comments | « webrtc/audio/audio_receive_stream.cc ('k') | webrtc/audio/audio_send_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 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 <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "webrtc/api/test/mock_audio_mixer.h" 14 #include "webrtc/api/test/mock_audio_mixer.h"
15 #include "webrtc/audio/audio_receive_stream.h" 15 #include "webrtc/audio/audio_receive_stream.h"
16 #include "webrtc/audio/conversion.h" 16 #include "webrtc/audio/conversion.h"
17 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" 17 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h"
18 #include "webrtc/modules/audio_coding/codecs/mock/mock_audio_decoder_factory.h" 18 #include "webrtc/modules/audio_coding/codecs/mock/mock_audio_decoder_factory.h"
19 #include "webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller .h" 19 #include "webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller .h"
20 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont roller.h"
21 #include "webrtc/modules/pacing/packet_router.h" 20 #include "webrtc/modules/pacing/packet_router.h"
22 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_estimator.h" 21 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_estimator.h"
23 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" 22 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
24 #include "webrtc/system_wrappers/include/clock.h"
25 #include "webrtc/test/gtest.h" 23 #include "webrtc/test/gtest.h"
26 #include "webrtc/test/mock_voe_channel_proxy.h" 24 #include "webrtc/test/mock_voe_channel_proxy.h"
27 #include "webrtc/test/mock_voice_engine.h" 25 #include "webrtc/test/mock_voice_engine.h"
28 26
29 namespace webrtc { 27 namespace webrtc {
30 namespace test { 28 namespace test {
31 namespace { 29 namespace {
32 30
33 using testing::_; 31 using testing::_;
34 using testing::FloatEq; 32 using testing::FloatEq;
(...skipping 25 matching lines...) Expand all
60 const CallStatistics kCallStats = { 58 const CallStatistics kCallStats = {
61 345, 678, 901, 234, -12, 3456, 7890, 567, 890, 123}; 59 345, 678, 901, 234, -12, 3456, 7890, 567, 890, 123};
62 const CodecInst kCodecInst = { 60 const CodecInst kCodecInst = {
63 123, "codec_name_recv", 96000, -187, 0, -103}; 61 123, "codec_name_recv", 96000, -187, 0, -103};
64 const NetworkStatistics kNetworkStats = { 62 const NetworkStatistics kNetworkStats = {
65 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; 63 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0};
66 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest(); 64 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest();
67 65
68 struct ConfigHelper { 66 struct ConfigHelper {
69 ConfigHelper() 67 ConfigHelper()
70 : simulated_clock_(123456), 68 : decoder_factory_(new rtc::RefCountedObject<MockAudioDecoderFactory>),
71 decoder_factory_(new rtc::RefCountedObject<MockAudioDecoderFactory>),
72 congestion_controller_(&simulated_clock_,
73 &bitrate_observer_,
74 &remote_bitrate_observer_,
75 &event_log_),
76 audio_mixer_(new rtc::RefCountedObject<MockAudioMixer>()) { 69 audio_mixer_(new rtc::RefCountedObject<MockAudioMixer>()) {
77 using testing::Invoke; 70 using testing::Invoke;
78 71
79 EXPECT_CALL(voice_engine_, 72 EXPECT_CALL(voice_engine_,
80 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); 73 RegisterVoiceEngineObserver(_)).WillOnce(Return(0));
81 EXPECT_CALL(voice_engine_, 74 EXPECT_CALL(voice_engine_,
82 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); 75 DeRegisterVoiceEngineObserver()).WillOnce(Return(0));
83 EXPECT_CALL(voice_engine_, audio_processing()); 76 EXPECT_CALL(voice_engine_, audio_processing());
84 EXPECT_CALL(voice_engine_, audio_device_module()); 77 EXPECT_CALL(voice_engine_, audio_device_module());
85 EXPECT_CALL(voice_engine_, audio_transport()); 78 EXPECT_CALL(voice_engine_, audio_transport());
(...skipping 11 matching lines...) Expand all
97 EXPECT_CALL(*channel_proxy_, SetNACKStatus(true, 15)).Times(1); 90 EXPECT_CALL(*channel_proxy_, SetNACKStatus(true, 15)).Times(1);
98 EXPECT_CALL(*channel_proxy_, 91 EXPECT_CALL(*channel_proxy_,
99 SetReceiveAudioLevelIndicationStatus(true, kAudioLevelId)) 92 SetReceiveAudioLevelIndicationStatus(true, kAudioLevelId))
100 .Times(1); 93 .Times(1);
101 EXPECT_CALL(*channel_proxy_, 94 EXPECT_CALL(*channel_proxy_,
102 EnableReceiveTransportSequenceNumber(kTransportSequenceNumberId)) 95 EnableReceiveTransportSequenceNumber(kTransportSequenceNumberId))
103 .Times(1); 96 .Times(1);
104 EXPECT_CALL(*channel_proxy_, 97 EXPECT_CALL(*channel_proxy_,
105 RegisterReceiverCongestionControlObjects(&packet_router_)) 98 RegisterReceiverCongestionControlObjects(&packet_router_))
106 .Times(1); 99 .Times(1);
107 EXPECT_CALL(congestion_controller_, packet_router())
108 .WillOnce(Return(&packet_router_));
109 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()) 100 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects())
110 .Times(1); 101 .Times(1);
111 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)) 102 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr))
112 .Times(1); 103 .Times(1);
113 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()) 104 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport())
114 .Times(1); 105 .Times(1);
115 EXPECT_CALL(*channel_proxy_, GetAudioDecoderFactory()) 106 EXPECT_CALL(*channel_proxy_, GetAudioDecoderFactory())
116 .WillOnce(ReturnRef(decoder_factory_)); 107 .WillOnce(ReturnRef(decoder_factory_));
117 testing::Expectation expect_set = 108 testing::Expectation expect_set =
118 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(&event_log_)) 109 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(&event_log_))
119 .Times(1); 110 .Times(1);
120 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull())) 111 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull()))
121 .Times(1) 112 .Times(1)
122 .After(expect_set); 113 .After(expect_set);
123 EXPECT_CALL(*channel_proxy_, DisassociateSendChannel()).Times(1); 114 EXPECT_CALL(*channel_proxy_, DisassociateSendChannel()).Times(1);
124 return channel_proxy_; 115 return channel_proxy_;
125 })); 116 }));
126 stream_config_.voe_channel_id = kChannelId; 117 stream_config_.voe_channel_id = kChannelId;
127 stream_config_.rtp.local_ssrc = kLocalSsrc; 118 stream_config_.rtp.local_ssrc = kLocalSsrc;
128 stream_config_.rtp.remote_ssrc = kRemoteSsrc; 119 stream_config_.rtp.remote_ssrc = kRemoteSsrc;
129 stream_config_.rtp.nack.rtp_history_ms = 300; 120 stream_config_.rtp.nack.rtp_history_ms = 300;
130 stream_config_.rtp.extensions.push_back( 121 stream_config_.rtp.extensions.push_back(
131 RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId)); 122 RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId));
132 stream_config_.rtp.extensions.push_back(RtpExtension( 123 stream_config_.rtp.extensions.push_back(RtpExtension(
133 RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId)); 124 RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId));
134 stream_config_.decoder_factory = decoder_factory_; 125 stream_config_.decoder_factory = decoder_factory_;
135 } 126 }
136 127
137 MockCongestionController* congestion_controller() { 128 PacketRouter* packet_router() { return &packet_router_; }
138 return &congestion_controller_;
139 }
140 MockRemoteBitrateEstimator* remote_bitrate_estimator() { 129 MockRemoteBitrateEstimator* remote_bitrate_estimator() {
141 return &remote_bitrate_estimator_; 130 return &remote_bitrate_estimator_;
142 } 131 }
143 MockRtcEventLog* event_log() { return &event_log_; } 132 MockRtcEventLog* event_log() { return &event_log_; }
144 AudioReceiveStream::Config& config() { return stream_config_; } 133 AudioReceiveStream::Config& config() { return stream_config_; }
145 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; } 134 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; }
146 rtc::scoped_refptr<MockAudioMixer> audio_mixer() { return audio_mixer_; } 135 rtc::scoped_refptr<MockAudioMixer> audio_mixer() { return audio_mixer_; }
147 MockVoiceEngine& voice_engine() { return voice_engine_; } 136 MockVoiceEngine& voice_engine() { return voice_engine_; }
148 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; } 137 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; }
149 138
150 void SetupMockForBweFeedback(bool send_side_bwe) { 139 void SetupMockForBweFeedback(bool send_side_bwe) {
151 EXPECT_CALL(congestion_controller_,
152 GetRemoteBitrateEstimator(send_side_bwe))
153 .WillOnce(Return(&remote_bitrate_estimator_));
154 EXPECT_CALL(remote_bitrate_estimator_, 140 EXPECT_CALL(remote_bitrate_estimator_,
155 RemoveStream(stream_config_.rtp.remote_ssrc)); 141 RemoveStream(stream_config_.rtp.remote_ssrc));
156 } 142 }
157 143
158 void SetupMockForGetStats() { 144 void SetupMockForGetStats() {
159 using testing::DoAll; 145 using testing::DoAll;
160 using testing::SetArgReferee; 146 using testing::SetArgReferee;
161 147
162 ASSERT_TRUE(channel_proxy_); 148 ASSERT_TRUE(channel_proxy_);
163 EXPECT_CALL(*channel_proxy_, GetRTCPStatistics()) 149 EXPECT_CALL(*channel_proxy_, GetRTCPStatistics())
164 .WillOnce(Return(kCallStats)); 150 .WillOnce(Return(kCallStats));
165 EXPECT_CALL(*channel_proxy_, GetDelayEstimate()) 151 EXPECT_CALL(*channel_proxy_, GetDelayEstimate())
166 .WillOnce(Return(kJitterBufferDelay + kPlayoutBufferDelay)); 152 .WillOnce(Return(kJitterBufferDelay + kPlayoutBufferDelay));
167 EXPECT_CALL(*channel_proxy_, GetSpeechOutputLevelFullRange()) 153 EXPECT_CALL(*channel_proxy_, GetSpeechOutputLevelFullRange())
168 .WillOnce(Return(kSpeechOutputLevel)); 154 .WillOnce(Return(kSpeechOutputLevel));
169 EXPECT_CALL(*channel_proxy_, GetNetworkStatistics()) 155 EXPECT_CALL(*channel_proxy_, GetNetworkStatistics())
170 .WillOnce(Return(kNetworkStats)); 156 .WillOnce(Return(kNetworkStats));
171 EXPECT_CALL(*channel_proxy_, GetDecodingCallStatistics()) 157 EXPECT_CALL(*channel_proxy_, GetDecodingCallStatistics())
172 .WillOnce(Return(kAudioDecodeStats)); 158 .WillOnce(Return(kAudioDecodeStats));
173 159
174 EXPECT_CALL(voice_engine_, GetRecCodec(kChannelId, _)) 160 EXPECT_CALL(voice_engine_, GetRecCodec(kChannelId, _))
175 .WillOnce(DoAll(SetArgReferee<1>(kCodecInst), Return(0))); 161 .WillOnce(DoAll(SetArgReferee<1>(kCodecInst), Return(0)));
176 } 162 }
177 163
178 private: 164 private:
179 SimulatedClock simulated_clock_;
180 PacketRouter packet_router_; 165 PacketRouter packet_router_;
181 testing::NiceMock<MockCongestionObserver> bitrate_observer_;
182 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
183 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_; 166 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
184 MockCongestionController congestion_controller_;
185 MockRemoteBitrateEstimator remote_bitrate_estimator_; 167 MockRemoteBitrateEstimator remote_bitrate_estimator_;
186 MockRtcEventLog event_log_; 168 MockRtcEventLog event_log_;
187 testing::StrictMock<MockVoiceEngine> voice_engine_; 169 testing::StrictMock<MockVoiceEngine> voice_engine_;
188 rtc::scoped_refptr<AudioState> audio_state_; 170 rtc::scoped_refptr<AudioState> audio_state_;
189 rtc::scoped_refptr<MockAudioMixer> audio_mixer_; 171 rtc::scoped_refptr<MockAudioMixer> audio_mixer_;
190 AudioReceiveStream::Config stream_config_; 172 AudioReceiveStream::Config stream_config_;
191 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; 173 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr;
192 }; 174 };
193 175
194 void BuildOneByteExtension(std::vector<uint8_t>::iterator it, 176 void BuildOneByteExtension(std::vector<uint8_t>::iterator it,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, transport_cc: off, nack: " 236 "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, transport_cc: off, nack: "
255 "{rtp_history_ms: 0}, extensions: [{uri: " 237 "{rtp_history_ms: 0}, extensions: [{uri: "
256 "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 3}]}, " 238 "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 3}]}, "
257 "rtcp_send_transport: nullptr, voe_channel_id: 2}", 239 "rtcp_send_transport: nullptr, voe_channel_id: 2}",
258 config.ToString()); 240 config.ToString());
259 } 241 }
260 242
261 TEST(AudioReceiveStreamTest, ConstructDestruct) { 243 TEST(AudioReceiveStreamTest, ConstructDestruct) {
262 ConfigHelper helper; 244 ConfigHelper helper;
263 internal::AudioReceiveStream recv_stream( 245 internal::AudioReceiveStream recv_stream(
264 helper.congestion_controller(), helper.config(), helper.audio_state(), 246 helper.packet_router(),
265 helper.event_log()); 247 helper.remote_bitrate_estimator(),
248 helper.config(), helper.audio_state(), helper.event_log());
266 } 249 }
267 250
268 MATCHER_P(VerifyHeaderExtension, expected_extension, "") { 251 MATCHER_P(VerifyHeaderExtension, expected_extension, "") {
269 return arg.extension.hasTransportSequenceNumber == 252 return arg.extension.hasTransportSequenceNumber ==
270 expected_extension.hasTransportSequenceNumber && 253 expected_extension.hasTransportSequenceNumber &&
271 arg.extension.transportSequenceNumber == 254 arg.extension.transportSequenceNumber ==
272 expected_extension.transportSequenceNumber; 255 expected_extension.transportSequenceNumber;
273 } 256 }
274 257
275 TEST(AudioReceiveStreamTest, ReceiveRtpPacket) { 258 TEST(AudioReceiveStreamTest, ReceiveRtpPacket) {
276 ConfigHelper helper; 259 ConfigHelper helper;
277 helper.config().rtp.transport_cc = true; 260 helper.config().rtp.transport_cc = true;
278 helper.SetupMockForBweFeedback(true); 261 helper.SetupMockForBweFeedback(true);
279 internal::AudioReceiveStream recv_stream( 262 internal::AudioReceiveStream recv_stream(
280 helper.congestion_controller(), helper.config(), helper.audio_state(), 263 helper.packet_router(),
281 helper.event_log()); 264 helper.remote_bitrate_estimator(),
265 helper.config(), helper.audio_state(), helper.event_log());
282 const int kTransportSequenceNumberValue = 1234; 266 const int kTransportSequenceNumberValue = 1234;
283 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension( 267 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension(
284 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2); 268 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2);
285 PacketTime packet_time(5678000, 0); 269 PacketTime packet_time(5678000, 0);
286 const size_t kExpectedHeaderLength = 20; 270 const size_t kExpectedHeaderLength = 20;
287 RTPHeaderExtension expected_extension; 271 RTPHeaderExtension expected_extension;
288 expected_extension.hasTransportSequenceNumber = true; 272 expected_extension.hasTransportSequenceNumber = true;
289 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue; 273 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue;
290 EXPECT_CALL(*helper.remote_bitrate_estimator(), 274 EXPECT_CALL(*helper.remote_bitrate_estimator(),
291 IncomingPacket(packet_time.timestamp / 1000, 275 IncomingPacket(packet_time.timestamp / 1000,
292 rtp_packet.size() - kExpectedHeaderLength, 276 rtp_packet.size() - kExpectedHeaderLength,
293 VerifyHeaderExtension(expected_extension))) 277 VerifyHeaderExtension(expected_extension)))
294 .Times(1); 278 .Times(1);
295 EXPECT_CALL(*helper.channel_proxy(), 279 EXPECT_CALL(*helper.channel_proxy(),
296 ReceivedRTPPacket(&rtp_packet[0], 280 ReceivedRTPPacket(&rtp_packet[0],
297 rtp_packet.size(), 281 rtp_packet.size(),
298 _)) 282 _))
299 .WillOnce(Return(true)); 283 .WillOnce(Return(true));
300 EXPECT_TRUE( 284 EXPECT_TRUE(
301 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time)); 285 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time));
302 } 286 }
303 287
304 TEST(AudioReceiveStreamTest, ReceiveRtcpPacket) { 288 TEST(AudioReceiveStreamTest, ReceiveRtcpPacket) {
305 ConfigHelper helper; 289 ConfigHelper helper;
306 helper.config().rtp.transport_cc = true; 290 helper.config().rtp.transport_cc = true;
307 helper.SetupMockForBweFeedback(true); 291 helper.SetupMockForBweFeedback(true);
308 internal::AudioReceiveStream recv_stream( 292 internal::AudioReceiveStream recv_stream(
309 helper.congestion_controller(), helper.config(), helper.audio_state(), 293 helper.packet_router(),
310 helper.event_log()); 294 helper.remote_bitrate_estimator(),
295 helper.config(), helper.audio_state(), helper.event_log());
311 296
312 std::vector<uint8_t> rtcp_packet = CreateRtcpSenderReport(); 297 std::vector<uint8_t> rtcp_packet = CreateRtcpSenderReport();
313 EXPECT_CALL(*helper.channel_proxy(), 298 EXPECT_CALL(*helper.channel_proxy(),
314 ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size())) 299 ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size()))
315 .WillOnce(Return(true)); 300 .WillOnce(Return(true));
316 EXPECT_TRUE(recv_stream.DeliverRtcp(&rtcp_packet[0], rtcp_packet.size())); 301 EXPECT_TRUE(recv_stream.DeliverRtcp(&rtcp_packet[0], rtcp_packet.size()));
317 } 302 }
318 303
319 TEST(AudioReceiveStreamTest, GetStats) { 304 TEST(AudioReceiveStreamTest, GetStats) {
320 ConfigHelper helper; 305 ConfigHelper helper;
321 internal::AudioReceiveStream recv_stream( 306 internal::AudioReceiveStream recv_stream(
322 helper.congestion_controller(), helper.config(), helper.audio_state(), 307 helper.packet_router(),
323 helper.event_log()); 308 helper.remote_bitrate_estimator(),
309 helper.config(), helper.audio_state(), helper.event_log());
324 helper.SetupMockForGetStats(); 310 helper.SetupMockForGetStats();
325 AudioReceiveStream::Stats stats = recv_stream.GetStats(); 311 AudioReceiveStream::Stats stats = recv_stream.GetStats();
326 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); 312 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc);
327 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); 313 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd);
328 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), 314 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived),
329 stats.packets_rcvd); 315 stats.packets_rcvd);
330 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); 316 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost);
331 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); 317 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost);
332 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); 318 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name);
333 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); 319 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum);
(...skipping 23 matching lines...) Expand all
357 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng); 343 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng);
358 EXPECT_EQ(kAudioDecodeStats.decoded_muted_output, 344 EXPECT_EQ(kAudioDecodeStats.decoded_muted_output,
359 stats.decoding_muted_output); 345 stats.decoding_muted_output);
360 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, 346 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_,
361 stats.capture_start_ntp_time_ms); 347 stats.capture_start_ntp_time_ms);
362 } 348 }
363 349
364 TEST(AudioReceiveStreamTest, SetGain) { 350 TEST(AudioReceiveStreamTest, SetGain) {
365 ConfigHelper helper; 351 ConfigHelper helper;
366 internal::AudioReceiveStream recv_stream( 352 internal::AudioReceiveStream recv_stream(
367 helper.congestion_controller(), helper.config(), helper.audio_state(), 353 helper.packet_router(),
368 helper.event_log()); 354 helper.remote_bitrate_estimator(),
355 helper.config(), helper.audio_state(), helper.event_log());
369 EXPECT_CALL(*helper.channel_proxy(), 356 EXPECT_CALL(*helper.channel_proxy(),
370 SetChannelOutputVolumeScaling(FloatEq(0.765f))); 357 SetChannelOutputVolumeScaling(FloatEq(0.765f)));
371 recv_stream.SetGain(0.765f); 358 recv_stream.SetGain(0.765f);
372 } 359 }
373 360
374 TEST(AudioReceiveStreamTest, StreamShouldNotBeAddedToMixerWhenVoEReturnsError) { 361 TEST(AudioReceiveStreamTest, StreamShouldNotBeAddedToMixerWhenVoEReturnsError) {
375 ConfigHelper helper; 362 ConfigHelper helper;
376 internal::AudioReceiveStream recv_stream( 363 internal::AudioReceiveStream recv_stream(
377 helper.congestion_controller(), helper.config(), helper.audio_state(), 364 helper.packet_router(),
378 helper.event_log()); 365 helper.remote_bitrate_estimator(),
366 helper.config(), helper.audio_state(), helper.event_log());
379 367
380 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(-1)); 368 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(-1));
381 EXPECT_CALL(*helper.audio_mixer(), AddSource(_)).Times(0); 369 EXPECT_CALL(*helper.audio_mixer(), AddSource(_)).Times(0);
382 370
383 recv_stream.Start(); 371 recv_stream.Start();
384 } 372 }
385 373
386 TEST(AudioReceiveStreamTest, StreamShouldBeAddedToMixerOnStart) { 374 TEST(AudioReceiveStreamTest, StreamShouldBeAddedToMixerOnStart) {
387 ConfigHelper helper; 375 ConfigHelper helper;
388 internal::AudioReceiveStream recv_stream( 376 internal::AudioReceiveStream recv_stream(
389 helper.congestion_controller(), helper.config(), helper.audio_state(), 377 helper.packet_router(),
390 helper.event_log()); 378 helper.remote_bitrate_estimator(),
379 helper.config(), helper.audio_state(), helper.event_log());
391 380
392 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(0)); 381 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(0));
393 EXPECT_CALL(helper.voice_engine(), StopPlayout(_)); 382 EXPECT_CALL(helper.voice_engine(), StopPlayout(_));
394 EXPECT_CALL(*helper.audio_mixer(), AddSource(&recv_stream)) 383 EXPECT_CALL(*helper.audio_mixer(), AddSource(&recv_stream))
395 .WillOnce(Return(true)); 384 .WillOnce(Return(true));
396 385
397 recv_stream.Start(); 386 recv_stream.Start();
398 } 387 }
399 } // namespace test 388 } // namespace test
400 } // namespace webrtc 389 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/audio/audio_receive_stream.cc ('k') | webrtc/audio/audio_send_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698