Bug 1208371 - Modify WebAudio source nodes tests to wait for tracks befoure measuring nr of samples. r?padenot
Otherwise we don't get an accurate nr-of-nonzero-samples measurement as
the sources now lock on to a track (main thread) before attaching a
listener.
MozReview-Commit-ID: Jhsr6kgkdcM
--- a/dom/media/webaudio/test/test_mediaElementAudioSourceNode.html
+++ b/dom/media/webaudio/test/test_mediaElementAudioSourceNode.html
@@ -9,19 +9,16 @@
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
function test() {
var audio = new Audio("small-shot.ogg");
var context = new AudioContext();
- var node = context.createMediaElementSource(audio);
- var sp = context.createScriptProcessor(2048, 1);
- node.connect(sp);
var expectedMinNonzeroSampleCount;
var expectedMaxNonzeroSampleCount;
var nonzeroSampleCount = 0;
var complete = false;
var iterationCount = 0;
// This test ensures we receive at least expectedSampleCount nonzero samples
function processSamples(e) {
@@ -53,17 +50,20 @@ function test() {
nonzeroSamplesThisBuffer == 0) {
ok(true,
"Check received enough nonzero samples (got " + nonzeroSampleCount + ", expected min " + expectedMinNonzeroSampleCount + ")");
SimpleTest.finish();
complete = true;
}
}
- audio.oncanplaythrough = function() {
+ audio.onloadedmetadata = function() {
+ var node = context.createMediaElementSource(audio);
+ var sp = context.createScriptProcessor(2048, 1);
+ node.connect(sp);
// Use a fuzz factor of 100 to account for samples that just happen to be zero
expectedMinNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) - 100;
expectedMaxNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) + 500;
sp.onaudioprocess = processSamples;
};
}
SpecialPowers.pushPrefEnv({"set": [["media.preload.default", 2], ["media.preload.auto", 3]]}, test);
--- a/dom/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html
+++ b/dom/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html
@@ -9,19 +9,16 @@
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
SimpleTest.waitForExplicitFinish();
function test() {
var audio = new Audio("small-shot.ogg");
var context = new AudioContext();
- var node = context.createMediaStreamSource(audio.mozCaptureStreamUntilEnded());
- var sp = context.createScriptProcessor(2048, 1, 0);
- node.connect(sp);
var expectedMinNonzeroSampleCount;
var expectedMaxNonzeroSampleCount;
var nonzeroSampleCount = 0;
var complete = false;
var iterationCount = 0;
// This test ensures we receive at least expectedSampleCount nonzero samples
function processSamples(e) {
@@ -53,17 +50,20 @@ function test() {
nonzeroSamplesThisBuffer == 0) {
ok(true,
"Check received enough nonzero samples (got " + nonzeroSampleCount + ", expected min " + expectedMinNonzeroSampleCount + ")");
SimpleTest.finish();
complete = true;
}
}
- audio.oncanplaythrough = function() {
+ audio.onloadedmetadata = function() {
+ var node = context.createMediaStreamSource(audio.mozCaptureStreamUntilEnded());
+ var sp = context.createScriptProcessor(2048, 1, 0);
+ node.connect(sp);
// Use a fuzz factor of 100 to account for samples that just happen to be zero
expectedMinNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) - 100;
expectedMaxNonzeroSampleCount = Math.floor(audio.duration*context.sampleRate) + 500;
sp.onaudioprocess = processSamples;
};
}
SpecialPowers.pushPrefEnv({"set": [["media.preload.default", 2], ["media.preload.auto", 3]]}, test);