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) { |
| 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); |
| 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_); |
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 |