OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 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 #include "webrtc/base/checks.h" | |
11 #include "webrtc/common.h" | |
12 #include "webrtc/config.h" | |
10 #include "webrtc/test/call_test.h" | 13 #include "webrtc/test/call_test.h" |
11 #include "webrtc/test/encoder_settings.h" | 14 #include "webrtc/test/encoder_settings.h" |
15 #include "webrtc/test/testsupport/fileutils.h" | |
16 #include "webrtc/voice_engine/include/voe_base.h" | |
17 #include "webrtc/voice_engine/include/voe_codec.h" | |
18 #include "webrtc/voice_engine/include/voe_network.h" | |
12 | 19 |
13 namespace webrtc { | 20 namespace webrtc { |
14 namespace test { | 21 namespace test { |
15 | 22 |
16 namespace { | 23 namespace { |
17 const int kVideoRotationRtpExtensionId = 4; | 24 const int kVideoRotationRtpExtensionId = 4; |
18 } | 25 } |
19 | 26 |
20 CallTest::CallTest() | 27 CallTest::CallTest() |
21 : clock_(Clock::GetRealTimeClock()), | 28 : clock_(Clock::GetRealTimeClock()), |
22 video_send_config_(nullptr), | 29 video_send_config_(nullptr), |
23 video_send_stream_(NULL), | 30 video_send_stream_(nullptr), |
24 fake_encoder_(clock_) {} | 31 audio_send_config_(nullptr), |
32 audio_send_stream_(nullptr), | |
33 fake_encoder_(clock_), | |
34 voe_send_channel_id_(-1), | |
35 voe_recv_channel_id_(-1), | |
36 send_voice_engine_(nullptr), | |
37 recv_voice_engine_(nullptr), | |
38 voe_send_base_(nullptr), | |
39 voe_send_network_(nullptr), | |
40 voe_send_codec_(nullptr), | |
41 voe_recv_base_(nullptr), | |
42 voe_recv_network_(nullptr), | |
43 voe_recv_codec_(nullptr), | |
44 voe_send_transport_adapter_(nullptr), | |
45 voe_recv_transport_adapter_(nullptr), | |
46 fake_send_audio_device_(nullptr), | |
47 fake_recv_audio_device_(nullptr) {} | |
25 | 48 |
26 CallTest::~CallTest() { | 49 CallTest::~CallTest() { |
27 } | 50 } |
28 | 51 |
29 void CallTest::RunBaseTest(BaseTest* test, | 52 void CallTest::RunBaseTest(BaseTest* test, |
30 const FakeNetworkPipe::Config& config) { | 53 const FakeNetworkPipe::Config& config) { |
31 CreateSenderCall(test->GetSenderCallConfig()); | 54 bool audio_enabled = test->GetNumAudioStreams() > 0; |
32 if (test->ShouldCreateReceivers()) | 55 Call::Config send_config(test->GetSenderCallConfig()); |
33 CreateReceiverCall(test->GetReceiverCallConfig()); | 56 if (audio_enabled) { |
pbos-webrtc
2016/01/07 14:23:37
Put down a comment (somewhere) that says that thes
stefan-webrtc
2016/01/07 15:16:43
Done.
| |
57 CreateVoiceEngines(); | |
58 AudioState::Config audio_state_config; | |
59 audio_state_config.voice_engine = send_voice_engine_; | |
60 send_config.audio_state = AudioState::Create(audio_state_config); | |
61 } | |
62 CreateSenderCall(send_config); | |
63 if (test->ShouldCreateReceivers()) { | |
64 Call::Config recv_config(test->GetReceiverCallConfig()); | |
65 if (audio_enabled) { | |
66 AudioState::Config audio_state_config; | |
67 audio_state_config.voice_engine = recv_voice_engine_; | |
68 recv_config.audio_state = AudioState::Create(audio_state_config); | |
69 } | |
70 CreateReceiverCall(recv_config); | |
71 } | |
34 send_transport_.reset(new PacketTransport( | 72 send_transport_.reset(new PacketTransport( |
35 sender_call_.get(), test, test::PacketTransport::kSender, config)); | 73 sender_call_.get(), test, test::PacketTransport::kSender, config)); |
36 receive_transport_.reset(new PacketTransport( | 74 receive_transport_.reset(new PacketTransport( |
37 nullptr, test, test::PacketTransport::kReceiver, config)); | 75 nullptr, test, test::PacketTransport::kReceiver, config)); |
38 test->OnTransportsCreated(send_transport_.get(), receive_transport_.get()); | 76 test->OnTransportsCreated(send_transport_.get(), receive_transport_.get()); |
39 test->OnCallsCreated(sender_call_.get(), receiver_call_.get()); | 77 test->OnCallsCreated(sender_call_.get(), receiver_call_.get()); |
40 | 78 |
41 if (test->ShouldCreateReceivers()) { | 79 if (test->ShouldCreateReceivers()) { |
42 send_transport_->SetReceiver(receiver_call_->Receiver()); | 80 send_transport_->SetReceiver(receiver_call_->Receiver()); |
43 receive_transport_->SetReceiver(sender_call_->Receiver()); | 81 receive_transport_->SetReceiver(sender_call_->Receiver()); |
44 } else { | 82 } else { |
45 // Sender-only call delivers to itself. | 83 // Sender-only call delivers to itself. |
46 send_transport_->SetReceiver(sender_call_->Receiver()); | 84 send_transport_->SetReceiver(sender_call_->Receiver()); |
47 receive_transport_->SetReceiver(nullptr); | 85 receive_transport_->SetReceiver(nullptr); |
48 } | 86 } |
49 | 87 |
50 CreateSendConfig(test->GetNumStreams(), send_transport_.get()); | 88 CreateSendConfig(test->GetNumVideoStreams(), test->GetNumAudioStreams(), |
89 send_transport_.get()); | |
51 if (test->ShouldCreateReceivers()) { | 90 if (test->ShouldCreateReceivers()) { |
52 CreateMatchingReceiveConfigs(receive_transport_.get()); | 91 CreateMatchingReceiveConfigs(audio_enabled, receive_transport_.get()); |
53 } | 92 } |
93 if (audio_enabled) | |
94 SetupVoiceEngineTransports(send_transport_.get(), receive_transport_.get()); | |
95 | |
54 test->ModifyVideoConfigs(&video_send_config_, &video_receive_configs_, | 96 test->ModifyVideoConfigs(&video_send_config_, &video_receive_configs_, |
55 &video_encoder_config_); | 97 &video_encoder_config_); |
56 CreateStreams(); | 98 test->ModifyAudioConfigs(&audio_send_config_, &audio_receive_configs_); |
99 | |
100 RTC_DCHECK(test->GetNumVideoStreams() > 0 || audio_enabled); | |
pbos-webrtc
2016/01/07 14:23:37
GetNumAudioStreams() > 0 instead
stefan-webrtc
2016/01/07 15:16:44
Done.
| |
101 if (test->GetNumVideoStreams() > 0) | |
102 CreateVideoStreams(); | |
57 test->OnVideoStreamsCreated(video_send_stream_, video_receive_streams_); | 103 test->OnVideoStreamsCreated(video_send_stream_, video_receive_streams_); |
104 if (audio_enabled) | |
105 CreateAudioStreams(); | |
106 test->OnAudioStreamsCreated(audio_send_stream_, audio_receive_streams_); | |
pbos-webrtc
2016/01/07 14:23:37
Put inside audio_enabled
stefan-webrtc
2016/01/07 15:16:44
Done.
| |
58 | 107 |
59 CreateFrameGeneratorCapturer(); | 108 CreateFrameGeneratorCapturer(); |
60 test->OnFrameGeneratorCapturerCreated(frame_generator_capturer_.get()); | 109 test->OnFrameGeneratorCapturerCreated(frame_generator_capturer_.get()); |
61 | 110 |
62 Start(); | 111 Start(); |
63 test->PerformTest(); | 112 test->PerformTest(); |
64 send_transport_->StopSending(); | 113 send_transport_->StopSending(); |
65 receive_transport_->StopSending(); | 114 receive_transport_->StopSending(); |
66 Stop(); | 115 Stop(); |
67 | 116 |
68 DestroyStreams(); | 117 DestroyStreams(); |
118 DestroyCalls(); | |
119 if (audio_enabled) | |
120 DestroyVoiceEngines(); | |
69 } | 121 } |
70 | 122 |
71 void CallTest::Start() { | 123 void CallTest::Start() { |
72 video_send_stream_->Start(); | 124 if (video_send_stream_) |
73 for (size_t i = 0; i < video_receive_streams_.size(); ++i) | 125 video_send_stream_->Start(); |
74 video_receive_streams_[i]->Start(); | 126 for (VideoReceiveStream* video_recv_stream : video_receive_streams_) |
127 video_recv_stream->Start(); | |
128 if (audio_send_stream_) { | |
129 fake_send_audio_device_->Start(); | |
130 audio_send_stream_->Start(); | |
131 EXPECT_EQ(0, voe_send_base_->StartSend(voe_send_channel_id_)); | |
132 } | |
133 for (AudioReceiveStream* audio_recv_stream : audio_receive_streams_) | |
134 audio_recv_stream->Start(); | |
135 if (!audio_receive_streams_.empty()) { | |
136 fake_recv_audio_device_->Start(); | |
137 EXPECT_EQ(0, voe_recv_base_->StartPlayout(voe_recv_channel_id_)); | |
138 EXPECT_EQ(0, voe_recv_base_->StartReceive(voe_recv_channel_id_)); | |
139 } | |
75 if (frame_generator_capturer_.get() != NULL) | 140 if (frame_generator_capturer_.get() != NULL) |
76 frame_generator_capturer_->Start(); | 141 frame_generator_capturer_->Start(); |
77 } | 142 } |
78 | 143 |
79 void CallTest::Stop() { | 144 void CallTest::Stop() { |
80 if (frame_generator_capturer_.get() != NULL) | 145 if (frame_generator_capturer_.get() != NULL) |
81 frame_generator_capturer_->Stop(); | 146 frame_generator_capturer_->Stop(); |
82 for (size_t i = 0; i < video_receive_streams_.size(); ++i) | 147 if (!audio_receive_streams_.empty()) { |
83 video_receive_streams_[i]->Stop(); | 148 fake_recv_audio_device_->Stop(); |
84 video_send_stream_->Stop(); | 149 EXPECT_EQ(0, voe_recv_base_->StopReceive(voe_recv_channel_id_)); |
150 EXPECT_EQ(0, voe_recv_base_->StopPlayout(voe_recv_channel_id_)); | |
151 } | |
152 for (AudioReceiveStream* audio_recv_stream : audio_receive_streams_) | |
153 audio_recv_stream->Stop(); | |
154 if (audio_send_stream_) { | |
155 fake_send_audio_device_->Stop(); | |
156 EXPECT_EQ(0, voe_send_base_->StopSend(voe_send_channel_id_)); | |
157 audio_send_stream_->Stop(); | |
158 } | |
159 for (VideoReceiveStream* video_recv_stream : video_receive_streams_) | |
160 video_recv_stream->Stop(); | |
161 if (video_send_stream_) | |
162 video_send_stream_->Stop(); | |
85 } | 163 } |
86 | 164 |
87 void CallTest::CreateCalls(const Call::Config& sender_config, | 165 void CallTest::CreateCalls(const Call::Config& sender_config, |
88 const Call::Config& receiver_config) { | 166 const Call::Config& receiver_config) { |
89 CreateSenderCall(sender_config); | 167 CreateSenderCall(sender_config); |
90 CreateReceiverCall(receiver_config); | 168 CreateReceiverCall(receiver_config); |
91 } | 169 } |
92 | 170 |
93 void CallTest::CreateSenderCall(const Call::Config& config) { | 171 void CallTest::CreateSenderCall(const Call::Config& config) { |
94 sender_call_.reset(Call::Create(config)); | 172 sender_call_.reset(Call::Create(config)); |
95 } | 173 } |
96 | 174 |
97 void CallTest::CreateReceiverCall(const Call::Config& config) { | 175 void CallTest::CreateReceiverCall(const Call::Config& config) { |
98 receiver_call_.reset(Call::Create(config)); | 176 receiver_call_.reset(Call::Create(config)); |
99 } | 177 } |
100 | 178 |
101 void CallTest::DestroyCalls() { | 179 void CallTest::DestroyCalls() { |
102 sender_call_.reset(nullptr); | 180 sender_call_.reset(); |
103 receiver_call_.reset(nullptr); | 181 receiver_call_.reset(); |
104 } | 182 } |
105 | 183 |
106 void CallTest::CreateSendConfig(size_t num_streams, | 184 void CallTest::CreateSendConfig(size_t num_video_streams, |
185 size_t num_audio_streams, | |
107 Transport* send_transport) { | 186 Transport* send_transport) { |
108 assert(num_streams <= kNumSsrcs); | 187 RTC_DCHECK(num_video_streams <= kNumSsrcs); |
188 RTC_DCHECK_LE(num_audio_streams, 1u); | |
189 RTC_DCHECK(num_audio_streams == 0 || voe_send_channel_id_ >= 0); | |
109 video_send_config_ = VideoSendStream::Config(send_transport); | 190 video_send_config_ = VideoSendStream::Config(send_transport); |
110 video_send_config_.encoder_settings.encoder = &fake_encoder_; | 191 video_send_config_.encoder_settings.encoder = &fake_encoder_; |
111 video_send_config_.encoder_settings.payload_name = "FAKE"; | 192 video_send_config_.encoder_settings.payload_name = "FAKE"; |
112 video_send_config_.encoder_settings.payload_type = kFakeSendPayloadType; | 193 video_send_config_.encoder_settings.payload_type = kFakeVideoSendPayloadType; |
113 video_send_config_.rtp.extensions.push_back( | 194 video_send_config_.rtp.extensions.push_back( |
114 RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeExtensionId)); | 195 RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeExtensionId)); |
115 video_encoder_config_.streams = test::CreateVideoStreams(num_streams); | 196 video_encoder_config_.streams = test::CreateVideoStreams(num_video_streams); |
116 for (size_t i = 0; i < num_streams; ++i) | 197 for (size_t i = 0; i < num_video_streams; ++i) |
117 video_send_config_.rtp.ssrcs.push_back(kSendSsrcs[i]); | 198 video_send_config_.rtp.ssrcs.push_back(kVideoSendSsrcs[i]); |
118 video_send_config_.rtp.extensions.push_back( | 199 video_send_config_.rtp.extensions.push_back( |
119 RtpExtension(RtpExtension::kVideoRotation, kVideoRotationRtpExtensionId)); | 200 RtpExtension(RtpExtension::kVideoRotation, kVideoRotationRtpExtensionId)); |
201 | |
202 if (num_audio_streams > 0) { | |
203 audio_send_config_ = AudioSendStream::Config(send_transport); | |
204 audio_send_config_.voe_channel_id = voe_send_channel_id_; | |
205 audio_send_config_.rtp.ssrc = kAudioSendSsrc; | |
206 } | |
120 } | 207 } |
121 | 208 |
122 void CallTest::CreateMatchingReceiveConfigs( | 209 void CallTest::CreateMatchingReceiveConfigs(bool create_audio_recv_stream, |
123 Transport* rtcp_send_transport) { | 210 Transport* rtcp_send_transport) { |
124 assert(!video_send_config_.rtp.ssrcs.empty()); | 211 RTC_DCHECK(!video_send_config_.rtp.ssrcs.empty()); |
125 assert(video_receive_configs_.empty()); | 212 RTC_DCHECK(video_receive_configs_.empty()); |
126 assert(allocated_decoders_.empty()); | 213 RTC_DCHECK(allocated_decoders_.empty()); |
127 VideoReceiveStream::Config config(rtcp_send_transport); | 214 RTC_DCHECK(!create_audio_recv_stream || voe_send_channel_id_ >= 0); |
128 config.rtp.remb = true; | 215 VideoReceiveStream::Config video_config(rtcp_send_transport); |
129 config.rtp.local_ssrc = kReceiverLocalSsrc; | 216 video_config.rtp.remb = true; |
217 video_config.rtp.local_ssrc = kReceiverLocalVideoSsrc; | |
130 for (const RtpExtension& extension : video_send_config_.rtp.extensions) | 218 for (const RtpExtension& extension : video_send_config_.rtp.extensions) |
131 config.rtp.extensions.push_back(extension); | 219 video_config.rtp.extensions.push_back(extension); |
132 for (size_t i = 0; i < video_send_config_.rtp.ssrcs.size(); ++i) { | 220 for (size_t i = 0; i < video_send_config_.rtp.ssrcs.size(); ++i) { |
133 VideoReceiveStream::Decoder decoder = | 221 VideoReceiveStream::Decoder decoder = |
134 test::CreateMatchingDecoder(video_send_config_.encoder_settings); | 222 test::CreateMatchingDecoder(video_send_config_.encoder_settings); |
135 allocated_decoders_.push_back(decoder.decoder); | 223 allocated_decoders_.push_back(decoder.decoder); |
136 config.decoders.clear(); | 224 video_config.decoders.clear(); |
137 config.decoders.push_back(decoder); | 225 video_config.decoders.push_back(decoder); |
138 config.rtp.remote_ssrc = video_send_config_.rtp.ssrcs[i]; | 226 video_config.rtp.remote_ssrc = video_send_config_.rtp.ssrcs[i]; |
139 video_receive_configs_.push_back(config); | 227 video_receive_configs_.push_back(video_config); |
228 } | |
229 | |
230 if (create_audio_recv_stream) { | |
231 AudioReceiveStream::Config audio_config; | |
232 audio_config.rtp.local_ssrc = kReceiverLocalAudioSsrc; | |
233 audio_config.rtcp_send_transport = rtcp_send_transport; | |
234 audio_config.voe_channel_id = voe_recv_channel_id_; | |
235 audio_config.rtp.remote_ssrc = audio_send_config_.rtp.ssrc; | |
236 audio_receive_configs_.push_back(audio_config); | |
140 } | 237 } |
141 } | 238 } |
142 | 239 |
143 void CallTest::CreateFrameGeneratorCapturer() { | 240 void CallTest::CreateFrameGeneratorCapturer() { |
144 VideoStream stream = video_encoder_config_.streams.back(); | 241 VideoStream stream = video_encoder_config_.streams.back(); |
145 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create( | 242 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create( |
146 video_send_stream_->Input(), stream.width, stream.height, | 243 video_send_stream_->Input(), stream.width, stream.height, |
147 stream.max_framerate, clock_)); | 244 stream.max_framerate, clock_)); |
148 } | 245 } |
149 | 246 |
150 void CallTest::CreateStreams() { | 247 void CallTest::CreateFakeAudioDevices() { |
151 assert(video_send_stream_ == NULL); | 248 fake_send_audio_device_.reset(new FakeAudioDevice( |
152 assert(video_receive_streams_.empty()); | 249 clock_, test::ResourcePath("voice_engine/audio_long16", "pcm"))); |
250 fake_recv_audio_device_.reset(new FakeAudioDevice( | |
251 clock_, test::ResourcePath("voice_engine/audio_long16", "pcm"))); | |
252 } | |
253 | |
254 void CallTest::CreateVideoStreams() { | |
255 RTC_DCHECK(video_send_stream_ == nullptr); | |
256 RTC_DCHECK(video_receive_streams_.empty()); | |
257 RTC_DCHECK(audio_send_stream_ == nullptr); | |
258 RTC_DCHECK(audio_receive_streams_.empty()); | |
153 | 259 |
154 video_send_stream_ = sender_call_->CreateVideoSendStream( | 260 video_send_stream_ = sender_call_->CreateVideoSendStream( |
155 video_send_config_, video_encoder_config_); | 261 video_send_config_, video_encoder_config_); |
156 | |
157 for (size_t i = 0; i < video_receive_configs_.size(); ++i) { | 262 for (size_t i = 0; i < video_receive_configs_.size(); ++i) { |
158 video_receive_streams_.push_back( | 263 video_receive_streams_.push_back( |
159 receiver_call_->CreateVideoReceiveStream(video_receive_configs_[i])); | 264 receiver_call_->CreateVideoReceiveStream(video_receive_configs_[i])); |
160 } | 265 } |
161 } | 266 } |
162 | 267 |
268 void CallTest::CreateAudioStreams() { | |
269 audio_send_stream_ = sender_call_->CreateAudioSendStream(audio_send_config_); | |
270 for (size_t i = 0; i < audio_receive_configs_.size(); ++i) { | |
271 audio_receive_streams_.push_back( | |
272 receiver_call_->CreateAudioReceiveStream(audio_receive_configs_[i])); | |
273 } | |
274 CodecInst isac = {kAudioSendPayloadType, "ISAC", 16000, 480, 1, 32000}; | |
275 EXPECT_EQ(0, voe_send_codec_->SetSendCodec(voe_send_channel_id_, isac)); | |
276 } | |
277 | |
163 void CallTest::DestroyStreams() { | 278 void CallTest::DestroyStreams() { |
164 if (video_send_stream_ != NULL) | 279 if (video_send_stream_) |
165 sender_call_->DestroyVideoSendStream(video_send_stream_); | 280 sender_call_->DestroyVideoSendStream(video_send_stream_); |
166 video_send_stream_ = NULL; | 281 video_send_stream_ = nullptr; |
167 for (size_t i = 0; i < video_receive_streams_.size(); ++i) | 282 for (VideoReceiveStream* video_recv_stream : video_receive_streams_) |
168 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[i]); | 283 receiver_call_->DestroyVideoReceiveStream(video_recv_stream); |
284 | |
285 if (audio_send_stream_) | |
286 sender_call_->DestroyAudioSendStream(audio_send_stream_); | |
287 audio_send_stream_ = nullptr; | |
288 for (AudioReceiveStream* audio_recv_stream : audio_receive_streams_) | |
289 receiver_call_->DestroyAudioReceiveStream(audio_recv_stream); | |
169 video_receive_streams_.clear(); | 290 video_receive_streams_.clear(); |
291 | |
170 allocated_decoders_.clear(); | 292 allocated_decoders_.clear(); |
171 } | 293 } |
172 | 294 |
295 void CallTest::CreateVoiceEngines() { | |
296 CreateFakeAudioDevices(); | |
297 send_voice_engine_ = VoiceEngine::Create(); | |
298 voe_send_base_ = VoEBase::GetInterface(send_voice_engine_); | |
299 voe_send_network_ = VoENetwork::GetInterface(send_voice_engine_); | |
300 voe_send_codec_ = VoECodec::GetInterface(send_voice_engine_); | |
301 EXPECT_EQ(0, voe_send_base_->Init(fake_send_audio_device_.get(), nullptr)); | |
302 Config voe_config; | |
303 voe_config.Set<VoicePacing>(new VoicePacing(true)); | |
304 voe_send_channel_id_ = voe_send_base_->CreateChannel(voe_config); | |
305 EXPECT_GE(voe_send_channel_id_, 0); | |
306 | |
307 recv_voice_engine_ = VoiceEngine::Create(); | |
308 voe_recv_base_ = VoEBase::GetInterface(recv_voice_engine_); | |
309 voe_recv_network_ = VoENetwork::GetInterface(recv_voice_engine_); | |
310 voe_recv_codec_ = VoECodec::GetInterface(recv_voice_engine_); | |
311 EXPECT_EQ(0, voe_recv_base_->Init(fake_recv_audio_device_.get(), nullptr)); | |
312 voe_recv_channel_id_ = voe_recv_base_->CreateChannel(); | |
313 EXPECT_GE(voe_recv_channel_id_, 0); | |
314 } | |
315 | |
316 void CallTest::SetupVoiceEngineTransports(PacketTransport* send_transport, | |
317 PacketTransport* recv_transport) { | |
318 voe_send_transport_adapter_.reset( | |
319 new internal::TransportAdapter(send_transport)); | |
320 voe_send_transport_adapter_->Enable(); | |
321 EXPECT_EQ(0, voe_send_network_->RegisterExternalTransport( | |
322 voe_send_channel_id_, *voe_send_transport_adapter_.get())); | |
323 | |
324 voe_recv_transport_adapter_.reset( | |
325 new internal::TransportAdapter(recv_transport)); | |
326 voe_recv_transport_adapter_->Enable(); | |
327 EXPECT_EQ(0, voe_recv_network_->RegisterExternalTransport( | |
328 voe_recv_channel_id_, *voe_recv_transport_adapter_.get())); | |
329 } | |
330 | |
331 void CallTest::DestroyVoiceEngines() { | |
332 voe_recv_base_->DeleteChannel(voe_recv_channel_id_); | |
333 voe_recv_channel_id_ = -1; | |
334 voe_recv_base_->Release(); | |
335 voe_recv_base_ = nullptr; | |
336 voe_recv_network_->Release(); | |
337 voe_recv_network_ = nullptr; | |
338 voe_recv_codec_->Release(); | |
339 voe_recv_codec_ = nullptr; | |
340 | |
341 voe_send_base_->DeleteChannel(voe_send_channel_id_); | |
342 voe_send_channel_id_ = -1; | |
343 voe_send_base_->Release(); | |
344 voe_send_base_ = nullptr; | |
345 voe_send_network_->Release(); | |
346 voe_send_network_ = nullptr; | |
347 voe_send_codec_->Release(); | |
348 voe_send_codec_ = nullptr; | |
349 | |
350 VoiceEngine::Delete(send_voice_engine_); | |
351 send_voice_engine_ = nullptr; | |
352 VoiceEngine::Delete(recv_voice_engine_); | |
353 recv_voice_engine_ = nullptr; | |
354 } | |
355 | |
173 const int CallTest::kDefaultTimeoutMs = 30 * 1000; | 356 const int CallTest::kDefaultTimeoutMs = 30 * 1000; |
174 const int CallTest::kLongTimeoutMs = 120 * 1000; | 357 const int CallTest::kLongTimeoutMs = 120 * 1000; |
175 const uint8_t CallTest::kSendPayloadType = 100; | 358 const uint8_t CallTest::kVideoSendPayloadType = 100; |
176 const uint8_t CallTest::kFakeSendPayloadType = 125; | 359 const uint8_t CallTest::kFakeVideoSendPayloadType = 125; |
177 const uint8_t CallTest::kSendRtxPayloadType = 98; | 360 const uint8_t CallTest::kSendRtxPayloadType = 98; |
178 const uint8_t CallTest::kRedPayloadType = 118; | 361 const uint8_t CallTest::kRedPayloadType = 118; |
179 const uint8_t CallTest::kRtxRedPayloadType = 99; | 362 const uint8_t CallTest::kRtxRedPayloadType = 99; |
180 const uint8_t CallTest::kUlpfecPayloadType = 119; | 363 const uint8_t CallTest::kUlpfecPayloadType = 119; |
364 const uint8_t CallTest::kAudioSendPayloadType = 103; | |
181 const uint32_t CallTest::kSendRtxSsrcs[kNumSsrcs] = {0xBADCAFD, 0xBADCAFE, | 365 const uint32_t CallTest::kSendRtxSsrcs[kNumSsrcs] = {0xBADCAFD, 0xBADCAFE, |
182 0xBADCAFF}; | 366 0xBADCAFF}; |
183 const uint32_t CallTest::kSendSsrcs[kNumSsrcs] = {0xC0FFED, 0xC0FFEE, 0xC0FFEF}; | 367 const uint32_t CallTest::kVideoSendSsrcs[kNumSsrcs] = {0xC0FFED, 0xC0FFEE, |
184 const uint32_t CallTest::kReceiverLocalSsrc = 0x123456; | 368 0xC0FFEF}; |
369 const uint32_t CallTest::kAudioSendSsrc = 0xDEADBEEF; | |
370 const uint32_t CallTest::kReceiverLocalVideoSsrc = 0x123456; | |
371 const uint32_t CallTest::kReceiverLocalAudioSsrc = 0x1234567; | |
185 const int CallTest::kNackRtpHistoryMs = 1000; | 372 const int CallTest::kNackRtpHistoryMs = 1000; |
186 | 373 |
187 BaseTest::BaseTest(unsigned int timeout_ms) : RtpRtcpObserver(timeout_ms) { | 374 BaseTest::BaseTest(unsigned int timeout_ms) : RtpRtcpObserver(timeout_ms) { |
188 } | 375 } |
189 | 376 |
190 BaseTest::~BaseTest() { | 377 BaseTest::~BaseTest() { |
191 } | 378 } |
192 | 379 |
193 Call::Config BaseTest::GetSenderCallConfig() { | 380 Call::Config BaseTest::GetSenderCallConfig() { |
194 return Call::Config(); | 381 return Call::Config(); |
195 } | 382 } |
196 | 383 |
197 Call::Config BaseTest::GetReceiverCallConfig() { | 384 Call::Config BaseTest::GetReceiverCallConfig() { |
198 return Call::Config(); | 385 return Call::Config(); |
199 } | 386 } |
200 | 387 |
201 void BaseTest::OnCallsCreated(Call* sender_call, Call* receiver_call) { | 388 void BaseTest::OnCallsCreated(Call* sender_call, Call* receiver_call) { |
202 } | 389 } |
203 | 390 |
204 void BaseTest::OnTransportsCreated(PacketTransport* send_transport, | 391 void BaseTest::OnTransportsCreated(PacketTransport* send_transport, |
205 PacketTransport* receive_transport) {} | 392 PacketTransport* receive_transport) {} |
206 | 393 |
207 size_t BaseTest::GetNumStreams() const { | 394 size_t BaseTest::GetNumVideoStreams() const { |
208 return 1; | 395 return 1; |
209 } | 396 } |
210 | 397 |
398 size_t BaseTest::GetNumAudioStreams() const { | |
399 return 0; | |
400 } | |
401 | |
211 void BaseTest::ModifyVideoConfigs( | 402 void BaseTest::ModifyVideoConfigs( |
212 VideoSendStream::Config* send_config, | 403 VideoSendStream::Config* send_config, |
213 std::vector<VideoReceiveStream::Config>* receive_configs, | 404 std::vector<VideoReceiveStream::Config>* receive_configs, |
214 VideoEncoderConfig* encoder_config) {} | 405 VideoEncoderConfig* encoder_config) {} |
215 | 406 |
216 void BaseTest::OnVideoStreamsCreated( | 407 void BaseTest::OnVideoStreamsCreated( |
217 VideoSendStream* send_stream, | 408 VideoSendStream* send_stream, |
218 const std::vector<VideoReceiveStream*>& receive_streams) {} | 409 const std::vector<VideoReceiveStream*>& receive_streams) {} |
219 | 410 |
411 void BaseTest::ModifyAudioConfigs( | |
412 AudioSendStream::Config* send_config, | |
413 std::vector<AudioReceiveStream::Config>* receive_configs) {} | |
414 | |
415 void BaseTest::OnAudioStreamsCreated( | |
416 AudioSendStream* send_stream, | |
417 const std::vector<AudioReceiveStream*>& receive_streams) {} | |
418 | |
220 void BaseTest::OnFrameGeneratorCapturerCreated( | 419 void BaseTest::OnFrameGeneratorCapturerCreated( |
221 FrameGeneratorCapturer* frame_generator_capturer) { | 420 FrameGeneratorCapturer* frame_generator_capturer) { |
222 } | 421 } |
223 | 422 |
224 SendTest::SendTest(unsigned int timeout_ms) : BaseTest(timeout_ms) { | 423 SendTest::SendTest(unsigned int timeout_ms) : BaseTest(timeout_ms) { |
225 } | 424 } |
226 | 425 |
227 bool SendTest::ShouldCreateReceivers() const { | 426 bool SendTest::ShouldCreateReceivers() const { |
228 return false; | 427 return false; |
229 } | 428 } |
230 | 429 |
231 EndToEndTest::EndToEndTest(unsigned int timeout_ms) : BaseTest(timeout_ms) { | 430 EndToEndTest::EndToEndTest(unsigned int timeout_ms) : BaseTest(timeout_ms) { |
232 } | 431 } |
233 | 432 |
234 bool EndToEndTest::ShouldCreateReceivers() const { | 433 bool EndToEndTest::ShouldCreateReceivers() const { |
235 return true; | 434 return true; |
236 } | 435 } |
237 | 436 |
238 } // namespace test | 437 } // namespace test |
239 } // namespace webrtc | 438 } // namespace webrtc |
OLD | NEW |