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

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/resources/mixing-rules.js

Issue 2895963003: Apply layout-test-tidy to LayoutTests/webaudio (Closed)
Patch Set: Created 3 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 // Utilities for mixing rule testing. 1 // Utilities for mixing rule testing.
2 // http://webaudio.github.io/web-audio-api/#channel-up-mixing-and-down-mixing 2 // http://webaudio.github.io/web-audio-api/#channel-up-mixing-and-down-mixing
3 3
4 4
5 /** 5 /**
6 * Create an n-channel buffer, with all sample data zero except for a shifted 6 * Create an n-channel buffer, with all sample data zero except for a shifted
7 * impulse. The impulse position depends on the channel index. For example, for 7 * impulse. The impulse position depends on the channel index. For example, for
8 * a 4-channel buffer: 8 * a 4-channel buffer:
9 * channel 0: 1 0 0 0 0 0 0 0 9 * channel 0: 1 0 0 0 0 0 0 0
10 * channel 1: 0 1 0 0 0 0 0 0 10 * channel 1: 0 1 0 0 0 0 0 0
11 * channel 2: 0 0 1 0 0 0 0 0 11 * channel 2: 0 0 1 0 0 0 0 0
12 * channel 3: 0 0 0 1 0 0 0 0 12 * channel 3: 0 0 0 1 0 0 0 0
13 * @param {AudioContext} context Associated AudioContext. 13 * @param {AudioContext} context Associated AudioContext.
14 * @param {Number} numberOfChannels Number of channels of test buffer. 14 * @param {Number} numberOfChannels Number of channels of test buffer.
15 * @param {Number} frameLength Buffer length in frames. 15 * @param {Number} frameLength Buffer length in frames.
16 * @return {AudioBuffer} 16 * @return {AudioBuffer}
17 */ 17 */
18 function createShiftedImpulseBuffer(context, numberOfChannels, frameLength) { 18 function createShiftedImpulseBuffer(context, numberOfChannels, frameLength) {
19 var shiftedImpulseBuffer = context.createBuffer(numberOfChannels, frameLengt h, context.sampleRate); 19 let shiftedImpulseBuffer =
20 for (var channel = 0; channel < numberOfChannels; ++channel) { 20 context.createBuffer(numberOfChannels, frameLength, context.sampleRate);
21 var data = shiftedImpulseBuffer.getChannelData(channel); 21 for (let channel = 0; channel < numberOfChannels; ++channel) {
22 data[channel] = 1; 22 let data = shiftedImpulseBuffer.getChannelData(channel);
23 } 23 data[channel] = 1;
24 }
24 25
25 return shiftedImpulseBuffer; 26 return shiftedImpulseBuffer;
26 } 27 }
27 28
28 /** 29 /**
29 * Create a string that displays the content of AudioBuffer. 30 * Create a string that displays the content of AudioBuffer.
30 * @param {AudioBuffer} audioBuffer AudioBuffer object to stringify. 31 * @param {AudioBuffer} audioBuffer AudioBuffer object to stringify.
31 * @param {Number} frameLength Number of frames to be printed. 32 * @param {Number} frameLength Number of frames to be printed.
32 * @param {Number} frameOffset Starting frame position for printing. 33 * @param {Number} frameOffset Starting frame position for printing.
33 * @return {String} 34 * @return {String}
34 */ 35 */
35 function stringifyBuffer(audioBuffer, frameLength, frameOffset) { 36 function stringifyBuffer(audioBuffer, frameLength, frameOffset) {
36 frameOffset = (frameOffset || 0); 37 frameOffset = (frameOffset || 0);
37 38
38 var stringifiedBuffer = ''; 39 let stringifiedBuffer = '';
39 for (var channel = 0; channel < audioBuffer.numberOfChannels; ++channel) { 40 for (let channel = 0; channel < audioBuffer.numberOfChannels; ++channel) {
40 var channelData = audioBuffer.getChannelData(channel); 41 let channelData = audioBuffer.getChannelData(channel);
41 for (var i = 0; i < frameLength; ++i) 42 for (let i = 0; i < frameLength; ++i)
42 stringifiedBuffer += channelData[i + frameOffset] + ' '; 43 stringifiedBuffer += channelData[i + frameOffset] + ' ';
43 stringifiedBuffer += '\n'; 44 stringifiedBuffer += '\n';
44 } 45 }
45 46
46 return stringifiedBuffer; 47 return stringifiedBuffer;
47 } 48 }
48 49
49 /** 50 /**
50 * Compute number of channels from the connection. 51 * Compute number of channels from the connection.
51 * http://webaudio.github.io/web-audio-api/#dfn-computednumberofchannels 52 * http://webaudio.github.io/web-audio-api/#dfn-computednumberofchannels
52 * @param {String} connections A string specifies the connection. For 53 * @param {String} connections A string specifies the connection. For
53 * example, the string "128" means 3 54 * example, the string "128" means 3
54 * connections, having 1, 2, and 8 channels 55 * connections, having 1, 2, and 8 channels
55 * respectively. 56 * respectively.
56 * @param {Number} channelCount Channel count. 57 * @param {Number} channelCount Channel count.
57 * @param {String} channelCountMode Channel count mode. 58 * @param {String} channelCountMode Channel count mode.
58 * @return {Number} Computed number of channels. 59 * @return {Number} Computed number of channels.
59 */ 60 */
60 function computeNumberOfChannels(connections, channelCount, channelCountMode) { 61 function computeNumberOfChannels(connections, channelCount, channelCountMode) {
61 if (channelCountMode == "explicit") 62 if (channelCountMode == 'explicit')
62 return channelCount; 63 return channelCount;
63 64
64 // Must have at least one channel. 65 // Must have at least one channel.
65 var computedNumberOfChannels = 1; 66 let computedNumberOfChannels = 1;
66 67
67 // Compute "computedNumberOfChannels" based on all the connections. 68 // Compute "computedNumberOfChannels" based on all the connections.
68 for (var i = 0; i < connections.length; ++i) { 69 for (let i = 0; i < connections.length; ++i) {
69 var connectionNumberOfChannels = parseInt(connections[i]); 70 let connectionNumberOfChannels = parseInt(connections[i]);
70 computedNumberOfChannels = Math.max(computedNumberOfChannels, connectionNumb erOfChannels); 71 computedNumberOfChannels =
72 Math.max(computedNumberOfChannels, connectionNumberOfChannels);
71 } 73 }
72 74
73 if (channelCountMode == "clamped-max") 75 if (channelCountMode == 'clamped-max')
74 computedNumberOfChannels = Math.min(computedNumberOfChannels, channelCount); 76 computedNumberOfChannels = Math.min(computedNumberOfChannels, channelCount);
75 77
76 return computedNumberOfChannels; 78 return computedNumberOfChannels;
77 } 79 }
78 80
79 /** 81 /**
80 * Apply up/down-mixing (in-place summing) based on 'speaker' interpretation. 82 * Apply up/down-mixing (in-place summing) based on 'speaker' interpretation.
81 * @param {AudioBuffer} input Input audio buffer. 83 * @param {AudioBuffer} input Input audio buffer.
82 * @param {AudioBuffer} output Output audio buffer. 84 * @param {AudioBuffer} output Output audio buffer.
83 */ 85 */
84 function speakersSum(input, output) { 86 function speakersSum(input, output) {
85 if (input.length != output.length) { 87 if (input.length != output.length) {
86 throw '[mixing-rules.js] speakerSum(): buffer lengths mismatch (input: ' 88 throw '[mixing-rules.js] speakerSum(): buffer lengths mismatch (input: ' +
87 + input.length + ', output: ' + output.length + ')'; 89 input.length + ', output: ' + output.length + ')';
88 } 90 }
89 91
90 if (input.numberOfChannels === output.numberOfChannels) { 92 if (input.numberOfChannels === output.numberOfChannels) {
91 for (var channel = 0; channel < output.numberOfChannels; ++channel) { 93 for (let channel = 0; channel < output.numberOfChannels; ++channel) {
92 var inputChannel = input.getChannelData(channel); 94 let inputChannel = input.getChannelData(channel);
93 var outputChannel = output.getChannelData(channel); 95 let outputChannel = output.getChannelData(channel);
94 for (var i = 0; i < outputChannel.length; i++) 96 for (let i = 0; i < outputChannel.length; i++)
95 outputChannel[i] += inputChannel[i]; 97 outputChannel[i] += inputChannel[i];
96 } 98 }
97 } else if (input.numberOfChannels < output.numberOfChannels) { 99 } else if (input.numberOfChannels < output.numberOfChannels) {
98 processUpMix(input, output); 100 processUpMix(input, output);
99 } else { 101 } else {
100 processDownMix(input, output); 102 processDownMix(input, output);
101 } 103 }
102 } 104 }
103 105
104 /** 106 /**
105 * In-place summing to |output| based on 'discrete' channel interpretation. 107 * In-place summing to |output| based on 'discrete' channel interpretation.
106 * @param {AudioBuffer} input Input audio buffer. 108 * @param {AudioBuffer} input Input audio buffer.
107 * @param {AudioBuffer} output Output audio buffer. 109 * @param {AudioBuffer} output Output audio buffer.
108 */ 110 */
109 function discreteSum(input, output) { 111 function discreteSum(input, output) {
110 if (input.length != output.length) { 112 if (input.length != output.length) {
111 throw '[mixing-rules.js] speakerSum(): buffer lengths mismatch (input: ' 113 throw '[mixing-rules.js] speakerSum(): buffer lengths mismatch (input: ' +
112 + input.length + ', output: ' + output.length + ')'; 114 input.length + ', output: ' + output.length + ')';
113 } 115 }
114 116
115 var numberOfChannels = Math.min(input.numberOfChannels, output.numberOfChannel s) 117 let numberOfChannels =
118 Math.min(input.numberOfChannels, output.numberOfChannels)
116 119
117 for (var channel = 0; channel < numberOfChannels; ++channel) { 120 for (let channel = 0; channel < numberOfChannels; ++channel) {
118 var inputChannel = input.getChannelData(channel); 121 let inputChannel = input.getChannelData(channel);
119 var outputChannel = output.getChannelData(channel); 122 let outputChannel = output.getChannelData(channel);
120 for (var i = 0; i < outputChannel.length; i++) 123 for (let i = 0; i < outputChannel.length; i++)
121 outputChannel[i] += inputChannel[i]; 124 outputChannel[i] += inputChannel[i];
122 } 125 }
123 } 126 }
124 127
125 /** 128 /**
126 * Perform up-mix by in-place summing to |output| buffer. 129 * Perform up-mix by in-place summing to |output| buffer.
127 * @param {AudioBuffer} input Input audio buffer. 130 * @param {AudioBuffer} input Input audio buffer.
128 * @param {AudioBuffer} output Output audio buffer. 131 * @param {AudioBuffer} output Output audio buffer.
129 */ 132 */
130 function processUpMix(input, output) { 133 function processUpMix(input, output) {
131 var numberOfInputChannels = input.numberOfChannels; 134 let numberOfInputChannels = input.numberOfChannels;
132 var numberOfOutputChannels = output.numberOfChannels; 135 let numberOfOutputChannels = output.numberOfChannels;
133 var i, length = output.length; 136 let i, length = output.length;
134 137
135 // Up-mixing: 1 -> 2, 1 -> 4 138 // Up-mixing: 1 -> 2, 1 -> 4
136 // output.L += input 139 // output.L += input
137 // output.R += input 140 // output.R += input
138 // output.SL += 0 (in the case of 1 -> 4) 141 // output.SL += 0 (in the case of 1 -> 4)
139 // output.SR += 0 (in the case of 1 -> 4) 142 // output.SR += 0 (in the case of 1 -> 4)
140 if ((numberOfInputChannels === 1 && numberOfOutputChannels === 2) || 143 if ((numberOfInputChannels === 1 && numberOfOutputChannels === 2) ||
141 (numberOfInputChannels === 1 && numberOfOutputChannels === 4)) { 144 (numberOfInputChannels === 1 && numberOfOutputChannels === 4)) {
142 var inputChannel = input.getChannelData(0); 145 let inputChannel = input.getChannelData(0);
143 var outputChannel0 = output.getChannelData(0); 146 let outputChannel0 = output.getChannelData(0);
144 var outputChannel1 = output.getChannelData(1); 147 let outputChannel1 = output.getChannelData(1);
145 for (i = 0; i < length; i++) { 148 for (i = 0; i < length; i++) {
146 outputChannel0[i] += inputChannel[i]; 149 outputChannel0[i] += inputChannel[i];
147 outputChannel1[i] += inputChannel[i]; 150 outputChannel1[i] += inputChannel[i];
148 } 151 }
149 152
150 return; 153 return;
151 } 154 }
152 155
153 // Up-mixing: 1 -> 5.1 156 // Up-mixing: 1 -> 5.1
154 // output.L += 0 157 // output.L += 0
155 // output.R += 0 158 // output.R += 0
156 // output.C += input 159 // output.C += input
157 // output.LFE += 0 160 // output.LFE += 0
158 // output.SL += 0 161 // output.SL += 0
159 // output.SR += 0 162 // output.SR += 0
160 if (numberOfInputChannels == 1 && numberOfOutputChannels == 6) { 163 if (numberOfInputChannels == 1 && numberOfOutputChannels == 6) {
161 var inputChannel = input.getChannelData(0); 164 let inputChannel = input.getChannelData(0);
162 var outputChannel2 = output.getChannelData(2); 165 let outputChannel2 = output.getChannelData(2);
163 for (i = 0; i < length; i++) 166 for (i = 0; i < length; i++)
164 outputChannel2[i] += inputChannel[i]; 167 outputChannel2[i] += inputChannel[i];
165 168
166 return; 169 return;
167 } 170 }
168 171
169 // Up-mixing: 2 -> 4, 2 -> 5.1 172 // Up-mixing: 2 -> 4, 2 -> 5.1
170 // output.L += input.L 173 // output.L += input.L
171 // output.R += input.R 174 // output.R += input.R
172 // output.C += 0 (in the case of 2 -> 5.1) 175 // output.C += 0 (in the case of 2 -> 5.1)
173 // output.LFE += 0 (in the case of 2 -> 5.1) 176 // output.LFE += 0 (in the case of 2 -> 5.1)
174 // output.SL += 0 177 // output.SL += 0
175 // output.SR += 0 178 // output.SR += 0
176 if ((numberOfInputChannels === 2 && numberOfOutputChannels === 4) || 179 if ((numberOfInputChannels === 2 && numberOfOutputChannels === 4) ||
177 (numberOfInputChannels === 2 && numberOfOutputChannels === 6)) { 180 (numberOfInputChannels === 2 && numberOfOutputChannels === 6)) {
178 var inputChannel0 = input.getChannelData(0); 181 let inputChannel0 = input.getChannelData(0);
179 var inputChannel1 = input.getChannelData(1); 182 let inputChannel1 = input.getChannelData(1);
180 var outputChannel0 = output.getChannelData(0); 183 let outputChannel0 = output.getChannelData(0);
181 var outputChannel1 = output.getChannelData(1); 184 let outputChannel1 = output.getChannelData(1);
182 for (i = 0; i < length; i++) { 185 for (i = 0; i < length; i++) {
183 outputChannel0[i] += inputChannel0[i]; 186 outputChannel0[i] += inputChannel0[i];
184 outputChannel1[i] += inputChannel1[i]; 187 outputChannel1[i] += inputChannel1[i];
185 } 188 }
186 189
187 return; 190 return;
188 } 191 }
189 192
190 // Up-mixing: 4 -> 5.1 193 // Up-mixing: 4 -> 5.1
191 // output.L += input.L 194 // output.L += input.L
192 // output.R += input.R 195 // output.R += input.R
193 // output.C += 0 196 // output.C += 0
194 // output.LFE += 0 197 // output.LFE += 0
195 // output.SL += input.SL 198 // output.SL += input.SL
196 // output.SR += input.SR 199 // output.SR += input.SR
197 if (numberOfInputChannels === 4 && numberOfOutputChannels === 6) { 200 if (numberOfInputChannels === 4 && numberOfOutputChannels === 6) {
198 var inputChannel0 = input.getChannelData(0); // input.L 201 let inputChannel0 = input.getChannelData(0); // input.L
199 var inputChannel1 = input.getChannelData(1); // input.R 202 let inputChannel1 = input.getChannelData(1); // input.R
200 var inputChannel2 = input.getChannelData(2); // input.SL 203 let inputChannel2 = input.getChannelData(2); // input.SL
201 var inputChannel3 = input.getChannelData(3); // input.SR 204 let inputChannel3 = input.getChannelData(3); // input.SR
202 var outputChannel0 = output.getChannelData(0); // output.L 205 let outputChannel0 = output.getChannelData(0); // output.L
203 var outputChannel1 = output.getChannelData(1); // output.R 206 let outputChannel1 = output.getChannelData(1); // output.R
204 var outputChannel4 = output.getChannelData(4); // output.SL 207 let outputChannel4 = output.getChannelData(4); // output.SL
205 var outputChannel5 = output.getChannelData(5); // output.SR 208 let outputChannel5 = output.getChannelData(5); // output.SR
206 for (i = 0; i < length; i++) { 209 for (i = 0; i < length; i++) {
207 outputChannel0[i] += inputChannel0[i]; 210 outputChannel0[i] += inputChannel0[i];
208 outputChannel1[i] += inputChannel1[i]; 211 outputChannel1[i] += inputChannel1[i];
209 outputChannel4[i] += inputChannel2[i]; 212 outputChannel4[i] += inputChannel2[i];
210 outputChannel5[i] += inputChannel3[i]; 213 outputChannel5[i] += inputChannel3[i];
211 } 214 }
212 215
213 return; 216 return;
214 } 217 }
215 218
216 // All other cases, fall back to the discrete sum. 219 // All other cases, fall back to the discrete sum.
217 discreteSum(input, output); 220 discreteSum(input, output);
218 } 221 }
219 222
220 /** 223 /**
221 * Perform down-mix by in-place summing to |output| buffer. 224 * Perform down-mix by in-place summing to |output| buffer.
222 * @param {AudioBuffer} input Input audio buffer. 225 * @param {AudioBuffer} input Input audio buffer.
223 * @param {AudioBuffer} output Output audio buffer. 226 * @param {AudioBuffer} output Output audio buffer.
224 */ 227 */
225 function processDownMix(input, output) { 228 function processDownMix(input, output) {
226 var numberOfInputChannels = input.numberOfChannels; 229 let numberOfInputChannels = input.numberOfChannels;
227 var numberOfOutputChannels = output.numberOfChannels; 230 let numberOfOutputChannels = output.numberOfChannels;
228 var i, length = output.length; 231 let i, length = output.length;
229 232
230 // Down-mixing: 2 -> 1 233 // Down-mixing: 2 -> 1
231 // output += 0.5 * (input.L + input.R) 234 // output += 0.5 * (input.L + input.R)
232 if (numberOfInputChannels === 2 && numberOfOutputChannels === 1) { 235 if (numberOfInputChannels === 2 && numberOfOutputChannels === 1) {
233 var inputChannel0 = input.getChannelData(0); // input.L 236 let inputChannel0 = input.getChannelData(0); // input.L
234 var inputChannel1 = input.getChannelData(1); // input.R 237 let inputChannel1 = input.getChannelData(1); // input.R
235 var outputChannel0 = output.getChannelData(0); 238 let outputChannel0 = output.getChannelData(0);
236 for (i = 0; i < length; i++) 239 for (i = 0; i < length; i++)
237 outputChannel0[i] += 0.5 * (inputChannel0[i] + inputChannel1[i]); 240 outputChannel0[i] += 0.5 * (inputChannel0[i] + inputChannel1[i]);
238 241
239 return; 242 return;
240 } 243 }
241 244
242 // Down-mixing: 4 -> 1 245 // Down-mixing: 4 -> 1
243 // output += 0.25 * (input.L + input.R + input.SL + input.SR) 246 // output += 0.25 * (input.L + input.R + input.SL + input.SR)
244 if (numberOfInputChannels === 4 && numberOfOutputChannels === 1) { 247 if (numberOfInputChannels === 4 && numberOfOutputChannels === 1) {
245 var inputChannel0 = input.getChannelData(0); // input.L 248 let inputChannel0 = input.getChannelData(0); // input.L
246 var inputChannel1 = input.getChannelData(1); // input.R 249 let inputChannel1 = input.getChannelData(1); // input.R
247 var inputChannel2 = input.getChannelData(2); // input.SL 250 let inputChannel2 = input.getChannelData(2); // input.SL
248 var inputChannel3 = input.getChannelData(3); // input.SR 251 let inputChannel3 = input.getChannelData(3); // input.SR
249 var outputChannel0 = output.getChannelData(0); 252 let outputChannel0 = output.getChannelData(0);
250 for (i = 0; i < length; i++) { 253 for (i = 0; i < length; i++) {
251 outputChannel0[i] += 0.25 * (inputChannel0[i] + inputChannel1[i] 254 outputChannel0[i] += 0.25 *
252 + inputChannel2[i] + inputChannel3[i]); 255 (inputChannel0[i] + inputChannel1[i] + inputChannel2[i] +
256 inputChannel3[i]);
253 } 257 }
254 258
255 return; 259 return;
256 } 260 }
257 261
258 // Down-mixing: 5.1 -> 1 262 // Down-mixing: 5.1 -> 1
259 // output += sqrt(1/2) * (input.L + input.R) + input.C 263 // output += sqrt(1/2) * (input.L + input.R) + input.C
260 // + 0.5 * (input.SL + input.SR) 264 // + 0.5 * (input.SL + input.SR)
261 if (numberOfInputChannels === 6 && numberOfOutputChannels === 1) { 265 if (numberOfInputChannels === 6 && numberOfOutputChannels === 1) {
262 var inputChannel0 = input.getChannelData(0); // input.L 266 let inputChannel0 = input.getChannelData(0); // input.L
263 var inputChannel1 = input.getChannelData(1); // input.R 267 let inputChannel1 = input.getChannelData(1); // input.R
264 var inputChannel2 = input.getChannelData(2); // input.C 268 let inputChannel2 = input.getChannelData(2); // input.C
265 var inputChannel4 = input.getChannelData(4); // input.SL 269 let inputChannel4 = input.getChannelData(4); // input.SL
266 var inputChannel5 = input.getChannelData(5); // input.SR 270 let inputChannel5 = input.getChannelData(5); // input.SR
267 var outputChannel0 = output.getChannelData(0); 271 let outputChannel0 = output.getChannelData(0);
268 var scaleSqrtHalf = Math.sqrt(0.5); 272 let scaleSqrtHalf = Math.sqrt(0.5);
269 for (i = 0; i < length; i++) { 273 for (i = 0; i < length; i++) {
270 outputChannel0[i] += 274 outputChannel0[i] +=
271 scaleSqrtHalf * (inputChannel0[i] + inputChannel1[i]) 275 scaleSqrtHalf * (inputChannel0[i] + inputChannel1[i]) +
272 + inputChannel2[i] + 0.5 * (inputChannel4[i] + inputChannel5[i]); 276 inputChannel2[i] + 0.5 * (inputChannel4[i] + inputChannel5[i]);
273 } 277 }
274 278
275 return; 279 return;
276 } 280 }
277 281
278 // Down-mixing: 4 -> 2 282 // Down-mixing: 4 -> 2
279 // output.L += 0.5 * (input.L + input.SL) 283 // output.L += 0.5 * (input.L + input.SL)
280 // output.R += 0.5 * (input.R + input.SR) 284 // output.R += 0.5 * (input.R + input.SR)
281 if (numberOfInputChannels == 4 && numberOfOutputChannels == 2) { 285 if (numberOfInputChannels == 4 && numberOfOutputChannels == 2) {
282 var inputChannel0 = input.getChannelData(0); // input.L 286 let inputChannel0 = input.getChannelData(0); // input.L
283 var inputChannel1 = input.getChannelData(1); // input.R 287 let inputChannel1 = input.getChannelData(1); // input.R
284 var inputChannel2 = input.getChannelData(2); // input.SL 288 let inputChannel2 = input.getChannelData(2); // input.SL
285 var inputChannel3 = input.getChannelData(3); // input.SR 289 let inputChannel3 = input.getChannelData(3); // input.SR
286 var outputChannel0 = output.getChannelData(0); // output.L 290 let outputChannel0 = output.getChannelData(0); // output.L
287 var outputChannel1 = output.getChannelData(1); // output.R 291 let outputChannel1 = output.getChannelData(1); // output.R
288 for (i = 0; i < length; i++) { 292 for (i = 0; i < length; i++) {
289 outputChannel0[i] += 0.5 * (inputChannel0[i] + inputChannel2[i]); 293 outputChannel0[i] += 0.5 * (inputChannel0[i] + inputChannel2[i]);
290 outputChannel1[i] += 0.5 * (inputChannel1[i] + inputChannel3[i]); 294 outputChannel1[i] += 0.5 * (inputChannel1[i] + inputChannel3[i]);
291 } 295 }
292 296
293 return; 297 return;
294 } 298 }
295 299
296 // Down-mixing: 5.1 -> 2 300 // Down-mixing: 5.1 -> 2
297 // output.L += input.L + sqrt(1/2) * (input.C + input.SL) 301 // output.L += input.L + sqrt(1/2) * (input.C + input.SL)
298 // output.R += input.R + sqrt(1/2) * (input.C + input.SR) 302 // output.R += input.R + sqrt(1/2) * (input.C + input.SR)
299 if (numberOfInputChannels == 6 && numberOfOutputChannels == 2) { 303 if (numberOfInputChannels == 6 && numberOfOutputChannels == 2) {
300 var inputChannel0 = input.getChannelData(0); // input.L 304 let inputChannel0 = input.getChannelData(0); // input.L
301 var inputChannel1 = input.getChannelData(1); // input.R 305 let inputChannel1 = input.getChannelData(1); // input.R
302 var inputChannel2 = input.getChannelData(2); // input.C 306 let inputChannel2 = input.getChannelData(2); // input.C
303 var inputChannel4 = input.getChannelData(4); // input.SL 307 let inputChannel4 = input.getChannelData(4); // input.SL
304 var inputChannel5 = input.getChannelData(5); // input.SR 308 let inputChannel5 = input.getChannelData(5); // input.SR
305 var outputChannel0 = output.getChannelData(0); // output.L 309 let outputChannel0 = output.getChannelData(0); // output.L
306 var outputChannel1 = output.getChannelData(1); // output.R 310 let outputChannel1 = output.getChannelData(1); // output.R
307 var scaleSqrtHalf = Math.sqrt(0.5); 311 let scaleSqrtHalf = Math.sqrt(0.5);
308 for (i = 0; i < length; i++) { 312 for (i = 0; i < length; i++) {
309 outputChannel0[i] += inputChannel0[i] 313 outputChannel0[i] += inputChannel0[i] +
310 + scaleSqrtHalf * (inputChannel2[i] + inputChannel4[i]); 314 scaleSqrtHalf * (inputChannel2[i] + inputChannel4[i]);
311 outputChannel1[i] += inputChannel1[i] 315 outputChannel1[i] += inputChannel1[i] +
312 + scaleSqrtHalf * (inputChannel2[i] + inputChannel5[i]); 316 scaleSqrtHalf * (inputChannel2[i] + inputChannel5[i]);
313 } 317 }
314 318
315 return; 319 return;
316 } 320 }
317 321
318 // Down-mixing: 5.1 -> 4 322 // Down-mixing: 5.1 -> 4
319 // output.L += input.L + sqrt(1/2) * input.C 323 // output.L += input.L + sqrt(1/2) * input.C
320 // output.R += input.R + sqrt(1/2) * input.C 324 // output.R += input.R + sqrt(1/2) * input.C
321 // output.SL += input.SL 325 // output.SL += input.SL
322 // output.SR += input.SR 326 // output.SR += input.SR
323 if (numberOfInputChannels === 6 && numberOfOutputChannels === 4) { 327 if (numberOfInputChannels === 6 && numberOfOutputChannels === 4) {
324 var inputChannel0 = input.getChannelData(0); // input.L 328 let inputChannel0 = input.getChannelData(0); // input.L
325 var inputChannel1 = input.getChannelData(1); // input.R 329 let inputChannel1 = input.getChannelData(1); // input.R
326 var inputChannel2 = input.getChannelData(2); // input.C 330 let inputChannel2 = input.getChannelData(2); // input.C
327 var inputChannel4 = input.getChannelData(4); // input.SL 331 let inputChannel4 = input.getChannelData(4); // input.SL
328 var inputChannel5 = input.getChannelData(5); // input.SR 332 let inputChannel5 = input.getChannelData(5); // input.SR
329 var outputChannel0 = output.getChannelData(0); // output.L 333 let outputChannel0 = output.getChannelData(0); // output.L
330 var outputChannel1 = output.getChannelData(1); // output.R 334 let outputChannel1 = output.getChannelData(1); // output.R
331 var outputChannel2 = output.getChannelData(2); // output.SL 335 let outputChannel2 = output.getChannelData(2); // output.SL
332 var outputChannel3 = output.getChannelData(3); // output.SR 336 let outputChannel3 = output.getChannelData(3); // output.SR
333 var scaleSqrtHalf = Math.sqrt(0.5); 337 let scaleSqrtHalf = Math.sqrt(0.5);
334 for (i = 0; i < length; i++) { 338 for (i = 0; i < length; i++) {
335 outputChannel0[i] += inputChannel0[i] + scaleSqrtHalf * inputChannel2[i]; 339 outputChannel0[i] += inputChannel0[i] + scaleSqrtHalf * inputChannel2[i];
336 outputChannel1[i] += inputChannel1[i] + scaleSqrtHalf * inputChannel2[i]; 340 outputChannel1[i] += inputChannel1[i] + scaleSqrtHalf * inputChannel2[i];
337 outputChannel2[i] += inputChannel4[i]; 341 outputChannel2[i] += inputChannel4[i];
338 outputChannel3[i] += inputChannel5[i]; 342 outputChannel3[i] += inputChannel5[i];
339 } 343 }
340 344
341 return; 345 return;
342 } 346 }
343 347
344 // All other cases, fall back to the discrete sum. 348 // All other cases, fall back to the discrete sum.
345 discreteSum(input, output); 349 discreteSum(input, output);
346 } 350 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698