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

Unified Diff: content/test/data/media/webrtc_test_audio.js

Issue 216523003: Tighten up webrtc audio tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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
Index: content/test/data/media/webrtc_test_audio.js
diff --git a/content/test/data/media/webrtc_test_audio.js b/content/test/data/media/webrtc_test_audio.js
index 40668c6d38180c9e3b96f1de13d26f8a5ae6a41c..da422f0dd8b88dbe0bd6ef65035edadbb8f07a45 100644
--- a/content/test/data/media/webrtc_test_audio.js
+++ b/content/test/data/media/webrtc_test_audio.js
@@ -24,26 +24,34 @@ function gatherAudioLevelSamples(peerConnection, numSamples, frequency,
// Tries to identify the beep-every-second signal generated by the fake audio
// media/audio/fake_audio_input_stream.cc. Fails the test if we can't see a
-// signal.
+// signal. The samples should have been gathered over at least three seconds
+// since we expect to see at least two "peaks" in there.
function verifyAudioIsPlaying(samples) {
- var average = 0;
- for (var i = 0; i < samples.length; ++i)
- average += samples[i] / samples.length;
+ var numPeaks = 0;
+ var maxLevel = 32768;
perkj_chrome 2014/03/28 13:29:17 where to this numbers come frome? What do they mea
phoglund_chromium 2014/03/28 13:55:26 Done.
+ var threshold = maxLevel * 0.8;
+ var currentlyOverThreshold = false;
+
+ // Detect when we have been been over the threshold and is going back again
+ // (i.e. count peaks). We should see about one peak per second.
+ for (var i = 0; i < samples.length; ++i) {
+ if (currentlyOverThreshold && samples[i] < threshold)
+ numPeaks++;
+ currentlyOverThreshold = samples[i] >= threshold;
+ }
var largest = 0;
for (var i = 0; i < samples.length; ++i)
largest = Math.max(largest, samples[i]);
- console.log('Average audio level: ' + average + ', largest: ' + largest);
+ console.log('Number of peaks identified: ' + numPeaks + ', max: ' + largest);
+
+ if (numPeaks < 2)
+ failTest('Expected to see at least two peaks in audio signal, got ' +
+ numPeaks + '. Dumping samples for analysis: "' + samples + '"');
- // TODO(phoglund): Make a more sophisticated curve-fitting algorithm. We want
- // to see a number of peaks with relative silence between them. The following
- // seems to work fine on a nexus 7.
- if (average < 3000 || average > 8000)
- failTest('Unexpected avg audio level: got ' + average + ', expected it ' +
- 'to be 4000 < avg < 8000.');
if (largest < 25000)
- failTest('Too low max audio level: got ' + largest + ', expected > 30000.');
+ failTest('Too low max audio level: got ' + largest + ', expected > 25000.');
}
// If silent (like when muted), we should get very near zero audio level.

Powered by Google App Engine
This is Rietveld 408576698