blob: 3aca6cd92ce4ddd6bd3a366c1c3dbd7178150e36 [file] [log] [blame] [edit]
<!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>