| Index: third_party/WebKit/LayoutTests/webaudio/audioparam-setTargetAtTime-continuous.html
|
| diff --git a/third_party/WebKit/LayoutTests/webaudio/audioparam-setTargetAtTime-continuous.html b/third_party/WebKit/LayoutTests/webaudio/audioparam-setTargetAtTime-continuous.html
|
| deleted file mode 100644
|
| index da3bce0481facd27a67bdf799e7a1c57dddadd2d..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/LayoutTests/webaudio/audioparam-setTargetAtTime-continuous.html
|
| +++ /dev/null
|
| @@ -1,235 +0,0 @@
|
| -<!doctype html>
|
| -<html>
|
| - <head>
|
| - <script src="../resources/js-test.js"></script>
|
| - <script src="resources/compatibility.js"></script>
|
| - <script src="resources/audit-util.js"></script>
|
| - <script src="resources/audio-testing.js"></script>
|
| - <script src="resources/audioparam-testing.js"></script>
|
| - <title>SetTarget Followed by Linear or Exponential Ramp Is Continuous</title>
|
| - </head>
|
| -
|
| - <body>
|
| - <script>
|
| - description("Test SetTarget Followed by Linear or Exponential Ramp");
|
| - window.jsTestIsAsync = true;
|
| -
|
| - var sampleRate = 48000;
|
| - var renderQuantum = 128;
|
| - // Test doesn't need to run for very long.
|
| - var renderDuration = 0.1;
|
| - // Where the ramp should end
|
| - var rampEndTime = renderDuration - .05;
|
| - var renderFrames = renderDuration * sampleRate;
|
| - var timeConstant = 0.01;
|
| -
|
| - var audit = Audit.createTaskRunner();
|
| -
|
| - // All of the tests start a SetTargetAtTime after one rendering quantum. The following tests
|
| - // handle various cases where a linear or exponential ramp is scheduled at or after
|
| - // SetTargetAtTime starts.
|
| -
|
| - audit.defineTask("linear ramp replace", function (done) {
|
| - // Schedule a linear ramp to start at the same time as SetTargetAtTime. This effectively
|
| - // replaces the SetTargetAtTime as if it never existed.
|
| - runTest("Linear ramp", {
|
| - automationFunction: function (audioparam, endValue, endTime) {
|
| - audioparam.linearRampToValueAtTime(endValue, endTime);
|
| - },
|
| - referenceFunction: linearResult,
|
| - automationTime: renderQuantum / sampleRate,
|
| - thresholdSetTarget: 0,
|
| - thresholdRamp: 1.26765e-6
|
| - }).then(done);
|
| - });
|
| -
|
| - audit.defineTask("delayed linear ramp", function (done) {
|
| - // Schedule a linear ramp to start after the SetTargetAtTime has already started rendering.
|
| - // This is the main test to verify that the linear ramp is continuous with the
|
| - // SetTargetAtTime curve.
|
| - runTest("Delayed linear ramp", {
|
| - automationFunction: function (audioparam, endValue, endTime) {
|
| - audioparam.linearRampToValueAtTime(endValue, endTime);
|
| - },
|
| - referenceFunction: linearResult,
|
| - automationTime: 4 * renderQuantum / sampleRate,
|
| - thresholdSetTarget: 3.43632e-7,
|
| - thresholdRamp: 1.07972e-6
|
| - }).then(done);
|
| - });
|
| -
|
| - audit.defineTask("expo ramp replace", function (done) {
|
| - // Like "linear ramp replace", but with an exponential ramp instead.
|
| - runTest("Exponential ramp", {
|
| - automationFunction: function (audioparam, endValue, endTime) {
|
| - audioparam.exponentialRampToValueAtTime(endValue, endTime);
|
| - },
|
| - referenceFunction: exponentialResult,
|
| - automationTime: renderQuantum / sampleRate,
|
| - thresholdSetTarget: 0,
|
| - thresholdRamp: 1.14441e-5
|
| - }).then(done);
|
| - });
|
| -
|
| - audit.defineTask("delayed expo ramp", function (done) {
|
| - // Like "delayed linear ramp", but with an exponential ramp instead.
|
| - runTest("Delayed exponential ramp", {
|
| - automationFunction: function (audioparam, endValue, endTime) {
|
| - audioparam.exponentialRampToValueAtTime(endValue, endTime);
|
| - },
|
| - referenceFunction: exponentialResult,
|
| - automationTime: 4 * renderQuantum / sampleRate,
|
| - thresholdSetTarget: 3.43632e-7,
|
| - thresholdRamp: 4.29154e-6
|
| - }).then(done);
|
| - });
|
| -
|
| - audit.defineTask("finish", function (done) {
|
| - finishJSTest();
|
| - done();
|
| - });
|
| -
|
| - audit.runTasks();
|
| -
|
| - function computeExpectedResult(automationTime, timeConstant, endValue, endTime, rampFunction) {
|
| - // The result is a constant value of 1 for one rendering quantum, then a SetTarget event
|
| - // lasting to |automationTime|, at which point a ramp starts which ends at |endValue|
|
| - // at |endTime|. Then the rest of curve should be held constant at |endValue|.
|
| - var initialPart = new Array(renderQuantum);
|
| - initialPart.fill(1);
|
| -
|
| - // Generate 1 extra frame so that we know where to start the linear ramp. The last sample
|
| - // of the array is where the ramp should start from.
|
| - var setTargetPart = createExponentialApproachArray(renderQuantum / sampleRate,
|
| - automationTime + 1 / sampleRate, 1, 0, sampleRate, timeConstant);
|
| - var setTargetLength = setTargetPart.length;
|
| -
|
| - // Generate the ramp starting at |automationTime| with a value from last value of the
|
| - // SetTarget curve above.
|
| - var rampPart = rampFunction(automationTime, endTime,
|
| - setTargetPart[setTargetLength - 1], endValue, sampleRate);
|
| -
|
| - // Finally finish out the rest with a constant value of |endValue|, if needed.
|
| - var finalPart = new Array(Math.floor((renderDuration - endTime) * sampleRate));
|
| - finalPart.fill(endValue);
|
| -
|
| - // Return the four parts separately for testing.
|
| - return {
|
| - initialPart: initialPart,
|
| - setTargetPart: setTargetPart.slice(0, setTargetLength - 1),
|
| - rampPart: rampPart,
|
| - tailPart: finalPart
|
| - };
|
| - }
|
| -
|
| - function linearResult(automationTime, timeConstant, endValue, endTime) {
|
| - return computeExpectedResult(automationTime, timeConstant, endValue, endTime, createLinearRampArray);
|
| - }
|
| -
|
| - function exponentialResult(automationTime, timeConstant, endValue, endTime) {
|
| - return computeExpectedResult(automationTime, timeConstant, endValue, endTime, createExponentialRampArray);
|
| - }
|
| -
|
| - // Run test to verify that a SetTarget followed by a ramp produces a continuous curve.
|
| - // |prefix| is a string to use as a prefix for the messages. |options| is a dictionary
|
| - // describing how the test is run:
|
| - //
|
| - // |options.automationFunction|
|
| - // The function to use to start the automation, which should be a linear or exponential
|
| - // ramp automation. This function has three arguments:
|
| - // audioparam - the AudioParam to be automated
|
| - // endValue - the end value of the ramp
|
| - // endTime - the end time fo the ramp.
|
| - // |options.referenceFunction|
|
| - // The function to generated the expected result. This function has four arguments:
|
| - // automationTime - the value of |options.automationTime|
|
| - // timeConstant - time constant used for SetTargetAtTime
|
| - // rampEndValue - end value for the ramp (same value used for automationFunction)
|
| - // rampEndTime - end time for the ramp (same value used for automationFunction)
|
| - // |options.automationTime|
|
| - // Time at which the |automationFunction| is called to start the automation.
|
| - // |options.thresholdSetTarget|
|
| - // Threshold to use for verifying that the initial (if any) SetTargetAtTime portion had
|
| - // the correct values.
|
| - // |options.thresholdRamp|
|
| - // Threshold to use for verifying that the ramp portion had the correct values.
|
| - function runTest(prefix, options) {
|
| - var automationFunction = options.automationFunction;
|
| - var referenceFunction = options.referenceFunction;
|
| - var automationTime = options.automationTime;
|
| - var thresholdSetTarget = options.thresholdSetTarget || 0;
|
| - var thresholdRamp = options.thresholdRamp || 0;
|
| -
|
| - // End value for the ramp. Fairly arbitrary, but should be distinctly different from the
|
| - // target value for SetTargetAtTime and the initial value of gain.gain.
|
| - var rampEndValue = 2;
|
| - var context = new OfflineAudioContext(1, renderFrames, sampleRate);
|
| -
|
| - // A constant source of amplitude 1.
|
| - var source = context.createBufferSource();
|
| - source.buffer = createConstantBuffer(context, 1, 1);
|
| - source.loop = true;
|
| -
|
| - var gain = context.createGain();
|
| -
|
| - // The SetTarget starts after one rendering quantum.
|
| - gain.gain.setTargetAtTime(0, renderQuantum / context.sampleRate, timeConstant);
|
| -
|
| - // Schedule the ramp at |automationTime|. If this time is past the first rendering quantum,
|
| - // the SetTarget event will run for a bit before running the ramp. Otherwise, the SetTarget
|
| - // should be completely replaced by the ramp.
|
| - context.suspend(automationTime)
|
| - .then(function () {
|
| - automationFunction(gain.gain, rampEndValue, rampEndTime);
|
| - context.resume();
|
| - });
|
| -
|
| - source.connect(gain);
|
| - gain.connect(context.destination);
|
| -
|
| - source.start();
|
| -
|
| - return context.startRendering().then(function (resultBuffer) {
|
| - var success = true;
|
| - var result = resultBuffer.getChannelData(0);
|
| - var expected = referenceFunction(automationTime, timeConstant, rampEndValue, rampEndTime);
|
| -
|
| - // Verify each part of the curve separately.
|
| - var startIndex = 0;
|
| - var length = expected.initialPart.length;
|
| -
|
| - // Verify that the initial part of the curve is constant.
|
| - success = Should(prefix + ": Initial part", result.slice(0, length))
|
| - .beCloseToArray(expected.initialPart, 0) && success;
|
| -
|
| - // Verify the SetTarget part of the curve, if the SetTarget did actually run.
|
| - startIndex += length;
|
| - length = expected.setTargetPart.length;
|
| - if (length) {
|
| - success = Should(prefix + ": SetTarget part", result.slice(startIndex, startIndex +
|
| - length))
|
| - .beCloseToArray(expected.setTargetPart, thresholdSetTarget) && success;
|
| - } else {
|
| - testPassed("SetTarget part was correctly replaced by the ramp");
|
| - }
|
| -
|
| - // Verify the ramp part of the curve
|
| - startIndex += length;
|
| - length = expected.rampPart.length;
|
| - success = Should(prefix, result.slice(startIndex, startIndex + length))
|
| - .beCloseToArray(expected.rampPart, thresholdRamp) && success;
|
| -
|
| - // Verify that the end of the curve after the ramp (if any) is a constant.
|
| - startIndex += length;
|
| - success = Should(prefix + ": Tail part", result.slice(startIndex))
|
| - .beCloseToArray(expected.tailPart, 0) && success;
|
| -
|
| - if (success)
|
| - testPassed(prefix + " preceded by SetTarget is continuous.\n");
|
| - else
|
| - testFailed(prefix + " preceded by SetTarget was not continuous.\n");
|
| - });
|
| - }
|
| - </script>
|
| - </body>
|
| -</html>
|
|
|