EmbyCrackedClient/web/bower_components/javascriptsubtitlesoctopus/dist/subtitles-octopus.js

1 line
12 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
let SubtitlesOctopus=function(options){let supportsWebAssembly=!1;try{var module;"object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate&&(module=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0)))instanceof WebAssembly.Module&&(supportsWebAssembly=new WebAssembly.Instance(module)instanceof WebAssembly.Instance)}catch(e){}console.log("WebAssembly support detected: "+(supportsWebAssembly?"yes":"no"));let self=this;function renderFrames(){var data=self.renderFramesData,beforeDrawTime=performance.now();self.ctx.clearRect(0,0,self.canvas.width,self.canvas.height);for(let i=0;i<data.canvases.length;i++){var image=data.canvases[i],imageBuffer=(self.bufferCanvas.width=image.w,self.bufferCanvas.height=image.h,new Uint8ClampedArray(image.buffer));if(self.hasAlphaBug)for(let j=3;j<imageBuffer.length;j+=4)imageBuffer[j]=1<=imageBuffer[j]?imageBuffer[j]:1;var imageData=new ImageData(imageBuffer,image.w,image.h);self.bufferCanvasCtx.putImageData(imageData,0,0),self.ctx.drawImage(self.bufferCanvas,image.x,image.y)}self.debug&&(beforeDrawTime=Math.round(performance.now()-beforeDrawTime),console.log(Math.round(data.spentTime)+" ms (+ "+beforeDrawTime+" ms draw)"),self.renderStart=performance.now())}function renderFastFrames(){var data=self.renderFramesData,beforeDrawTime=performance.now();self.ctx.clearRect(0,0,self.canvas.width,self.canvas.height);for(let i=0;i<data.bitmaps.length;i++){var image=data.bitmaps[i];self.ctx.drawImage(image.bitmap,image.x,image.y)}self.debug&&(beforeDrawTime=Math.round(performance.now()-beforeDrawTime),console.log(data.bitmaps.length+" bitmaps, libass: "+Math.round(data.libassTime)+"ms, decode: "+Math.round(data.decodeTime)+"ms, draw: "+beforeDrawTime+"ms"),self.renderStart=performance.now())}self.canvas=options.canvas,self.lossyRender=options.lossyRender,self.isOurCanvas=!1,self.video=options.video,self.canvasParent=null,self.fonts=options.fonts||[],self.availableFonts=options.availableFonts||[],self.onReadyEvent=options.onReady,supportsWebAssembly?self.workerUrl=options.workerUrl||"subtitles-octopus-worker.js":self.workerUrl=options.legacyWorkerUrl||"subtitles-octopus-worker-legacy.js",self.subUrl=options.subUrl,self.subContent=options.subContent||null,self.onErrorEvent=options.onError,self.debug=options.debug||!1,self.lastRenderTime=0,self.pixelRatio=window.devicePixelRatio||1,self.timeOffset=options.timeOffset||0,self.hasAlphaBug=!1,self.detectAlphaBug=!1!==options.detectAlphaBug,(()=>{if("function"==typeof ImageData.prototype.constructor)try{return new window.ImageData(new Uint8ClampedArray([0,0,0,0]),1,1)}catch(e){console.log("detected that ImageData is not constructable despite browser saying so")}let ctx=document.createElement("canvas").getContext("2d");window.ImageData=function(){let i=0,data;arguments[0]instanceof Uint8ClampedArray&&(data=arguments[i++]);var width=arguments[i++],height=arguments[i],width=ctx.createImageData(width,height);return data&&width.data.set(data),width}})(),self.workerError=function(error){if(console.error("Worker error: ",error),self.onErrorEvent&&self.onErrorEvent(error),!self.debug)throw self.dispose(),new Error("Worker error: "+error)},self.init=function(){window.Worker?(self.worker||(self.worker=new Worker(self.workerUrl),self.worker.onmessage=self.onWorkerMessage,self.worker.onerror=self.workerError),self.workerActive=!1,self.createCanvas(),self.setVideo(options.video),self.setSubUrl(options.subUrl),self.worker.postMessage({target:"worker-init",width:self.canvas.width,height:self.canvas.height,URL:document.URL,currentScript:self.workerUrl,preMain:!0,fastRender:self.lossyRender,subUrl:self.subUrl,subContent:self.subContent,fonts:self.fonts,availableFonts:self.availableFonts,debug:self.debug})):self.workerError("worker not supported")},self.createCanvas=function(){if(self.canvas?self.canvasParent=self.canvas.parentNode:self.video?(self.isOurCanvas=!0,self.canvas=document.createElement("canvas"),self.canvas.className="libassjs-canvas",self.canvas.style.display="none",self.canvasParent=document.createElement("div"),self.canvasParent.className="