gecko-dev/dom/browser-element/mochitest/file_browserElement_AudioCh...

66 строки
1.4 KiB
HTML

<html>
<body>
<script>
var audio = new Audio("audio.ogg");
var context = new AudioContext();
var node = context.createMediaElementSource(audio);
var sp = context.createScriptProcessor(2048, 1);
node.connect(sp);
var expectedSamplesCount;
var nonzeroSamplesCount = 0;
var isStarted = false;
function ok(aVal, aMsg) {
alert((!!aVal ? "OK" : "KO") + ", " + aMsg);
}
function finish() {
audio.onended = null;
audio.pause();
alert("DONE");
}
function processSamples(e) {
var buf = e.inputBuffer.getChannelData(0);
for (var i = 0; i < buf.length; ++i) {
if (buf[i] != 0) {
if (!isStarted) {
isStarted = true;
ok(true, "Start process audio sample.");
}
nonzeroSamplesCount++;
}
}
if (nonzeroSamplesCount >= expectedSamplesCount) {
finish();
}
}
audio.oncanplaythrough = function() {
var testDuration = audio.duration > 1.0 ? 1.0 : audio.duration * 0.5;
expectedSamplesCount = Math.floor(testDuration * context.sampleRate);
sp.onaudioprocess = processSamples;
};
function runCommands()
{
switch(location.hash) {
case '#play':
ok(true, "Audio starts playing.")
audio.play();
audio.onended = () => {
audio.onended = null;
ok(false, "Audio shouldn't go ended in this test!")
};
break;
default :
ok(false, "Undefined command!");
}
}
window.addEventListener('hashchange', runCommands);
</script>
</body>
</html>