Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Unified Diff: third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html

Issue 2567183002: k-rate playbackRate and detune reaches final value (Closed)
Patch Set: Address review comments. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..0816d3d147833c650be215961a286182ca3c65a8
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/webaudio/AudioParam/audioparam-k-rate.html
@@ -0,0 +1,173 @@
+<!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>
+ let sampleRate = 48000;
+ let renderLength = 2048;
+ let eventEndTime = 0.015;
+
+ let 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");
+
+ let context = new OfflineAudioContext(1, renderLength, sampleRate);
+ let buffer = createConstantBuffer(context, renderLength, 1);
+ let 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");
+
+ let context = new OfflineAudioContext(1, renderLength, sampleRate);
+ let buffer = createConstantBuffer(context, renderLength, 1);
+ let source = new AudioBufferSourceNode(context, {
+ buffer: buffer
+ });
+
+ let panner = new PannerNode(context, {panningModel: "HRTF"});
+
+ source.connect(panner).connect(context.destination);
+
+ // 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")
+ .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>
« no previous file with comments | « no previous file | third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698