<!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] -->
<html>
<body>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

if (window.IPC) {
    import('./coreipc.js').then(({
        CoreIPC
    }) => {
        const id = 393216;
        const width = 8000;
        const height = 6000;

        CoreIPC.GPU.LibWebRTCCodecsProxy.CreateEncoder(0, {
            id, codecType:0, codecString:'avc1.64001f', parameters:[], useLowLatency:true, useAnnexB:false, scalabilityMode:1
        });
        CoreIPC.GPU.LibWebRTCCodecsProxy.InitializeEncoder(0, {
            id, width, height, startBitrate:62, maxBitrate:91, minBitrate:5, maxFramerate:720916
        });
        CoreIPC.GPU.LibWebRTCCodecsProxy.EncodeFrame(0, {
            id, buffer:{ time: { timeValue:43, timeScale:79, timeFlags:145 }, mirrored:false, rotation:0, colorSpace: {primaries: {optionalValue: 0}, transfer: {optionalValue: 0}, matrix:{optionalValue: 1}, fullRange: {optionalValue: false}}, buffer:{ alias: { variantType:'WebCore::IntSize', variant : { width, height } } }}, timeStamp:61, duration:{}, shouldEncodeAsKeyFrame:true
        });
        CoreIPC.GPU.LibWebRTCCodecsProxy.ReleaseEncoder(0, {
            id
        });
    });
}

setTimeout(() => window.testRunner?.notifyDone(), 500);
</script>
This test passes if it does not crash.
</body>
</html>
