diff options
Diffstat (limited to 'dom/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html')
-rw-r--r-- | dom/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/dom/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html b/dom/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html new file mode 100644 index 000000000..1bb0ad9ec --- /dev/null +++ b/dom/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html @@ -0,0 +1,66 @@ +<!DOCTYPE HTML> +<html> +<meta charset="utf-8"> +<head> + <title>Test MediaElementAudioSourceNode with passthrough</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<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 nonzeroSampleCount = 0; + var complete = false; + var iterationCount = 0; + + var srcWrapped = SpecialPowers.wrap(node); + ok("passThrough" in srcWrapped, "MediaElementAudioSourceNode should support the passThrough API"); + srcWrapped.passThrough = true; + + // This test ensures we receive at least expectedSampleCount nonzero samples + function processSamples(e) { + if (complete) { + return; + } + + if (iterationCount == 0) { + // Don't start playing the audio until the AudioContext stuff is connected + // and running. + audio.play(); + } + ++iterationCount; + + var buf = e.inputBuffer.getChannelData(0); + var nonzeroSamplesThisBuffer = 0; + for (var i = 0; i < buf.length; ++i) { + if (buf[i] != 0) { + ++nonzeroSamplesThisBuffer; + } + } + nonzeroSampleCount += nonzeroSamplesThisBuffer; + if (iterationCount == 10) { + is(nonzeroSampleCount, 0, "The input must be silence"); + SimpleTest.finish(); + complete = true; + } + } + + audio.oncanplaythrough = function() { + sp.onaudioprocess = processSamples; + }; +} + +SpecialPowers.pushPrefEnv({"set": [["media.preload.default", 2], ["media.preload.auto", 3]]}, test); + +</script> +</pre> +</body> +</html> |