OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |