blob: c1befa5263243fc19c47933ec5e1d8e702c5cb5b [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<header>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</header>
<body>
<script>
promise_test(async (test) => {
let encodedFrame;
let resolve, reject;
const encoderPromise = new Promise((res,rej) => {
resolve = res;
reject = rej;
});
const encoder = new VideoEncoder({
output: chunk => {
resolve(chunk);
},
error: e => reject(e),
});
setTimeout(() => {
reject("timed out waiting for encoded chunks");
}, 5000);
encoder.configure({
codec: 'vp09.02.10.10',
width: 1024,
height: 1024,
bitrate: 10e6,
framerate: 1,
});
const frame = new VideoFrame(new ArrayBuffer(1024 * 1024 * 4), {format: 'RGBA', codedWidth: 1024, codedHeight: 1024, timestamp: 0});
encoder.encode(frame, {keyFrame: true});
frame.close();
const chunk = await encoderPromise;
const decoderPromise = new Promise((res,rej) => {
resolve = res;
reject = rej;
});
const decoder = new VideoDecoder({
output: frame => {
test.add_cleanup(() => frame.close());
resolve(frame);
},
error: e => reject(e),
});
setTimeout(() => {
reject("timed out waiting for decoded frames");
}, 5000);
decoder.configure({
codec: 'vp09.02.10.10',
codedWidth: 1024,
codedHeight: 1024,
hardwareAcceleration: 'prefer-software'
});
decoder.decode(chunk);
const decodedFrame = await decoderPromise;
assert_equals(decodedFrame.format, null);
return promise_rejects_dom(test, 'NotSupportedError', decodedFrame.copyTo(new Uint8Array(1)));
}, "Test copyTo on different contexts");
</script>
</body>
</html>