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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/resources/panner-model-testing.js

Issue 1820403002: Implement Automations for PannerNode and AutioListener (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase UseCounter.h Created 4 years, 7 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
1 var sampleRate = 44100.0; 1 var sampleRate = 44100.0;
2 2
3 var numberOfChannels = 1; 3 var numberOfChannels = 1;
4 4
5 // Time step when each panner node starts. 5 // Time step when each panner node starts.
6 var timeStep = 0.001; 6 var timeStep = 0.001;
7 7
8 // Length of the impulse signal. 8 // Length of the impulse signal.
9 var pulseLengthFrames = Math.round(timeStep * sampleRate); 9 var pulseLengthFrames = Math.round(timeStep * sampleRate);
10 10
11 // How many panner nodes to create for the test 11 // How many panner nodes to create for the test
12 var nodesToCreate = 100; 12 var nodesToCreate = 100;
13 13
14 // Be sure we render long enough for all of our nodes. 14 // Be sure we render long enough for all of our nodes.
15 var renderLengthSeconds = timeStep * (nodesToCreate + 1); 15 var renderLengthSeconds = timeStep * (nodesToCreate + 1);
16 16
17 // These are global mostly for debugging. 17 // These are global mostly for debugging.
18 var context; 18 var context;
19 var impulse; 19 var impulse;
20 var bufferSource; 20 var bufferSource;
21 var panner; 21 var panner;
22 var position; 22 var position;
23 var time; 23 var time;
24 24
25 var renderedBuffer; 25 var renderedBuffer;
26 var renderedLeft; 26 var renderedLeft;
27 var renderedRight; 27 var renderedRight;
28 28
29 function createGraph(context, nodeCount) { 29 function createGraph(context, nodeCount, positionSetter) {
30 bufferSource = new Array(nodeCount); 30 bufferSource = new Array(nodeCount);
31 panner = new Array(nodeCount); 31 panner = new Array(nodeCount);
32 position = new Array(nodeCount); 32 position = new Array(nodeCount);
33 time = new Array(nodeCount); 33 time = new Array(nodeCount);
34 // Angle between panner locations. (nodeCount - 1 because we want 34 // Angle between panner locations. (nodeCount - 1 because we want
35 // to include both 0 and 180 deg. 35 // to include both 0 and 180 deg.
36 var angleStep = Math.PI / (nodeCount - 1); 36 var angleStep = Math.PI / (nodeCount - 1);
37 37
38 if (numberOfChannels == 2) { 38 if (numberOfChannels == 2) {
39 impulse = createStereoImpulseBuffer(context, pulseLengthFrames); 39 impulse = createStereoImpulseBuffer(context, pulseLengthFrames);
40 } 40 }
41 else 41 else
42 impulse = createImpulseBuffer(context, pulseLengthFrames); 42 impulse = createImpulseBuffer(context, pulseLengthFrames);
43 43
44 for (var k = 0; k < nodeCount; ++k) { 44 for (var k = 0; k < nodeCount; ++k) {
45 bufferSource[k] = context.createBufferSource(); 45 bufferSource[k] = context.createBufferSource();
46 bufferSource[k].buffer = impulse; 46 bufferSource[k].buffer = impulse;
47 47
48 panner[k] = context.createPanner(); 48 panner[k] = context.createPanner();
49 panner[k].panningModel = "equalpower"; 49 panner[k].panningModel = "equalpower";
50 panner[k].distanceModel = "linear"; 50 panner[k].distanceModel = "linear";
51 51
52 var angle = angleStep * k; 52 var angle = angleStep * k;
53 position[k] = {angle : angle, x : Math.cos(angle), z : Math.sin(angle)}; 53 position[k] = {angle : angle, x : Math.cos(angle), z : Math.sin(angle)};
54 panner[k].setPosition(position[k].x, 0, position[k].z); 54 //panner[k].setPosition(position[k].x, 0, position[k].z);
hongchan 2016/05/03 18:15:01 Are we keeping this commented line as well?
Raymond Toy 2016/05/03 20:32:21 Should be deleted.
55 positionSetter(panner[k], position[k].x, 0, position[k].z);
55 56
56 bufferSource[k].connect(panner[k]); 57 bufferSource[k].connect(panner[k]);
57 panner[k].connect(context.destination); 58 panner[k].connect(context.destination);
58 59
59 // Start the source 60 // Start the source
60 time[k] = k * timeStep; 61 time[k] = k * timeStep;
61 bufferSource[k].start(time[k]); 62 bufferSource[k].start(time[k]);
62 } 63 }
63 } 64 }
64 65
65 function createTestAndRun(context, nodeCount, numberOfSourceChannels) { 66 function createTestAndRun(context, nodeCount, numberOfSourceChannels, positionSe tter) {
66 numberOfChannels = numberOfSourceChannels; 67 numberOfChannels = numberOfSourceChannels;
67 68
68 createGraph(context, nodeCount); 69 createGraph(context, nodeCount, positionSetter);
69 70
70 context.oncomplete = checkResult; 71 context.oncomplete = checkResult;
71 context.startRendering(); 72 context.startRendering();
72 } 73 }
73 74
74 // Map our position angle to the azimuth angle (in degrees). 75 // Map our position angle to the azimuth angle (in degrees).
75 // 76 //
76 // An angle of 0 corresponds to an azimuth of 90 deg; pi, to -90 deg. 77 // An angle of 0 corresponds to an azimuth of 90 deg; pi, to -90 deg.
77 function angleToAzimuth(angle) { 78 function angleToAzimuth(angle) {
78 return 90 - angle * 180 / Math.PI; 79 return 90 - angle * 180 / Math.PI;
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 } 201 }
201 202
202 if (success) { 203 if (success) {
203 testPassed("EqualPower panner test passed"); 204 testPassed("EqualPower panner test passed");
204 } else { 205 } else {
205 testFailed("EqualPower panner test failed"); 206 testFailed("EqualPower panner test failed");
206 } 207 }
207 208
208 finishJSTest(); 209 finishJSTest();
209 } 210 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698