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

Unified Diff: chrome/test/data/media/html/audio_latency_perf.html

Issue 10411007: Add new PyAuto test for measuring audio tag latency. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: CR Fixes. Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/test/data/media/pink_noise_140ms.wav » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/media/html/audio_latency_perf.html
diff --git a/chrome/test/data/media/html/audio_latency_perf.html b/chrome/test/data/media/html/audio_latency_perf.html
new file mode 100644
index 0000000000000000000000000000000000000000..41ada7ad1335e1a5f62dde8ff84831a96ccf3acd
--- /dev/null
+++ b/chrome/test/data/media/html/audio_latency_perf.html
@@ -0,0 +1,108 @@
+<html>
scherkus (not reviewing) 2012/05/21 21:08:26 <!DOCTYPE html>
DaleCurtis 2012/05/21 22:22:01 Done.
+ <head>
+ <title>Audio Loop Benchmark</title>
+ <style>* { font-family: monospace; }</style>
+ </head>
+ <body>
+ <h1>Audio Loop Benchmark</h1>
+ <p>
+ Benchmark measuring how fast we can continuously repeat a short sound
+ clip. In the ideal scenario we'd have zero latency processing script,
+ seeking back to the beginning of the clip, and resuming audio playback.
+ </p>
+ <p>
+ Using the loop attribute will avoid involving script to seek back to the
+ beginning of the clip, but testing reveals it isn't adding to latency.
+ </p>
+
+ <input id="loop" type="checkbox" />Use loop attribute
scherkus (not reviewing) 2012/05/21 21:08:26 I'd either: a) Remove loop related stuff b) Ha
DaleCurtis 2012/05/21 22:22:01 Done. Made loop the default, cleaned up resulting
+ <button onclick="startTest(document.getElementById('loop').checked);">Start</button>
+
+ <p>
+ Times Played: <span id="times"></span></span><br>
+ Clip Duration: <span id="clip"></span></span><br>
+ Ideal Duration: <span id="ideal"></span><br>
+ Actual Duration: <span id="actual"></span><br>
+ Average Latency: <span id="average"></span><br>
+ </p>
+
+ <script>
+ var TIMES = 50, averageLatency = 0;
+
+ function getAndClearElement(id) {
+ var elem = document.getElementById(id);
+ elem.innerText = '';
+ return elem;
+ }
+
+ function startTest(use_loop) {
+ var timesElem = getAndClearElement('times');
+ var clipElem = getAndClearElement('clip');
+ var idealElem = getAndClearElement('ideal');
+ var actualElem = getAndClearElement('actual');
+ var averageElem = getAndClearElement('average');
+ var buttonElem = document.querySelector('button');
+
+ var loopCount = 0, idealDuration = 0, actualDuration = 0;
+ var startTime;
+
+ buttonElem.disabled = true;
+
+ function onLoaded() {
+ idealDuration = Math.round(audio.duration * TIMES * 1000, 0);
+ idealElem.innerText = idealDuration + ' ms';
+ clipElem.innerText = Math.round(audio.duration * 1000, 0) + ' ms';
+
+ if (use_loop) {
+ audio.addEventListener('seeked', onLoop);
+ audio.loop = true;
+ } else {
+ audio.addEventListener('ended', onEnded);
+ audio.addEventListener('seeked', onSeeked);
+ }
+ startTime = new Date();
+ audio.play();
+ }
+
+ var audio = document.createElement('audio');
+ audio.addEventListener('canplaythrough', onLoaded);
+ audio.src = '../pink_noise_140ms.wav';
+
+ function isTestDone() {
+ ++loopCount;
+ timesElem.innerText = loopCount + '/' + TIMES;
+ if (loopCount == TIMES) {
+ actualDuration = new Date() - startTime;
+ actualElem.innerText = actualDuration + ' ms';
+ buttonElem.disabled = false;
+
+ averageLatency = (actualDuration - idealDuration) / loopCount;
+ averageElem.innerText = averageLatency + ' ms';
+
+ // Let the PyAuto test know we're done testing.
+ if (window.domAutomationController)
+ window.domAutomationController.send(true);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ function onEnded() {
+ if (!isTestDone())
+ audio.currentTime = 0;
+ }
+
+ function onSeeked() {
+ audio.play();
+ }
+
+ function onLoop() {
+ if (isTestDone())
+ audio.pause();
+ }
+ }
+ </script>
+ </body>
+</html>
« no previous file with comments | « no previous file | chrome/test/data/media/pink_noise_140ms.wav » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698