1 line
19 KiB
JavaScript
1 line
19 KiB
JavaScript
(self.webpackChunk=self.webpackChunk||[]).push([[41783],{12541:function(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}r(29305),r(32733),r(84701),r(44962),r(26448),r(66781),r(74455),r(83810),r(78557),r(83994),r(96919),r(80808),r(83320),r(4716),r(33054),r(82281),r(23236),r(89717),r(57268),r(32650),r(34581),r(31937),r(88064),r(85486),r(4181),r(51294),r(1421),r(18750),r(50789),r(63171),r(67689),r(14715),r(39111),r(73015),r(47762),r(82367);var a=.01;"function"==typeof SubtitlesOctopusOnLoad&&SubtitlesOctopusOnLoad(),e.exports&&(e.exports=function(e){var t=!1;try{if("object"===("undefined"==typeof WebAssembly?"undefined":n(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var r=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));r instanceof WebAssembly.Module&&(t=new WebAssembly.Instance(r)instanceof WebAssembly.Instance)}}catch(e){}console.log("WebAssembly support detected: "+(t?"yes":"no"));var s,o,i=this;function d(){i.setCurrentTime(i.video.currentTime+i.timeOffset)}function v(){i.setIsPaused(!1,i.video.currentTime+i.timeOffset)}function c(){i.setIsPaused(!0,i.video.currentTime+i.timeOffset)}function l(){i.video.removeEventListener("timeupdate",d,!1)}function m(){i.video.addEventListener("timeupdate",d,!1);var e=i.video.currentTime+i.timeOffset;i.setCurrentTime(e),i.renderAhead>0&&p(e,!0)}function h(){i.setRate(i.video.playbackRate)}function u(){i.setIsPaused(!0,i.video.currentTime+i.timeOffset)}function f(e){e.target.removeEventListener(e.type,f,!1),i.resize()}function p(e,t){for(var r=[],n=0,a=i.renderedItems.length;n<a;n++)((v=i.renderedItems[n]).emptyFinish<0||e<v.emptyFinish)&&r.push(v);if(t&&r.length>0&&e<r[0].eventStart)if(r[0].eventStart-e>60)console.info("seeked back too far, cleaning prerender buffer"),r=[];else{console.info("seeked backwards, need to free up some buffer");var s=0,o=.3*i.renderAhead,d=[];for(n=0,a=r.length;n<a;n++){var v;if((s+=(v=r[n]).size)>=o||v.emptyFinish<0)break;d.push(v)}r=d}t&&(i.oneshotState.displayedEvent=null,i.oneshotState.nextRequestOffset=0);var c=r.length<i.renderedItems.length;return i.renderedItems=r,c}function g(e,t){if(i.renderAhead&&!(i.renderAhead<=0)&&(!i.oneshotState.renderRequested||t)){if(void 0===e){if(!i.video)return;e=i.video.currentTime+i.timeOffset}for(var r=0,n=0,a=i.renderedItems.length;n<a;n++){var s=i.renderedItems[n];if(s.emptyFinish<0)return void console.info("oneshot already reached end-of-events");if(e>=s.eventStart&&e<s.emptyFinish)return void console.debug("not requesting a render for "+e+" as event already covering it exists (start="+s.eventStart+", empty="+s.emptyFinish+")");r+=s.size}if(r<=i.renderAhead){var o=e-(t?0:.001);i.oneshotState.renderRequested?(i.workerActive&&console.info("worker busy, requesting to seek"),i.oneshotState.requestNextTimestamp=o):(i.oneshotState.renderRequested=!0,i.worker.postMessage({target:"oneshot-render",lastRendered:o,renderNow:t,iteration:i.oneshotState.iteration}))}}}function w(e,t){i.oneshotState.displayedEvent=e;var r=e.eventFinish!==e.emptyFinish&&e.eventFinish<=t;if(i.oneshotState.eventStart!=e.eventStart||i.oneshotState.eventOver!=r){i.oneshotState.eventStart=e.eventStart,i.oneshotState.eventOver=r,i.oneshotState.nextRequestOffset=.5*(i.oneshotState.nextRequestOffset+.001*e.spentTime),i.oneshotState.nextRequestOffset=Math.min(i.oneshotState.nextRequestOffset,1);var n=performance.now();if(e.viewport.width==i.canvas.width&&e.viewport.height==i.canvas.height||(i.canvas.width=e.viewport.width,i.canvas.height=e.viewport.height),i.ctx.clearRect(0,0,i.canvas.width,i.canvas.height),!r)for(var a=0;a<e.items.length;a++){var s=e.items[a];i.bufferCanvas.width=s.w,i.bufferCanvas.height=s.h,i.bufferCanvasCtx.putImageData(s.image,0,0),i.ctx.drawImage(i.bufferCanvas,s.x,s.y)}if(i.debug){var o=Math.round(performance.now()-n);console.log("render: "+Math.round(e.spentTime-e.blendTime)+" ms, blend: "+Math.round(e.blendTime)+" ms, draw: "+o+" ms")}}}function b(){if(i.rafId=window.requestAnimationFrame(b),i.video){for(var e=i.video.currentTime+i.timeOffset,t=null,r=0,n=i.renderedItems.length;r<n&&(c=i.renderedItems[r]).eventStart<=e;r++)t=c;t?w(t,e):i.oneshotState.displayedEvent&&w(i.oneshotState.displayedEvent,e);var s=e;i.video.paused||(s+=Math.max(i.oneshotState.nextRequestOffset,1/i.targetFps)*i.video.playbackRate);var o=null,d=-1,v=!1;for(r=0,n=i.renderedItems.length;r<n;r++){var c;if((c=i.renderedItems[r]).eventStart<=s)o=c,d=c.emptyFinish;else{if(!(d>=0))break;if(!(c.eventStart-d<a))break;d=c.emptyFinish,v=c.animated}}o&&(s=d>=0?Math.max(d,s):-1),(!i.video.paused&&p(e)||!t||i.oneshotState.restart)&&s>=0&&Math.abs(i.oneshotState.requestNextTimestamp-s)>a&&g(s,s!==d||v),i.oneshotState.restart=!1}}function y(){var e=i.renderFramesData,t=performance.now();i.ctx.clearRect(0,0,i.canvas.width,i.canvas.height);for(var r=0;r<e.canvases.length;r++){var n=e.canvases[r];i.bufferCanvas.width=n.w,i.bufferCanvas.height=n.h;var a=new Uint8ClampedArray(n.buffer);if(i.hasAlphaBug)for(var s=3;s<a.length;s+=4)a[s]=a[s]>=1?a[s]:1;var o=new ImageData(a,n.w,n.h);i.bufferCanvasCtx.putImageData(o,0,0),i.ctx.drawImage(i.bufferCanvas,n.x,n.y)}if(i.debug){var d=Math.round(performance.now()-t),v=e.blendTime;void 0!==v?console.log("render: "+Math.round(e.spentTime-v)+" ms, blend: "+Math.round(v)+" ms, draw: "+d+" ms; TOTAL="+Math.round(e.spentTime+d)+" ms"):console.log(Math.round(e.spentTime)+" ms (+ "+d+" ms draw)"),i.renderStart=performance.now()}}function k(){var e=i.renderFramesData,t=performance.now();i.ctx.clearRect(0,0,i.canvas.width,i.canvas.height);for(var r=0;r<e.bitmaps.length;r++){var n=e.bitmaps[r];i.ctx.drawImage(n.bitmap,n.x,n.y)}if(i.debug){var a=Math.round(performance.now()-t);console.log(e.bitmaps.length+" bitmaps, libass: "+Math.round(e.libassTime)+"ms, decode: "+Math.round(e.decodeTime)+"ms, draw: "+a+"ms"),i.renderStart=performance.now()}}i.canvas=e.canvas,i.renderMode=e.renderMode||(e.lossyRender?"lossy":"wasm-blend"),i.dropAllAnimations=e.dropAllAnimations||!1,i.libassMemoryLimit=e.libassMemoryLimit||0,i.libassGlyphLimit=e.libassGlyphLimit||0,i.targetFps=e.targetFps||24,i.prescaleFactor=e.prescaleFactor||1,i.prescaleHeightLimit=e.prescaleHeightLimit||1080,i.maxRenderHeight=e.maxRenderHeight||0,i.resizeVariation=e.resizeVariation||.2,i.renderAhead=e.renderAhead||0,i.isOurCanvas=!1,i.video=e.video,i.canvasParent=null,i.fonts=e.fonts||[],i.availableFonts=e.availableFonts||[],i.fallbackFont=e.fallbackFont||"default.woff2",i.lazyFileLoading=e.lazyFileLoading||!1,i.onReadyEvent=e.onReady,i.workerUrl=t?e.workerUrl||"subtitles-octopus-worker.js":e.legacyWorkerUrl||"subtitles-octopus-worker-legacy.js",i.subUrl=e.subUrl,i.subContent=e.subContent||null,i.onErrorEvent=e.onError,i.debug=e.debug||!1,i.lastRenderTime=0,i.pixelRatio=window.devicePixelRatio||1,i.timeOffset=e.timeOffset||0,i.renderedItems=[],i.renderAhead=1024*i.renderAhead*1024*.9,i.oneshotState={displayedEvent:null,eventStart:null,eventOver:!1,iteration:0,renderRequested:!1,requestNextTimestamp:-1,nextRequestOffset:0,restart:!0,prevWidth:null,prevHeight:null},i.rafId=0,i.hasAlphaBug=!1,function(){if("function"==typeof ImageData.prototype.constructor)try{return void 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")}var e=document.createElement("canvas").getContext("2d");window.ImageData=function(){var t=0;if(arguments[0]instanceof Uint8ClampedArray)var r=arguments[t++];var n=arguments[t++],a=arguments[t],s=e.createImageData(n,a);return r&&s.data.set(r),s}}(),i.workerError=function(e){if(console.error("Worker error: ",e),i.onErrorEvent&&i.onErrorEvent(e),!i.debug)throw i.dispose(),new Error("Worker error: "+e)},i.init=function(){window.Worker?(i.worker||(i.worker=new Worker(i.workerUrl),i.worker.addEventListener("message",i.onWorkerMessage),i.worker.addEventListener("error",i.workerError)),i.workerActive=!1,i.createCanvas(),i.setVideo(e.video),i.setSubUrl(e.subUrl),s=i.canvas.width,o=i.canvas.height,i.worker.postMessage({target:"worker-init",width:i.canvas.width,height:i.canvas.height,URL:document.URL,currentScript:i.workerUrl,preMain:!0,renderMode:i.renderMode,subUrl:i.subUrl,subContent:i.subContent,fonts:i.fonts,availableFonts:i.availableFonts,fallbackFont:i.fallbackFont,lazyFileLoading:i.lazyFileLoading,debug:i.debug,targetFps:i.targetFps,libassMemoryLimit:i.libassMemoryLimit,libassGlyphLimit:i.libassGlyphLimit,renderOnDemand:i.renderAhead>0,dropAllAnimations:i.dropAllAnimations})):i.workerError("worker not supported")},i.createCanvas=function(){i.canvas||(i.video?(i.isOurCanvas=!0,i.canvas=document.createElement("canvas"),i.canvas.className="libassjs-canvas",i.canvas.style.display="none",i.canvasParent=document.createElement("div"),i.canvasParent.className="libassjs-canvas-parent",i.canvasParent.appendChild(i.canvas),i.video.nextSibling?i.video.parentNode.insertBefore(i.canvasParent,i.video.nextSibling):i.video.parentNode.appendChild(i.canvasParent)):i.canvas||i.workerError("Don't know where to render: you should give video or canvas in options.")),i.ctx=i.canvas.getContext("2d"),i.bufferCanvas=document.createElement("canvas"),i.bufferCanvasCtx=i.bufferCanvas.getContext("2d"),i.bufferCanvas.width=1,i.bufferCanvas.height=1;var e=new Uint8ClampedArray([0,255,0,0]),t=new ImageData(e,1,1);i.bufferCanvasCtx.clearRect(0,0,1,1),i.ctx.clearRect(0,0,1,1);var r=i.ctx.getImageData(0,0,1,1).data;i.bufferCanvasCtx.putImageData(t,0,0),i.ctx.drawImage(i.bufferCanvas,0,0);var n=i.ctx.getImageData(0,0,1,1).data;i.hasAlphaBug=r[1]!=n[1],i.hasAlphaBug&&console.log("Detected a browser having issue with transparent pixels, applying workaround")},i.setVideo=function(e){i.video=e,i.video&&(i.video.addEventListener("timeupdate",d,!1),i.video.addEventListener("playing",v,!1),i.video.addEventListener("pause",c,!1),i.video.addEventListener("seeking",l,!1),i.video.addEventListener("seeked",m,!1),i.video.addEventListener("ratechange",h,!1),i.video.addEventListener("waiting",u,!1),document.addEventListener("fullscreenchange",i.resizeWithTimeout,!1),document.addEventListener("mozfullscreenchange",i.resizeWithTimeout,!1),document.addEventListener("webkitfullscreenchange",i.resizeWithTimeout,!1),document.addEventListener("msfullscreenchange",i.resizeWithTimeout,!1),window.addEventListener("resize",i.resizeWithTimeout,!1),"undefined"!=typeof ResizeObserver&&(i.ro=new ResizeObserver(i.resizeWithTimeout),i.ro.observe(i.video)),i.video.videoWidth>0?i.resize():i.video.addEventListener("loadedmetadata",f,!1))},i.getVideoPosition=function(){var e=i.video.videoWidth/i.video.videoHeight,t=i.video.offsetWidth,r=i.video.offsetHeight,n=t,a=r;return t/r>e?n=Math.floor(r*e):a=Math.floor(t/e),{width:n,height:a,x:(t-n)/2,y:(r-a)/2}},i.setSubUrl=function(e){i.subUrl=e},i.resetRenderAheadCache=function(e){if(i.renderAhead>0){var t=[];if(e&&i.oneshotState.prevHeight&&i.oneshotState.prevWidth){if(i.oneshotState.prevHeight===o&&i.oneshotState.prevWidth===s)return;var r=10,n=.3*i.renderAhead;o>=i.oneshotState.prevHeight*(1-i.resizeVariation)&&o<=i.oneshotState.prevHeight*(1+i.resizeVariation)&&s>=i.oneshotState.prevWidth*(1-i.resizeVariation)&&s<=i.oneshotState.prevWidth*(1+i.resizeVariation)&&(console.debug("viewport changes are small, leaving more of prerendered buffer"),r=30,n=.5*i.renderAhead);for(var a=i.video.currentTime+i.timeOffset+r,d=0,v=0;v<i.renderedItems.length;v++){var c=i.renderedItems[v];if(c.emptyFinish<0||a<c.emptyFinish)break;if((d+=c.size)>=n)break;t.push(c)}}console.info("resetting prerender cache"),i.renderedItems=t,i.oneshotState.eventStart=null,i.oneshotState.iteration++,i.oneshotState.renderRequested=!1,i.oneshotState.prevHeight=o,i.oneshotState.prevWidth=s,i.oneshotState.nextRequestOffset=0,i.oneshotState.restart=!0,e||(i.oneshotState.displayedEvent=null),i.rafId||(i.rafId=window.requestAnimationFrame(b)),g(void 0,!0)}},i.renderFrameData=null,i.workerActive=!1,i.frameId=0,i.onWorkerMessage=function(e){i.workerActive||(i.workerActive=!0,i.onReadyEvent&&i.onReadyEvent());var t=e.data;switch(t.target){case"stdout":console.log(t.content);break;case"console-log":console.log.apply(console,JSON.parse(t.content));break;case"console-debug":console.debug.apply(console,JSON.parse(t.content));break;case"console-info":console.info.apply(console,JSON.parse(t.content));break;case"console-warn":console.warn.apply(console,JSON.parse(t.content));break;case"console-error":console.error.apply(console,JSON.parse(t.content));break;case"stderr":console.error(t.content);break;case"window":window[t.method]();break;case"canvas":switch(t.op){case"getContext":i.ctx=i.canvas.getContext(t.type,t.attributes);break;case"resize":i.resize(t.width,t.height);break;case"renderCanvas":i.lastRenderTime<t.time&&(i.lastRenderTime=t.time,i.renderFramesData=t,window.requestAnimationFrame(y));break;case"renderFastCanvas":i.lastRenderTime<t.time&&(i.lastRenderTime=t.time,i.renderFramesData=t,window.requestAnimationFrame(k));break;case"setObjectProperty":i.canvas[t.object][t.property]=t.value;break;case"oneshot-result":if(t.iteration!=i.oneshotState.iteration)return void console.debug("received stale prerender, ignoring");i.debug&&console.info("oneshot received (start="+t.eventStart+", empty="+t.emptyFinish+"), render: "+Math.round(t.spentTime)+" ms"),i.oneshotState.renderRequested=!1,Math.abs(t.lastRenderedTime-i.oneshotState.requestNextTimestamp)<a&&(i.oneshotState.requestNextTimestamp=-1),t.eventStart-t.lastRenderedTime>a&&i.renderedItems.push({eventStart:t.lastRenderedTime,eventFinish:t.lastRenderedTime-.001,emptyFinish:t.eventStart,viewport:t.viewport,spentTime:0,blendTime:0,items:[],animated:!1,size:0});for(var r=[],n=0,s=0,o=t.canvases.length;s<o;s++){var d=t.canvases[s];r.push({w:d.w,h:d.h,x:d.x,y:d.y,image:new ImageData(new Uint8ClampedArray(d.buffer),d.w,d.h)}),n+=d.buffer.byteLength}var v=!1;if(t.emptyFinish>0&&t.emptyFinish-t.eventStart<1/i.targetFps||t.animated){var c=t.eventStart+1/i.targetFps;t.emptyFinish=c,t.eventFinish=c,v=!0}i.renderedItems.push({eventStart:t.eventStart,eventFinish:t.eventFinish,emptyFinish:t.emptyFinish,spentTime:t.spentTime,blendTime:t.blendTime,viewport:t.viewport,items:r,animated:t.animated,size:n}),i.renderedItems.sort((function(e,t){return e.eventStart-t.eventStart})),i.oneshotState.requestNextTimestamp>=0?g(i.oneshotState.requestNextTimestamp,!0):t.eventStart<0?console.info('oneshot received "end of frames" event'):t.emptyFinish>=0?g(t.emptyFinish,v):console.info("there are no more events to prerender");break;default:throw"eh?"}break;case"tick":i.frameId=t.id,i.worker.postMessage({target:"tock",id:i.frameId});break;case"custom":if(!i.onCustomMessage)throw"Custom message received but client onCustomMessage not implemented.";i.onCustomMessage(e);break;case"setimmediate":i.worker.postMessage({target:"setimmediate"});break;case"get-events":case"get-styles":case"ready":break;default:throw"what? "+t.target}},i.resize=function(e,t,r,n){var a=null;if(r=r||0,n=n||0,(!e||!t)&&i.video){var d=function(e,t){var r=i.prescaleFactor<=0?1:i.prescaleFactor;if(t<=0||e<=0)e=0,t=0;else{var n=r<1?-1:1,a=t;n*a*r<=n*i.prescaleHeightLimit?a*=r:n*a<n*i.prescaleHeightLimit&&(a=i.prescaleHeightLimit),i.maxRenderHeight>0&&a>i.maxRenderHeight&&(a=i.maxRenderHeight),e*=a/t,t=a}return{width:e,height:t}}((a=i.getVideoPosition()).width*i.pixelRatio,a.height*i.pixelRatio);e=d.width,t=d.height;var v=i.canvasParent.getBoundingClientRect().top-i.video.getBoundingClientRect().top;r=a.y-v,n=a.x}e&&t?(null!=a&&(i.canvasParent.style.position="relative",i.canvas.style.display="block",i.canvas.style.position="absolute",i.canvas.style.width=a.width+"px",i.canvas.style.height=a.height+"px",i.canvas.style.top=r+"px",i.canvas.style.left=n+"px",i.canvas.style.pointerEvents="none"),s===e&&o===t||(i.canvas.width=e,i.canvas.height=t,s=e,o=t,i.worker.postMessage({target:"canvas",width:i.canvas.width,height:i.canvas.height}),i.resetRenderAheadCache(!0))):i.video||console.error("width or height is 0. You should specify width & height for resize.")},i.resizeWithTimeout=function(){i.resize(),setTimeout(i.resize,100)},i.runBenchmark=function(){i.worker.postMessage({target:"runBenchmark"})},i.customMessage=function(e,t){t=t||{},i.worker.postMessage({target:"custom",userData:e,preMain:t.preMain})},i.setCurrentTime=function(e){i.worker.postMessage({target:"video",currentTime:e})},i.setTrackByUrl=function(e){i.worker.postMessage({target:"set-track-by-url",url:e}),i.resetRenderAheadCache(!1)},i.setTrack=function(e){i.worker.postMessage({target:"set-track",content:e}),i.resetRenderAheadCache(!1)},i.freeTrack=function(e){i.worker.postMessage({target:"free-track"}),i.resetRenderAheadCache(!1)},i.render=i.setCurrentTime,i.setIsPaused=function(e,t){i.worker.postMessage({target:"video",isPaused:e,currentTime:t})},i.setRate=function(e){i.worker.postMessage({target:"video",rate:e})},i.dispose=function(){i.worker.postMessage({target:"destroy"}),i.worker.terminate(),i.worker.removeEventListener("message",i.onWorkerMessage),i.worker.removeEventListener("error",i.workerError),i.workerActive=!1,i.worker=null,i.video&&(i.video.removeEventListener("timeupdate",d,!1),i.video.removeEventListener("playing",v,!1),i.video.removeEventListener("pause",c,!1),i.video.removeEventListener("seeking",l,!1),i.video.removeEventListener("seeked",m,!1),i.video.removeEventListener("ratechange",h,!1),i.video.removeEventListener("waiting",u,!1),i.video.removeEventListener("loadedmetadata",f,!1),document.removeEventListener("fullscreenchange",i.resizeWithTimeout,!1),document.removeEventListener("mozfullscreenchange",i.resizeWithTimeout,!1),document.removeEventListener("webkitfullscreenchange",i.resizeWithTimeout,!1),document.removeEventListener("msfullscreenchange",i.resizeWithTimeout,!1),window.removeEventListener("resize",i.resizeWithTimeout,!1),i.video.parentNode.removeChild(i.canvasParent),i.video=null),window.cancelAnimationFrame(i.rafId),i.rafId=0,i.ro&&(i.ro.disconnect(),i.ro=null),i.onCustomMessage=null,i.onErrorEvent=null,i.onReadyEvent=null},i.fetchFromWorker=function(e,t,r){try{var n=e.target,a=setTimeout((function(){o(Error("Error: Timeout while try to fetch "+n))}),5e3),s=function(e){e.data.target==n&&(t(e.data),i.worker.removeEventListener("message",s),i.worker.removeEventListener("error",o),clearTimeout(a))},o=function(e){r(e),i.worker.removeEventListener("message",s),i.worker.removeEventListener("error",o),clearTimeout(a)};i.worker.addEventListener("message",s),i.worker.addEventListener("error",o),i.worker.postMessage(e)}catch(e){r(e)}},i.createEvent=function(e){i.worker.postMessage({target:"create-event",event:e})},i.getEvents=function(e,t){i.fetchFromWorker({target:"get-events"},(function(t){e(t.events)}),t)},i.setEvent=function(e,t){i.worker.postMessage({target:"set-event",event:e,index:t})},i.removeEvent=function(e){i.worker.postMessage({target:"remove-event",index:e})},i.createStyle=function(e){i.worker.postMessage({target:"create-style",style:e})},i.getStyles=function(e,t){i.fetchFromWorker({target:"get-styles"},(function(t){e(t.styles)}),t)},i.setStyle=function(e,t){i.worker.postMessage({target:"set-style",style:e,index:t})},i.removeStyle=function(e){i.worker.postMessage({target:"remove-style",index:e})},i.init()})}}]); |