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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 bool SetupEngineWithSendStream() { | 117 bool SetupEngineWithSendStream() { |
118 if (!SetupEngine()) { | 118 if (!SetupEngine()) { |
119 return false; | 119 return false; |
120 } | 120 } |
121 return channel_->AddSendStream( | 121 return channel_->AddSendStream( |
122 cricket::StreamParams::CreateLegacy(kSsrc1)); | 122 cricket::StreamParams::CreateLegacy(kSsrc1)); |
123 } | 123 } |
124 void SetupForMultiSendStream() { | 124 void SetupForMultiSendStream() { |
125 EXPECT_TRUE(SetupEngineWithSendStream()); | 125 EXPECT_TRUE(SetupEngineWithSendStream()); |
126 // Remove stream added in Setup. | 126 // Remove stream added in Setup. |
127 int default_channel_num = voe_.GetLastChannel(); | 127 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
128 EXPECT_EQ(kSsrc1, voe_.GetLocalSSRC(default_channel_num)); | |
129 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); | 128 EXPECT_TRUE(channel_->RemoveSendStream(kSsrc1)); |
130 | |
131 // Verify the channel does not exist. | 129 // Verify the channel does not exist. |
132 EXPECT_EQ(-1, voe_.GetChannelFromLocalSsrc(kSsrc1)); | 130 EXPECT_FALSE(call_.GetAudioSendStream(kSsrc1)); |
133 } | 131 } |
134 void DeliverPacket(const void* data, int len) { | 132 void DeliverPacket(const void* data, int len) { |
135 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len); | 133 rtc::Buffer packet(reinterpret_cast<const uint8_t*>(data), len); |
136 channel_->OnPacketReceived(&packet, rtc::PacketTime()); | 134 channel_->OnPacketReceived(&packet, rtc::PacketTime()); |
137 } | 135 } |
138 void TearDown() override { | 136 void TearDown() override { |
139 delete channel_; | 137 delete channel_; |
140 engine_.Terminate(); | 138 engine_.Terminate(); |
141 } | 139 } |
142 | 140 |
| 141 const webrtc::AudioSendStream::Config& GetSendStreamConfig(uint32_t ssrc) { |
| 142 const auto* send_stream = call_.GetAudioSendStream(ssrc); |
| 143 EXPECT_TRUE(send_stream); |
| 144 return send_stream->GetConfig(); |
| 145 } |
| 146 |
143 void TestInsertDtmf(uint32_t ssrc, bool caller) { | 147 void TestInsertDtmf(uint32_t ssrc, bool caller) { |
144 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); | 148 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); |
145 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); | 149 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); |
146 EXPECT_TRUE(channel_ != nullptr); | 150 EXPECT_TRUE(channel_ != nullptr); |
147 if (caller) { | 151 if (caller) { |
148 // If this is a caller, local description will be applied and add the | 152 // If this is a caller, local description will be applied and add the |
149 // send stream. | 153 // send stream. |
150 EXPECT_TRUE(channel_->AddSendStream( | 154 EXPECT_TRUE(channel_->AddSendStream( |
151 cricket::StreamParams::CreateLegacy(kSsrc1))); | 155 cricket::StreamParams::CreateLegacy(kSsrc1))); |
152 } | 156 } |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 EXPECT_EQ(expected_result, channel_->SetSendParameters(parameters)); | 209 EXPECT_EQ(expected_result, channel_->SetSendParameters(parameters)); |
206 | 210 |
207 int channel_num = voe_.GetLastChannel(); | 211 int channel_num = voe_.GetLastChannel(); |
208 webrtc::CodecInst temp_codec; | 212 webrtc::CodecInst temp_codec; |
209 EXPECT_FALSE(voe_.GetSendCodec(channel_num, temp_codec)); | 213 EXPECT_FALSE(voe_.GetSendCodec(channel_num, temp_codec)); |
210 EXPECT_EQ(expected_bitrate, temp_codec.rate); | 214 EXPECT_EQ(expected_bitrate, temp_codec.rate); |
211 } | 215 } |
212 | 216 |
213 void TestSetSendRtpHeaderExtensions(const std::string& ext) { | 217 void TestSetSendRtpHeaderExtensions(const std::string& ext) { |
214 EXPECT_TRUE(SetupEngineWithSendStream()); | 218 EXPECT_TRUE(SetupEngineWithSendStream()); |
215 int channel_num = voe_.GetLastChannel(); | |
216 | 219 |
217 // Ensure extensions are off by default. | 220 // Ensure extensions are off by default. |
218 EXPECT_EQ(-1, voe_.GetSendRtpExtensionId(channel_num, ext)); | 221 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
219 | 222 |
220 // Ensure unknown extensions won't cause an error. | 223 // Ensure unknown extensions won't cause an error. |
221 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension( | 224 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension( |
222 "urn:ietf:params:unknownextention", 1)); | 225 "urn:ietf:params:unknownextention", 1)); |
223 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 226 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
224 EXPECT_EQ(-1, voe_.GetSendRtpExtensionId(channel_num, ext)); | 227 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
225 | 228 |
226 // Ensure extensions stay off with an empty list of headers. | 229 // Ensure extensions stay off with an empty list of headers. |
227 send_parameters_.extensions.clear(); | 230 send_parameters_.extensions.clear(); |
228 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 231 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
229 EXPECT_EQ(-1, voe_.GetSendRtpExtensionId(channel_num, ext)); | 232 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
230 | 233 |
231 // Ensure extension is set properly. | 234 // Ensure extension is set properly. |
232 const int id = 1; | 235 const int id = 1; |
233 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id)); | 236 send_parameters_.extensions.push_back(cricket::RtpHeaderExtension(ext, id)); |
234 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 237 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
235 EXPECT_EQ(id, voe_.GetSendRtpExtensionId(channel_num, ext)); | 238 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
| 239 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc1).rtp.extensions[0].name); |
| 240 EXPECT_EQ(id, GetSendStreamConfig(kSsrc1).rtp.extensions[0].id); |
236 | 241 |
237 // Ensure extension is set properly on new channels. | 242 // Ensure extension is set properly on new channels. |
238 EXPECT_TRUE(channel_->AddSendStream( | 243 EXPECT_TRUE(channel_->AddSendStream( |
239 cricket::StreamParams::CreateLegacy(kSsrc2))); | 244 cricket::StreamParams::CreateLegacy(kSsrc2))); |
240 int new_channel_num = voe_.GetLastChannel(); | 245 EXPECT_NE(call_.GetAudioSendStream(kSsrc1), |
241 EXPECT_NE(channel_num, new_channel_num); | 246 call_.GetAudioSendStream(kSsrc2)); |
242 EXPECT_EQ(id, voe_.GetSendRtpExtensionId(new_channel_num, ext)); | 247 EXPECT_EQ(1u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); |
| 248 EXPECT_EQ(ext, GetSendStreamConfig(kSsrc2).rtp.extensions[0].name); |
| 249 EXPECT_EQ(id, GetSendStreamConfig(kSsrc2).rtp.extensions[0].id); |
243 | 250 |
244 // Ensure all extensions go back off with an empty list. | 251 // Ensure all extensions go back off with an empty list. |
245 send_parameters_.codecs.push_back(kPcmuCodec); | 252 send_parameters_.codecs.push_back(kPcmuCodec); |
246 send_parameters_.extensions.clear(); | 253 send_parameters_.extensions.clear(); |
247 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 254 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
248 EXPECT_EQ(-1, voe_.GetSendRtpExtensionId(channel_num, ext)); | 255 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc1).rtp.extensions.size()); |
249 EXPECT_EQ(-1, voe_.GetSendRtpExtensionId(new_channel_num, ext)); | 256 EXPECT_EQ(0u, GetSendStreamConfig(kSsrc2).rtp.extensions.size()); |
250 } | 257 } |
251 | 258 |
252 void TestSetRecvRtpHeaderExtensions(const std::string& ext) { | 259 void TestSetRecvRtpHeaderExtensions(const std::string& ext) { |
253 EXPECT_TRUE(SetupEngineWithRecvStream()); | 260 EXPECT_TRUE(SetupEngineWithRecvStream()); |
254 int channel_num = voe_.GetLastChannel(); | 261 int channel_num = voe_.GetLastChannel(); |
255 | 262 |
256 // Ensure extensions are off by default. | 263 // Ensure extensions are off by default. |
257 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(channel_num, ext)); | 264 EXPECT_EQ(-1, voe_.GetReceiveRtpExtensionId(channel_num, ext)); |
258 | 265 |
259 cricket::AudioRecvParameters parameters; | 266 cricket::AudioRecvParameters parameters; |
(...skipping 1709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1969 // Test that we can add and remove send streams. | 1976 // Test that we can add and remove send streams. |
1970 TEST_F(WebRtcVoiceEngineTestFake, CreateAndDeleteMultipleSendStreams) { | 1977 TEST_F(WebRtcVoiceEngineTestFake, CreateAndDeleteMultipleSendStreams) { |
1971 SetupForMultiSendStream(); | 1978 SetupForMultiSendStream(); |
1972 | 1979 |
1973 // Set the global state for sending. | 1980 // Set the global state for sending. |
1974 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 1981 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); |
1975 | 1982 |
1976 for (uint32_t ssrc : kSsrcs4) { | 1983 for (uint32_t ssrc : kSsrcs4) { |
1977 EXPECT_TRUE(channel_->AddSendStream( | 1984 EXPECT_TRUE(channel_->AddSendStream( |
1978 cricket::StreamParams::CreateLegacy(ssrc))); | 1985 cricket::StreamParams::CreateLegacy(ssrc))); |
1979 EXPECT_NE(nullptr, call_.GetAudioSendStream(ssrc)); | |
1980 | |
1981 // Verify that we are in a sending state for all the created streams. | 1986 // Verify that we are in a sending state for all the created streams. |
1982 int channel_num = voe_.GetChannelFromLocalSsrc(ssrc); | 1987 EXPECT_TRUE(voe_.GetSend(GetSendStreamConfig(ssrc).voe_channel_id)); |
1983 EXPECT_TRUE(voe_.GetSend(channel_num)); | |
1984 } | 1988 } |
1985 EXPECT_EQ(arraysize(kSsrcs4), call_.GetAudioSendStreams().size()); | 1989 EXPECT_EQ(arraysize(kSsrcs4), call_.GetAudioSendStreams().size()); |
1986 | 1990 |
1987 // Delete the send streams. | 1991 // Delete the send streams. |
1988 for (uint32_t ssrc : kSsrcs4) { | 1992 for (uint32_t ssrc : kSsrcs4) { |
1989 EXPECT_TRUE(channel_->RemoveSendStream(ssrc)); | 1993 EXPECT_TRUE(channel_->RemoveSendStream(ssrc)); |
1990 EXPECT_EQ(nullptr, call_.GetAudioSendStream(ssrc)); | 1994 EXPECT_FALSE(call_.GetAudioSendStream(ssrc)); |
1991 // Stream should already be deleted. | |
1992 EXPECT_FALSE(channel_->RemoveSendStream(ssrc)); | 1995 EXPECT_FALSE(channel_->RemoveSendStream(ssrc)); |
1993 EXPECT_EQ(-1, voe_.GetChannelFromLocalSsrc(ssrc)); | |
1994 } | 1996 } |
1995 EXPECT_EQ(0u, call_.GetAudioSendStreams().size()); | 1997 EXPECT_EQ(0u, call_.GetAudioSendStreams().size()); |
1996 } | 1998 } |
1997 | 1999 |
1998 // Test SetSendCodecs correctly configure the codecs in all send streams. | 2000 // Test SetSendCodecs correctly configure the codecs in all send streams. |
1999 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithMultipleSendStreams) { | 2001 TEST_F(WebRtcVoiceEngineTestFake, SetSendCodecsWithMultipleSendStreams) { |
2000 SetupForMultiSendStream(); | 2002 SetupForMultiSendStream(); |
2001 | 2003 |
2002 // Create send streams. | 2004 // Create send streams. |
2003 for (uint32_t ssrc : kSsrcs4) { | 2005 for (uint32_t ssrc : kSsrcs4) { |
2004 EXPECT_TRUE(channel_->AddSendStream( | 2006 EXPECT_TRUE(channel_->AddSendStream( |
2005 cricket::StreamParams::CreateLegacy(ssrc))); | 2007 cricket::StreamParams::CreateLegacy(ssrc))); |
2006 } | 2008 } |
2007 | 2009 |
2008 cricket::AudioSendParameters parameters; | 2010 cricket::AudioSendParameters parameters; |
2009 // Set ISAC(16K) and CN(16K). VAD should be activated. | 2011 // Set ISAC(16K) and CN(16K). VAD should be activated. |
2010 parameters.codecs.push_back(kIsacCodec); | 2012 parameters.codecs.push_back(kIsacCodec); |
2011 parameters.codecs.push_back(kCn16000Codec); | 2013 parameters.codecs.push_back(kCn16000Codec); |
2012 parameters.codecs[1].id = 97; | 2014 parameters.codecs[1].id = 97; |
2013 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2015 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2014 | 2016 |
2015 // Verify ISAC and VAD are corrected configured on all send channels. | 2017 // Verify ISAC and VAD are corrected configured on all send channels. |
2016 webrtc::CodecInst gcodec; | 2018 webrtc::CodecInst gcodec; |
2017 for (uint32_t ssrc : kSsrcs4) { | 2019 for (uint32_t ssrc : kSsrcs4) { |
2018 int channel_num = voe_.GetChannelFromLocalSsrc(ssrc); | 2020 int channel_num = GetSendStreamConfig(ssrc).voe_channel_id; |
2019 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); | 2021 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); |
2020 EXPECT_STREQ("ISAC", gcodec.plname); | 2022 EXPECT_STREQ("ISAC", gcodec.plname); |
2021 EXPECT_TRUE(voe_.GetVAD(channel_num)); | 2023 EXPECT_TRUE(voe_.GetVAD(channel_num)); |
2022 EXPECT_EQ(97, voe_.GetSendCNPayloadType(channel_num, true)); | 2024 EXPECT_EQ(97, voe_.GetSendCNPayloadType(channel_num, true)); |
2023 } | 2025 } |
2024 | 2026 |
2025 // Change to PCMU(8K) and CN(16K). VAD should not be activated. | 2027 // Change to PCMU(8K) and CN(16K). VAD should not be activated. |
2026 parameters.codecs[0] = kPcmuCodec; | 2028 parameters.codecs[0] = kPcmuCodec; |
2027 EXPECT_TRUE(channel_->SetSendParameters(parameters)); | 2029 EXPECT_TRUE(channel_->SetSendParameters(parameters)); |
2028 for (uint32_t ssrc : kSsrcs4) { | 2030 for (uint32_t ssrc : kSsrcs4) { |
2029 int channel_num = voe_.GetChannelFromLocalSsrc(ssrc); | 2031 int channel_num = GetSendStreamConfig(ssrc).voe_channel_id; |
2030 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); | 2032 EXPECT_EQ(0, voe_.GetSendCodec(channel_num, gcodec)); |
2031 EXPECT_STREQ("PCMU", gcodec.plname); | 2033 EXPECT_STREQ("PCMU", gcodec.plname); |
2032 EXPECT_FALSE(voe_.GetVAD(channel_num)); | 2034 EXPECT_FALSE(voe_.GetVAD(channel_num)); |
2033 } | 2035 } |
2034 } | 2036 } |
2035 | 2037 |
2036 // Test we can SetSend on all send streams correctly. | 2038 // Test we can SetSend on all send streams correctly. |
2037 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { | 2039 TEST_F(WebRtcVoiceEngineTestFake, SetSendWithMultipleSendStreams) { |
2038 SetupForMultiSendStream(); | 2040 SetupForMultiSendStream(); |
2039 | 2041 |
2040 // Create the send channels and they should be a SEND_NOTHING date. | 2042 // Create the send channels and they should be a SEND_NOTHING date. |
2041 for (uint32_t ssrc : kSsrcs4) { | 2043 for (uint32_t ssrc : kSsrcs4) { |
2042 EXPECT_TRUE(channel_->AddSendStream( | 2044 EXPECT_TRUE(channel_->AddSendStream( |
2043 cricket::StreamParams::CreateLegacy(ssrc))); | 2045 cricket::StreamParams::CreateLegacy(ssrc))); |
2044 int channel_num = voe_.GetLastChannel(); | 2046 int channel_num = voe_.GetLastChannel(); |
2045 EXPECT_FALSE(voe_.GetSend(channel_num)); | 2047 EXPECT_FALSE(voe_.GetSend(channel_num)); |
2046 } | 2048 } |
2047 | 2049 |
2048 // Set the global state for starting sending. | 2050 // Set the global state for starting sending. |
2049 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2051 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); |
2050 for (uint32_t ssrc : kSsrcs4) { | 2052 for (uint32_t ssrc : kSsrcs4) { |
2051 // Verify that we are in a sending state for all the send streams. | 2053 // Verify that we are in a sending state for all the send streams. |
2052 int channel_num = voe_.GetChannelFromLocalSsrc(ssrc); | 2054 int channel_num = GetSendStreamConfig(ssrc).voe_channel_id; |
2053 EXPECT_TRUE(voe_.GetSend(channel_num)); | 2055 EXPECT_TRUE(voe_.GetSend(channel_num)); |
2054 } | 2056 } |
2055 | 2057 |
2056 // Set the global state for stopping sending. | 2058 // Set the global state for stopping sending. |
2057 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); | 2059 EXPECT_TRUE(channel_->SetSend(cricket::SEND_NOTHING)); |
2058 for (uint32_t ssrc : kSsrcs4) { | 2060 for (uint32_t ssrc : kSsrcs4) { |
2059 // Verify that we are in a stop state for all the send streams. | 2061 // Verify that we are in a stop state for all the send streams. |
2060 int channel_num = voe_.GetChannelFromLocalSsrc(ssrc); | 2062 int channel_num = GetSendStreamConfig(ssrc).voe_channel_id; |
2061 EXPECT_FALSE(voe_.GetSend(channel_num)); | 2063 EXPECT_FALSE(voe_.GetSend(channel_num)); |
2062 } | 2064 } |
2063 } | 2065 } |
2064 | 2066 |
2065 // Test we can set the correct statistics on all send streams. | 2067 // Test we can set the correct statistics on all send streams. |
2066 TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) { | 2068 TEST_F(WebRtcVoiceEngineTestFake, GetStatsWithMultipleSendStreams) { |
2067 SetupForMultiSendStream(); | 2069 SetupForMultiSendStream(); |
2068 | 2070 |
2069 // Create send streams. | 2071 // Create send streams. |
2070 for (uint32_t ssrc : kSsrcs4) { | 2072 for (uint32_t ssrc : kSsrcs4) { |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2331 "tracefilter " + rtc::ToString(webrtc::kTraceDefault); | 2333 "tracefilter " + rtc::ToString(webrtc::kTraceDefault); |
2332 engine_.SetLogging(rtc::LS_VERBOSE, filter.c_str()); | 2334 engine_.SetLogging(rtc::LS_VERBOSE, filter.c_str()); |
2333 EXPECT_EQ(static_cast<unsigned int>(webrtc::kTraceDefault), | 2335 EXPECT_EQ(static_cast<unsigned int>(webrtc::kTraceDefault), |
2334 trace_wrapper_->filter_); | 2336 trace_wrapper_->filter_); |
2335 } | 2337 } |
2336 | 2338 |
2337 // Test that we can set the outgoing SSRC properly. | 2339 // Test that we can set the outgoing SSRC properly. |
2338 // SSRC is set in SetupEngine by calling AddSendStream. | 2340 // SSRC is set in SetupEngine by calling AddSendStream. |
2339 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { | 2341 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { |
2340 EXPECT_TRUE(SetupEngineWithSendStream()); | 2342 EXPECT_TRUE(SetupEngineWithSendStream()); |
2341 EXPECT_EQ(kSsrc1, voe_.GetLocalSSRC(voe_.GetLastChannel())); | 2343 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
2342 } | 2344 } |
2343 | 2345 |
2344 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { | 2346 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { |
2345 // Setup. We need send codec to be set to get all stats. | 2347 // Setup. We need send codec to be set to get all stats. |
2346 EXPECT_TRUE(SetupEngineWithSendStream()); | 2348 EXPECT_TRUE(SetupEngineWithSendStream()); |
2347 SetAudioSendStreamStats(); | 2349 SetAudioSendStreamStats(); |
2348 // SetupEngineWithSendStream adds a send stream with kSsrc1, so the receive | 2350 // SetupEngineWithSendStream adds a send stream with kSsrc1, so the receive |
2349 // stream has to use a different SSRC. | 2351 // stream has to use a different SSRC. |
2350 EXPECT_TRUE(channel_->AddRecvStream( | 2352 EXPECT_TRUE(channel_->AddRecvStream( |
2351 cricket::StreamParams::CreateLegacy(kSsrc2))); | 2353 cricket::StreamParams::CreateLegacy(kSsrc2))); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2392 EXPECT_EQ(1u, info.senders.size()); | 2394 EXPECT_EQ(1u, info.senders.size()); |
2393 EXPECT_EQ(1u, info.receivers.size()); | 2395 EXPECT_EQ(1u, info.receivers.size()); |
2394 VerifyVoiceReceiverInfo(info.receivers[0]); | 2396 VerifyVoiceReceiverInfo(info.receivers[0]); |
2395 } | 2397 } |
2396 } | 2398 } |
2397 | 2399 |
2398 // Test that we can set the outgoing SSRC properly with multiple streams. | 2400 // Test that we can set the outgoing SSRC properly with multiple streams. |
2399 // SSRC is set in SetupEngine by calling AddSendStream. | 2401 // SSRC is set in SetupEngine by calling AddSendStream. |
2400 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { | 2402 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcWithMultipleStreams) { |
2401 EXPECT_TRUE(SetupEngineWithSendStream()); | 2403 EXPECT_TRUE(SetupEngineWithSendStream()); |
2402 EXPECT_EQ(kSsrc1, voe_.GetLocalSSRC(voe_.GetLastChannel())); | 2404 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); |
2403 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2405 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
2404 EXPECT_EQ(kSsrc1, voe_.GetLocalSSRC(voe_.GetLastChannel())); | 2406 EXPECT_EQ(kSsrc1, voe_.GetLocalSSRC(voe_.GetLastChannel())); |
2405 } | 2407 } |
2406 | 2408 |
2407 // Test that the local SSRC is the same on sending and receiving channels if the | 2409 // Test that the local SSRC is the same on sending and receiving channels if the |
2408 // receive channel is created before the send channel. | 2410 // receive channel is created before the send channel. |
2409 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { | 2411 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrcAfterCreatingReceiveChannel) { |
2410 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); | 2412 EXPECT_TRUE(engine_.Init(rtc::Thread::Current())); |
2411 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); | 2413 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); |
2412 | 2414 |
2413 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); | 2415 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(1))); |
2414 int receive_channel_num = voe_.GetLastChannel(); | 2416 int receive_channel_num = voe_.GetLastChannel(); |
2415 EXPECT_TRUE(channel_->AddSendStream( | 2417 EXPECT_TRUE(channel_->AddSendStream( |
2416 cricket::StreamParams::CreateLegacy(1234))); | 2418 cricket::StreamParams::CreateLegacy(1234))); |
2417 int send_channel_num = voe_.GetLastChannel(); | |
2418 | 2419 |
2419 EXPECT_EQ(1234U, voe_.GetLocalSSRC(send_channel_num)); | 2420 EXPECT_TRUE(call_.GetAudioSendStream(1234)); |
2420 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); | 2421 EXPECT_EQ(1234U, voe_.GetLocalSSRC(receive_channel_num)); |
2421 } | 2422 } |
2422 | 2423 |
2423 // Test that we can properly receive packets. | 2424 // Test that we can properly receive packets. |
2424 TEST_F(WebRtcVoiceEngineTestFake, Recv) { | 2425 TEST_F(WebRtcVoiceEngineTestFake, Recv) { |
2425 EXPECT_TRUE(SetupEngine()); | 2426 EXPECT_TRUE(SetupEngine()); |
2426 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); | 2427 DeliverPacket(kPcmuFrame, sizeof(kPcmuFrame)); |
2427 int channel_num = voe_.GetLastChannel(); | 2428 int channel_num = voe_.GetLastChannel(); |
2428 EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, | 2429 EXPECT_TRUE(voe_.CheckPacket(channel_num, kPcmuFrame, |
2429 sizeof(kPcmuFrame))); | 2430 sizeof(kPcmuFrame))); |
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3046 | 3047 |
3047 static const uint32_t kSsrcs[] = {1, 2, 3, 4}; | 3048 static const uint32_t kSsrcs[] = {1, 2, 3, 4}; |
3048 for (unsigned int i = 0; i < arraysize(kSsrcs); ++i) { | 3049 for (unsigned int i = 0; i < arraysize(kSsrcs); ++i) { |
3049 EXPECT_TRUE(media_channel->AddRecvStream( | 3050 EXPECT_TRUE(media_channel->AddRecvStream( |
3050 cricket::StreamParams::CreateLegacy(kSsrcs[i]))); | 3051 cricket::StreamParams::CreateLegacy(kSsrcs[i]))); |
3051 EXPECT_NE(nullptr, call_.GetAudioReceiveStream(kSsrcs[i])); | 3052 EXPECT_NE(nullptr, call_.GetAudioReceiveStream(kSsrcs[i])); |
3052 } | 3053 } |
3053 EXPECT_EQ(arraysize(kSsrcs), call_.GetAudioReceiveStreams().size()); | 3054 EXPECT_EQ(arraysize(kSsrcs), call_.GetAudioReceiveStreams().size()); |
3054 } | 3055 } |
3055 | 3056 |
| 3057 // TODO(solenberg): Remove, once recv streams are configured through Call. |
| 3058 // (This is then covered by TestSetRecvRtpHeaderExtensions.) |
3056 TEST_F(WebRtcVoiceEngineTestFake, ConfiguresAudioReceiveStreamRtpExtensions) { | 3059 TEST_F(WebRtcVoiceEngineTestFake, ConfiguresAudioReceiveStreamRtpExtensions) { |
3057 // Test that setting the header extensions results in the expected state | 3060 // Test that setting the header extensions results in the expected state |
3058 // changes on an associated Call. | 3061 // changes on an associated Call. |
3059 std::vector<uint32_t> ssrcs; | 3062 std::vector<uint32_t> ssrcs; |
3060 ssrcs.push_back(223); | 3063 ssrcs.push_back(223); |
3061 ssrcs.push_back(224); | 3064 ssrcs.push_back(224); |
3062 | 3065 |
3063 EXPECT_TRUE(SetupEngineWithSendStream()); | 3066 EXPECT_TRUE(SetupEngineWithSendStream()); |
3064 cricket::WebRtcVoiceMediaChannel* media_channel = | 3067 cricket::WebRtcVoiceMediaChannel* media_channel = |
3065 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | 3068 static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3317 cricket::WebRtcVoiceEngine engine; | 3320 cricket::WebRtcVoiceEngine engine; |
3318 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); | 3321 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); |
3319 rtc::scoped_ptr<webrtc::Call> call( | 3322 rtc::scoped_ptr<webrtc::Call> call( |
3320 webrtc::Call::Create(webrtc::Call::Config())); | 3323 webrtc::Call::Create(webrtc::Call::Config())); |
3321 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), | 3324 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), |
3322 call.get()); | 3325 call.get()); |
3323 cricket::AudioRecvParameters parameters; | 3326 cricket::AudioRecvParameters parameters; |
3324 parameters.codecs = engine.codecs(); | 3327 parameters.codecs = engine.codecs(); |
3325 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3328 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3326 } | 3329 } |
OLD | NEW |