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