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

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

Issue 2567183002: k-rate playbackRate and detune reaches final value (Closed)
Patch Set: Wait 1.5 quanta instead of 1 for roundoff. 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 unified diff | Download patch
OLDNEW
(Empty)
1 <!doctype html>
2 <html>
3 <head>
4 <title>Test k-rate AudioParams</title>
5 <script src="../../resources/testharness.js"></script>
6 <script src="../../resources/testharnessreport.js"></script>
7 <script src="../resources/audit-util.js"></script>
8 <script src="../resources/audit.js"></script>
9 </head>
10
11 <body>
12 <script>
13 var sampleRate = 48000;
hongchan 2017/01/12 23:32:15 Use 'let' since this is a new test.
14 var renderLength = 2048;
15 var eventEndTime = 0.015;
16
17 var audit = Audit.createTaskRunner()
18
19 audit.define("validate", function (task, should) {
20 task.describe("Validate test parameters");
21 should(eventEndTime, "eventTime").beLessThan(renderLength / sampleRate);
22 task.done();
23 });
24
25 audit.define("playbackrate+detune", function (task, should) {
26 task.describe("Test k-rate AudioBufferSourceNode AudioParams");
27
28 var context = new OfflineAudioContext(1, renderLength, sampleRate);
29 var buffer = createConstantBuffer(context, renderLength, 1);
30 var node = new AudioBufferSourceNode(context, {
31 buffer: buffer
32 });
33
34 node.connect(context.destination);
35
36 // Initialize detune and playbackRate to some non-zero value (because
37 // we're using exponential ramps. Then add exponential ramp to some
38 // non-zero end value. The actual values don't matter as long as
39 // they're strictly positive.
40 node.detune.setValueAtTime(0.125, 0);
41 node.playbackRate.setValueAtTime(1, 0);
42
43 node.detune.exponentialRampToValueAtTime(0.75, 0.015);
44 node.playbackRate.exponentialRampToValueAtTime(0.5, 0.015);
45
46 node.start();
47
48 context.startRendering()
49 .then(function () {
50 // The final values for each attribute should be the expected final
51 // value.
52 should(node.detune.value, "Final node.detune.value")
53 .beEqualTo(0.75);
54 should(node.playbackRate.value, "Final node.playbackRate.value")
55 .beEqualTo(0.5);
56 })
57 .then(task.done.bind(task));
58 });
59
60 audit.define("panner-k-rate", function (task, should) {
61 task.describe("Test k-rate PannerNode and AudioListenerNode AudioParams" );
hongchan 2017/01/12 23:32:15 Let's wrap this line.
62
63 var context = new OfflineAudioContext(1, renderLength, sampleRate);
64 var buffer = createConstantBuffer(context, renderLength, 1);
65 var source = new AudioBufferSourceNode(context, {
66 buffer: buffer
67 });
68
69 var panner = new PannerNode(context, {panningModel: "HRTF"});
70
71 source.connect(panner).connect(context.destination);
72
73
hongchan 2017/01/12 23:32:15 Remove a redundant empty line.
74 // Initialize the k-rate parameters to some positive value. Then add
75 // exponential ramp to some non-zero end value. The actual values don't
76 // matter as long as they're strictly positive.
77 panner.orientationX.setValueAtTime(1, 0);
78 panner.orientationY.setValueAtTime(1, 0);
79 panner.orientationZ.setValueAtTime(1, 0);
80
81 panner.positionX.setValueAtTime(5, 0);
82 panner.positionY.setValueAtTime(5, 0);
83 panner.positionZ.setValueAtTime(5, 0);
84
85 context.listener.forwardX.setValueAtTime(1, 0);
86 context.listener.forwardY.setValueAtTime(1, 0);
87 context.listener.forwardZ.setValueAtTime(1, 0);
88
89 context.listener.positionX.setValueAtTime(.5, 0);
90 context.listener.positionY.setValueAtTime(.5, 0);
91 context.listener.positionZ.setValueAtTime(.5, 0);
92
93 context.listener.upX.setValueAtTime(1, 0);
94 context.listener.upY.setValueAtTime(1, 0);
95 context.listener.upZ.setValueAtTime(1, 0);
96
97 panner.orientationX.exponentialRampToValueAtTime(2.5, 0.015);
98 panner.orientationY.exponentialRampToValueAtTime(2.5, 0.015);
99 panner.orientationZ.exponentialRampToValueAtTime(2.5, 0.015);
100
101 panner.positionX.exponentialRampToValueAtTime(11, 0.015);
102 panner.positionY.exponentialRampToValueAtTime(11, 0.015);
103 panner.positionZ.exponentialRampToValueAtTime(11, 0.015);
104
105 context.listener.forwardX.exponentialRampToValueAtTime(3, 0.015);
106 context.listener.forwardY.exponentialRampToValueAtTime(3, 0.015);
107 context.listener.forwardZ.exponentialRampToValueAtTime(3, 0.015);
108
109 context.listener.positionX.exponentialRampToValueAtTime(0.5, 0.015);
110 context.listener.positionY.exponentialRampToValueAtTime(0.5, 0.015);
111 context.listener.positionZ.exponentialRampToValueAtTime(0.5, 0.015);
112
113 context.listener.upX.exponentialRampToValueAtTime(4, 0.015);
114 context.listener.upY.exponentialRampToValueAtTime(4, 0.015);
115 context.listener.upZ.exponentialRampToValueAtTime(4, 0.015);
116
117 source.start();
118
119 context.startRendering()
120 .then(function () {
121 // The final values for each attribute should be the expected final
122 // value.
123 should(panner.orientationX.value, "Final panner.orientationX.value" )
hongchan 2017/01/12 23:32:15 Wrap lines at 80 cols from here.
124 .beEqualTo(2.5);
125 should(panner.orientationY.value, "Final panner.orientationY.value" )
126 .beEqualTo(2.5);
127 should(panner.orientationZ.value, "Final panner.orientationZ.value" )
128 .beEqualTo(2.5);
129 should(panner.positionX.value, "Final panner.positionX.value")
130 .beEqualTo(11);
131 should(panner.positionY.value, "Final panner.positionY.value")
132 .beEqualTo(11);
133 should(panner.positionZ.value, "Final panner.positionZ.value")
134 .beEqualTo(11);
135
136 should(context.listener.forwardX.value, "Final context.listener.for wardX.value")
137 .beEqualTo(3);
138 should(context.listener.forwardY.value, "Final context.listener.for wardY.value")
139 .beEqualTo(3);
140 should(context.listener.forwardZ.value, "Final context.listener.for wardZ.value")
141 .beEqualTo(3);
142 should(context.listener.positionX.value, "Final context.listener.po sitionX.value")
143 .beEqualTo(0.5);
144 should(context.listener.positionY.value, "Final context.listener.po sitionY.value")
145 .beEqualTo(0.5);
146 should(context.listener.positionZ.value, "Final context.listener.po sitionZ.value")
147 .beEqualTo(0.5);
148 should(context.listener.upX.value, "Final context.listener.upX.valu e")
149 .beEqualTo(4);
150 should(context.listener.upY.value, "Final context.listener.upY.valu e")
151 .beEqualTo(4);
152 should(context.listener.upZ.value, "Final context.listener.upZ.valu e")
153 .beEqualTo(4);
154 })
155 .then(task.done.bind(task));
156 });
157
158 audit.run();
159 </script>
160 </body>
161 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698