blob: f1eb1b35e252a9c0c829422ec7823b4da5a2f017 [file] [edit]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
for (const [ArrayType, format, scale] of [[Int16Array, "s16", 1000], [Float32Array, "f32", 1 / 16]]) {
test(() => {
const numberOfFrames = 8;
const data = new ArrayType(numberOfFrames * 2);
for (let frame = 0; frame < numberOfFrames; frame++) {
data[frame * 2] = frame * scale;
data[frame * 2 + 1] = -frame * scale;
}
const audioData = new AudioData({ format, sampleRate: 48000, numberOfFrames, numberOfChannels: 2, timestamp: 0, data });
const expected = (frames, sign) => frames.map(frame => sign * frame * scale);
const left = new ArrayType(6);
audioData.copyTo(left, { format: `${format}-planar`, planeIndex: 0, frameOffset: 2 });
assert_array_equals(left, expected([2, 3, 4, 5, 6, 7], 1));
const right = new ArrayType(6);
audioData.copyTo(right, { format: `${format}-planar`, planeIndex: 1, frameOffset: 2 });
assert_array_equals(right, expected([2, 3, 4, 5, 6, 7], -1));
const partial = new ArrayType(3);
audioData.copyTo(partial, { format: `${format}-planar`, planeIndex: 1, frameOffset: 2, frameCount: 3 });
assert_array_equals(partial, expected([2, 3, 4], -1));
}, `copyTo() from ${format} to ${format}-planar with frameOffset`);
}
</script>