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

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

Issue 1242043002: Selectable number of TL screenshare loopback test (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cast needed for msvc Created 5 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
« no previous file with comments | « webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 DEFINE_int32(tl0_bitrate, 200, "Temporal layer 0 target bitrate."); 66 DEFINE_int32(tl0_bitrate, 200, "Temporal layer 0 target bitrate.");
67 size_t StartBitrate() { 67 size_t StartBitrate() {
68 return static_cast<size_t>(FLAGS_tl0_bitrate); 68 return static_cast<size_t>(FLAGS_tl0_bitrate);
69 } 69 }
70 70
71 DEFINE_int32(tl1_bitrate, 2000, "Temporal layer 1 target bitrate."); 71 DEFINE_int32(tl1_bitrate, 2000, "Temporal layer 1 target bitrate.");
72 size_t MaxBitrate() { 72 size_t MaxBitrate() {
73 return static_cast<size_t>(FLAGS_tl1_bitrate); 73 return static_cast<size_t>(FLAGS_tl1_bitrate);
74 } 74 }
75 75
76 DEFINE_int32(num_temporal_layers, 2, "Number of temporal layers to use.");
77 int NumTemporalLayers() {
78 return static_cast<int>(FLAGS_num_temporal_layers);
79 }
80
76 DEFINE_int32(min_transmit_bitrate, 400, "Min transmit bitrate incl. padding."); 81 DEFINE_int32(min_transmit_bitrate, 400, "Min transmit bitrate incl. padding.");
77 int MinTransmitBitrate() { 82 int MinTransmitBitrate() {
78 return FLAGS_min_transmit_bitrate; 83 return FLAGS_min_transmit_bitrate;
79 } 84 }
80 85
81 DEFINE_string(codec, "VP8", "Video codec to use."); 86 DEFINE_string(codec, "VP8", "Video codec to use.");
82 std::string Codec() { 87 std::string Codec() {
83 return static_cast<std::string>(FLAGS_codec); 88 return static_cast<std::string>(FLAGS_codec);
84 } 89 }
85 90
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 "", 126 "",
122 "Field trials control experimental feature code which can be forced. " 127 "Field trials control experimental feature code which can be forced. "
123 "E.g. running with --force_fieldtrials=WebRTC-FooFeature/Enable/" 128 "E.g. running with --force_fieldtrials=WebRTC-FooFeature/Enable/"
124 " will assign the group Enable to field trial WebRTC-FooFeature. Multiple " 129 " will assign the group Enable to field trial WebRTC-FooFeature. Multiple "
125 "trials are separated by \"/\""); 130 "trials are separated by \"/\"");
126 } // namespace flags 131 } // namespace flags
127 132
128 class ScreenshareLoopback : public test::Loopback { 133 class ScreenshareLoopback : public test::Loopback {
129 public: 134 public:
130 explicit ScreenshareLoopback(const Config& config) : Loopback(config) { 135 explicit ScreenshareLoopback(const Config& config) : Loopback(config) {
136 CHECK_GE(config.num_temporal_layers, 1u);
137 CHECK_LE(config.num_temporal_layers, 2u);
138
131 vp8_settings_ = VideoEncoder::GetDefaultVp8Settings(); 139 vp8_settings_ = VideoEncoder::GetDefaultVp8Settings();
132 vp8_settings_.denoisingOn = false; 140 vp8_settings_.denoisingOn = false;
133 vp8_settings_.frameDroppingOn = false; 141 vp8_settings_.frameDroppingOn = false;
134 vp8_settings_.numberOfTemporalLayers = 2; 142 vp8_settings_.numberOfTemporalLayers =
143 static_cast<unsigned char>(config.num_temporal_layers);
135 144
136 vp9_settings_ = VideoEncoder::GetDefaultVp9Settings(); 145 vp9_settings_ = VideoEncoder::GetDefaultVp9Settings();
137 vp9_settings_.denoisingOn = false; 146 vp9_settings_.denoisingOn = false;
138 vp9_settings_.frameDroppingOn = false; 147 vp9_settings_.frameDroppingOn = false;
139 vp9_settings_.numberOfTemporalLayers = 2; 148 vp9_settings_.numberOfTemporalLayers =
149 static_cast<unsigned char>(config.num_temporal_layers);
140 } 150 }
141 virtual ~ScreenshareLoopback() {} 151 virtual ~ScreenshareLoopback() {}
142 152
143 protected: 153 protected:
144 VideoEncoderConfig CreateEncoderConfig() override { 154 VideoEncoderConfig CreateEncoderConfig() override {
145 VideoEncoderConfig encoder_config(test::Loopback::CreateEncoderConfig()); 155 VideoEncoderConfig encoder_config(test::Loopback::CreateEncoderConfig());
146 VideoStream* stream = &encoder_config.streams[0]; 156 VideoStream* stream = &encoder_config.streams[0];
147 encoder_config.content_type = VideoEncoderConfig::ContentType::kScreen; 157 encoder_config.content_type = VideoEncoderConfig::ContentType::kScreen;
148 encoder_config.min_transmit_bitrate_bps = flags::MinTransmitBitrate(); 158 encoder_config.min_transmit_bitrate_bps = flags::MinTransmitBitrate();
159 int num_temporal_layers;
149 if (config_.codec == "VP8") { 160 if (config_.codec == "VP8") {
150 encoder_config.encoder_specific_settings = &vp8_settings_; 161 encoder_config.encoder_specific_settings = &vp8_settings_;
162 num_temporal_layers = vp8_settings_.numberOfTemporalLayers;
151 } else if (config_.codec == "VP9") { 163 } else if (config_.codec == "VP9") {
152 encoder_config.encoder_specific_settings = &vp9_settings_; 164 encoder_config.encoder_specific_settings = &vp9_settings_;
165 num_temporal_layers = vp9_settings_.numberOfTemporalLayers;
153 } else { 166 } else {
154 RTC_NOTREACHED() << "Codec not supported!"; 167 RTC_NOTREACHED() << "Codec not supported!";
155 abort(); 168 abort();
156 } 169 }
157 stream->temporal_layer_thresholds_bps.clear(); 170 stream->temporal_layer_thresholds_bps.clear();
158 stream->target_bitrate_bps = 171 stream->target_bitrate_bps =
159 static_cast<int>(config_.start_bitrate_kbps) * 1000; 172 static_cast<int>(config_.start_bitrate_kbps) * 1000;
160 stream->temporal_layer_thresholds_bps.push_back(stream->target_bitrate_bps); 173 if (num_temporal_layers == 2) {
174 stream->temporal_layer_thresholds_bps.push_back(
175 stream->target_bitrate_bps);
176 }
161 return encoder_config; 177 return encoder_config;
162 } 178 }
163 179
164 test::VideoCapturer* CreateCapturer(VideoSendStream* send_stream) override { 180 test::VideoCapturer* CreateCapturer(VideoSendStream* send_stream) override {
165 std::vector<std::string> slides; 181 std::vector<std::string> slides;
166 slides.push_back(test::ResourcePath("web_screenshot_1850_1110", "yuv")); 182 slides.push_back(test::ResourcePath("web_screenshot_1850_1110", "yuv"));
167 slides.push_back(test::ResourcePath("presentation_1850_1110", "yuv")); 183 slides.push_back(test::ResourcePath("presentation_1850_1110", "yuv"));
168 slides.push_back(test::ResourcePath("photo_1850_1110", "yuv")); 184 slides.push_back(test::ResourcePath("photo_1850_1110", "yuv"));
169 slides.push_back(test::ResourcePath("difficult_photo_1850_1110", "yuv")); 185 slides.push_back(test::ResourcePath("difficult_photo_1850_1110", "yuv"));
170 186
(...skipping 24 matching lines...) Expand all
195 211
196 void Loopback() { 212 void Loopback() {
197 test::Loopback::Config config{flags::Width(), 213 test::Loopback::Config config{flags::Width(),
198 flags::Height(), 214 flags::Height(),
199 flags::Fps(), 215 flags::Fps(),
200 flags::MinBitrate(), 216 flags::MinBitrate(),
201 flags::StartBitrate(), 217 flags::StartBitrate(),
202 flags::MaxBitrate(), 218 flags::MaxBitrate(),
203 flags::MinTransmitBitrate(), 219 flags::MinTransmitBitrate(),
204 flags::Codec(), 220 flags::Codec(),
205 0, // Default number of temporal layers. 221 flags::NumTemporalLayers(),
206 flags::LossPercent(), 222 flags::LossPercent(),
207 flags::LinkCapacity(), 223 flags::LinkCapacity(),
208 flags::QueueSize(), 224 flags::QueueSize(),
209 flags::AvgPropagationDelayMs(), 225 flags::AvgPropagationDelayMs(),
210 flags::StdPropagationDelayMs(), 226 flags::StdPropagationDelayMs(),
211 flags::FLAGS_logs}; 227 flags::FLAGS_logs};
212 ScreenshareLoopback loopback(config); 228 ScreenshareLoopback loopback(config);
213 loopback.Run(); 229 loopback.Run();
214 } 230 }
215 } // namespace webrtc 231 } // namespace webrtc
216 232
217 int main(int argc, char* argv[]) { 233 int main(int argc, char* argv[]) {
218 ::testing::InitGoogleTest(&argc, argv); 234 ::testing::InitGoogleTest(&argc, argv);
219 google::ParseCommandLineFlags(&argc, &argv, true); 235 google::ParseCommandLineFlags(&argc, &argv, true);
220 webrtc::test::InitFieldTrialsFromString( 236 webrtc::test::InitFieldTrialsFromString(
221 webrtc::flags::FLAGS_force_fieldtrials); 237 webrtc::flags::FLAGS_force_fieldtrials);
222 webrtc::test::RunTest(webrtc::Loopback); 238 webrtc::test::RunTest(webrtc::Loopback);
223 return 0; 239 return 0;
224 } 240 }
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698