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 <algorithm> | 10 #include <algorithm> |
(...skipping 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 encoder_config.streams = test::CreateVideoStreams(1); | 1197 encoder_config.streams = test::CreateVideoStreams(1); |
1198 VideoStream* stream = &encoder_config.streams[0]; | 1198 VideoStream* stream = &encoder_config.streams[0]; |
1199 stream->width = width; | 1199 stream->width = width; |
1200 stream->height = height; | 1200 stream->height = height; |
1201 stream->max_framerate = 5; | 1201 stream->max_framerate = 5; |
1202 stream->min_bitrate_bps = stream->target_bitrate_bps = | 1202 stream->min_bitrate_bps = stream->target_bitrate_bps = |
1203 stream->max_bitrate_bps = 100000; | 1203 stream->max_bitrate_bps = 100000; |
1204 | 1204 |
1205 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]); | 1205 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]); |
1206 | 1206 |
1207 send_streams[i] = | 1207 send_streams[i] = sender_call->CreateVideoSendStream( |
1208 sender_call->CreateVideoSendStream(send_config, encoder_config); | 1208 send_config.Copy(), encoder_config.Copy()); |
1209 send_streams[i]->Start(); | 1209 send_streams[i]->Start(); |
1210 | 1210 |
1211 VideoReceiveStream::Config receive_config(receiver_transport.get()); | 1211 VideoReceiveStream::Config receive_config(receiver_transport.get()); |
1212 receive_config.rtp.remote_ssrc = ssrc; | 1212 receive_config.rtp.remote_ssrc = ssrc; |
1213 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc; | 1213 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc; |
1214 VideoReceiveStream::Decoder decoder = | 1214 VideoReceiveStream::Decoder decoder = |
1215 test::CreateMatchingDecoder(send_config.encoder_settings); | 1215 test::CreateMatchingDecoder(send_config.encoder_settings); |
1216 allocated_decoders.push_back( | 1216 allocated_decoders.push_back( |
1217 std::unique_ptr<VideoDecoder>(decoder.decoder)); | 1217 std::unique_ptr<VideoDecoder>(decoder.decoder)); |
1218 receive_config.decoders.push_back(decoder); | 1218 receive_config.decoders.push_back(decoder); |
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2388 VideoEncoderConfig* encoder_config) override { | 2388 VideoEncoderConfig* encoder_config) override { |
2389 if (num_ssrcs_ > 1) { | 2389 if (num_ssrcs_ > 1) { |
2390 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. | 2390 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. |
2391 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { | 2391 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { |
2392 encoder_config->streams[i].min_bitrate_bps = 10000; | 2392 encoder_config->streams[i].min_bitrate_bps = 10000; |
2393 encoder_config->streams[i].target_bitrate_bps = 15000; | 2393 encoder_config->streams[i].target_bitrate_bps = 15000; |
2394 encoder_config->streams[i].max_bitrate_bps = 20000; | 2394 encoder_config->streams[i].max_bitrate_bps = 20000; |
2395 } | 2395 } |
2396 } | 2396 } |
2397 | 2397 |
2398 video_encoder_config_all_streams_ = *encoder_config; | 2398 video_encoder_config_all_streams_ = encoder_config->Copy(); |
2399 if (send_single_ssrc_first_) | 2399 if (send_single_ssrc_first_) |
2400 encoder_config->streams.resize(1); | 2400 encoder_config->streams.resize(1); |
2401 } | 2401 } |
2402 | 2402 |
2403 void OnVideoStreamsCreated( | 2403 void OnVideoStreamsCreated( |
2404 VideoSendStream* send_stream, | 2404 VideoSendStream* send_stream, |
2405 const std::vector<VideoReceiveStream*>& receive_streams) override { | 2405 const std::vector<VideoReceiveStream*>& receive_streams) override { |
2406 send_stream_ = send_stream; | 2406 send_stream_ = send_stream; |
2407 } | 2407 } |
2408 | 2408 |
2409 void PerformTest() override { | 2409 void PerformTest() override { |
2410 EXPECT_TRUE(Wait()) << "Timed out while waiting for " | 2410 EXPECT_TRUE(Wait()) << "Timed out while waiting for " |
2411 << (send_single_ssrc_first_ ? "first SSRC." | 2411 << (send_single_ssrc_first_ ? "first SSRC." |
2412 : "SSRCs."); | 2412 : "SSRCs."); |
2413 | 2413 |
2414 if (send_single_ssrc_first_) { | 2414 if (send_single_ssrc_first_) { |
2415 // Set full simulcast and continue with the rest of the SSRCs. | 2415 // Set full simulcast and continue with the rest of the SSRCs. |
2416 send_stream_->ReconfigureVideoEncoder( | 2416 send_stream_->ReconfigureVideoEncoder( |
2417 video_encoder_config_all_streams_); | 2417 std::move(video_encoder_config_all_streams_)); |
2418 EXPECT_TRUE(Wait()) << "Timed out while waiting on additional SSRCs."; | 2418 EXPECT_TRUE(Wait()) << "Timed out while waiting on additional SSRCs."; |
2419 } | 2419 } |
2420 } | 2420 } |
2421 | 2421 |
2422 private: | 2422 private: |
2423 std::map<uint32_t, bool> valid_ssrcs_; | 2423 std::map<uint32_t, bool> valid_ssrcs_; |
2424 std::map<uint32_t, bool> is_observed_; | 2424 std::map<uint32_t, bool> is_observed_; |
2425 | 2425 |
2426 const size_t num_ssrcs_; | 2426 const size_t num_ssrcs_; |
2427 const bool send_single_ssrc_first_; | 2427 const bool send_single_ssrc_first_; |
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3048 | 3048 |
3049 // Lower bitrates so that all streams send initially. | 3049 // Lower bitrates so that all streams send initially. |
3050 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { | 3050 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { |
3051 video_encoder_config_.streams[i].min_bitrate_bps = 10000; | 3051 video_encoder_config_.streams[i].min_bitrate_bps = 10000; |
3052 video_encoder_config_.streams[i].target_bitrate_bps = 15000; | 3052 video_encoder_config_.streams[i].target_bitrate_bps = 15000; |
3053 video_encoder_config_.streams[i].max_bitrate_bps = 20000; | 3053 video_encoder_config_.streams[i].max_bitrate_bps = 20000; |
3054 } | 3054 } |
3055 | 3055 |
3056 // Use the same total bitrates when sending a single stream to avoid lowering | 3056 // Use the same total bitrates when sending a single stream to avoid lowering |
3057 // the bitrate estimate and requiring a subsequent rampup. | 3057 // the bitrate estimate and requiring a subsequent rampup. |
3058 VideoEncoderConfig one_stream = video_encoder_config_; | 3058 VideoEncoderConfig one_stream = video_encoder_config_.Copy(); |
3059 one_stream.streams.resize(1); | 3059 one_stream.streams.resize(1); |
3060 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { | 3060 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { |
3061 one_stream.streams.front().min_bitrate_bps += | 3061 one_stream.streams.front().min_bitrate_bps += |
3062 video_encoder_config_.streams[i].min_bitrate_bps; | 3062 video_encoder_config_.streams[i].min_bitrate_bps; |
3063 one_stream.streams.front().target_bitrate_bps += | 3063 one_stream.streams.front().target_bitrate_bps += |
3064 video_encoder_config_.streams[i].target_bitrate_bps; | 3064 video_encoder_config_.streams[i].target_bitrate_bps; |
3065 one_stream.streams.front().max_bitrate_bps += | 3065 one_stream.streams.front().max_bitrate_bps += |
3066 video_encoder_config_.streams[i].max_bitrate_bps; | 3066 video_encoder_config_.streams[i].max_bitrate_bps; |
3067 } | 3067 } |
3068 | 3068 |
3069 CreateMatchingReceiveConfigs(&receive_transport); | 3069 CreateMatchingReceiveConfigs(&receive_transport); |
3070 | 3070 |
3071 CreateVideoStreams(); | 3071 CreateVideoStreams(); |
3072 CreateFrameGeneratorCapturer(); | 3072 CreateFrameGeneratorCapturer(); |
3073 | 3073 |
3074 Start(); | 3074 Start(); |
3075 EXPECT_TRUE(observer.Wait()) | 3075 EXPECT_TRUE(observer.Wait()) |
3076 << "Timed out waiting for all SSRCs to send packets."; | 3076 << "Timed out waiting for all SSRCs to send packets."; |
3077 | 3077 |
3078 // Test stream resetting more than once to make sure that the state doesn't | 3078 // Test stream resetting more than once to make sure that the state doesn't |
3079 // get set once (this could be due to using std::map::insert for instance). | 3079 // get set once (this could be due to using std::map::insert for instance). |
3080 for (size_t i = 0; i < 3; ++i) { | 3080 for (size_t i = 0; i < 3; ++i) { |
3081 frame_generator_capturer_->Stop(); | 3081 frame_generator_capturer_->Stop(); |
3082 sender_call_->DestroyVideoSendStream(video_send_stream_); | 3082 sender_call_->DestroyVideoSendStream(video_send_stream_); |
3083 | 3083 |
3084 // Re-create VideoSendStream with only one stream. | 3084 // Re-create VideoSendStream with only one stream. |
3085 video_send_stream_ = | 3085 video_send_stream_ = sender_call_->CreateVideoSendStream( |
3086 sender_call_->CreateVideoSendStream(video_send_config_, one_stream); | 3086 video_send_config_.Copy(), one_stream.Copy()); |
3087 video_send_stream_->Start(); | 3087 video_send_stream_->Start(); |
3088 CreateFrameGeneratorCapturer(); | 3088 CreateFrameGeneratorCapturer(); |
3089 frame_generator_capturer_->Start(); | 3089 frame_generator_capturer_->Start(); |
3090 | 3090 |
3091 observer.ResetExpectedSsrcs(1); | 3091 observer.ResetExpectedSsrcs(1); |
3092 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; | 3092 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; |
3093 | 3093 |
3094 // Reconfigure back to use all streams. | 3094 // Reconfigure back to use all streams. |
3095 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); | 3095 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); |
3096 observer.ResetExpectedSsrcs(kNumSsrcs); | 3096 observer.ResetExpectedSsrcs(kNumSsrcs); |
3097 EXPECT_TRUE(observer.Wait()) | 3097 EXPECT_TRUE(observer.Wait()) |
3098 << "Timed out waiting for all SSRCs to send packets."; | 3098 << "Timed out waiting for all SSRCs to send packets."; |
3099 | 3099 |
3100 // Reconfigure down to one stream. | 3100 // Reconfigure down to one stream. |
3101 video_send_stream_->ReconfigureVideoEncoder(one_stream); | 3101 video_send_stream_->ReconfigureVideoEncoder(one_stream.Copy()); |
3102 observer.ResetExpectedSsrcs(1); | 3102 observer.ResetExpectedSsrcs(1); |
3103 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; | 3103 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; |
3104 | 3104 |
3105 // Reconfigure back to use all streams. | 3105 // Reconfigure back to use all streams. |
3106 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); | 3106 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); |
3107 observer.ResetExpectedSsrcs(kNumSsrcs); | 3107 observer.ResetExpectedSsrcs(kNumSsrcs); |
3108 EXPECT_TRUE(observer.Wait()) | 3108 EXPECT_TRUE(observer.Wait()) |
3109 << "Timed out waiting for all SSRCs to send packets."; | 3109 << "Timed out waiting for all SSRCs to send packets."; |
3110 } | 3110 } |
3111 | 3111 |
3112 send_transport.StopSending(); | 3112 send_transport.StopSending(); |
3113 receive_transport.StopSending(); | 3113 receive_transport.StopSending(); |
3114 | 3114 |
3115 Stop(); | 3115 Stop(); |
3116 DestroyStreams(); | 3116 DestroyStreams(); |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3575 private: | 3575 private: |
3576 bool video_observed_; | 3576 bool video_observed_; |
3577 bool audio_observed_; | 3577 bool audio_observed_; |
3578 SequenceNumberUnwrapper unwrapper_; | 3578 SequenceNumberUnwrapper unwrapper_; |
3579 std::set<int64_t> received_packet_ids_; | 3579 std::set<int64_t> received_packet_ids_; |
3580 } test; | 3580 } test; |
3581 | 3581 |
3582 RunBaseTest(&test); | 3582 RunBaseTest(&test); |
3583 } | 3583 } |
3584 } // namespace webrtc | 3584 } // namespace webrtc |
OLD | NEW |