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 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3031 | 3031 |
3032 // Lower bitrates so that all streams send initially. | 3032 // Lower bitrates so that all streams send initially. |
3033 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { | 3033 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { |
3034 video_encoder_config_.streams[i].min_bitrate_bps = 10000; | 3034 video_encoder_config_.streams[i].min_bitrate_bps = 10000; |
3035 video_encoder_config_.streams[i].target_bitrate_bps = 15000; | 3035 video_encoder_config_.streams[i].target_bitrate_bps = 15000; |
3036 video_encoder_config_.streams[i].max_bitrate_bps = 20000; | 3036 video_encoder_config_.streams[i].max_bitrate_bps = 20000; |
3037 } | 3037 } |
3038 | 3038 |
3039 // Use the same total bitrates when sending a single stream to avoid lowering | 3039 // Use the same total bitrates when sending a single stream to avoid lowering |
3040 // the bitrate estimate and requiring a subsequent rampup. | 3040 // the bitrate estimate and requiring a subsequent rampup. |
3041 VideoEncoderConfig one_stream = video_encoder_config_; | 3041 VideoEncoderConfig one_stream = video_encoder_config_.Copy(); |
3042 one_stream.streams.resize(1); | 3042 one_stream.streams.resize(1); |
3043 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { | 3043 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { |
3044 one_stream.streams.front().min_bitrate_bps += | 3044 one_stream.streams.front().min_bitrate_bps += |
3045 video_encoder_config_.streams[i].min_bitrate_bps; | 3045 video_encoder_config_.streams[i].min_bitrate_bps; |
3046 one_stream.streams.front().target_bitrate_bps += | 3046 one_stream.streams.front().target_bitrate_bps += |
3047 video_encoder_config_.streams[i].target_bitrate_bps; | 3047 video_encoder_config_.streams[i].target_bitrate_bps; |
3048 one_stream.streams.front().max_bitrate_bps += | 3048 one_stream.streams.front().max_bitrate_bps += |
3049 video_encoder_config_.streams[i].max_bitrate_bps; | 3049 video_encoder_config_.streams[i].max_bitrate_bps; |
3050 } | 3050 } |
3051 | 3051 |
3052 CreateMatchingReceiveConfigs(&receive_transport); | 3052 CreateMatchingReceiveConfigs(&receive_transport); |
3053 | 3053 |
3054 CreateVideoStreams(); | 3054 CreateVideoStreams(); |
3055 CreateFrameGeneratorCapturer(); | 3055 CreateFrameGeneratorCapturer(); |
3056 | 3056 |
3057 Start(); | 3057 Start(); |
3058 EXPECT_TRUE(observer.Wait()) | 3058 EXPECT_TRUE(observer.Wait()) |
3059 << "Timed out waiting for all SSRCs to send packets."; | 3059 << "Timed out waiting for all SSRCs to send packets."; |
3060 | 3060 |
3061 // Test stream resetting more than once to make sure that the state doesn't | 3061 // Test stream resetting more than once to make sure that the state doesn't |
3062 // get set once (this could be due to using std::map::insert for instance). | 3062 // get set once (this could be due to using std::map::insert for instance). |
3063 for (size_t i = 0; i < 3; ++i) { | 3063 for (size_t i = 0; i < 3; ++i) { |
3064 frame_generator_capturer_->Stop(); | 3064 frame_generator_capturer_->Stop(); |
3065 sender_call_->DestroyVideoSendStream(video_send_stream_); | 3065 sender_call_->DestroyVideoSendStream(video_send_stream_); |
3066 | 3066 |
3067 // Re-create VideoSendStream with only one stream. | 3067 // Re-create VideoSendStream with only one stream. |
3068 video_send_stream_ = | 3068 video_send_stream_ = sender_call_->CreateVideoSendStream( |
3069 sender_call_->CreateVideoSendStream(video_send_config_, one_stream); | 3069 video_send_config_.Copy(), one_stream.Copy()); |
3070 video_send_stream_->Start(); | 3070 video_send_stream_->Start(); |
3071 CreateFrameGeneratorCapturer(); | 3071 CreateFrameGeneratorCapturer(); |
3072 frame_generator_capturer_->Start(); | 3072 frame_generator_capturer_->Start(); |
3073 | 3073 |
3074 observer.ResetExpectedSsrcs(1); | 3074 observer.ResetExpectedSsrcs(1); |
3075 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; | 3075 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; |
3076 | 3076 |
3077 // Reconfigure back to use all streams. | 3077 // Reconfigure back to use all streams. |
3078 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); | 3078 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); |
3079 observer.ResetExpectedSsrcs(kNumSsrcs); | 3079 observer.ResetExpectedSsrcs(kNumSsrcs); |
3080 EXPECT_TRUE(observer.Wait()) | 3080 EXPECT_TRUE(observer.Wait()) |
3081 << "Timed out waiting for all SSRCs to send packets."; | 3081 << "Timed out waiting for all SSRCs to send packets."; |
3082 | 3082 |
3083 // Reconfigure down to one stream. | 3083 // Reconfigure down to one stream. |
3084 video_send_stream_->ReconfigureVideoEncoder(one_stream); | 3084 video_send_stream_->ReconfigureVideoEncoder(one_stream.Copy()); |
3085 observer.ResetExpectedSsrcs(1); | 3085 observer.ResetExpectedSsrcs(1); |
3086 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; | 3086 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; |
3087 | 3087 |
3088 // Reconfigure back to use all streams. | 3088 // Reconfigure back to use all streams. |
3089 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); | 3089 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); |
3090 observer.ResetExpectedSsrcs(kNumSsrcs); | 3090 observer.ResetExpectedSsrcs(kNumSsrcs); |
3091 EXPECT_TRUE(observer.Wait()) | 3091 EXPECT_TRUE(observer.Wait()) |
3092 << "Timed out waiting for all SSRCs to send packets."; | 3092 << "Timed out waiting for all SSRCs to send packets."; |
3093 } | 3093 } |
3094 | 3094 |
3095 send_transport.StopSending(); | 3095 send_transport.StopSending(); |
3096 receive_transport.StopSending(); | 3096 receive_transport.StopSending(); |
3097 | 3097 |
3098 Stop(); | 3098 Stop(); |
3099 DestroyStreams(); | 3099 DestroyStreams(); |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3558 private: | 3558 private: |
3559 bool video_observed_; | 3559 bool video_observed_; |
3560 bool audio_observed_; | 3560 bool audio_observed_; |
3561 SequenceNumberUnwrapper unwrapper_; | 3561 SequenceNumberUnwrapper unwrapper_; |
3562 std::set<int64_t> received_packet_ids_; | 3562 std::set<int64_t> received_packet_ids_; |
3563 } test; | 3563 } test; |
3564 | 3564 |
3565 RunBaseTest(&test); | 3565 RunBaseTest(&test); |
3566 } | 3566 } |
3567 } // namespace webrtc | 3567 } // namespace webrtc |
OLD | NEW |