| 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> // max | 10 #include <algorithm> // max |
| (...skipping 3151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3162 TEST_F(VideoSendStreamTest, | 3162 TEST_F(VideoSendStreamTest, |
| 3163 RequestSourceRotateIfVideoOrientationExtensionNotSupported) { | 3163 RequestSourceRotateIfVideoOrientationExtensionNotSupported) { |
| 3164 TestRequestSourceRotateVideo(false); | 3164 TestRequestSourceRotateVideo(false); |
| 3165 } | 3165 } |
| 3166 | 3166 |
| 3167 TEST_F(VideoSendStreamTest, | 3167 TEST_F(VideoSendStreamTest, |
| 3168 DoNotRequestsRotationIfVideoOrientationExtensionSupported) { | 3168 DoNotRequestsRotationIfVideoOrientationExtensionSupported) { |
| 3169 TestRequestSourceRotateVideo(true); | 3169 TestRequestSourceRotateVideo(true); |
| 3170 } | 3170 } |
| 3171 | 3171 |
| 3172 // Flaky on Win32 Release: http://crbug.com/webrtc/6886 | |
| 3173 #if defined(WEBRTC_WIN) | |
| 3174 #define MAYBE_RemoveOverheadFromBandwidth DISABLED_RemoveOverheadFromBandwidth | |
| 3175 #else | |
| 3176 #define MAYBE_RemoveOverheadFromBandwidth RemoveOverheadFromBandwidth | |
| 3177 #endif | |
| 3178 // This test verifies that overhead is removed from the bandwidth estimate by | 3172 // This test verifies that overhead is removed from the bandwidth estimate by |
| 3179 // testing that the maximum possible target payload rate is smaller than the | 3173 // testing that the maximum possible target payload rate is smaller than the |
| 3180 // maximum bandwidth estimate by the overhead rate. | 3174 // maximum bandwidth estimate by the overhead rate. |
| 3181 TEST_F(VideoSendStreamTest, MAYBE_RemoveOverheadFromBandwidth) { | 3175 TEST_F(VideoSendStreamTest, RemoveOverheadFromBandwidth) { |
| 3182 test::ScopedFieldTrials override_field_trials( | 3176 test::ScopedFieldTrials override_field_trials( |
| 3183 "WebRTC-SendSideBwe-WithOverhead/Enabled/"); | 3177 "WebRTC-SendSideBwe-WithOverhead/Enabled/"); |
| 3184 class RemoveOverheadFromBandwidthTest : public test::EndToEndTest, | 3178 class RemoveOverheadFromBandwidthTest : public test::EndToEndTest, |
| 3185 public test::FakeEncoder { | 3179 public test::FakeEncoder { |
| 3186 public: | 3180 public: |
| 3187 RemoveOverheadFromBandwidthTest() | 3181 RemoveOverheadFromBandwidthTest() |
| 3188 : EndToEndTest(test::CallTest::kDefaultTimeoutMs), | 3182 : EndToEndTest(test::CallTest::kDefaultTimeoutMs), |
| 3189 FakeEncoder(Clock::GetRealTimeClock()), | 3183 FakeEncoder(Clock::GetRealTimeClock()), |
| 3190 call_(nullptr), | 3184 call_(nullptr), |
| 3191 max_bitrate_kbps_(0) {} | 3185 max_bitrate_bps_(0), |
| 3186 first_packet_sent_(false), |
| 3187 bitrate_changed_event_(false, false) {} |
| 3192 | 3188 |
| 3193 int32_t SetRateAllocation(const BitrateAllocation& bitrate, | 3189 int32_t SetRateAllocation(const BitrateAllocation& bitrate, |
| 3194 uint32_t frameRate) override { | 3190 uint32_t frameRate) override { |
| 3195 rtc::CritScope lock(&crit_); | 3191 rtc::CritScope lock(&crit_); |
| 3196 if (max_bitrate_kbps_ < bitrate.get_sum_kbps()) | 3192 // Wait for the first sent packet so that videosendstream knows |
| 3197 max_bitrate_kbps_ = bitrate.get_sum_kbps(); | 3193 // rtp_overhead. |
| 3194 if (first_packet_sent_) { |
| 3195 max_bitrate_bps_ = bitrate.get_sum_bps(); |
| 3196 bitrate_changed_event_.Set(); |
| 3197 } |
| 3198 return FakeEncoder::SetRateAllocation(bitrate, frameRate); | 3198 return FakeEncoder::SetRateAllocation(bitrate, frameRate); |
| 3199 } | 3199 } |
| 3200 | 3200 |
| 3201 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { | 3201 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
| 3202 call_ = sender_call; | 3202 call_ = sender_call; |
| 3203 } | 3203 } |
| 3204 | 3204 |
| 3205 void ModifyVideoConfigs( | 3205 void ModifyVideoConfigs( |
| 3206 VideoSendStream::Config* send_config, | 3206 VideoSendStream::Config* send_config, |
| 3207 std::vector<VideoReceiveStream::Config>* receive_configs, | 3207 std::vector<VideoReceiveStream::Config>* receive_configs, |
| 3208 VideoEncoderConfig* encoder_config) override { | 3208 VideoEncoderConfig* encoder_config) override { |
| 3209 send_config->rtp.max_packet_size = 1200; | 3209 send_config->rtp.max_packet_size = 1200; |
| 3210 send_config->encoder_settings.encoder = this; | 3210 send_config->encoder_settings.encoder = this; |
| 3211 EXPECT_FALSE(send_config->rtp.extensions.empty()); | 3211 EXPECT_FALSE(send_config->rtp.extensions.empty()); |
| 3212 } | 3212 } |
| 3213 | 3213 |
| 3214 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
| 3215 rtc::CritScope lock(&crit_); |
| 3216 first_packet_sent_ = true; |
| 3217 return SEND_PACKET; |
| 3218 } |
| 3219 |
| 3214 void PerformTest() override { | 3220 void PerformTest() override { |
| 3215 call_->OnTransportOverheadChanged(webrtc::MediaType::VIDEO, 20); | |
| 3216 Call::Config::BitrateConfig bitrate_config; | 3221 Call::Config::BitrateConfig bitrate_config; |
| 3217 constexpr int kStartBitrateBps = 50000; | 3222 constexpr int kStartBitrateBps = 60000; |
| 3218 constexpr int kMaxBitrateBps = 60000; | 3223 constexpr int kMaxBitrateBps = 60000; |
| 3224 constexpr int kMinBitrateBps = 10000; |
| 3219 bitrate_config.start_bitrate_bps = kStartBitrateBps; | 3225 bitrate_config.start_bitrate_bps = kStartBitrateBps; |
| 3220 bitrate_config.max_bitrate_bps = kMaxBitrateBps; | 3226 bitrate_config.max_bitrate_bps = kMaxBitrateBps; |
| 3227 bitrate_config.min_bitrate_bps = kMinBitrateBps; |
| 3221 call_->SetBitrateConfig(bitrate_config); | 3228 call_->SetBitrateConfig(bitrate_config); |
| 3229 call_->OnTransportOverheadChanged(webrtc::MediaType::VIDEO, 20); |
| 3222 | 3230 |
| 3223 // At a bitrate of 60kbps with a packet size of 1200B video and an | 3231 // At a bitrate of 60kbps with a packet size of 1200B video and an |
| 3224 // overhead of 40B per packet video produces 2kbps overhead. | 3232 // overhead of 40B per packet video produces 2240bps overhead. |
| 3225 // So with a BWE should reach 58kbps but not 60kbps. | 3233 // So the encoder BW should be set to 57760bps. |
| 3226 Wait(); | 3234 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs); |
| 3227 { | 3235 { |
| 3228 rtc::CritScope lock(&crit_); | 3236 rtc::CritScope lock(&crit_); |
| 3229 EXPECT_EQ(58u, max_bitrate_kbps_); | 3237 EXPECT_LE(57760u, max_bitrate_bps_); |
| 3230 } | 3238 } |
| 3231 } | 3239 } |
| 3232 | 3240 |
| 3233 private: | 3241 private: |
| 3234 Call* call_; | 3242 Call* call_; |
| 3235 rtc::CriticalSection crit_; | 3243 rtc::CriticalSection crit_; |
| 3236 uint32_t max_bitrate_kbps_ GUARDED_BY(&crit_); | 3244 uint32_t max_bitrate_bps_ GUARDED_BY(&crit_); |
| 3245 bool first_packet_sent_ GUARDED_BY(&crit_); |
| 3246 rtc::Event bitrate_changed_event_; |
| 3237 } test; | 3247 } test; |
| 3238 | 3248 |
| 3239 RunBaseTest(&test); | 3249 RunBaseTest(&test); |
| 3240 } | 3250 } |
| 3241 | 3251 |
| 3242 } // namespace webrtc | 3252 } // namespace webrtc |
| OLD | NEW |