blob: f5042446f61e3f6ea9be5c043bd633dd30f7964d [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<head>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='/webcodecs/videoFrame-utils.js'></script>
</head>
<body>
<canvas id=canvas width=100px hwight=100px></canvas>
<script>
function createVideoFrame(stride)
{
const width = 16;
const height = 16;
const size = stride * height;
const buf = new ArrayBuffer(size * 1.5);
const bytesY = new Uint8Array(buf, 0, size * 1.0);
const bytesU = new Uint8Array(buf, size * 1.0, size * 0.25);
const bytesV = new Uint8Array(buf, size * 1.25, size * 0.25);
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++)
bytesY[y * stride + x] = (y << 4) | x;
}
bytesU.fill(128);
bytesV.fill(128);
return new VideoFrame(buf, {
format: "I420",
codedWidth: stride,
codedHeight: height,
timestamp: 0,
visibleRect: {
x: 0,
y: 0,
width: width,
height: height
},
colorSpace: {
primaries: 'bt709',
transfer: 'bt709',
matrix: 'bt709',
fullRange: true,
}
});
}
test(t => {
const frame1 = createVideoFrame(16);
t.add_cleanup(() => frame1.close());
const frame2 = createVideoFrame(32);
t.add_cleanup(() => frame2.close());
canvas.getContext('2d').drawImage(frame1, 0, 0);
const data1 = canvas.getContext('2d').getImageData(0, 0, 4, 2).data;
canvas.getContext('2d').drawImage(frame2, 0, 0);
const data2 = canvas.getContext('2d').getImageData(0, 0, 4, 2).data;
assert_array_equals(data1, data2);
}, 'Creating video frames Creating video frames Creating video frames with codedWidth differing from visibleWidthh');
</script>
</body>
</html>