| <!DOCTYPE html> |
| <html> |
| <header> |
| <script src='/resources/testharness.js'></script> |
| <script src='/resources/testharnessreport.js'></script> |
| </header> |
| <body> |
| <script> |
| function makeAudioData(timestamp, channels, sampleRate, frames) |
| { |
| let data = new Float32Array(frames*channels); |
| |
| // This generates samples in a planar format. |
| for (var channel = 0; channel < channels; channel++) { |
| let hz = 100 + channel * 50; // sound frequency |
| let base_index = channel * frames; |
| for (var i = 0; i < frames; i++) { |
| let t = (i / sampleRate) * hz * (Math.PI * 2); |
| data[base_index + i] = Math.sin(t); |
| } |
| } |
| |
| return new AudioData({ |
| timestamp: timestamp, |
| data: data, |
| numberOfChannels: channels, |
| numberOfFrames: frames, |
| sampleRate: sampleRate, |
| format: "f32-planar", |
| }); |
| } |
| |
| var defaultInit = { |
| timestamp: 1234, |
| channels: 2, |
| sampleRate: 8000, |
| frames: 100, |
| } |
| |
| function createDefaultAudioData(timestamp) |
| { |
| if (!timestamp) |
| timestamp = defaultInit.timestamp; |
| return makeAudioData(defaultInit.timestamp, defaultInit.channels, defaultInit.sampleRate, defaultInit.frames); |
| } |
| |
| promise_test(async t => { |
| const audioData0 = createDefaultAudioData(1); |
| const audioData1 = createDefaultAudioData(2); |
| |
| t.add_cleanup(() => { |
| audioData0.close(); |
| audioData1.close(); |
| }); |
| |
| const channel = new MessageChannel; |
| const promise = new Promise(resolve => channel.port2.onmessage = (e) => resolve(e.data)); |
| channel.port1.postMessage([audioData0, audioData1]); |
| |
| const audioDatas = await promise; |
| t.add_cleanup(() => { |
| audioDatas[0].close(); |
| audioDatas[1].close(); |
| }); |
| |
| assert_equals(audioDatas[0].timestamp, audioData0.timestamp); |
| assert_equals(audioDatas[1].timestamp, audioData1.timestamp); |
| }, 'Verify serializing more than one audio data'); |
| </script> |
| </body> |
| </html> |