OLD | NEW |
---|---|
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 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
386 // pixels are not the same along the X and Y axis. | 386 // pixels are not the same along the X and Y axis. |
387 // The result of the analysis is sent back to the test as a string on the | 387 // The result of the analysis is sent back to the test as a string on the |
388 // format "w=xxx:h=yyy". | 388 // format "w=xxx:h=yyy". |
389 function detectAspectRatio(callback, videoElementName) { | 389 function detectAspectRatio(callback, videoElementName) { |
390 var videoElement = $(videoElementName); | 390 var videoElement = $(videoElementName); |
391 var canvas = $(videoElementName + '-canvas'); | 391 var canvas = $(videoElementName + '-canvas'); |
392 | 392 |
393 var maxLightGreenPixelsX = 0; | 393 var maxLightGreenPixelsX = 0; |
394 var maxLightGreenPixelsY = 0; | 394 var maxLightGreenPixelsY = 0; |
395 | 395 |
396 var iterations = 0; | 396 var attempt = 0; |
397 var maxIterations = 10; | 397 var maxAttempts = 10; |
398 | 398 |
399 var detectorFunction = function() { | 399 var detectorFunction = function() { |
400 var width = videoElement.videoWidth; | 400 var width = videoElement.videoWidth; |
401 var height = videoElement.videoHeight; | 401 var height = videoElement.videoHeight; |
402 if (width == 0 || height == 0) | 402 if (width == 0 || height == 0) |
403 return; | 403 return; |
404 | 404 |
405 canvas.width = width; | 405 canvas.width = width; |
406 canvas.height = height; | 406 canvas.height = height; |
407 var aperture = Math.min(width, height) / 2; | 407 var aperture = Math.min(width, height) / 2; |
(...skipping 16 matching lines...) Expand all Loading... | |
424 // Walk vertically counting light green pixels. | 424 // Walk vertically counting light green pixels. |
425 for (var y = 0; y < aperture; ++y) { | 425 for (var y = 0; y < aperture; ++y) { |
426 if (pixels.data[4 * y * aperture + 1] != COLOR_BACKGROUND_GREEN) | 426 if (pixels.data[4 * y * aperture + 1] != COLOR_BACKGROUND_GREEN) |
427 lightGreenPixelsY++; | 427 lightGreenPixelsY++; |
428 } | 428 } |
429 if (lightGreenPixelsX > maxLightGreenPixelsX) | 429 if (lightGreenPixelsX > maxLightGreenPixelsX) |
430 maxLightGreenPixelsX = lightGreenPixelsX; | 430 maxLightGreenPixelsX = lightGreenPixelsX; |
431 if (lightGreenPixelsY > maxLightGreenPixelsY) | 431 if (lightGreenPixelsY > maxLightGreenPixelsY) |
432 maxLightGreenPixelsY = lightGreenPixelsY; | 432 maxLightGreenPixelsY = lightGreenPixelsY; |
433 | 433 |
434 if (++iterations > maxIterations) { | 434 // Allow maxLightGreenPixelsY = maxLightGreenPixelsX +-1 due to |
435 clearInterval(detectorInterval); | 435 // possible subpixel rendering on Mac and Android. |
perkj_chrome
2014/10/09 14:43:22
I think you should clear the interval even if the
phoglund_chromium
2014/10/09 15:04:37
Done.
| |
436 // Allow maxLightGreenPixelsY = maxLightGreenPixelsX +-1 due to | 436 if (maxLightGreenPixelsY > maxLightGreenPixelsX + 1 || |
437 // possible subpixel rendering on Mac and Android. | 437 maxLightGreenPixelsY < maxLightGreenPixelsX -1 || |
438 if (maxLightGreenPixelsY > maxLightGreenPixelsX + 1 || | 438 maxLightGreenPixelsY == 0 || |
439 maxLightGreenPixelsY < maxLightGreenPixelsX -1 || | 439 maxLightGreenPixelsX == width / 2 || |
440 maxLightGreenPixelsY == 0 || | 440 maxLightGreenPixelsY == height / 2) { |
441 maxLightGreenPixelsX == width / 2 || | 441 if (++attempt > maxAttempts) { |
442 maxLightGreenPixelsY == height / 2) { | |
443 failTest("Aspect ratio corrupted. X " + maxLightGreenPixelsX + | 442 failTest("Aspect ratio corrupted. X " + maxLightGreenPixelsX + |
444 " Y " + maxLightGreenPixelsY); | 443 " Y " + maxLightGreenPixelsY); |
445 } | 444 } |
445 else { | |
446 // We have a bad aspect ratio now; give a chance to shape up. | |
447 return; | |
448 } | |
449 } | |
446 | 450 |
447 var result = "w=" + width + ":h=" + height; | 451 clearInterval(detectorInterval); |
448 console.log(result); | 452 var result = "w=" + width + ":h=" + height; |
449 callback(result); | 453 callback(result); |
450 } | |
451 } | 454 } |
452 var detectorInterval = setInterval(detectorFunction, 50); | 455 var detectorInterval = setInterval(detectorFunction, 50); |
453 } | 456 } |
454 </script> | 457 </script> |
455 </head> | 458 </head> |
456 <body> | 459 <body> |
457 <table border="0"> | 460 <table border="0"> |
458 <!-- Canvases are named after their corresponding video elements. --> | 461 <!-- Canvases are named after their corresponding video elements. --> |
459 <tr> | 462 <tr> |
460 <td><video id="local-view-1" width="320" height="240" autoplay | 463 <td><video id="local-view-1" width="320" height="240" autoplay |
461 style="display:none"></video></td> | 464 style="display:none"></video></td> |
462 <td><canvas id="local-view-1-canvas" width="320" height="240" | 465 <td><canvas id="local-view-1-canvas" width="320" height="240" |
463 style="display:none"></canvas></td> | 466 style="display:none"></canvas></td> |
464 </tr> | 467 </tr> |
465 <tr> | 468 <tr> |
466 <td><video id="local-view-2" width="320" height="240" autoplay | 469 <td><video id="local-view-2" width="320" height="240" autoplay |
467 style="display:none"></video></td> | 470 style="display:none"></video></td> |
468 <td><canvas id="local-view-2-canvas" width="320" height="240" | 471 <td><canvas id="local-view-2-canvas" width="320" height="240" |
469 style="display:none"></canvas></td> | 472 style="display:none"></canvas></td> |
470 </tr> | 473 </tr> |
471 </table> | 474 </table> |
472 </body> | 475 </body> |
473 </html> | 476 </html> |
OLD | NEW |