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

Side by Side Diff: talk/media/webrtc/webrtcvoiceengine_unittest.cc

Issue 1454073002: Move some receive stream configuration into webrtc::AudioReceiveStream. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: reabse+comments Created 5 years, 1 month 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 | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | webrtc/audio/audio_receive_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 * libjingle 2 * libjingle
3 * Copyright 2008 Google Inc. 3 * Copyright 2008 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 delete channel_; 137 delete channel_;
138 engine_.Terminate(); 138 engine_.Terminate();
139 } 139 }
140 140
141 const webrtc::AudioSendStream::Config& GetSendStreamConfig(uint32_t ssrc) { 141 const webrtc::AudioSendStream::Config& GetSendStreamConfig(uint32_t ssrc) {
142 const auto* send_stream = call_.GetAudioSendStream(ssrc); 142 const auto* send_stream = call_.GetAudioSendStream(ssrc);
143 EXPECT_TRUE(send_stream); 143 EXPECT_TRUE(send_stream);
144 return send_stream->GetConfig(); 144 return send_stream->GetConfig();
145 } 145 }
146 146
147 const webrtc::AudioReceiveStream::Config& GetRecvStreamConfig(uint32_t ssrc) {
148 const auto* recv_stream = call_.GetAudioReceiveStream(ssrc);
149 EXPECT_TRUE(recv_stream);
150 return recv_stream->GetConfig();
151 }
152
147 void TestInsertDtmf(uint32_t ssrc, bool caller) { 153 void TestInsertDtmf(uint32_t ssrc, bool caller) {
148 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); 154 EXPECT_TRUE(engine_.Init(rtc::Thread::Current()));
149 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); 155 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions());
150 EXPECT_TRUE(channel_ != nullptr); 156 EXPECT_TRUE(channel_ != nullptr);
151 if (caller) { 157 if (caller) {
152 // If this is a caller, local description will be applied and add the 158 // If this is a caller, local description will be applied and add the
153 // send stream. 159 // send stream.
154 EXPECT_TRUE(channel_->AddSendStream( 160 EXPECT_TRUE(channel_->AddSendStream(
155 cricket::StreamParams::CreateLegacy(kSsrc1))); 161 cricket::StreamParams::CreateLegacy(kSsrc1)));
156 } 162 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); 238 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size());
233 239
234 // Ensure extension is set properly. 240 // Ensure extension is set properly.
235 const int id = 1; 241 const int id = 1;
236 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id)); 242 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id));
237 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 243 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
238 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); 244 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc1).rtp.extensions.size());
239 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc1).rtp.extensions[0].name); 245 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc1).rtp.extensions[0].name);
240 EXPECT_EQ(id, GetSendStreamConfig(kSsrc1).rtp.extensions[0].id); 246 EXPECT_EQ(id, GetSendStreamConfig(kSsrc1).rtp.extensions[0].id);
241 247
242 // Ensure extension is set properly on new channels. 248 // Ensure extension is set properly on new stream.
243 EXPECT_TRUE(channel_->AddSendStream( 249 EXPECT_TRUE(channel_->AddSendStream(
244 cricket::StreamParams::CreateLegacy(kSsrc2))); 250 cricket::StreamParams::CreateLegacy(kSsrc2)));
245 EXPECT_NE(call_.GetAudioSendStream(kSsrc1), 251 EXPECT_NE(call_.GetAudioSendStream(kSsrc1),
246 call_.GetAudioSendStream(kSsrc2)); 252 call_.GetAudioSendStream(kSsrc2));
247 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); 253 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc2).rtp.extensions.size());
248 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc2).rtp.extensions[0].name); 254 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc2).rtp.extensions[0].name);
249 EXPECT_EQ(id, GetSendStreamConfig(kSsrc2).rtp.extensions[0].id); 255 EXPECT_EQ(id, GetSendStreamConfig(kSsrc2).rtp.extensions[0].id);
250 256
251 // Ensure all extensions go back off with an empty list. 257 // Ensure all extensions go back off with an empty list.
252 send_parameters_.codecs.push_back(kPcmuCodec); 258 send_parameters_.codecs.push_back(kPcmuCodec);
253 send_parameters_.extensions.clear(); 259 send_parameters_.extensions.clear();
254 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 260 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
255 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); 261 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size());
256 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); 262 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc2).rtp.extensions.size());
257 } 263 }
258 264
259 void TestSetRecvRtpHeaderExtensions(const std::string& ext) { 265 void TestSetRecvRtpHeaderExtensions(const std::string& ext) {
260 EXPECT_TRUE(SetupEngineWithRecvStream()); 266 EXPECT_TRUE(SetupEngineWithRecvStream());
261 int channel_num = voe_.GetLastChannel();
262 267
263 // Ensure extensions are off by default. 268 // Ensure extensions are off by default.
264 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(channel_num, ext)); 269 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size());
265 270
266 cricket::AudioRecvParameters parameters;
267 // Ensure unknown extensions won't cause an error. 271 // Ensure unknown extensions won't cause an error.
268 parameters.extensions.push_back(cricket::RtpHeaderExtension( 272 recv_parameters_.extensions.push_back(cricket::RtpHeaderExtension(
269 "urn:ietf:params:unknownextention", 1)); 273 "urn:ietf:params:unknownextention", 1));
270 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); 274 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
271 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(channel_num, ext)); 275 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size());
272 276
273 // Ensure extensions stay off with an empty list of headers. 277 // Ensure extensions stay off with an empty list of headers.
274 parameters.extensions.clear(); 278 recv_parameters_.extensions.clear();
275 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); 279 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
276 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(channel_num, ext)); 280 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size());
277 281
278 // Ensure extension is set properly. 282 // Ensure extension is set properly.
279 const int id = 2; 283 const int id = 2;
280 parameters.extensions.push_back(cricket::RtpHeaderExtension(ext, id)); 284 recv_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id));
281 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); 285 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
282 EXPECT_EQ(id, voe_.GetReceiveRtpExtensionId(channel_num, ext)); 286 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size());
287 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].name);
288 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc1).rtp.extensions[0].id);
283 289
284 // Ensure extension is set properly on new channel. 290 // Ensure extension is set properly on new stream.
285 // The first stream to occupy the default channel.
286 EXPECT_TRUE(channel_->AddRecvStream( 291 EXPECT_TRUE(channel_->AddRecvStream(
287 cricket::StreamParams::CreateLegacy(kSsrc2))); 292 cricket::StreamParams::CreateLegacy(kSsrc2)));
288 int new_channel_num = voe_.GetLastChannel(); 293 EXPECT_NE(call_.GetAudioReceiveStream(kSsrc1),
289 EXPECT_NE(channel_num, new_channel_num); 294 call_.GetAudioReceiveStream(kSsrc2));
290 EXPECT_EQ(id, voe_.GetReceiveRtpExtensionId(new_channel_num, ext)); 295 EXPECT_EQ(1u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size());
296 EXPECT_EQ(ext, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].name);
297 EXPECT_EQ(id, GetRecvStreamConfig(kSsrc2).rtp.extensions[0].id);
291 298
292 // Ensure all extensions go back off with an empty list. 299 // Ensure all extensions go back off with an empty list.
293 parameters.extensions.clear(); 300 recv_parameters_.extensions.clear();
294 EXPECT_TRUE(channel_->SetRecvParameters(parameters)); 301 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
295 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(channel_num, ext)); 302 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc1).rtp.extensions.size());
296 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(new_channel_num, ext)); 303 EXPECT_EQ(0u, GetRecvStreamConfig(kSsrc2).rtp.extensions.size());
297 } 304 }
298 305
299 webrtc::AudioSendStream::Stats GetAudioSendStreamStats() const { 306 webrtc::AudioSendStream::Stats GetAudioSendStreamStats() const {
300 webrtc::AudioSendStream::Stats stats; 307 webrtc::AudioSendStream::Stats stats;
301 stats.local_ssrc = 12; 308 stats.local_ssrc = 12;
302 stats.bytes_sent = 345; 309 stats.bytes_sent = 345;
303 stats.packets_sent = 678; 310 stats.packets_sent = 678;
304 stats.packets_lost = 9012; 311 stats.packets_lost = 9012;
305 stats.fraction_lost = 34.56f; 312 stats.fraction_lost = 34.56f;
306 stats.codec_name = "codec_name_send"; 313 stats.codec_name = "codec_name_send";
(...skipping 2088 matching lines...) Expand 10 before | Expand all | Expand 10 after
2395 EXPECT_EQ(1u, info.receivers.size()); 2402 EXPECT_EQ(1u, info.receivers.size());
2396 VerifyVoiceReceiverInfo(info.receivers[0]); 2403 VerifyVoiceReceiverInfo(info.receivers[0]);
2397 } 2404 }
2398 } 2405 }
2399 2406
2400 // Test that we can set the outgoing SSRC properly with multiple streams. 2407 // Test that we can set the outgoing SSRC properly with multiple streams.
2401 // SSRC is set in SetupEngine by calling AddSendStream. 2408 // SSRC is set in SetupEngine by calling AddSendStream.
2402 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { 2409 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) {
2403 EXPECT_TRUE(SetupEngineWithSendStream()); 2410 EXPECT_TRUE(SetupEngineWithSendStream());
2404 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); 2411 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1));
2405 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); 2412 EXPECT_TRUE(channel_->AddRecvStream(
2406 EXPECT_EQ(kSsrc1, voe_.GetLocalSSRC(voe_.GetLastChannel())); 2413 cricket::StreamParams::CreateLegacy(kSsrc2)));
2414 EXPECT_EQ(kSsrc1, GetRecvStreamConfig(kSsrc2).rtp.local_ssrc);
2407 } 2415 }
2408 2416
2409 // Test that the local SSRC is the same on sending and receiving channels if the 2417 // Test that the local SSRC is the same on sending and receiving channels if the
2410 // receive channel is created before the send channel. 2418 // receive channel is created before the send channel.
2411 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { 2419 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) {
2412 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); 2420 EXPECT_TRUE(engine_.Init(rtc::Thread::Current()));
2413 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); 2421 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions());
2414 2422
2415 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); 2423 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1)));
2416 int receive_channel_num = voe_.GetLastChannel(); 2424 int receive_channel_num = voe_.GetLastChannel();
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after
3379 cricket::WebRtcVoiceEngine engine; 3387 cricket::WebRtcVoiceEngine engine;
3380 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); 3388 EXPECT_TRUE(engine.Init(rtc::Thread::Current()));
3381 rtc::scoped_ptr<webrtc::Call> call( 3389 rtc::scoped_ptr<webrtc::Call> call(
3382 webrtc::Call::Create(webrtc::Call::Config())); 3390 webrtc::Call::Create(webrtc::Call::Config()));
3383 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), 3391 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(),
3384 call.get()); 3392 call.get());
3385 cricket::AudioRecvParameters parameters; 3393 cricket::AudioRecvParameters parameters;
3386 parameters.codecs = engine.codecs(); 3394 parameters.codecs = engine.codecs();
3387 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3395 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3388 } 3396 }
OLDNEW
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | webrtc/audio/audio_receive_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698