hldy_yunwei_vue/public/static/tums-player/webgl.worker.js

55 lines
1.4 KiB
JavaScript

postMessage({ hasInstalled: true });
let offscreenCanvas;
let webgl;
this.onmessage = (event) => {
const { data } = event;
const { cmd } = data;
if (cmd === 'init') {
const { canvas, options, scripts } = data;
self.importScripts(...scripts);
const WebGL = self.webgl.default;
offscreenCanvas = canvas;
webgl = new WebGL(canvas, options);
return;
}
if (cmd === 'render') {
const { frame, type, width, height, yLength, uvLength } = data;
offscreenCanvas.width = width;
offscreenCanvas.height = height;
let error;
if (type === 'webcodecs') {
if (webgl) {
webgl.setFrameType('VIDEO_FRAME');
error = webgl.renderFrame(frame, width, height);
} else {
frame.close();
}
} else {
if (webgl) {
webgl.setFrameType('YUV_FRAME');
error = webgl.renderFrame(frame, width, height, yLength, uvLength);
}
}
if (error) {
postMessage({renderError: error});
webgl && webgl.dispose();
this.close();
}
} else if (cmd === 'display') {
const { options } = data;
webgl && webgl.setDisplayInfo(options);
} else if (cmd === 'close') {
webgl && webgl.dispose();
this.close();
}
};