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

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

Issue 3000693003: Move kMinPixelsPerFrame constant in VideoStreamEncoder to VideoEncoder::ScalingSettings. (Closed)
Patch Set: Created 3 years, 4 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) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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 10
(...skipping 11 matching lines...) Expand all
22 #include "webrtc/system_wrappers/include/sleep.h" 22 #include "webrtc/system_wrappers/include/sleep.h"
23 #include "webrtc/test/encoder_settings.h" 23 #include "webrtc/test/encoder_settings.h"
24 #include "webrtc/test/fake_encoder.h" 24 #include "webrtc/test/fake_encoder.h"
25 #include "webrtc/test/frame_generator.h" 25 #include "webrtc/test/frame_generator.h"
26 #include "webrtc/test/gmock.h" 26 #include "webrtc/test/gmock.h"
27 #include "webrtc/test/gtest.h" 27 #include "webrtc/test/gtest.h"
28 #include "webrtc/video/send_statistics_proxy.h" 28 #include "webrtc/video/send_statistics_proxy.h"
29 #include "webrtc/video/video_stream_encoder.h" 29 #include "webrtc/video/video_stream_encoder.h"
30 30
31 namespace { 31 namespace {
32 // TODO(kthelgason): Lower this limit when better testing
33 // on MediaCodec and fallback implementations are in place.
34 const int kMinPixelsPerFrame = 320 * 180; 32 const int kMinPixelsPerFrame = 320 * 180;
35 const int kMinFramerateFps = 2; 33 const int kMinFramerateFps = 2;
36 const int64_t kFrameTimeoutMs = 100; 34 const int64_t kFrameTimeoutMs = 100;
37 } // namespace 35 } // namespace
38 36
39 namespace webrtc { 37 namespace webrtc {
40 38
41 using DegredationPreference = VideoSendStream::DegradationPreference; 39 using DegredationPreference = VideoSendStream::DegradationPreference;
42 using ScaleReason = AdaptationObserverInterface::AdaptReason; 40 using ScaleReason = AdaptationObserverInterface::AdaptReason;
43 using ::testing::_; 41 using ::testing::_;
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 } 464 }
467 465
468 void BlockNextEncode() { 466 void BlockNextEncode() {
469 rtc::CritScope lock(&local_crit_sect_); 467 rtc::CritScope lock(&local_crit_sect_);
470 block_next_encode_ = true; 468 block_next_encode_ = true;
471 } 469 }
472 470
473 VideoEncoder::ScalingSettings GetScalingSettings() const override { 471 VideoEncoder::ScalingSettings GetScalingSettings() const override {
474 rtc::CritScope lock(&local_crit_sect_); 472 rtc::CritScope lock(&local_crit_sect_);
475 if (quality_scaling_) 473 if (quality_scaling_)
476 return VideoEncoder::ScalingSettings(true, 1, 2); 474 return VideoEncoder::ScalingSettings(true, 1, 2, kMinPixelsPerFrame);
477 return VideoEncoder::ScalingSettings(false); 475 return VideoEncoder::ScalingSettings(false);
478 } 476 }
479 477
480 void ContinueEncode() { continue_encode_event_.Set(); } 478 void ContinueEncode() { continue_encode_event_.Set(); }
481 479
482 void CheckLastTimeStampsMatch(int64_t ntp_time_ms, 480 void CheckLastTimeStampsMatch(int64_t ntp_time_ms,
483 uint32_t timestamp) const { 481 uint32_t timestamp) const {
484 rtc::CritScope lock(&local_crit_sect_); 482 rtc::CritScope lock(&local_crit_sect_);
485 EXPECT_EQ(timestamp_, timestamp); 483 EXPECT_EQ(timestamp_, timestamp);
486 EXPECT_EQ(ntp_time_ms_, ntp_time_ms); 484 EXPECT_EQ(ntp_time_ms_, ntp_time_ms);
(...skipping 1318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1805 } 1803 }
1806 1804
1807 TEST_F(VideoStreamEncoderTest, DoesNotScaleBelowSetResolutionLimit) { 1805 TEST_F(VideoStreamEncoderTest, DoesNotScaleBelowSetResolutionLimit) {
1808 const int kWidth = 1280; 1806 const int kWidth = 1280;
1809 const int kHeight = 720; 1807 const int kHeight = 720;
1810 const size_t kNumFrames = 10; 1808 const size_t kNumFrames = 10;
1811 1809
1812 video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); 1810 video_stream_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
1813 1811
1814 // Enable adapter, expected input resolutions when downscaling: 1812 // Enable adapter, expected input resolutions when downscaling:
1815 // 1280x720 -> 960x540 -> 640x360 -> 480x270 -> 320x180 (min resolution limit) 1813 // 1280x720 -> 960x540 -> 640x360 -> 480x270 -> 320x180 (kMinPixelsPerFrame)
1816 video_source_.set_adaptation_enabled(true); 1814 video_source_.set_adaptation_enabled(true);
1817 1815
1818 EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution); 1816 EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
1819 EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes); 1817 EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
1820 1818
1821 int downscales = 0; 1819 int downscales = 0;
1822 for (size_t i = 1; i <= kNumFrames; i++) { 1820 for (size_t i = 1; i <= kNumFrames; i++) {
1823 video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight)); 1821 video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
1824 WaitForEncodedFrame(i); 1822 WaitForEncodedFrame(i);
1825 1823
(...skipping 1350 matching lines...) Expand 10 before | Expand all | Expand 10 after
3176 // Bitrate observer should not be called. 3174 // Bitrate observer should not be called.
3177 EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(_)).Times(0); 3175 EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(_)).Times(0);
3178 video_source_.IncomingCapturedFrame( 3176 video_source_.IncomingCapturedFrame(
3179 CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight)); 3177 CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
3180 ExpectDroppedFrame(); 3178 ExpectDroppedFrame();
3181 3179
3182 video_stream_encoder_->Stop(); 3180 video_stream_encoder_->Stop();
3183 } 3181 }
3184 3182
3185 } // namespace webrtc 3183 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698