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/audio/audio_receive_stream_unittest.cc

Issue 2111813002: Revert of Move RtcEventLog object from inside VoiceEngine to Call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « webrtc/audio/audio_receive_stream.cc ('k') | webrtc/audio/audio_send_stream_unittest.cc » ('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 "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 #include "webrtc/audio/audio_receive_stream.h" 16 #include "webrtc/audio/audio_receive_stream.h"
17 #include "webrtc/audio/conversion.h" 17 #include "webrtc/audio/conversion.h"
18 #include "webrtc/call/mock/mock_rtc_event_log.h"
19 #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"
20 #include "webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller .h" 19 #include "webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller .h"
21 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont roller.h" 20 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont roller.h"
22 #include "webrtc/modules/pacing/packet_router.h" 21 #include "webrtc/modules/pacing/packet_router.h"
23 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_estimator.h" 22 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_estimator.h"
24 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" 23 #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
25 #include "webrtc/system_wrappers/include/clock.h" 24 #include "webrtc/system_wrappers/include/clock.h"
26 #include "webrtc/test/mock_voe_channel_proxy.h" 25 #include "webrtc/test/mock_voe_channel_proxy.h"
27 #include "webrtc/test/mock_voice_engine.h" 26 #include "webrtc/test/mock_voice_engine.h"
28 27
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 const NetworkStatistics kNetworkStats = { 63 const NetworkStatistics kNetworkStats = {
65 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; 64 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0};
66 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest(); 65 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest();
67 66
68 struct ConfigHelper { 67 struct ConfigHelper {
69 ConfigHelper() 68 ConfigHelper()
70 : simulated_clock_(123456), 69 : simulated_clock_(123456),
71 decoder_factory_(new rtc::RefCountedObject<MockAudioDecoderFactory>), 70 decoder_factory_(new rtc::RefCountedObject<MockAudioDecoderFactory>),
72 congestion_controller_(&simulated_clock_, 71 congestion_controller_(&simulated_clock_,
73 &bitrate_observer_, 72 &bitrate_observer_,
74 &remote_bitrate_observer_, 73 &remote_bitrate_observer_) {
75 &event_log_) {
76 using testing::Invoke; 74 using testing::Invoke;
77 75
78 EXPECT_CALL(voice_engine_, 76 EXPECT_CALL(voice_engine_,
79 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); 77 RegisterVoiceEngineObserver(_)).WillOnce(Return(0));
80 EXPECT_CALL(voice_engine_, 78 EXPECT_CALL(voice_engine_,
81 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); 79 DeRegisterVoiceEngineObserver()).WillOnce(Return(0));
82 AudioState::Config config; 80 AudioState::Config config;
83 config.voice_engine = &voice_engine_; 81 config.voice_engine = &voice_engine_;
84 audio_state_ = AudioState::Create(config); 82 audio_state_ = AudioState::Create(config);
85 83
(...skipping 18 matching lines...) Expand all
104 EXPECT_CALL(congestion_controller_, packet_router()) 102 EXPECT_CALL(congestion_controller_, packet_router())
105 .WillOnce(Return(&packet_router_)); 103 .WillOnce(Return(&packet_router_));
106 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()) 104 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects())
107 .Times(1); 105 .Times(1);
108 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)) 106 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr))
109 .Times(1); 107 .Times(1);
110 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()) 108 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport())
111 .Times(1); 109 .Times(1);
112 EXPECT_CALL(*channel_proxy_, GetAudioDecoderFactory()) 110 EXPECT_CALL(*channel_proxy_, GetAudioDecoderFactory())
113 .WillOnce(ReturnRef(decoder_factory_)); 111 .WillOnce(ReturnRef(decoder_factory_));
114 testing::Expectation expect_set =
115 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(&event_log_))
116 .Times(1);
117 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull()))
118 .Times(1)
119 .After(expect_set);
120 return channel_proxy_; 112 return channel_proxy_;
121 })); 113 }));
122 stream_config_.voe_channel_id = kChannelId; 114 stream_config_.voe_channel_id = kChannelId;
123 stream_config_.rtp.local_ssrc = kLocalSsrc; 115 stream_config_.rtp.local_ssrc = kLocalSsrc;
124 stream_config_.rtp.remote_ssrc = kRemoteSsrc; 116 stream_config_.rtp.remote_ssrc = kRemoteSsrc;
125 stream_config_.rtp.nack.rtp_history_ms = 300; 117 stream_config_.rtp.nack.rtp_history_ms = 300;
126 stream_config_.rtp.extensions.push_back( 118 stream_config_.rtp.extensions.push_back(
127 RtpExtension(RtpExtension::kAbsSendTimeUri, kAbsSendTimeId)); 119 RtpExtension(RtpExtension::kAbsSendTimeUri, kAbsSendTimeId));
128 stream_config_.rtp.extensions.push_back( 120 stream_config_.rtp.extensions.push_back(
129 RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId)); 121 RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId));
130 stream_config_.rtp.extensions.push_back(RtpExtension( 122 stream_config_.rtp.extensions.push_back(RtpExtension(
131 RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId)); 123 RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId));
132 stream_config_.decoder_factory = decoder_factory_; 124 stream_config_.decoder_factory = decoder_factory_;
133 } 125 }
134 126
135 MockCongestionController* congestion_controller() { 127 MockCongestionController* congestion_controller() {
136 return &congestion_controller_; 128 return &congestion_controller_;
137 } 129 }
138 MockRemoteBitrateEstimator* remote_bitrate_estimator() { 130 MockRemoteBitrateEstimator* remote_bitrate_estimator() {
139 return &remote_bitrate_estimator_; 131 return &remote_bitrate_estimator_;
140 } 132 }
141 MockRtcEventLog* event_log() { return &event_log_; }
142 AudioReceiveStream::Config& config() { return stream_config_; } 133 AudioReceiveStream::Config& config() { return stream_config_; }
143 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; } 134 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; }
144 MockVoiceEngine& voice_engine() { return voice_engine_; } 135 MockVoiceEngine& voice_engine() { return voice_engine_; }
145 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; } 136 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; }
146 137
147 void SetupMockForBweFeedback(bool send_side_bwe) { 138 void SetupMockForBweFeedback(bool send_side_bwe) {
148 EXPECT_CALL(congestion_controller_, 139 EXPECT_CALL(congestion_controller_,
149 GetRemoteBitrateEstimator(send_side_bwe)) 140 GetRemoteBitrateEstimator(send_side_bwe))
150 .WillOnce(Return(&remote_bitrate_estimator_)); 141 .WillOnce(Return(&remote_bitrate_estimator_));
151 EXPECT_CALL(remote_bitrate_estimator_, 142 EXPECT_CALL(remote_bitrate_estimator_,
(...skipping 21 matching lines...) Expand all
173 } 164 }
174 165
175 private: 166 private:
176 SimulatedClock simulated_clock_; 167 SimulatedClock simulated_clock_;
177 PacketRouter packet_router_; 168 PacketRouter packet_router_;
178 testing::NiceMock<MockCongestionObserver> bitrate_observer_; 169 testing::NiceMock<MockCongestionObserver> bitrate_observer_;
179 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_; 170 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
180 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_; 171 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
181 MockCongestionController congestion_controller_; 172 MockCongestionController congestion_controller_;
182 MockRemoteBitrateEstimator remote_bitrate_estimator_; 173 MockRemoteBitrateEstimator remote_bitrate_estimator_;
183 MockRtcEventLog event_log_;
184 testing::StrictMock<MockVoiceEngine> voice_engine_; 174 testing::StrictMock<MockVoiceEngine> voice_engine_;
185 rtc::scoped_refptr<AudioState> audio_state_; 175 rtc::scoped_refptr<AudioState> audio_state_;
186 AudioReceiveStream::Config stream_config_; 176 AudioReceiveStream::Config stream_config_;
187 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; 177 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr;
188 }; 178 };
189 179
190 void BuildOneByteExtension(std::vector<uint8_t>::iterator it, 180 void BuildOneByteExtension(std::vector<uint8_t>::iterator it,
191 int id, 181 int id,
192 uint32_t extension_value, 182 uint32_t extension_value,
193 size_t value_length) { 183 size_t value_length) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 "nack: {rtp_history_ms: 0}, extensions: [{uri: " 241 "nack: {rtp_history_ms: 0}, extensions: [{uri: "
252 "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 2}]}, " 242 "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 2}]}, "
253 "rtcp_send_transport: nullptr, " 243 "rtcp_send_transport: nullptr, "
254 "voe_channel_id: 2}", 244 "voe_channel_id: 2}",
255 config.ToString()); 245 config.ToString());
256 } 246 }
257 247
258 TEST(AudioReceiveStreamTest, ConstructDestruct) { 248 TEST(AudioReceiveStreamTest, ConstructDestruct) {
259 ConfigHelper helper; 249 ConfigHelper helper;
260 internal::AudioReceiveStream recv_stream( 250 internal::AudioReceiveStream recv_stream(
261 helper.congestion_controller(), helper.config(), helper.audio_state(), 251 helper.congestion_controller(), helper.config(), helper.audio_state());
262 helper.event_log());
263 } 252 }
264 253
265 MATCHER_P(VerifyHeaderExtension, expected_extension, "") { 254 MATCHER_P(VerifyHeaderExtension, expected_extension, "") {
266 return arg.extension.hasAbsoluteSendTime == 255 return arg.extension.hasAbsoluteSendTime ==
267 expected_extension.hasAbsoluteSendTime && 256 expected_extension.hasAbsoluteSendTime &&
268 arg.extension.absoluteSendTime == 257 arg.extension.absoluteSendTime ==
269 expected_extension.absoluteSendTime && 258 expected_extension.absoluteSendTime &&
270 arg.extension.hasTransportSequenceNumber == 259 arg.extension.hasTransportSequenceNumber ==
271 expected_extension.hasTransportSequenceNumber && 260 expected_extension.hasTransportSequenceNumber &&
272 arg.extension.transportSequenceNumber == 261 arg.extension.transportSequenceNumber ==
273 expected_extension.transportSequenceNumber; 262 expected_extension.transportSequenceNumber;
274 } 263 }
275 264
276 TEST(AudioReceiveStreamTest, ReceiveRtpPacket) { 265 TEST(AudioReceiveStreamTest, ReceiveRtpPacket) {
277 ConfigHelper helper; 266 ConfigHelper helper;
278 helper.config().rtp.transport_cc = true; 267 helper.config().rtp.transport_cc = true;
279 helper.SetupMockForBweFeedback(true); 268 helper.SetupMockForBweFeedback(true);
280 internal::AudioReceiveStream recv_stream( 269 internal::AudioReceiveStream recv_stream(
281 helper.congestion_controller(), helper.config(), helper.audio_state(), 270 helper.congestion_controller(), helper.config(), helper.audio_state());
282 helper.event_log());
283 const int kTransportSequenceNumberValue = 1234; 271 const int kTransportSequenceNumberValue = 1234;
284 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension( 272 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension(
285 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2); 273 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2);
286 PacketTime packet_time(5678000, 0); 274 PacketTime packet_time(5678000, 0);
287 const size_t kExpectedHeaderLength = 20; 275 const size_t kExpectedHeaderLength = 20;
288 RTPHeaderExtension expected_extension; 276 RTPHeaderExtension expected_extension;
289 expected_extension.hasTransportSequenceNumber = true; 277 expected_extension.hasTransportSequenceNumber = true;
290 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue; 278 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue;
291 EXPECT_CALL(*helper.remote_bitrate_estimator(), 279 EXPECT_CALL(*helper.remote_bitrate_estimator(),
292 IncomingPacket(packet_time.timestamp / 1000, 280 IncomingPacket(packet_time.timestamp / 1000,
293 rtp_packet.size() - kExpectedHeaderLength, 281 rtp_packet.size() - kExpectedHeaderLength,
294 VerifyHeaderExtension(expected_extension))) 282 VerifyHeaderExtension(expected_extension)))
295 .Times(1); 283 .Times(1);
296 EXPECT_CALL(*helper.channel_proxy(), 284 EXPECT_CALL(*helper.channel_proxy(),
297 ReceivedRTPPacket(&rtp_packet[0], 285 ReceivedRTPPacket(&rtp_packet[0],
298 rtp_packet.size(), 286 rtp_packet.size(),
299 _)) 287 _))
300 .WillOnce(Return(true)); 288 .WillOnce(Return(true));
301 EXPECT_TRUE( 289 EXPECT_TRUE(
302 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time)); 290 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time));
303 } 291 }
304 292
305 TEST(AudioReceiveStreamTest, ReceiveRtcpPacket) { 293 TEST(AudioReceiveStreamTest, ReceiveRtcpPacket) {
306 ConfigHelper helper; 294 ConfigHelper helper;
307 helper.config().rtp.transport_cc = true; 295 helper.config().rtp.transport_cc = true;
308 helper.SetupMockForBweFeedback(true); 296 helper.SetupMockForBweFeedback(true);
309 internal::AudioReceiveStream recv_stream( 297 internal::AudioReceiveStream recv_stream(
310 helper.congestion_controller(), helper.config(), helper.audio_state(), 298 helper.congestion_controller(), helper.config(), helper.audio_state());
311 helper.event_log());
312 299
313 std::vector<uint8_t> rtcp_packet = CreateRtcpSenderReport(); 300 std::vector<uint8_t> rtcp_packet = CreateRtcpSenderReport();
314 EXPECT_CALL(*helper.channel_proxy(), 301 EXPECT_CALL(*helper.channel_proxy(),
315 ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size())) 302 ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size()))
316 .WillOnce(Return(true)); 303 .WillOnce(Return(true));
317 EXPECT_TRUE(recv_stream.DeliverRtcp(&rtcp_packet[0], rtcp_packet.size())); 304 EXPECT_TRUE(recv_stream.DeliverRtcp(&rtcp_packet[0], rtcp_packet.size()));
318 } 305 }
319 306
320 TEST(AudioReceiveStreamTest, GetStats) { 307 TEST(AudioReceiveStreamTest, GetStats) {
321 ConfigHelper helper; 308 ConfigHelper helper;
322 internal::AudioReceiveStream recv_stream( 309 internal::AudioReceiveStream recv_stream(
323 helper.congestion_controller(), helper.config(), helper.audio_state(), 310 helper.congestion_controller(), helper.config(), helper.audio_state());
324 helper.event_log());
325 helper.SetupMockForGetStats(); 311 helper.SetupMockForGetStats();
326 AudioReceiveStream::Stats stats = recv_stream.GetStats(); 312 AudioReceiveStream::Stats stats = recv_stream.GetStats();
327 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); 313 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc);
328 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); 314 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd);
329 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), 315 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived),
330 stats.packets_rcvd); 316 stats.packets_rcvd);
331 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); 317 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost);
332 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); 318 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost);
333 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); 319 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name);
334 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); 320 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum);
(...skipping 21 matching lines...) Expand all
356 EXPECT_EQ(kAudioDecodeStats.decoded_plc, stats.decoding_plc); 342 EXPECT_EQ(kAudioDecodeStats.decoded_plc, stats.decoding_plc);
357 EXPECT_EQ(kAudioDecodeStats.decoded_cng, stats.decoding_cng); 343 EXPECT_EQ(kAudioDecodeStats.decoded_cng, stats.decoding_cng);
358 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng); 344 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng);
359 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, 345 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_,
360 stats.capture_start_ntp_time_ms); 346 stats.capture_start_ntp_time_ms);
361 } 347 }
362 348
363 TEST(AudioReceiveStreamTest, SetGain) { 349 TEST(AudioReceiveStreamTest, SetGain) {
364 ConfigHelper helper; 350 ConfigHelper helper;
365 internal::AudioReceiveStream recv_stream( 351 internal::AudioReceiveStream recv_stream(
366 helper.congestion_controller(), helper.config(), helper.audio_state(), 352 helper.congestion_controller(), helper.config(), helper.audio_state());
367 helper.event_log());
368 EXPECT_CALL(*helper.channel_proxy(), 353 EXPECT_CALL(*helper.channel_proxy(),
369 SetChannelOutputVolumeScaling(FloatEq(0.765f))); 354 SetChannelOutputVolumeScaling(FloatEq(0.765f)));
370 recv_stream.SetGain(0.765f); 355 recv_stream.SetGain(0.765f);
371 } 356 }
372 } // namespace test 357 } // namespace test
373 } // namespace webrtc 358 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/audio/audio_receive_stream.cc ('k') | webrtc/audio/audio_send_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698