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

Side by Side Diff: content/test/data/media/getusermedia.html

Issue 638423002: Massively speed up aspect ratio-detecting WebRTC tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years, 2 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 | « no previous file | 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 <html> 1 <html>
2 <head> 2 <head>
3 <script type="text/javascript" src="webrtc_test_utilities.js"></script> 3 <script type="text/javascript" src="webrtc_test_utilities.js"></script>
4 <script type="text/javascript"> 4 <script type="text/javascript">
5 $ = function(id) { 5 $ = function(id) {
6 return document.getElementById(id); 6 return document.getElementById(id);
7 }; 7 };
8 8
9 setAllEventsOccuredHandler(function() { 9 setAllEventsOccuredHandler(function() {
10 reportTestSuccess(); 10 reportTestSuccess();
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 // pixels are not the same along the X and Y axis. 381 // pixels are not the same along the X and Y axis.
382 // The result of the analysis is sent back to the test as a string on the 382 // The result of the analysis is sent back to the test as a string on the
383 // format "w=xxx:h=yyy". 383 // format "w=xxx:h=yyy".
384 function detectAspectRatio(callback, videoElementName) { 384 function detectAspectRatio(callback, videoElementName) {
385 var videoElement = $(videoElementName); 385 var videoElement = $(videoElementName);
386 var canvas = $(videoElementName + '-canvas'); 386 var canvas = $(videoElementName + '-canvas');
387 387
388 var maxLightGreenPixelsX = 0; 388 var maxLightGreenPixelsX = 0;
389 var maxLightGreenPixelsY = 0; 389 var maxLightGreenPixelsY = 0;
390 390
391 // TODO(phoglund): don't iterate 10 times - too slow on Windows. 391 var attempt = 0;
392 var iterations = 0; 392 var maxAttempts = 10;
393 var maxIterations = 10;
394 393
395 var detectorFunction = function() { 394 var detectorFunction = function() {
396 var width = videoElement.videoWidth; 395 var width = videoElement.videoWidth;
397 var height = videoElement.videoHeight; 396 var height = videoElement.videoHeight;
398 if (width == 0 || height == 0) 397 if (width == 0 || height == 0)
399 return; 398 return;
400 399
401 canvas.width = width; 400 canvas.width = width;
402 canvas.height = height; 401 canvas.height = height;
403 var aperture = Math.min(width, height) / 2; 402 var aperture = Math.min(width, height) / 2;
(...skipping 16 matching lines...) Expand all
420 // Walk vertically counting light green pixels. 419 // Walk vertically counting light green pixels.
421 for (var y = 0; y < aperture; ++y) { 420 for (var y = 0; y < aperture; ++y) {
422 if (pixels.data[4 * y * aperture + 1] != COLOR_BACKGROUND_GREEN) 421 if (pixels.data[4 * y * aperture + 1] != COLOR_BACKGROUND_GREEN)
423 lightGreenPixelsY++; 422 lightGreenPixelsY++;
424 } 423 }
425 if (lightGreenPixelsX > maxLightGreenPixelsX) 424 if (lightGreenPixelsX > maxLightGreenPixelsX)
426 maxLightGreenPixelsX = lightGreenPixelsX; 425 maxLightGreenPixelsX = lightGreenPixelsX;
427 if (lightGreenPixelsY > maxLightGreenPixelsY) 426 if (lightGreenPixelsY > maxLightGreenPixelsY)
428 maxLightGreenPixelsY = lightGreenPixelsY; 427 maxLightGreenPixelsY = lightGreenPixelsY;
429 428
430 if (++iterations > maxIterations) { 429 // Allow maxLightGreenPixelsY = maxLightGreenPixelsX +-1 due to
431 clearInterval(detectorInterval); 430 // possible subpixel rendering on Mac and Android.
432 // Allow maxLightGreenPixelsY = maxLightGreenPixelsX +-1 due to 431 if (maxLightGreenPixelsY > maxLightGreenPixelsX + 1 ||
433 // possible subpixel rendering on Mac and Android. 432 maxLightGreenPixelsY < maxLightGreenPixelsX -1 ||
434 if (maxLightGreenPixelsY > maxLightGreenPixelsX + 1 || 433 maxLightGreenPixelsY == 0 ||
435 maxLightGreenPixelsY < maxLightGreenPixelsX -1 || 434 maxLightGreenPixelsX == width / 2 ||
436 maxLightGreenPixelsY == 0 || 435 maxLightGreenPixelsY == height / 2) {
437 maxLightGreenPixelsX == width / 2 || 436 if (++attempt > maxAttempts) {
438 maxLightGreenPixelsY == height / 2) { 437 clearInterval(detectorInterval);
439 failTest("Aspect ratio corrupted. X " + maxLightGreenPixelsX + 438 failTest("Aspect ratio corrupted. X " + maxLightGreenPixelsX +
440 " Y " + maxLightGreenPixelsY); 439 " Y " + maxLightGreenPixelsY);
441 } 440 }
441 else {
442 // We have a bad aspect ratio now; give a chance to shape up.
443 return;
444 }
445 }
442 446
443 var result = "w=" + width + ":h=" + height; 447 clearInterval(detectorInterval);
444 console.log(result); 448 var result = "w=" + width + ":h=" + height;
445 callback(result); 449 callback(result);
446 }
447 } 450 }
448 var detectorInterval = setInterval(detectorFunction, 50); 451 var detectorInterval = setInterval(detectorFunction, 50);
449 } 452 }
450 </script> 453 </script>
451 </head> 454 </head>
452 <body> 455 <body>
453 <table border="0"> 456 <table border="0">
454 <!-- Canvases are named after their corresponding video elements. --> 457 <!-- Canvases are named after their corresponding video elements. -->
455 <tr> 458 <tr>
456 <td><video id="local-view-1" width="320" height="240" autoplay 459 <td><video id="local-view-1" width="320" height="240" autoplay
457 style="display:none"></video></td> 460 style="display:none"></video></td>
458 <td><canvas id="local-view-1-canvas" width="320" height="240" 461 <td><canvas id="local-view-1-canvas" width="320" height="240"
459 style="display:none"></canvas></td> 462 style="display:none"></canvas></td>
460 </tr> 463 </tr>
461 <tr> 464 <tr>
462 <td><video id="local-view-2" width="320" height="240" autoplay 465 <td><video id="local-view-2" width="320" height="240" autoplay
463 style="display:none"></video></td> 466 style="display:none"></video></td>
464 <td><canvas id="local-view-2-canvas" width="320" height="240" 467 <td><canvas id="local-view-2-canvas" width="320" height="240"
465 style="display:none"></canvas></td> 468 style="display:none"></canvas></td>
466 </tr> 469 </tr>
467 </table> 470 </table>
468 </body> 471 </body>
469 </html> 472 </html>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698