blob: e069dfdf963e83c22cd91a86444ecf06adcfa54b [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script src="resources/compatibility.js"></script>
<script src="resources/audio-testing.js"></script>
<script src="../resources/js-test.js"></script>
<script src="resources/panner-model-testing.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description("Test PannerNode handling of feedback loops");
// See crbug.com/331446.
// Create a simple feedback loop and make sure the panner node processes it correctly.
function runTest() {
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
window.jsTestIsAsync = true;
var sampleRate = 44100;
var renderLengthSeconds = 1;
// Create offline audio context.
var context = new OfflineAudioContext(2, sampleRate * renderLengthSeconds, sampleRate);
// Create nodes in graph. This is based on the test given in crbug.com/331446.
var source = context.createBufferSource();
source.buffer = createImpulseBuffer(context, sampleRate * renderLengthSeconds);
var activateNode = context.createGain();
var dry = context.createGain();
var wet = context.createGain();
var filter = context.createBiquadFilter();
var delay = context.createDelay();
var feedbackNode = context.createGain();
var output = context.createGain();
delay.delayTime.value = 0.1;
wet.gain.value = 0.5;
dry.gain.value = 1;
feedbackNode.gain.value = 0.45;
filter.frequency.value = 20000;
source.connect(activateNode);
activateNode.connect(delay);
activateNode.connect(dry);
delay.connect(filter);
filter.connect(feedbackNode);
feedbackNode.connect(delay);
feedbackNode.connect(wet);
wet.connect(output);
dry.connect(output);
var panner = context.createPanner();
panner.coneOuterGain = 0.1;
panner.coneOuterAngle = 180;
panner.coneInnerAngle = 0;
panner.connect(context.destination);
output.connect(panner);
// Render. We don't care what the output is, though.
context.oncomplete = function (event) {
testPassed("Rendering successfully completed.");
finishJSTest();
};
context.startRendering();
}
runTest();
successfullyParsed = true;
</script>
</body>
</html>