Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: webrtc/test/call_test.cc

Issue 1537273003: Step 1 to prepare call_test.* for combined audio/video tests. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleanups Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/test/call_test.h ('k') | webrtc/video/end_to_end_tests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/test/call_test.h" 10 #include "webrtc/test/call_test.h"
11 #include "webrtc/test/encoder_settings.h" 11 #include "webrtc/test/encoder_settings.h"
12 12
13 namespace webrtc { 13 namespace webrtc {
14 namespace test { 14 namespace test {
15 15
16 namespace { 16 namespace {
17 const int kVideoRotationRtpExtensionId = 4; 17 const int kVideoRotationRtpExtensionId = 4;
18 } 18 }
19 19
20 CallTest::CallTest() 20 CallTest::CallTest()
21 : clock_(Clock::GetRealTimeClock()), 21 : clock_(Clock::GetRealTimeClock()),
22 send_config_(nullptr), 22 video_send_config_(nullptr),
23 send_stream_(NULL), 23 video_send_stream_(NULL),
24 fake_encoder_(clock_) { 24 fake_encoder_(clock_) {}
25 }
26 25
27 CallTest::~CallTest() { 26 CallTest::~CallTest() {
28 } 27 }
29 28
30 void CallTest::RunBaseTest(BaseTest* test, 29 void CallTest::RunBaseTest(BaseTest* test,
31 const FakeNetworkPipe::Config& config) { 30 const FakeNetworkPipe::Config& config) {
32 CreateSenderCall(test->GetSenderCallConfig()); 31 CreateSenderCall(test->GetSenderCallConfig());
33 if (test->ShouldCreateReceivers()) 32 if (test->ShouldCreateReceivers())
34 CreateReceiverCall(test->GetReceiverCallConfig()); 33 CreateReceiverCall(test->GetReceiverCallConfig());
35 send_transport_.reset(new PacketTransport( 34 send_transport_.reset(new PacketTransport(
36 sender_call_.get(), test, test::PacketTransport::kSender, config)); 35 sender_call_.get(), test, test::PacketTransport::kSender, config));
37 receive_transport_.reset(new PacketTransport( 36 receive_transport_.reset(new PacketTransport(
38 nullptr, test, test::PacketTransport::kReceiver, config)); 37 nullptr, test, test::PacketTransport::kReceiver, config));
39 test->OnTransportsCreated(send_transport_.get(), receive_transport_.get()); 38 test->OnTransportsCreated(send_transport_.get(), receive_transport_.get());
40 test->OnCallsCreated(sender_call_.get(), receiver_call_.get()); 39 test->OnCallsCreated(sender_call_.get(), receiver_call_.get());
41 40
42 if (test->ShouldCreateReceivers()) { 41 if (test->ShouldCreateReceivers()) {
43 send_transport_->SetReceiver(receiver_call_->Receiver()); 42 send_transport_->SetReceiver(receiver_call_->Receiver());
44 receive_transport_->SetReceiver(sender_call_->Receiver()); 43 receive_transport_->SetReceiver(sender_call_->Receiver());
45 } else { 44 } else {
46 // Sender-only call delivers to itself. 45 // Sender-only call delivers to itself.
47 send_transport_->SetReceiver(sender_call_->Receiver()); 46 send_transport_->SetReceiver(sender_call_->Receiver());
48 receive_transport_->SetReceiver(nullptr); 47 receive_transport_->SetReceiver(nullptr);
49 } 48 }
50 49
51 CreateSendConfig(test->GetNumStreams(), send_transport_.get()); 50 CreateSendConfig(test->GetNumStreams(), send_transport_.get());
52 if (test->ShouldCreateReceivers()) { 51 if (test->ShouldCreateReceivers()) {
53 CreateMatchingReceiveConfigs(receive_transport_.get()); 52 CreateMatchingReceiveConfigs(receive_transport_.get());
54 } 53 }
55 test->ModifyConfigs(&send_config_, &receive_configs_, &encoder_config_); 54 test->ModifyVideoConfigs(&video_send_config_, &video_receive_configs_,
55 &video_encoder_config_);
56 CreateStreams(); 56 CreateStreams();
57 test->OnStreamsCreated(send_stream_, receive_streams_); 57 test->OnVideoStreamsCreated(video_send_stream_, video_receive_streams_);
58 58
59 CreateFrameGeneratorCapturer(); 59 CreateFrameGeneratorCapturer();
60 test->OnFrameGeneratorCapturerCreated(frame_generator_capturer_.get()); 60 test->OnFrameGeneratorCapturerCreated(frame_generator_capturer_.get());
61 61
62 Start(); 62 Start();
63 test->PerformTest(); 63 test->PerformTest();
64 send_transport_->StopSending(); 64 send_transport_->StopSending();
65 receive_transport_->StopSending(); 65 receive_transport_->StopSending();
66 Stop(); 66 Stop();
67 67
68 DestroyStreams(); 68 DestroyStreams();
69 } 69 }
70 70
71 void CallTest::Start() { 71 void CallTest::Start() {
72 send_stream_->Start(); 72 video_send_stream_->Start();
73 for (size_t i = 0; i < receive_streams_.size(); ++i) 73 for (size_t i = 0; i < video_receive_streams_.size(); ++i)
74 receive_streams_[i]->Start(); 74 video_receive_streams_[i]->Start();
75 if (frame_generator_capturer_.get() != NULL) 75 if (frame_generator_capturer_.get() != NULL)
76 frame_generator_capturer_->Start(); 76 frame_generator_capturer_->Start();
77 } 77 }
78 78
79 void CallTest::Stop() { 79 void CallTest::Stop() {
80 if (frame_generator_capturer_.get() != NULL) 80 if (frame_generator_capturer_.get() != NULL)
81 frame_generator_capturer_->Stop(); 81 frame_generator_capturer_->Stop();
82 for (size_t i = 0; i < receive_streams_.size(); ++i) 82 for (size_t i = 0; i < video_receive_streams_.size(); ++i)
83 receive_streams_[i]->Stop(); 83 video_receive_streams_[i]->Stop();
84 send_stream_->Stop(); 84 video_send_stream_->Stop();
85 } 85 }
86 86
87 void CallTest::CreateCalls(const Call::Config& sender_config, 87 void CallTest::CreateCalls(const Call::Config& sender_config,
88 const Call::Config& receiver_config) { 88 const Call::Config& receiver_config) {
89 CreateSenderCall(sender_config); 89 CreateSenderCall(sender_config);
90 CreateReceiverCall(receiver_config); 90 CreateReceiverCall(receiver_config);
91 } 91 }
92 92
93 void CallTest::CreateSenderCall(const Call::Config& config) { 93 void CallTest::CreateSenderCall(const Call::Config& config) {
94 sender_call_.reset(Call::Create(config)); 94 sender_call_.reset(Call::Create(config));
95 } 95 }
96 96
97 void CallTest::CreateReceiverCall(const Call::Config& config) { 97 void CallTest::CreateReceiverCall(const Call::Config& config) {
98 receiver_call_.reset(Call::Create(config)); 98 receiver_call_.reset(Call::Create(config));
99 } 99 }
100 100
101 void CallTest::DestroyCalls() { 101 void CallTest::DestroyCalls() {
102 sender_call_.reset(nullptr); 102 sender_call_.reset(nullptr);
103 receiver_call_.reset(nullptr); 103 receiver_call_.reset(nullptr);
104 } 104 }
105 105
106 void CallTest::CreateSendConfig(size_t num_streams, 106 void CallTest::CreateSendConfig(size_t num_streams,
107 Transport* send_transport) { 107 Transport* send_transport) {
108 assert(num_streams <= kNumSsrcs); 108 assert(num_streams <= kNumSsrcs);
109 send_config_ = VideoSendStream::Config(send_transport); 109 video_send_config_ = VideoSendStream::Config(send_transport);
110 send_config_.encoder_settings.encoder = &fake_encoder_; 110 video_send_config_.encoder_settings.encoder = &fake_encoder_;
111 send_config_.encoder_settings.payload_name = "FAKE"; 111 video_send_config_.encoder_settings.payload_name = "FAKE";
112 send_config_.encoder_settings.payload_type = kFakeSendPayloadType; 112 video_send_config_.encoder_settings.payload_type = kFakeSendPayloadType;
113 send_config_.rtp.extensions.push_back( 113 video_send_config_.rtp.extensions.push_back(
114 RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeExtensionId)); 114 RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeExtensionId));
115 encoder_config_.streams = test::CreateVideoStreams(num_streams); 115 video_encoder_config_.streams = test::CreateVideoStreams(num_streams);
116 for (size_t i = 0; i < num_streams; ++i) 116 for (size_t i = 0; i < num_streams; ++i)
117 send_config_.rtp.ssrcs.push_back(kSendSsrcs[i]); 117 video_send_config_.rtp.ssrcs.push_back(kSendSsrcs[i]);
118 send_config_.rtp.extensions.push_back( 118 video_send_config_.rtp.extensions.push_back(
119 RtpExtension(RtpExtension::kVideoRotation, kVideoRotationRtpExtensionId)); 119 RtpExtension(RtpExtension::kVideoRotation, kVideoRotationRtpExtensionId));
120 } 120 }
121 121
122 void CallTest::CreateMatchingReceiveConfigs( 122 void CallTest::CreateMatchingReceiveConfigs(
123 Transport* rtcp_send_transport) { 123 Transport* rtcp_send_transport) {
124 assert(!send_config_.rtp.ssrcs.empty()); 124 assert(!video_send_config_.rtp.ssrcs.empty());
125 assert(receive_configs_.empty()); 125 assert(video_receive_configs_.empty());
126 assert(allocated_decoders_.empty()); 126 assert(allocated_decoders_.empty());
127 VideoReceiveStream::Config config(rtcp_send_transport); 127 VideoReceiveStream::Config config(rtcp_send_transport);
128 config.rtp.remb = true; 128 config.rtp.remb = true;
129 config.rtp.local_ssrc = kReceiverLocalSsrc; 129 config.rtp.local_ssrc = kReceiverLocalSsrc;
130 for (const RtpExtension& extension : send_config_.rtp.extensions) 130 for (const RtpExtension& extension : video_send_config_.rtp.extensions)
131 config.rtp.extensions.push_back(extension); 131 config.rtp.extensions.push_back(extension);
132 for (size_t i = 0; i < send_config_.rtp.ssrcs.size(); ++i) { 132 for (size_t i = 0; i < video_send_config_.rtp.ssrcs.size(); ++i) {
133 VideoReceiveStream::Decoder decoder = 133 VideoReceiveStream::Decoder decoder =
134 test::CreateMatchingDecoder(send_config_.encoder_settings); 134 test::CreateMatchingDecoder(video_send_config_.encoder_settings);
135 allocated_decoders_.push_back(decoder.decoder); 135 allocated_decoders_.push_back(decoder.decoder);
136 config.decoders.clear(); 136 config.decoders.clear();
137 config.decoders.push_back(decoder); 137 config.decoders.push_back(decoder);
138 config.rtp.remote_ssrc = send_config_.rtp.ssrcs[i]; 138 config.rtp.remote_ssrc = video_send_config_.rtp.ssrcs[i];
139 receive_configs_.push_back(config); 139 video_receive_configs_.push_back(config);
140 } 140 }
141 } 141 }
142 142
143 void CallTest::CreateFrameGeneratorCapturer() { 143 void CallTest::CreateFrameGeneratorCapturer() {
144 VideoStream stream = encoder_config_.streams.back(); 144 VideoStream stream = video_encoder_config_.streams.back();
145 frame_generator_capturer_.reset( 145 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create(
146 test::FrameGeneratorCapturer::Create(send_stream_->Input(), 146 video_send_stream_->Input(), stream.width, stream.height,
147 stream.width, 147 stream.max_framerate, clock_));
148 stream.height,
149 stream.max_framerate,
150 clock_));
151 } 148 }
152 149
153 void CallTest::CreateStreams() { 150 void CallTest::CreateStreams() {
154 assert(send_stream_ == NULL); 151 assert(video_send_stream_ == NULL);
155 assert(receive_streams_.empty()); 152 assert(video_receive_streams_.empty());
156 153
157 send_stream_ = 154 video_send_stream_ = sender_call_->CreateVideoSendStream(
158 sender_call_->CreateVideoSendStream(send_config_, encoder_config_); 155 video_send_config_, video_encoder_config_);
159 156
160 for (size_t i = 0; i < receive_configs_.size(); ++i) { 157 for (size_t i = 0; i < video_receive_configs_.size(); ++i) {
161 receive_streams_.push_back( 158 video_receive_streams_.push_back(
162 receiver_call_->CreateVideoReceiveStream(receive_configs_[i])); 159 receiver_call_->CreateVideoReceiveStream(video_receive_configs_[i]));
163 } 160 }
164 } 161 }
165 162
166 void CallTest::DestroyStreams() { 163 void CallTest::DestroyStreams() {
167 if (send_stream_ != NULL) 164 if (video_send_stream_ != NULL)
168 sender_call_->DestroyVideoSendStream(send_stream_); 165 sender_call_->DestroyVideoSendStream(video_send_stream_);
169 send_stream_ = NULL; 166 video_send_stream_ = NULL;
170 for (size_t i = 0; i < receive_streams_.size(); ++i) 167 for (size_t i = 0; i < video_receive_streams_.size(); ++i)
171 receiver_call_->DestroyVideoReceiveStream(receive_streams_[i]); 168 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[i]);
172 receive_streams_.clear(); 169 video_receive_streams_.clear();
173 allocated_decoders_.clear(); 170 allocated_decoders_.clear();
174 } 171 }
175 172
176 const int CallTest::kDefaultTimeoutMs = 30 * 1000; 173 const int CallTest::kDefaultTimeoutMs = 30 * 1000;
177 const int CallTest::kLongTimeoutMs = 120 * 1000; 174 const int CallTest::kLongTimeoutMs = 120 * 1000;
178 const uint8_t CallTest::kSendPayloadType = 100; 175 const uint8_t CallTest::kSendPayloadType = 100;
179 const uint8_t CallTest::kFakeSendPayloadType = 125; 176 const uint8_t CallTest::kFakeSendPayloadType = 125;
180 const uint8_t CallTest::kSendRtxPayloadType = 98; 177 const uint8_t CallTest::kSendRtxPayloadType = 98;
181 const uint8_t CallTest::kRedPayloadType = 118; 178 const uint8_t CallTest::kRedPayloadType = 118;
182 const uint8_t CallTest::kRtxRedPayloadType = 99; 179 const uint8_t CallTest::kRtxRedPayloadType = 99;
(...skipping 21 matching lines...) Expand all
204 void BaseTest::OnCallsCreated(Call* sender_call, Call* receiver_call) { 201 void BaseTest::OnCallsCreated(Call* sender_call, Call* receiver_call) {
205 } 202 }
206 203
207 void BaseTest::OnTransportsCreated(PacketTransport* send_transport, 204 void BaseTest::OnTransportsCreated(PacketTransport* send_transport,
208 PacketTransport* receive_transport) {} 205 PacketTransport* receive_transport) {}
209 206
210 size_t BaseTest::GetNumStreams() const { 207 size_t BaseTest::GetNumStreams() const {
211 return 1; 208 return 1;
212 } 209 }
213 210
214 void BaseTest::ModifyConfigs( 211 void BaseTest::ModifyVideoConfigs(
215 VideoSendStream::Config* send_config, 212 VideoSendStream::Config* send_config,
216 std::vector<VideoReceiveStream::Config>* receive_configs, 213 std::vector<VideoReceiveStream::Config>* receive_configs,
217 VideoEncoderConfig* encoder_config) { 214 VideoEncoderConfig* encoder_config) {}
218 }
219 215
220 void BaseTest::OnStreamsCreated( 216 void BaseTest::OnVideoStreamsCreated(
221 VideoSendStream* send_stream, 217 VideoSendStream* send_stream,
222 const std::vector<VideoReceiveStream*>& receive_streams) { 218 const std::vector<VideoReceiveStream*>& receive_streams) {}
223 }
224 219
225 void BaseTest::OnFrameGeneratorCapturerCreated( 220 void BaseTest::OnFrameGeneratorCapturerCreated(
226 FrameGeneratorCapturer* frame_generator_capturer) { 221 FrameGeneratorCapturer* frame_generator_capturer) {
227 } 222 }
228 223
229 SendTest::SendTest(unsigned int timeout_ms) : BaseTest(timeout_ms) { 224 SendTest::SendTest(unsigned int timeout_ms) : BaseTest(timeout_ms) {
230 } 225 }
231 226
232 bool SendTest::ShouldCreateReceivers() const { 227 bool SendTest::ShouldCreateReceivers() const {
233 return false; 228 return false;
234 } 229 }
235 230
236 EndToEndTest::EndToEndTest(unsigned int timeout_ms) : BaseTest(timeout_ms) { 231 EndToEndTest::EndToEndTest(unsigned int timeout_ms) : BaseTest(timeout_ms) {
237 } 232 }
238 233
239 bool EndToEndTest::ShouldCreateReceivers() const { 234 bool EndToEndTest::ShouldCreateReceivers() const {
240 return true; 235 return true;
241 } 236 }
242 237
243 } // namespace test 238 } // namespace test
244 } // namespace webrtc 239 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/call_test.h ('k') | webrtc/video/end_to_end_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698