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

Side by Side Diff: chrome/browser/media/webrtc/webrtc_stats_perf_browsertest.cc

Issue 2985263002: Reland of RTCVideoEncoder: Report H264 profile information to WebRTC (Closed)
Patch Set: Add default argument to SetDefaultVideoCodec 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/test/test_timeouts.h" 8 #include "base/test/test_timeouts.h"
9 #include "base/threading/thread_restrictions.h" 9 #include "base/threading/thread_restrictions.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 // Play a suitable, somewhat realistic video file. 81 // Play a suitable, somewhat realistic video file.
82 base::FilePath input_video = test::GetReferenceFilesDir() 82 base::FilePath input_video = test::GetReferenceFilesDir()
83 .Append(test::kReferenceFileName360p) 83 .Append(test::kReferenceFileName360p)
84 .AddExtension(test::kY4mFileExtension); 84 .AddExtension(test::kY4mFileExtension);
85 command_line->AppendSwitchPath(switches::kUseFileForFakeVideoCapture, 85 command_line->AppendSwitchPath(switches::kUseFileForFakeVideoCapture,
86 input_video); 86 input_video);
87 command_line->AppendSwitch(switches::kUseFakeDeviceForMediaStream); 87 command_line->AppendSwitch(switches::kUseFakeDeviceForMediaStream);
88 } 88 }
89 89
90 void StartCall(const std::string& audio_codec, 90 void StartCall(const std::string& audio_codec,
91 const std::string& video_codec) { 91 const std::string& video_codec,
92 bool prefer_hw_video_codec) {
92 ASSERT_TRUE(test::HasReferenceFilesInCheckout()); 93 ASSERT_TRUE(test::HasReferenceFilesInCheckout());
93 ASSERT_TRUE(embedded_test_server()->Start()); 94 ASSERT_TRUE(embedded_test_server()->Start());
94 95
95 ASSERT_GE(TestTimeouts::action_max_timeout().InSeconds(), 100) 96 ASSERT_GE(TestTimeouts::action_max_timeout().InSeconds(), 100)
96 << "This is a long-running test; you must specify " 97 << "This is a long-running test; you must specify "
97 "--ui-test-action-max-timeout to have a value of at least 100000."; 98 "--ui-test-action-max-timeout to have a value of at least 100000.";
98 99
99 left_tab_ = OpenTestPageAndGetUserMediaInNewTab(kMainWebrtcTestHtmlPage); 100 left_tab_ = OpenTestPageAndGetUserMediaInNewTab(kMainWebrtcTestHtmlPage);
100 right_tab_ = OpenTestPageAndGetUserMediaInNewTab(kMainWebrtcTestHtmlPage); 101 right_tab_ = OpenTestPageAndGetUserMediaInNewTab(kMainWebrtcTestHtmlPage);
101 102
102 SetupPeerconnectionWithLocalStream(left_tab_); 103 SetupPeerconnectionWithLocalStream(left_tab_);
103 SetupPeerconnectionWithLocalStream(right_tab_); 104 SetupPeerconnectionWithLocalStream(right_tab_);
104 SetDefaultAudioCodec(left_tab_, audio_codec); 105 SetDefaultAudioCodec(left_tab_, audio_codec);
105 SetDefaultAudioCodec(right_tab_, audio_codec); 106 SetDefaultAudioCodec(right_tab_, audio_codec);
106 SetDefaultVideoCodec(left_tab_, video_codec); 107 SetDefaultVideoCodec(left_tab_, video_codec, prefer_hw_video_codec);
107 SetDefaultVideoCodec(right_tab_, video_codec); 108 SetDefaultVideoCodec(right_tab_, video_codec, prefer_hw_video_codec);
108 CreateDataChannel(left_tab_, "data"); 109 CreateDataChannel(left_tab_, "data");
109 CreateDataChannel(right_tab_, "data"); 110 CreateDataChannel(right_tab_, "data");
110 NegotiateCall(left_tab_, right_tab_); 111 NegotiateCall(left_tab_, right_tab_);
111 StartDetectingVideo(left_tab_, "remote-view"); 112 StartDetectingVideo(left_tab_, "remote-view");
112 StartDetectingVideo(right_tab_, "remote-view"); 113 StartDetectingVideo(right_tab_, "remote-view");
113 WaitForVideoToPlay(left_tab_); 114 WaitForVideoToPlay(left_tab_);
114 WaitForVideoToPlay(right_tab_); 115 WaitForVideoToPlay(right_tab_);
115 } 116 }
116 117
117 void EndCall() { 118 void EndCall() {
118 if (left_tab_) 119 if (left_tab_)
119 HangUp(left_tab_); 120 HangUp(left_tab_);
120 if (right_tab_) 121 if (right_tab_)
121 HangUp(right_tab_); 122 HangUp(right_tab_);
122 } 123 }
123 124
124 void RunsAudioAndVideoCallCollectingMetrics( 125 void RunsAudioAndVideoCallCollectingMetricsWithAudioCodec(
125 const std::string& audio_codec, const std::string& video_codec) { 126 const std::string& audio_codec) {
126 StartCall(audio_codec, video_codec); 127 RunsAudioAndVideoCallCollectingMetrics(audio_codec, kUseDefaultVideoCodec,
128 false /* prefer_hw_video_codec */);
129 }
130
131 void RunsAudioAndVideoCallCollectingMetricsWithVideoCodec(
132 const std::string& video_codec,
133 bool prefer_hw_video_codec) {
134 RunsAudioAndVideoCallCollectingMetrics(kUseDefaultAudioCodec, video_codec,
135 prefer_hw_video_codec);
136 }
137
138 void RunsAudioAndVideoCallCollectingMetrics(const std::string& audio_codec,
139 const std::string& video_codec,
140 bool prefer_hw_video_codec) {
141 StartCall(audio_codec, video_codec, prefer_hw_video_codec);
127 142
128 // Call for 60 seconds so that values may stabilize, bandwidth ramp up, etc. 143 // Call for 60 seconds so that values may stabilize, bandwidth ramp up, etc.
129 test::SleepInJavascript(left_tab_, 60000); 144 test::SleepInJavascript(left_tab_, 60000);
130 145
131 // The ramp-up may vary greatly and impact the resulting total bytes, to get 146 // The ramp-up may vary greatly and impact the resulting total bytes, to get
132 // reliable measurements we do two measurements, at 60 and 70 seconds and 147 // reliable measurements we do two measurements, at 60 and 70 seconds and
133 // look at the average bytes/second in that window. 148 // look at the average bytes/second in that window.
134 double audio_bytes_sent_before = 0.0; 149 double audio_bytes_sent_before = 0.0;
135 double audio_bytes_received_before = 0.0; 150 double audio_bytes_received_before = 0.0;
136 double video_bytes_sent_before = 0.0; 151 double video_bytes_sent_before = 0.0;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 "bytes/second", false); 207 "bytes/second", false);
193 } 208 }
194 209
195 EndCall(); 210 EndCall();
196 } 211 }
197 212
198 void RunsAudioAndVideoCallMeasuringGetStatsPerformance( 213 void RunsAudioAndVideoCallMeasuringGetStatsPerformance(
199 GetStatsVariation variation) { 214 GetStatsVariation variation) {
200 EXPECT_TRUE(base::TimeTicks::IsHighResolution()); 215 EXPECT_TRUE(base::TimeTicks::IsHighResolution());
201 216
202 StartCall(kUseDefaultAudioCodec, kUseDefaultVideoCodec); 217 StartCall(kUseDefaultAudioCodec, kUseDefaultVideoCodec,
218 false /* prefer_hw_video_codec */);
203 219
204 double invocation_time = 0.0; 220 double invocation_time = 0.0;
205 switch (variation) { 221 switch (variation) {
206 case GetStatsVariation::PROMISE_BASED: 222 case GetStatsVariation::PROMISE_BASED:
207 invocation_time = (MeasureGetStatsPerformance(left_tab_) + 223 invocation_time = (MeasureGetStatsPerformance(left_tab_) +
208 MeasureGetStatsPerformance(right_tab_)) / 2.0; 224 MeasureGetStatsPerformance(right_tab_)) / 2.0;
209 break; 225 break;
210 case GetStatsVariation::CALLBACK_BASED: 226 case GetStatsVariation::CALLBACK_BASED:
211 invocation_time = 227 invocation_time =
212 (MeasureGetStatsCallbackPerformance(left_tab_) + 228 (MeasureGetStatsCallbackPerformance(left_tab_) +
(...skipping 14 matching lines...) Expand all
227 243
228 private: 244 private:
229 content::WebContents* left_tab_ = nullptr; 245 content::WebContents* left_tab_ = nullptr;
230 content::WebContents* right_tab_ = nullptr; 246 content::WebContents* right_tab_ = nullptr;
231 }; 247 };
232 248
233 IN_PROC_BROWSER_TEST_F( 249 IN_PROC_BROWSER_TEST_F(
234 WebRtcStatsPerfBrowserTest, 250 WebRtcStatsPerfBrowserTest,
235 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_opus) { 251 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_opus) {
236 base::ThreadRestrictions::ScopedAllowIO allow_io; 252 base::ThreadRestrictions::ScopedAllowIO allow_io;
237 RunsAudioAndVideoCallCollectingMetrics("opus", kUseDefaultVideoCodec); 253 RunsAudioAndVideoCallCollectingMetricsWithAudioCodec("opus");
238 } 254 }
239 255
240 IN_PROC_BROWSER_TEST_F( 256 IN_PROC_BROWSER_TEST_F(
241 WebRtcStatsPerfBrowserTest, 257 WebRtcStatsPerfBrowserTest,
242 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_ISAC) { 258 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_ISAC) {
243 base::ThreadRestrictions::ScopedAllowIO allow_io; 259 base::ThreadRestrictions::ScopedAllowIO allow_io;
244 RunsAudioAndVideoCallCollectingMetrics("ISAC", kUseDefaultVideoCodec); 260 RunsAudioAndVideoCallCollectingMetricsWithAudioCodec("ISAC");
245 } 261 }
246 262
247 IN_PROC_BROWSER_TEST_F( 263 IN_PROC_BROWSER_TEST_F(
248 WebRtcStatsPerfBrowserTest, 264 WebRtcStatsPerfBrowserTest,
249 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_G722) { 265 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_G722) {
250 base::ThreadRestrictions::ScopedAllowIO allow_io; 266 base::ThreadRestrictions::ScopedAllowIO allow_io;
251 RunsAudioAndVideoCallCollectingMetrics("G722", kUseDefaultVideoCodec); 267 RunsAudioAndVideoCallCollectingMetricsWithAudioCodec("G722");
252 } 268 }
253 269
254 IN_PROC_BROWSER_TEST_F( 270 IN_PROC_BROWSER_TEST_F(
255 WebRtcStatsPerfBrowserTest, 271 WebRtcStatsPerfBrowserTest,
256 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_PCMU) { 272 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_PCMU) {
257 base::ThreadRestrictions::ScopedAllowIO allow_io; 273 base::ThreadRestrictions::ScopedAllowIO allow_io;
258 RunsAudioAndVideoCallCollectingMetrics("PCMU", kUseDefaultVideoCodec); 274 RunsAudioAndVideoCallCollectingMetricsWithAudioCodec("PCMU");
259 } 275 }
260 276
261 IN_PROC_BROWSER_TEST_F( 277 IN_PROC_BROWSER_TEST_F(
262 WebRtcStatsPerfBrowserTest, 278 WebRtcStatsPerfBrowserTest,
263 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_PCMA) { 279 MANUAL_RunsAudioAndVideoCallCollectingMetrics_AudioCodec_PCMA) {
264 base::ThreadRestrictions::ScopedAllowIO allow_io; 280 base::ThreadRestrictions::ScopedAllowIO allow_io;
265 RunsAudioAndVideoCallCollectingMetrics("PCMA", kUseDefaultVideoCodec); 281 RunsAudioAndVideoCallCollectingMetricsWithAudioCodec("PCMA");
266 } 282 }
267 283
268 IN_PROC_BROWSER_TEST_F( 284 IN_PROC_BROWSER_TEST_F(
269 WebRtcStatsPerfBrowserTest, 285 WebRtcStatsPerfBrowserTest,
270 MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_VP8) { 286 MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_VP8) {
271 base::ThreadRestrictions::ScopedAllowIO allow_io; 287 base::ThreadRestrictions::ScopedAllowIO allow_io;
272 RunsAudioAndVideoCallCollectingMetrics(kUseDefaultAudioCodec, "VP8"); 288 RunsAudioAndVideoCallCollectingMetricsWithVideoCodec(
289 "VP8", false /* prefer_hw_video_codec */);
273 } 290 }
274 291
275 IN_PROC_BROWSER_TEST_F( 292 IN_PROC_BROWSER_TEST_F(
276 WebRtcStatsPerfBrowserTest, 293 WebRtcStatsPerfBrowserTest,
277 MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_VP9) { 294 MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_VP9) {
278 base::ThreadRestrictions::ScopedAllowIO allow_io; 295 base::ThreadRestrictions::ScopedAllowIO allow_io;
279 RunsAudioAndVideoCallCollectingMetrics(kUseDefaultAudioCodec, "VP9"); 296 RunsAudioAndVideoCallCollectingMetricsWithVideoCodec(
297 "VP9", false /* prefer_hw_video_codec */);
280 } 298 }
281 299
282 #if BUILDFLAG(RTC_USE_H264) 300 #if BUILDFLAG(RTC_USE_H264)
283 301
284 IN_PROC_BROWSER_TEST_F( 302 IN_PROC_BROWSER_TEST_F(
285 WebRtcStatsPerfBrowserTest, 303 WebRtcStatsPerfBrowserTest,
286 MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_H264) { 304 MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_H264) {
287 base::ThreadRestrictions::ScopedAllowIO allow_io; 305 base::ThreadRestrictions::ScopedAllowIO allow_io;
288 // Only run test if run-time feature corresponding to |rtc_use_h264| is on. 306 // Only run test if run-time feature corresponding to |rtc_use_h264| is on.
289 if (!base::FeatureList::IsEnabled(content::kWebRtcH264WithOpenH264FFmpeg)) { 307 if (!base::FeatureList::IsEnabled(content::kWebRtcH264WithOpenH264FFmpeg)) {
290 LOG(WARNING) << "Run-time feature WebRTC-H264WithOpenH264FFmpeg disabled. " 308 LOG(WARNING) << "Run-time feature WebRTC-H264WithOpenH264FFmpeg disabled. "
291 "Skipping WebRtcPerfBrowserTest." 309 "Skipping WebRtcPerfBrowserTest."
292 "MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_H264 (test " 310 "MANUAL_RunsAudioAndVideoCallCollectingMetrics_VideoCodec_H264 (test "
293 "\"OK\")"; 311 "\"OK\")";
294 return; 312 return;
295 } 313 }
296 RunsAudioAndVideoCallCollectingMetrics(kUseDefaultAudioCodec, "H264"); 314 RunsAudioAndVideoCallCollectingMetricsWithVideoCodec(
315 "H264", true /* prefer_hw_video_codec */);
297 } 316 }
298 317
299 #endif // BUILDFLAG(RTC_USE_H264) 318 #endif // BUILDFLAG(RTC_USE_H264)
300 319
301 IN_PROC_BROWSER_TEST_F( 320 IN_PROC_BROWSER_TEST_F(
302 WebRtcStatsPerfBrowserTest, 321 WebRtcStatsPerfBrowserTest,
303 MANUAL_RunsAudioAndVideoCallMeasuringGetStatsPerformance_Promise) { 322 MANUAL_RunsAudioAndVideoCallMeasuringGetStatsPerformance_Promise) {
304 base::ThreadRestrictions::ScopedAllowIO allow_io; 323 base::ThreadRestrictions::ScopedAllowIO allow_io;
305 RunsAudioAndVideoCallMeasuringGetStatsPerformance( 324 RunsAudioAndVideoCallMeasuringGetStatsPerformance(
306 GetStatsVariation::PROMISE_BASED); 325 GetStatsVariation::PROMISE_BASED);
307 } 326 }
308 327
309 IN_PROC_BROWSER_TEST_F( 328 IN_PROC_BROWSER_TEST_F(
310 WebRtcStatsPerfBrowserTest, 329 WebRtcStatsPerfBrowserTest,
311 MANUAL_RunsAudioAndVideoCallMeasuringGetStatsPerformance_Callback) { 330 MANUAL_RunsAudioAndVideoCallMeasuringGetStatsPerformance_Callback) {
312 base::ThreadRestrictions::ScopedAllowIO allow_io; 331 base::ThreadRestrictions::ScopedAllowIO allow_io;
313 RunsAudioAndVideoCallMeasuringGetStatsPerformance( 332 RunsAudioAndVideoCallMeasuringGetStatsPerformance(
314 GetStatsVariation::CALLBACK_BASED); 333 GetStatsVariation::CALLBACK_BASED);
315 } 334 }
316 335
317 } // namespace 336 } // namespace
318 337
319 } // namespace content 338 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698