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

Side by Side Diff: webrtc/video/end_to_end_tests.cc

Issue 1757683002: Make the audio channel communicate network state changes to the call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Made the Call class keep track of network state for audio and video separately Created 4 years, 9 months 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
OLDNEW
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 <algorithm> 10 #include <algorithm>
(...skipping 3202 matching lines...) Expand 10 before | Expand all | Expand 10 after
3213 send_config->encoder_settings.encoder = this; 3213 send_config->encoder_settings.encoder = this;
3214 } 3214 }
3215 3215
3216 void PerformTest() override { 3216 void PerformTest() override {
3217 EXPECT_TRUE(encoded_frames_.Wait(kDefaultTimeoutMs)) 3217 EXPECT_TRUE(encoded_frames_.Wait(kDefaultTimeoutMs))
3218 << "No frames received by the encoder."; 3218 << "No frames received by the encoder.";
3219 // Wait for packets from both sender/receiver. 3219 // Wait for packets from both sender/receiver.
3220 WaitForPacketsOrSilence(false, false); 3220 WaitForPacketsOrSilence(false, false);
3221 3221
3222 // Sender-side network down. 3222 // Sender-side network down.
3223 sender_call_->SignalNetworkState(kNetworkDown); 3223 sender_call_->SignalChannelNetworkState(MediaType::VIDEO,
3224 ChannelNetworkState::CHANNEL_NETWORK_DOWN);
3224 { 3225 {
3225 rtc::CritScope lock(&test_crit_); 3226 rtc::CritScope lock(&test_crit_);
3226 // After network goes down we shouldn't be encoding more frames. 3227 // After network goes down we shouldn't be encoding more frames.
3227 sender_state_ = kNetworkDown; 3228 sender_state_ = kNetworkDown;
3228 } 3229 }
3229 // Wait for receiver-packets and no sender packets. 3230 // Wait for receiver-packets and no sender packets.
3230 WaitForPacketsOrSilence(true, false); 3231 WaitForPacketsOrSilence(true, false);
3231 3232
3232 // Receiver-side network down. 3233 // Receiver-side network down.
3233 receiver_call_->SignalNetworkState(kNetworkDown); 3234 receiver_call_->SignalChannelNetworkState(MediaType::VIDEO,
3235 ChannelNetworkState::CHANNEL_NETWORK_DOWN);
3234 WaitForPacketsOrSilence(true, true); 3236 WaitForPacketsOrSilence(true, true);
3235 3237
3236 // Network back up again for both. 3238 // Network back up again for both.
3237 { 3239 {
3238 rtc::CritScope lock(&test_crit_); 3240 rtc::CritScope lock(&test_crit_);
3239 // It's OK to encode frames again, as we're about to bring up the 3241 // It's OK to encode frames again, as we're about to bring up the
3240 // network. 3242 // network.
3241 sender_state_ = kNetworkUp; 3243 sender_state_ = kNetworkUp;
3242 } 3244 }
3243 sender_call_->SignalNetworkState(kNetworkUp); 3245 sender_call_->SignalChannelNetworkState(MediaType::VIDEO,
3244 receiver_call_->SignalNetworkState(kNetworkUp); 3246 ChannelNetworkState::CHANNEL_NETWORK_UP);
3247 receiver_call_->SignalChannelNetworkState(MediaType::VIDEO,
3248 ChannelNetworkState::CHANNEL_NETWORK_UP);
3245 WaitForPacketsOrSilence(false, false); 3249 WaitForPacketsOrSilence(false, false);
3246 } 3250 }
3247 3251
3248 int32_t Encode(const VideoFrame& input_image, 3252 int32_t Encode(const VideoFrame& input_image,
3249 const CodecSpecificInfo* codec_specific_info, 3253 const CodecSpecificInfo* codec_specific_info,
3250 const std::vector<FrameType>* frame_types) override { 3254 const std::vector<FrameType>* frame_types) override {
3251 { 3255 {
3252 rtc::CritScope lock(&test_crit_); 3256 rtc::CritScope lock(&test_crit_);
3253 if (sender_state_ == kNetworkDown) { 3257 if (sender_state_ == kNetworkDown) {
3254 ++down_frames_; 3258 ++down_frames_;
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
3371 int32_t Encode(const VideoFrame& input_image, 3375 int32_t Encode(const VideoFrame& input_image,
3372 const CodecSpecificInfo* codec_specific_info, 3376 const CodecSpecificInfo* codec_specific_info,
3373 const std::vector<FrameType>* frame_types) override { 3377 const std::vector<FrameType>* frame_types) override {
3374 ADD_FAILURE() << "Unexpected frame encode."; 3378 ADD_FAILURE() << "Unexpected frame encode.";
3375 return test::FakeEncoder::Encode( 3379 return test::FakeEncoder::Encode(
3376 input_image, codec_specific_info, frame_types); 3380 input_image, codec_specific_info, frame_types);
3377 } 3381 }
3378 }; 3382 };
3379 3383
3380 CreateSenderCall(Call::Config()); 3384 CreateSenderCall(Call::Config());
3381 sender_call_->SignalNetworkState(kNetworkDown); 3385 sender_call_->SignalChannelNetworkState(MediaType::VIDEO,
3386 ChannelNetworkState::CHANNEL_NETWORK_DOWN);
3382 3387
3383 UnusedTransport transport; 3388 UnusedTransport transport;
3384 CreateSendConfig(1, 0, &transport); 3389 CreateSendConfig(1, 0, &transport);
3385 UnusedEncoder unused_encoder; 3390 UnusedEncoder unused_encoder;
3386 video_send_config_.encoder_settings.encoder = &unused_encoder; 3391 video_send_config_.encoder_settings.encoder = &unused_encoder;
3387 CreateVideoStreams(); 3392 CreateVideoStreams();
3388 CreateFrameGeneratorCapturer(); 3393 CreateFrameGeneratorCapturer();
3389 3394
3390 Start(); 3395 Start();
3391 SleepMs(kSilenceTimeoutMs); 3396 SleepMs(kSilenceTimeoutMs);
3392 Stop(); 3397 Stop();
3393 3398
3394 DestroyStreams(); 3399 DestroyStreams();
3395 } 3400 }
3396 3401
3397 TEST_F(EndToEndTest, NewReceiveStreamsRespectNetworkDown) { 3402 TEST_F(EndToEndTest, NewReceiveStreamsRespectNetworkDown) {
3398 CreateCalls(Call::Config(), Call::Config()); 3403 CreateCalls(Call::Config(), Call::Config());
3399 receiver_call_->SignalNetworkState(kNetworkDown); 3404 receiver_call_->SignalChannelNetworkState(MediaType::VIDEO,
3405 ChannelNetworkState::CHANNEL_NETWORK_DOWN);
3400 3406
3401 test::DirectTransport sender_transport(sender_call_.get()); 3407 test::DirectTransport sender_transport(sender_call_.get());
3402 sender_transport.SetReceiver(receiver_call_->Receiver()); 3408 sender_transport.SetReceiver(receiver_call_->Receiver());
3403 CreateSendConfig(1, 0, &sender_transport); 3409 CreateSendConfig(1, 0, &sender_transport);
3404 UnusedTransport transport; 3410 UnusedTransport transport;
3405 CreateMatchingReceiveConfigs(&transport); 3411 CreateMatchingReceiveConfigs(&transport);
3406 CreateVideoStreams(); 3412 CreateVideoStreams();
3407 CreateFrameGeneratorCapturer(); 3413 CreateFrameGeneratorCapturer();
3408 3414
3409 Start(); 3415 Start();
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
3526 private: 3532 private:
3527 bool video_observed_; 3533 bool video_observed_;
3528 bool audio_observed_; 3534 bool audio_observed_;
3529 SequenceNumberUnwrapper unwrapper_; 3535 SequenceNumberUnwrapper unwrapper_;
3530 std::set<int64_t> received_packet_ids_; 3536 std::set<int64_t> received_packet_ids_;
3531 } test; 3537 } test;
3532 3538
3533 RunBaseTest(&test); 3539 RunBaseTest(&test);
3534 } 3540 }
3535 } // namespace webrtc 3541 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698