OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 <functional> | 10 #include <functional> |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 109 |
110 Callback callback_; | 110 Callback callback_; |
111 }; | 111 }; |
112 } // namespace | 112 } // namespace |
113 | 113 |
114 static const int kTOFExtensionId = 4; | 114 static const int kTOFExtensionId = 4; |
115 static const int kASTExtensionId = 5; | 115 static const int kASTExtensionId = 5; |
116 | 116 |
117 class BitrateEstimatorTest : public test::CallTest { | 117 class BitrateEstimatorTest : public test::CallTest { |
118 public: | 118 public: |
119 BitrateEstimatorTest() | 119 BitrateEstimatorTest() : receive_config_(nullptr) {} |
120 : receiver_trace_(), | |
121 send_transport_(), | |
122 receive_transport_(), | |
123 sender_call_(), | |
124 receiver_call_(), | |
125 receive_config_(nullptr), | |
126 streams_() { | |
127 } | |
128 | 120 |
129 virtual ~BitrateEstimatorTest() { | 121 virtual ~BitrateEstimatorTest() { |
130 EXPECT_TRUE(streams_.empty()); | 122 EXPECT_TRUE(streams_.empty()); |
131 } | 123 } |
132 | 124 |
133 virtual void SetUp() { | 125 virtual void SetUp() { |
134 Call::Config config; | 126 Call::Config config; |
135 config.voice_engine = &fake_voice_engine_; | 127 config.voice_engine = &fake_voice_engine_; |
136 receiver_call_.reset(Call::Create(config)); | 128 receiver_call_.reset(Call::Create(config)); |
137 sender_call_.reset(Call::Create(config)); | 129 sender_call_.reset(Call::Create(config)); |
138 | 130 |
139 send_transport_.SetReceiver(receiver_call_->Receiver()); | 131 send_transport_.reset(new test::DirectTransport(sender_call_.get())); |
140 receive_transport_.SetReceiver(sender_call_->Receiver()); | 132 send_transport_->SetReceiver(receiver_call_->Receiver()); |
| 133 receive_transport_.reset(new test::DirectTransport(receiver_call_.get())); |
| 134 receive_transport_->SetReceiver(sender_call_->Receiver()); |
141 | 135 |
142 send_config_ = VideoSendStream::Config(&send_transport_); | 136 send_config_ = VideoSendStream::Config(send_transport_.get()); |
143 send_config_.rtp.ssrcs.push_back(kSendSsrcs[0]); | 137 send_config_.rtp.ssrcs.push_back(kSendSsrcs[0]); |
144 // Encoders will be set separately per stream. | 138 // Encoders will be set separately per stream. |
145 send_config_.encoder_settings.encoder = nullptr; | 139 send_config_.encoder_settings.encoder = nullptr; |
146 send_config_.encoder_settings.payload_name = "FAKE"; | 140 send_config_.encoder_settings.payload_name = "FAKE"; |
147 send_config_.encoder_settings.payload_type = kFakeSendPayloadType; | 141 send_config_.encoder_settings.payload_type = kFakeSendPayloadType; |
148 encoder_config_.streams = test::CreateVideoStreams(1); | 142 encoder_config_.streams = test::CreateVideoStreams(1); |
149 | 143 |
150 receive_config_ = VideoReceiveStream::Config(&receive_transport_); | 144 receive_config_ = VideoReceiveStream::Config(receive_transport_.get()); |
151 // receive_config_.decoders will be set by every stream separately. | 145 // receive_config_.decoders will be set by every stream separately. |
152 receive_config_.rtp.remote_ssrc = send_config_.rtp.ssrcs[0]; | 146 receive_config_.rtp.remote_ssrc = send_config_.rtp.ssrcs[0]; |
153 receive_config_.rtp.local_ssrc = kReceiverLocalSsrc; | 147 receive_config_.rtp.local_ssrc = kReceiverLocalSsrc; |
154 receive_config_.rtp.remb = true; | 148 receive_config_.rtp.remb = true; |
155 receive_config_.rtp.extensions.push_back( | 149 receive_config_.rtp.extensions.push_back( |
156 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); | 150 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); |
157 receive_config_.rtp.extensions.push_back( | 151 receive_config_.rtp.extensions.push_back( |
158 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); | 152 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); |
159 } | 153 } |
160 | 154 |
161 virtual void TearDown() { | 155 virtual void TearDown() { |
162 std::for_each(streams_.begin(), streams_.end(), | 156 std::for_each(streams_.begin(), streams_.end(), |
163 std::mem_fun(&Stream::StopSending)); | 157 std::mem_fun(&Stream::StopSending)); |
164 | 158 |
165 send_transport_.StopSending(); | 159 send_transport_->StopSending(); |
166 receive_transport_.StopSending(); | 160 receive_transport_->StopSending(); |
167 | 161 |
168 while (!streams_.empty()) { | 162 while (!streams_.empty()) { |
169 delete streams_.back(); | 163 delete streams_.back(); |
170 streams_.pop_back(); | 164 streams_.pop_back(); |
171 } | 165 } |
172 | 166 |
173 receiver_call_.reset(); | 167 receiver_call_.reset(); |
174 } | 168 } |
175 | 169 |
176 protected: | 170 protected: |
(...skipping 27 matching lines...) Expand all Loading... |
204 if (receive_audio) { | 198 if (receive_audio) { |
205 AudioReceiveStream::Config receive_config; | 199 AudioReceiveStream::Config receive_config; |
206 receive_config.rtp.remote_ssrc = test_->send_config_.rtp.ssrcs[0]; | 200 receive_config.rtp.remote_ssrc = test_->send_config_.rtp.ssrcs[0]; |
207 // Bogus non-default id to prevent hitting a RTC_DCHECK when creating | 201 // Bogus non-default id to prevent hitting a RTC_DCHECK when creating |
208 // the AudioReceiveStream. Every receive stream has to correspond to | 202 // the AudioReceiveStream. Every receive stream has to correspond to |
209 // an underlying channel id. | 203 // an underlying channel id. |
210 receive_config.voe_channel_id = 0; | 204 receive_config.voe_channel_id = 0; |
211 receive_config.rtp.extensions.push_back( | 205 receive_config.rtp.extensions.push_back( |
212 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); | 206 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); |
213 receive_config.combined_audio_video_bwe = true; | 207 receive_config.combined_audio_video_bwe = true; |
214 audio_receive_stream_ = test_->receiver_call_->CreateAudioReceiveStream( | 208 audio_receive_stream_ = |
215 receive_config); | 209 test_->receiver_call_->CreateAudioReceiveStream(receive_config); |
216 } else { | 210 } else { |
217 VideoReceiveStream::Decoder decoder; | 211 VideoReceiveStream::Decoder decoder; |
218 decoder.decoder = &fake_decoder_; | 212 decoder.decoder = &fake_decoder_; |
219 decoder.payload_type = | 213 decoder.payload_type = |
220 test_->send_config_.encoder_settings.payload_type; | 214 test_->send_config_.encoder_settings.payload_type; |
221 decoder.payload_name = | 215 decoder.payload_name = |
222 test_->send_config_.encoder_settings.payload_name; | 216 test_->send_config_.encoder_settings.payload_name; |
223 test_->receive_config_.decoders.push_back(decoder); | 217 test_->receive_config_.decoders.push_back(decoder); |
224 test_->receive_config_.rtp.remote_ssrc = | 218 test_->receive_config_.rtp.remote_ssrc = |
225 test_->send_config_.rtp.ssrcs[0]; | 219 test_->send_config_.rtp.ssrcs[0]; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 VideoSendStream* send_stream_; | 257 VideoSendStream* send_stream_; |
264 AudioReceiveStream* audio_receive_stream_; | 258 AudioReceiveStream* audio_receive_stream_; |
265 VideoReceiveStream* video_receive_stream_; | 259 VideoReceiveStream* video_receive_stream_; |
266 rtc::scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_; | 260 rtc::scoped_ptr<test::FrameGeneratorCapturer> frame_generator_capturer_; |
267 test::FakeEncoder fake_encoder_; | 261 test::FakeEncoder fake_encoder_; |
268 test::FakeDecoder fake_decoder_; | 262 test::FakeDecoder fake_decoder_; |
269 }; | 263 }; |
270 | 264 |
271 test::FakeVoiceEngine fake_voice_engine_; | 265 test::FakeVoiceEngine fake_voice_engine_; |
272 TraceObserver receiver_trace_; | 266 TraceObserver receiver_trace_; |
273 test::DirectTransport send_transport_; | 267 rtc::scoped_ptr<test::DirectTransport> send_transport_; |
274 test::DirectTransport receive_transport_; | 268 rtc::scoped_ptr<test::DirectTransport> receive_transport_; |
275 rtc::scoped_ptr<Call> sender_call_; | 269 rtc::scoped_ptr<Call> sender_call_; |
276 rtc::scoped_ptr<Call> receiver_call_; | 270 rtc::scoped_ptr<Call> receiver_call_; |
277 VideoReceiveStream::Config receive_config_; | 271 VideoReceiveStream::Config receive_config_; |
278 std::vector<Stream*> streams_; | 272 std::vector<Stream*> streams_; |
279 }; | 273 }; |
280 | 274 |
281 static const char* kAbsSendTimeLog = | 275 static const char* kAbsSendTimeLog = |
282 "RemoteBitrateEstimatorAbsSendTime: Instantiating."; | 276 "RemoteBitrateEstimatorAbsSendTime: Instantiating."; |
283 static const char* kSingleStreamLog = | 277 static const char* kSingleStreamLog = |
284 "RemoteBitrateEstimatorSingleStream: Instantiating."; | 278 "RemoteBitrateEstimatorSingleStream: Instantiating."; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId); | 357 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId); |
364 receiver_trace_.PushExpectedLogLine( | 358 receiver_trace_.PushExpectedLogLine( |
365 "WrappingBitrateEstimator: Switching to transmission time offset RBE."); | 359 "WrappingBitrateEstimator: Switching to transmission time offset RBE."); |
366 receiver_trace_.PushExpectedLogLine(kSingleStreamLog); | 360 receiver_trace_.PushExpectedLogLine(kSingleStreamLog); |
367 streams_.push_back(new Stream(this, false)); | 361 streams_.push_back(new Stream(this, false)); |
368 streams_[0]->StopSending(); | 362 streams_[0]->StopSending(); |
369 streams_[1]->StopSending(); | 363 streams_[1]->StopSending(); |
370 EXPECT_EQ(kEventSignaled, receiver_trace_.Wait()); | 364 EXPECT_EQ(kEventSignaled, receiver_trace_.Wait()); |
371 } | 365 } |
372 } // namespace webrtc | 366 } // namespace webrtc |
OLD | NEW |