Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html |
| diff --git a/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7ab3c74aed149bf74f096f5bb49c668785f2ae9a |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html |
| @@ -0,0 +1,161 @@ |
| +<!doctype html> |
| +<html> |
| + <head> |
| + <title>Test k-rate AudioParams</title> |
| + <script src="../../resources/testharness.js"></script> |
| + <script src="../../resources/testharnessreport.js"></script> |
| + <script src="../resources/audit-util.js"></script> |
| + <script src="../resources/audit.js"></script> |
| + </head> |
| + |
| + <body> |
| + <script> |
| + var sampleRate = 48000; |
|
hongchan
2017/01/12 23:32:15
Use 'let' since this is a new test.
|
| + var renderLength = 2048; |
| + var eventEndTime = 0.015; |
| + |
| + var audit = Audit.createTaskRunner() |
| + |
| + audit.define("validate", function (task, should) { |
| + task.describe("Validate test parameters"); |
| + should(eventEndTime, "eventTime").beLessThan(renderLength / sampleRate); |
| + task.done(); |
| + }); |
| + |
| + audit.define("playbackrate+detune", function (task, should) { |
| + task.describe("Test k-rate AudioBufferSourceNode AudioParams"); |
| + |
| + var context = new OfflineAudioContext(1, renderLength, sampleRate); |
| + var buffer = createConstantBuffer(context, renderLength, 1); |
| + var node = new AudioBufferSourceNode(context, { |
| + buffer: buffer |
| + }); |
| + |
| + node.connect(context.destination); |
| + |
| + // Initialize detune and playbackRate to some non-zero value (because |
| + // we're using exponential ramps. Then add exponential ramp to some |
| + // non-zero end value. The actual values don't matter as long as |
| + // they're strictly positive. |
| + node.detune.setValueAtTime(0.125, 0); |
| + node.playbackRate.setValueAtTime(1, 0); |
| + |
| + node.detune.exponentialRampToValueAtTime(0.75, 0.015); |
| + node.playbackRate.exponentialRampToValueAtTime(0.5, 0.015); |
| + |
| + node.start(); |
| + |
| + context.startRendering() |
| + .then(function () { |
| + // The final values for each attribute should be the expected final |
| + // value. |
| + should(node.detune.value, "Final node.detune.value") |
| + .beEqualTo(0.75); |
| + should(node.playbackRate.value, "Final node.playbackRate.value") |
| + .beEqualTo(0.5); |
| + }) |
| + .then(task.done.bind(task)); |
| + }); |
| + |
| + audit.define("panner-k-rate", function (task, should) { |
| + task.describe("Test k-rate PannerNode and AudioListenerNode AudioParams"); |
|
hongchan
2017/01/12 23:32:15
Let's wrap this line.
|
| + |
| + var context = new OfflineAudioContext(1, renderLength, sampleRate); |
| + var buffer = createConstantBuffer(context, renderLength, 1); |
| + var source = new AudioBufferSourceNode(context, { |
| + buffer: buffer |
| + }); |
| + |
| + var panner = new PannerNode(context, {panningModel: "HRTF"}); |
| + |
| + source.connect(panner).connect(context.destination); |
| + |
| + |
|
hongchan
2017/01/12 23:32:15
Remove a redundant empty line.
|
| + // Initialize the k-rate parameters to some positive value. Then add |
| + // exponential ramp to some non-zero end value. The actual values don't |
| + // matter as long as they're strictly positive. |
| + panner.orientationX.setValueAtTime(1, 0); |
| + panner.orientationY.setValueAtTime(1, 0); |
| + panner.orientationZ.setValueAtTime(1, 0); |
| + |
| + panner.positionX.setValueAtTime(5, 0); |
| + panner.positionY.setValueAtTime(5, 0); |
| + panner.positionZ.setValueAtTime(5, 0); |
| + |
| + context.listener.forwardX.setValueAtTime(1, 0); |
| + context.listener.forwardY.setValueAtTime(1, 0); |
| + context.listener.forwardZ.setValueAtTime(1, 0); |
| + |
| + context.listener.positionX.setValueAtTime(.5, 0); |
| + context.listener.positionY.setValueAtTime(.5, 0); |
| + context.listener.positionZ.setValueAtTime(.5, 0); |
| + |
| + context.listener.upX.setValueAtTime(1, 0); |
| + context.listener.upY.setValueAtTime(1, 0); |
| + context.listener.upZ.setValueAtTime(1, 0); |
| + |
| + panner.orientationX.exponentialRampToValueAtTime(2.5, 0.015); |
| + panner.orientationY.exponentialRampToValueAtTime(2.5, 0.015); |
| + panner.orientationZ.exponentialRampToValueAtTime(2.5, 0.015); |
| + |
| + panner.positionX.exponentialRampToValueAtTime(11, 0.015); |
| + panner.positionY.exponentialRampToValueAtTime(11, 0.015); |
| + panner.positionZ.exponentialRampToValueAtTime(11, 0.015); |
| + |
| + context.listener.forwardX.exponentialRampToValueAtTime(3, 0.015); |
| + context.listener.forwardY.exponentialRampToValueAtTime(3, 0.015); |
| + context.listener.forwardZ.exponentialRampToValueAtTime(3, 0.015); |
| + |
| + context.listener.positionX.exponentialRampToValueAtTime(0.5, 0.015); |
| + context.listener.positionY.exponentialRampToValueAtTime(0.5, 0.015); |
| + context.listener.positionZ.exponentialRampToValueAtTime(0.5, 0.015); |
| + |
| + context.listener.upX.exponentialRampToValueAtTime(4, 0.015); |
| + context.listener.upY.exponentialRampToValueAtTime(4, 0.015); |
| + context.listener.upZ.exponentialRampToValueAtTime(4, 0.015); |
| + |
| + source.start(); |
| + |
| + context.startRendering() |
| + .then(function () { |
| + // The final values for each attribute should be the expected final |
| + // value. |
| + should(panner.orientationX.value, "Final panner.orientationX.value") |
|
hongchan
2017/01/12 23:32:15
Wrap lines at 80 cols from here.
|
| + .beEqualTo(2.5); |
| + should(panner.orientationY.value, "Final panner.orientationY.value") |
| + .beEqualTo(2.5); |
| + should(panner.orientationZ.value, "Final panner.orientationZ.value") |
| + .beEqualTo(2.5); |
| + should(panner.positionX.value, "Final panner.positionX.value") |
| + .beEqualTo(11); |
| + should(panner.positionY.value, "Final panner.positionY.value") |
| + .beEqualTo(11); |
| + should(panner.positionZ.value, "Final panner.positionZ.value") |
| + .beEqualTo(11); |
| + |
| + should(context.listener.forwardX.value, "Final context.listener.forwardX.value") |
| + .beEqualTo(3); |
| + should(context.listener.forwardY.value, "Final context.listener.forwardY.value") |
| + .beEqualTo(3); |
| + should(context.listener.forwardZ.value, "Final context.listener.forwardZ.value") |
| + .beEqualTo(3); |
| + should(context.listener.positionX.value, "Final context.listener.positionX.value") |
| + .beEqualTo(0.5); |
| + should(context.listener.positionY.value, "Final context.listener.positionY.value") |
| + .beEqualTo(0.5); |
| + should(context.listener.positionZ.value, "Final context.listener.positionZ.value") |
| + .beEqualTo(0.5); |
| + should(context.listener.upX.value, "Final context.listener.upX.value") |
| + .beEqualTo(4); |
| + should(context.listener.upY.value, "Final context.listener.upY.value") |
| + .beEqualTo(4); |
| + should(context.listener.upZ.value, "Final context.listener.upZ.value") |
| + .beEqualTo(4); |
| + }) |
| + .then(task.done.bind(task)); |
| + }); |
| + |
| + audit.run(); |
| + </script> |
| + </body> |
| +</html> |