| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Tests that precision issues do not cause ConeEffect::gain() to return NaN"); |
| jsTestIsAsync = true; |
| |
| function test() { |
| const audioContext = new OfflineAudioContext(1, 44100, 44100); |
| |
| const panner = audioContext.createPanner(); |
| panner.panningModel = "HRTF"; |
| panner.refDistance = 50; |
| panner.coneInnerAngle = 0; |
| panner.coneOuterAngle = 180; |
| panner.coneOuterGain = 0.25; |
| |
| const source = new ConstantSourceNode(audioContext); |
| source.connect(panner); |
| panner.connect(audioContext.destination); |
| |
| audioContext.listener.setPosition(203.4781799316, 0, 200); |
| panner.setPosition(121.7528991699, 0, 137.7344207764); |
| panner.setOrientation(0.7954952121, 0, 0.6058534384); |
| |
| source.start(); |
| audioContext.startRendering().then((buffer) => { |
| data = buffer.getChannelData(0); |
| shouldBeFalse("data.some(isNaN)"); |
| finishJSTest(); |
| }); |
| } |
| |
| onload = test; |
| |
| </script> |
| </body> |
| </html> |