From 29b1a545428f181b1974ae4a0693f52d43431867 Mon Sep 17 00:00:00 2001 From: wancheng1990 <25022549@qq.com> Date: Tue, 28 Mar 2023 00:03:33 +0800 Subject: [PATCH] =?UTF-8?q?fix=20useMSE:true=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=EF=BC=8Cpause=20=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/document.md | 20 ++++++++++++++++++++ demo/public/MSE-demo.html | 2 +- demo/public/decoder.js | 4 ++-- demo/public/decoder.js.map | 2 +- demo/public/dist.zip | Bin 532933 -> 532969 bytes demo/public/jessibuca.js | 10 ++++++---- demo/public/jessibuca.js.map | 2 +- dist/jessibuca.js | 2 +- src/video/videoLoader.js | 5 +++-- 9 files changed, 35 insertions(+), 12 deletions(-) diff --git a/demo/document.md b/demo/document.md index 441cd8f1..490d9248 100644 --- a/demo/document.md +++ b/demo/document.md @@ -965,6 +965,26 @@ jessibuca.play('url2') ``` +### WebGL: CONTEXT_LOST_WEBGL 错误引发的原因 + +WebGL的CONTEXT_LOST_WEBGL错误通常表示WebGL上下文(context)已经丢失。当浏览器认为WebGL上下文已不再可用时,将会发生这种错误。以下是一些可能导致WebGL上下文丢失的原因: + +- 设备内存不足:在设备内存不足的情况下,浏览器会释放一些资源以获得更多内存,其中可能包括WebGL上下文。 + +- 用户操作中断:例如窗口被最小化、系统进入睡眠模式等用户操作都有可能导致WebGL上下文丢失。 + +- 设备性能问题:某些设备可能无法支持WebGL或者性能较低,导致WebGL上下文出现问题。 + +- 驱动程序问题:某些情况下,驱动程序可能会导致WebGL上下文丢失。 + +- 系统错误:例如设备故障、硬件损坏等系统错误也可能导致WebGL上下文丢失。 + +#### 窗口被最小化、系统进入睡眠模式等用户操作都有可能导致WebGL上下文丢失。 +当用户窗口被最小化或系统进入睡眠模式时,浏览器会暂停WebGL上下文的渲染和更新。这可能会导致WebGL上下文超时(timeout)并且丢失。如果WebGL上下文被挂起或暂停时间过长,可以认为WebGL上下文已过期或无效,从而导致CONTEXT_LOST_WEBGL错误。 + +WebGL是一种在Web浏览器中渲染3D图形的技术,需要高帧率和持续更新来保持流畅的体验。如果WebGL上下文被暂停或挂起,它就无法满足要求的性能需求,因此浏览器会释放WebGL上下文,以回收资源和内存。 + + ### 群 diff --git a/demo/public/MSE-demo.html b/demo/public/MSE-demo.html index efec8b90..863d1275 100644 --- a/demo/public/MSE-demo.html +++ b/demo/public/MSE-demo.html @@ -99,7 +99,7 @@ diff --git a/demo/public/decoder.js b/demo/public/decoder.js index 7af3f25a..effca2b3 100644 --- a/demo/public/decoder.js +++ b/demo/public/decoder.js @@ -7435,7 +7435,7 @@ gl.deleteBuffer(texturePosBuffer); gl.deleteTexture(yTextureRef); gl.deleteTexture(uTextureRef); - gl.deleteBuffer(vTextureRef); + gl.deleteTexture(vTextureRef); } catch (e) {// console.error(e); } } @@ -7477,7 +7477,7 @@ // second loadingTimeoutReplay: true, // loading timeout replay. default is true - heartTimeoutReplay: false, + heartTimeoutReplay: true, // heart timeout replay. loadingTimeoutReplayTimes: 3, // loading timeout replay fail times diff --git a/demo/public/decoder.js.map b/demo/public/decoder.js.map index b7cd1ce0..0e3af5eb 100644 --- a/demo/public/decoder.js.map +++ b/demo/public/decoder.js.map @@ -1 +1 @@ -{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/worker.js"],"sourcesContent":["var Module=typeof Module!=\"undefined\"?Module:{};var Module={};Module.print=function(text){console.log(\"Jessibuca: [worker]:\",text)};Module.printErr=function(text){console.warn(\"Jessibuca: [worker]:\",text);postMessage({cmd:\"wasmError\",message:text})};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module[\"ENVIRONMENT\"]){throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\")}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e==\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(!(typeof process==\"object\"&&typeof require==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process==\"object\"&&typeof require===\"function\"||typeof window==\"object\"||typeof importScripts==\"function\")throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){let data;if(typeof readbuffer==\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data==\"object\");return data};readAsync=function readAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit==\"function\"){quit_=((status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)})}if(typeof print!=\"undefined\"){if(typeof console==\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!=\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(!(typeof window==\"object\"||typeof importScripts==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{throw new Error(\"environment detection error\")}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module[\"arguments\"])arguments_=Module[\"arguments\"];legacyModuleProp(\"arguments\",\"arguments_\");if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];legacyModuleProp(\"thisProgram\",\"thisProgram\");if(Module[\"quit\"])quit_=Module[\"quit\"];legacyModuleProp(\"quit\",\"quit_\");assert(typeof Module[\"memoryInitializerPrefixURL\"]==\"undefined\",\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"pthreadMainPrefixURL\"]==\"undefined\",\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"cdInitializerPrefixURL\"]==\"undefined\",\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"filePackagePrefixURL\"]==\"undefined\",\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"read\"]==\"undefined\",\"Module.read option was removed (modify read_ in JS)\");assert(typeof Module[\"readAsync\"]==\"undefined\",\"Module.readAsync option was removed (modify readAsync in JS)\");assert(typeof Module[\"readBinary\"]==\"undefined\",\"Module.readBinary option was removed (modify readBinary in JS)\");assert(typeof Module[\"setWindowTitle\"]==\"undefined\",\"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");assert(typeof Module[\"TOTAL_MEMORY\"]==\"undefined\",\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");legacyModuleProp(\"read\",\"read_\");legacyModuleProp(\"readAsync\",\"readAsync\");legacyModuleProp(\"readBinary\",\"readBinary\");legacyModuleProp(\"setWindowTitle\",\"setWindowTitle\");assert(!ENVIRONMENT_IS_SHELL,\"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.\");var POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function uleb128Encode(n){assert(n<16384);if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;iabort(unexportedMessage(sym,isFSSybol)))}}var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];legacyModuleProp(\"wasmBinary\",\"wasmBinary\");var noExitRuntime=Module[\"noExitRuntime\"]||true;legacyModuleProp(\"noExitRuntime\",\"noExitRuntime\");if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed\"+(text?\": \"+text:\"\"))}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!==\"array\",'Return type should not be \"array\".');if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce(\"Invalid Unicode code point 0x\"+u.toString(16)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite==\"number\",\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){assert(ptr%2==0,\"Pointer passed to UTF16ToString must be aligned to two bytes!\");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,\"Pointer passed to stringToUTF16 must be aligned to two bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){assert(ptr%4==0,\"Pointer passed to UTF32ToString must be aligned to four bytes!\");var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,\"Pointer passed to stringToUTF32 must be aligned to four bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){assert(array.length>=0,\"writeArrayToMemory array must have a length (should be an array or typed array)\");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var TOTAL_STACK=5242880;if(Module[\"TOTAL_STACK\"])assert(TOTAL_STACK===Module[\"TOTAL_STACK\"],\"the stack size can no longer be determined at runtime\");var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;legacyModuleProp(\"INITIAL_MEMORY\",\"INITIAL_MEMORY\");assert(INITIAL_MEMORY>=TOTAL_STACK,\"INITIAL_MEMORY should be larger than TOTAL_STACK, was \"+INITIAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");assert(typeof Int32Array!=\"undefined\"&&typeof Float64Array!==\"undefined\"&&Int32Array.prototype.subarray!=undefined&&Int32Array.prototype.set!=undefined,\"JS engine does not provide full typed array support\");assert(!Module[\"wasmMemory\"],\"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally\");assert(INITIAL_MEMORY==67108864,\"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically\");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);HEAP32[max>>2]=34821223;HEAP32[max+4>>2]=2310721022;HEAP32[0]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\"+cookie2.toString(16)+\" 0x\"+cookie1.toString(16))}if(HEAP32[0]!==1668509029)abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\")}(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\"})();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,\"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.fround,\"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.clz32,\"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.trunc,\"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=\"undefined\"){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err(\"still waiting on run dependencies:\")}err(\"dependency: \"+dep)}if(shown){err(\"(end of list)\")}},1e4)}}else{err(\"warning: run dependency added without ID\")}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err(\"warning: run dependency removed without ID\")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}function createExportWrapper(name,fixedasm){return function(){var displayName=name;var asm=fixedasm;if(!fixedasm){asm=Module[\"asm\"]}assert(runtimeInitialized,\"native function `\"+displayName+\"` called before runtime initialization\");if(!asm[name]){assert(asm[name],\"exported native function `\"+displayName+\"` not found\")}return asm[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile=\"decoder.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"memory\"];assert(wasmMemory,\"memory not found in wasm exports\");updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"__indirect_function_table\"];assert(wasmTable,\"table not found in wasm exports\");addOnInit(Module[\"asm\"][\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,\"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");trueModule=null;receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);if(isFileURI(wasmBinaryFile)){err(\"warning: Loading from a file URI (\"+wasmBinaryFile+\") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing\")}abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){warnOnce(\"warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return\"(no stack trace available)\"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){assert(alignment,\"alignment argument is required\");return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{assert(typeof parent==\"object\");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{if(typeof type==\"string\"){throw type}var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1);assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack){Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true});this.stack=demangleAll(this.stack)}};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;___stdio_exit();for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},absolutePath:()=>{abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder:()=>{abort(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink:()=>{abort(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath:()=>{abort(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc:()=>{abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath:()=>{abort(\"FS.standardizePath has been removed; use PATH.normalize instead\")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=(handle=>handle);return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning.stack.replace(/^Error: /,\"\"));releaseClassHandle(info.$$)});attachFinalizer=(handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};var cls=$$.ptrType.registeredClass;info.leakWarning=new Error(\"Embind found a leaked C++ instance \"+cls.name+\" <0x\"+$$.ptr.toString(16)+\">.\\n\"+\"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\"+\"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\"+\"Originally allocated\");if(\"captureStackTrace\"in Error){Error.captureStackTrace(info.leakWarning,RegisteredPointer_fromWireType)}finalizationRegistry.register(handle,info,handle)}return handle});detachFinalizer=(handle=>finalizationRegistry.unregister(handle));return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){assert(\"dynCall_\"+sig in Module,\"bad function pointer type - no table for sig '\"+sig+\"'\");if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,\"--\").length)}else{assert(sig.length==1)}var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),\"missing table entry in dynCall: \"+ptr);return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.includes(\"j\"),\"getDynCaller should only be called with i64 sigs\");var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=(()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)});whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{throwUnboundTypeError(\"Cannot access \"+humanName+\" due to unbound types\",[getterReturnType,setterArgumentType])})}else{desc.set=(v=>{throwBindingError(humanName+\" is a read-only property\")})}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+toTypeName)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=Emval.toHandle(destructors);HEAP32[destructorsRef>>2]=rd;return returnType[\"toWireType\"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+\"_$\"+types.slice(1).map(function(t){return t.name}).join(\"_\")+\"$\";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=[\"retType\"];var args=[retType];var argsList=\"\";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"native code called abort()\")}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){assert(hi===(hi|0));return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3]);argIndex+=8}else if(type==\"i64\"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type=\"i32\";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg(\"i32\");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg(\"i32\");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case\"h\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case\"l\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case\"L\":case\"q\":case\"j\":argSize=8;break;case\"z\":case\"t\":case\"I\":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case\"d\":case\"i\":case\"u\":case\"o\":case\"x\":case\"X\":case\"p\":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg(\"i\"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix=\"\";if(next==100||next==105){argText=reSign(currArg,8*argSize).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?\"0\":\"\")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?\"0x\":\"\";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?\"f\":\"F\").charCodeAt(0);precision-=exponent+1}else{next=(next==103?\"e\":\"E\").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\\d$/.test(argText)){argText=argText.slice(0,-1)+\"0\"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText=\"-\"+argText}}var parts=argText.split(\"e\");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(\".\")&&(parts[0].slice(-1)==\"0\"||parts[0].slice(-1)==\".\")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(\".\")==-1)parts[0]+=\".\";while(precision>effectivePrecision++)parts[0]+=\"0\"}argText=parts[0]+(parts.length>1?\"e\"+parts[1]:\"\");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText=\"+\"+argText}else if(flagPadSign){argText=\" \"+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg(\"i8\"));break}case\"n\":{var ptr=getNextArg(\"i32*\");HEAP32[ptr>>2]=ret.length;break}case\"%\":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(var i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a==\"number\"||typeof a==\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce(\"EM_LOG_DEMANGLE is deprecated; ignoring\")}if(flags&8&&typeof emscripten_source_map==\"undefined\"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes(\"_emscripten_\"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(var l in lines){var line=lines[l];var symbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+symbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+symbolName:\" at \"+symbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\\s+$/,\"\");str+=(str.length>0?\"\\n\":\"\")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){err(\"emscripten_realloc_buffer: Attempted to grow heap from \"+buffer.byteLength+\" bytes to \"+size+\" bytes, but got error: \"+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;assert(requestedSize>oldSize);var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){err(\"Cannot enlarge memory, asked to go up to \"+requestedSize+\" bytes, but the limit is \"+maxHeapSize+\" bytes!\");return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}err(\"Failed to grow the heap from \"+oldSize+\" bytes to \"+newSize+\" bytes, not enough memory!\");return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();ERRNO_CODES={\"EPERM\":63,\"ENOENT\":44,\"ESRCH\":71,\"EINTR\":27,\"EIO\":29,\"ENXIO\":60,\"E2BIG\":1,\"ENOEXEC\":45,\"EBADF\":8,\"ECHILD\":12,\"EAGAIN\":6,\"EWOULDBLOCK\":6,\"ENOMEM\":48,\"EACCES\":2,\"EFAULT\":21,\"ENOTBLK\":105,\"EBUSY\":10,\"EEXIST\":20,\"EXDEV\":75,\"ENODEV\":43,\"ENOTDIR\":54,\"EISDIR\":31,\"EINVAL\":28,\"ENFILE\":41,\"EMFILE\":33,\"ENOTTY\":59,\"ETXTBSY\":74,\"EFBIG\":22,\"ENOSPC\":51,\"ESPIPE\":70,\"EROFS\":69,\"EMLINK\":34,\"EPIPE\":64,\"EDOM\":18,\"ERANGE\":68,\"ENOMSG\":49,\"EIDRM\":24,\"ECHRNG\":106,\"EL2NSYNC\":156,\"EL3HLT\":107,\"EL3RST\":108,\"ELNRNG\":109,\"EUNATCH\":110,\"ENOCSI\":111,\"EL2HLT\":112,\"EDEADLK\":16,\"ENOLCK\":46,\"EBADE\":113,\"EBADR\":114,\"EXFULL\":115,\"ENOANO\":104,\"EBADRQC\":103,\"EBADSLT\":102,\"EDEADLOCK\":16,\"EBFONT\":101,\"ENOSTR\":100,\"ENODATA\":116,\"ETIME\":117,\"ENOSR\":118,\"ENONET\":119,\"ENOPKG\":120,\"EREMOTE\":121,\"ENOLINK\":47,\"EADV\":122,\"ESRMNT\":123,\"ECOMM\":124,\"EPROTO\":65,\"EMULTIHOP\":36,\"EDOTDOT\":125,\"EBADMSG\":9,\"ENOTUNIQ\":126,\"EBADFD\":127,\"EREMCHG\":128,\"ELIBACC\":129,\"ELIBBAD\":130,\"ELIBSCN\":131,\"ELIBMAX\":132,\"ELIBEXEC\":133,\"ENOSYS\":52,\"ENOTEMPTY\":55,\"ENAMETOOLONG\":37,\"ELOOP\":32,\"EOPNOTSUPP\":138,\"EPFNOSUPPORT\":139,\"ECONNRESET\":15,\"ENOBUFS\":42,\"EAFNOSUPPORT\":5,\"EPROTOTYPE\":67,\"ENOTSOCK\":57,\"ENOPROTOOPT\":50,\"ESHUTDOWN\":140,\"ECONNREFUSED\":14,\"EADDRINUSE\":3,\"ECONNABORTED\":13,\"ENETUNREACH\":40,\"ENETDOWN\":38,\"ETIMEDOUT\":73,\"EHOSTDOWN\":142,\"EHOSTUNREACH\":23,\"EINPROGRESS\":26,\"EALREADY\":7,\"EDESTADDRREQ\":17,\"EMSGSIZE\":35,\"EPROTONOSUPPORT\":66,\"ESOCKTNOSUPPORT\":137,\"EADDRNOTAVAIL\":4,\"ENETRESET\":39,\"EISCONN\":30,\"ENOTCONN\":53,\"ETOOMANYREFS\":141,\"EUSERS\":136,\"EDQUOT\":19,\"ESTALE\":72,\"ENOTSUP\":138,\"ENOMEDIUM\":148,\"EILSEQ\":25,\"EOVERFLOW\":61,\"ECANCELED\":11,\"ENOTRECOVERABLE\":56,\"EOWNERDEAD\":62,\"ESTRPIPE\":135};embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function checkIncomingModuleAPI(){ignoredModuleProp(\"fetchSettings\")}var asmLibraryArg={\"__syscall_fcntl64\":___syscall_fcntl64,\"__syscall_openat\":___syscall_openat,\"_embind_register_bigint\":__embind_register_bigint,\"_embind_register_bool\":__embind_register_bool,\"_embind_register_class\":__embind_register_class,\"_embind_register_class_constructor\":__embind_register_class_constructor,\"_embind_register_class_function\":__embind_register_class_function,\"_embind_register_class_property\":__embind_register_class_property,\"_embind_register_emval\":__embind_register_emval,\"_embind_register_float\":__embind_register_float,\"_embind_register_integer\":__embind_register_integer,\"_embind_register_memory_view\":__embind_register_memory_view,\"_embind_register_std_string\":__embind_register_std_string,\"_embind_register_std_wstring\":__embind_register_std_wstring,\"_embind_register_void\":__embind_register_void,\"_emscripten_date_now\":__emscripten_date_now,\"_emval_as\":__emval_as,\"_emval_call_void_method\":__emval_call_void_method,\"_emval_decref\":__emval_decref,\"_emval_get_method_caller\":__emval_get_method_caller,\"_emval_incref\":__emval_incref,\"_emval_run_destructors\":__emval_run_destructors,\"_emval_take_value\":__emval_take_value,\"_gmtime_js\":__gmtime_js,\"_localtime_js\":__localtime_js,\"_mktime_js\":__mktime_js,\"_tzset_js\":__tzset_js,\"abort\":_abort,\"emscripten_log\":_emscripten_log,\"emscripten_resize_heap\":_emscripten_resize_heap,\"environ_get\":_environ_get,\"environ_sizes_get\":_environ_sizes_get,\"fd_close\":_fd_close,\"fd_fdstat_get\":_fd_fdstat_get,\"fd_read\":_fd_read,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"setTempRet0\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=createExportWrapper(\"__wasm_call_ctors\");var _free=Module[\"_free\"]=createExportWrapper(\"free\");var _malloc=Module[\"_malloc\"]=createExportWrapper(\"malloc\");var _strlen=Module[\"_strlen\"]=createExportWrapper(\"strlen\");var ___errno_location=Module[\"___errno_location\"]=createExportWrapper(\"__errno_location\");var ___getTypeName=Module[\"___getTypeName\"]=createExportWrapper(\"__getTypeName\");var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=createExportWrapper(\"__embind_register_native_and_builtin_types\");var ___stdio_exit=Module[\"___stdio_exit\"]=createExportWrapper(\"__stdio_exit\");var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=createExportWrapper(\"emscripten_builtin_memalign\");var _emscripten_stack_init=Module[\"_emscripten_stack_init\"]=function(){return(_emscripten_stack_init=Module[\"_emscripten_stack_init\"]=Module[\"asm\"][\"emscripten_stack_init\"]).apply(null,arguments)};var _emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=function(){return(_emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=Module[\"asm\"][\"emscripten_stack_get_free\"]).apply(null,arguments)};var _emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=function(){return(_emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null,arguments)};var _emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=function(){return(_emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=createExportWrapper(\"stackSave\");var stackRestore=Module[\"stackRestore\"]=createExportWrapper(\"stackRestore\");var stackAlloc=Module[\"stackAlloc\"]=createExportWrapper(\"stackAlloc\");var dynCall_ijiii=Module[\"dynCall_ijiii\"]=createExportWrapper(\"dynCall_ijiii\");var dynCall_viiijj=Module[\"dynCall_viiijj\"]=createExportWrapper(\"dynCall_viiijj\");var dynCall_jij=Module[\"dynCall_jij\"]=createExportWrapper(\"dynCall_jij\");var dynCall_jii=Module[\"dynCall_jii\"]=createExportWrapper(\"dynCall_jii\");var dynCall_jiji=Module[\"dynCall_jiji\"]=createExportWrapper(\"dynCall_jiji\");var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=112940;unexportedRuntimeFunction(\"intArrayFromString\",false);unexportedRuntimeFunction(\"intArrayToString\",false);unexportedRuntimeFunction(\"ccall\",false);unexportedRuntimeFunction(\"cwrap\",false);unexportedRuntimeFunction(\"setValue\",false);unexportedRuntimeFunction(\"getValue\",false);unexportedRuntimeFunction(\"allocate\",false);unexportedRuntimeFunction(\"UTF8ArrayToString\",false);unexportedRuntimeFunction(\"UTF8ToString\",false);unexportedRuntimeFunction(\"stringToUTF8Array\",false);unexportedRuntimeFunction(\"stringToUTF8\",false);unexportedRuntimeFunction(\"lengthBytesUTF8\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"addOnPreRun\",false);unexportedRuntimeFunction(\"addOnInit\",false);unexportedRuntimeFunction(\"addOnPreMain\",false);unexportedRuntimeFunction(\"addOnExit\",false);unexportedRuntimeFunction(\"addOnPostRun\",false);unexportedRuntimeFunction(\"writeStringToMemory\",false);unexportedRuntimeFunction(\"writeArrayToMemory\",false);unexportedRuntimeFunction(\"writeAsciiToMemory\",false);unexportedRuntimeFunction(\"addRunDependency\",true);unexportedRuntimeFunction(\"removeRunDependency\",true);unexportedRuntimeFunction(\"FS_createFolder\",false);unexportedRuntimeFunction(\"FS_createPath\",true);unexportedRuntimeFunction(\"FS_createDataFile\",true);unexportedRuntimeFunction(\"FS_createPreloadedFile\",true);unexportedRuntimeFunction(\"FS_createLazyFile\",true);unexportedRuntimeFunction(\"FS_createLink\",false);unexportedRuntimeFunction(\"FS_createDevice\",true);unexportedRuntimeFunction(\"FS_unlink\",true);unexportedRuntimeFunction(\"getLEB\",false);unexportedRuntimeFunction(\"getFunctionTables\",false);unexportedRuntimeFunction(\"alignFunctionTables\",false);unexportedRuntimeFunction(\"registerFunctions\",false);unexportedRuntimeFunction(\"addFunction\",false);unexportedRuntimeFunction(\"removeFunction\",false);unexportedRuntimeFunction(\"prettyPrint\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"getCompilerSetting\",false);unexportedRuntimeFunction(\"print\",false);unexportedRuntimeFunction(\"printErr\",false);unexportedRuntimeFunction(\"getTempRet0\",false);unexportedRuntimeFunction(\"setTempRet0\",false);unexportedRuntimeFunction(\"callMain\",false);unexportedRuntimeFunction(\"abort\",false);unexportedRuntimeFunction(\"keepRuntimeAlive\",false);unexportedRuntimeFunction(\"ptrToString\",false);unexportedRuntimeFunction(\"zeroMemory\",false);unexportedRuntimeFunction(\"stringToNewUTF8\",false);unexportedRuntimeFunction(\"emscripten_realloc_buffer\",false);unexportedRuntimeFunction(\"ENV\",false);unexportedRuntimeFunction(\"ERRNO_CODES\",false);unexportedRuntimeFunction(\"ERRNO_MESSAGES\",false);unexportedRuntimeFunction(\"setErrNo\",false);unexportedRuntimeFunction(\"inetPton4\",false);unexportedRuntimeFunction(\"inetNtop4\",false);unexportedRuntimeFunction(\"inetPton6\",false);unexportedRuntimeFunction(\"inetNtop6\",false);unexportedRuntimeFunction(\"readSockaddr\",false);unexportedRuntimeFunction(\"writeSockaddr\",false);unexportedRuntimeFunction(\"DNS\",false);unexportedRuntimeFunction(\"getHostByName\",false);unexportedRuntimeFunction(\"Protocols\",false);unexportedRuntimeFunction(\"Sockets\",false);unexportedRuntimeFunction(\"getRandomDevice\",false);unexportedRuntimeFunction(\"traverseStack\",false);unexportedRuntimeFunction(\"UNWIND_CACHE\",false);unexportedRuntimeFunction(\"convertPCtoSourceLocation\",false);unexportedRuntimeFunction(\"readAsmConstArgsArray\",false);unexportedRuntimeFunction(\"readAsmConstArgs\",false);unexportedRuntimeFunction(\"mainThreadEM_ASM\",false);unexportedRuntimeFunction(\"jstoi_q\",false);unexportedRuntimeFunction(\"jstoi_s\",false);unexportedRuntimeFunction(\"getExecutableName\",false);unexportedRuntimeFunction(\"listenOnce\",false);unexportedRuntimeFunction(\"autoResumeAudioContext\",false);unexportedRuntimeFunction(\"dynCallLegacy\",false);unexportedRuntimeFunction(\"getDynCaller\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"setWasmTableEntry\",false);unexportedRuntimeFunction(\"getWasmTableEntry\",false);unexportedRuntimeFunction(\"handleException\",false);unexportedRuntimeFunction(\"runtimeKeepalivePush\",false);unexportedRuntimeFunction(\"runtimeKeepalivePop\",false);unexportedRuntimeFunction(\"callUserCallback\",false);unexportedRuntimeFunction(\"maybeExit\",false);unexportedRuntimeFunction(\"safeSetTimeout\",false);unexportedRuntimeFunction(\"asmjsMangle\",false);unexportedRuntimeFunction(\"asyncLoad\",false);unexportedRuntimeFunction(\"alignMemory\",false);unexportedRuntimeFunction(\"mmapAlloc\",false);unexportedRuntimeFunction(\"reallyNegative\",false);unexportedRuntimeFunction(\"unSign\",false);unexportedRuntimeFunction(\"reSign\",false);unexportedRuntimeFunction(\"formatString\",false);unexportedRuntimeFunction(\"PATH\",false);unexportedRuntimeFunction(\"PATH_FS\",false);unexportedRuntimeFunction(\"SYSCALLS\",false);unexportedRuntimeFunction(\"getSocketFromFD\",false);unexportedRuntimeFunction(\"getSocketAddress\",false);unexportedRuntimeFunction(\"JSEvents\",false);unexportedRuntimeFunction(\"registerKeyEventCallback\",false);unexportedRuntimeFunction(\"specialHTMLTargets\",false);unexportedRuntimeFunction(\"maybeCStringToJsString\",false);unexportedRuntimeFunction(\"findEventTarget\",false);unexportedRuntimeFunction(\"findCanvasEventTarget\",false);unexportedRuntimeFunction(\"getBoundingClientRect\",false);unexportedRuntimeFunction(\"fillMouseEventData\",false);unexportedRuntimeFunction(\"registerMouseEventCallback\",false);unexportedRuntimeFunction(\"registerWheelEventCallback\",false);unexportedRuntimeFunction(\"registerUiEventCallback\",false);unexportedRuntimeFunction(\"registerFocusEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceOrientationEventData\",false);unexportedRuntimeFunction(\"registerDeviceOrientationEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceMotionEventData\",false);unexportedRuntimeFunction(\"registerDeviceMotionEventCallback\",false);unexportedRuntimeFunction(\"screenOrientation\",false);unexportedRuntimeFunction(\"fillOrientationChangeEventData\",false);unexportedRuntimeFunction(\"registerOrientationChangeEventCallback\",false);unexportedRuntimeFunction(\"fillFullscreenChangeEventData\",false);unexportedRuntimeFunction(\"registerFullscreenChangeEventCallback\",false);unexportedRuntimeFunction(\"registerRestoreOldStyle\",false);unexportedRuntimeFunction(\"hideEverythingExceptGivenElement\",false);unexportedRuntimeFunction(\"restoreHiddenElements\",false);unexportedRuntimeFunction(\"setLetterbox\",false);unexportedRuntimeFunction(\"currentFullscreenStrategy\",false);unexportedRuntimeFunction(\"restoreOldWindowedStyle\",false);unexportedRuntimeFunction(\"softFullscreenResizeWebGLRenderTarget\",false);unexportedRuntimeFunction(\"doRequestFullscreen\",false);unexportedRuntimeFunction(\"fillPointerlockChangeEventData\",false);unexportedRuntimeFunction(\"registerPointerlockChangeEventCallback\",false);unexportedRuntimeFunction(\"registerPointerlockErrorEventCallback\",false);unexportedRuntimeFunction(\"requestPointerLock\",false);unexportedRuntimeFunction(\"fillVisibilityChangeEventData\",false);unexportedRuntimeFunction(\"registerVisibilityChangeEventCallback\",false);unexportedRuntimeFunction(\"registerTouchEventCallback\",false);unexportedRuntimeFunction(\"fillGamepadEventData\",false);unexportedRuntimeFunction(\"registerGamepadEventCallback\",false);unexportedRuntimeFunction(\"registerBeforeUnloadEventCallback\",false);unexportedRuntimeFunction(\"fillBatteryEventData\",false);unexportedRuntimeFunction(\"battery\",false);unexportedRuntimeFunction(\"registerBatteryEventCallback\",false);unexportedRuntimeFunction(\"setCanvasElementSize\",false);unexportedRuntimeFunction(\"getCanvasElementSize\",false);unexportedRuntimeFunction(\"demangle\",false);unexportedRuntimeFunction(\"demangleAll\",false);unexportedRuntimeFunction(\"jsStackTrace\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"getEnvStrings\",false);unexportedRuntimeFunction(\"checkWasiClock\",false);unexportedRuntimeFunction(\"writeI53ToI64\",false);unexportedRuntimeFunction(\"writeI53ToI64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToI64Signaling\",false);unexportedRuntimeFunction(\"writeI53ToU64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToU64Signaling\",false);unexportedRuntimeFunction(\"readI53FromI64\",false);unexportedRuntimeFunction(\"readI53FromU64\",false);unexportedRuntimeFunction(\"convertI32PairToI53\",false);unexportedRuntimeFunction(\"convertU32PairToI53\",false);unexportedRuntimeFunction(\"dlopenMissingError\",false);unexportedRuntimeFunction(\"setImmediateWrapped\",false);unexportedRuntimeFunction(\"clearImmediateWrapped\",false);unexportedRuntimeFunction(\"polyfillSetImmediate\",false);unexportedRuntimeFunction(\"uncaughtExceptionCount\",false);unexportedRuntimeFunction(\"exceptionLast\",false);unexportedRuntimeFunction(\"exceptionCaught\",false);unexportedRuntimeFunction(\"ExceptionInfo\",false);unexportedRuntimeFunction(\"exception_addRef\",false);unexportedRuntimeFunction(\"exception_decRef\",false);unexportedRuntimeFunction(\"Browser\",false);unexportedRuntimeFunction(\"setMainLoop\",false);unexportedRuntimeFunction(\"wget\",false);unexportedRuntimeFunction(\"FS\",false);unexportedRuntimeFunction(\"MEMFS\",false);unexportedRuntimeFunction(\"TTY\",false);unexportedRuntimeFunction(\"PIPEFS\",false);unexportedRuntimeFunction(\"SOCKFS\",false);unexportedRuntimeFunction(\"_setNetworkCallback\",false);unexportedRuntimeFunction(\"tempFixedLengthArray\",false);unexportedRuntimeFunction(\"miniTempWebGLFloatBuffers\",false);unexportedRuntimeFunction(\"heapObjectForWebGLType\",false);unexportedRuntimeFunction(\"heapAccessShiftForWebGLHeap\",false);unexportedRuntimeFunction(\"GL\",false);unexportedRuntimeFunction(\"emscriptenWebGLGet\",false);unexportedRuntimeFunction(\"computeUnpackAlignedImageSize\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetTexPixelData\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetUniform\",false);unexportedRuntimeFunction(\"webglGetUniformLocation\",false);unexportedRuntimeFunction(\"webglPrepareUniformLocationsBeforeFirstUse\",false);unexportedRuntimeFunction(\"webglGetLeftBracePos\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetVertexAttrib\",false);unexportedRuntimeFunction(\"writeGLArray\",false);unexportedRuntimeFunction(\"AL\",false);unexportedRuntimeFunction(\"SDL_unicode\",false);unexportedRuntimeFunction(\"SDL_ttfContext\",false);unexportedRuntimeFunction(\"SDL_audio\",false);unexportedRuntimeFunction(\"SDL\",false);unexportedRuntimeFunction(\"SDL_gfx\",false);unexportedRuntimeFunction(\"GLUT\",false);unexportedRuntimeFunction(\"EGL\",false);unexportedRuntimeFunction(\"GLFW_Window\",false);unexportedRuntimeFunction(\"GLFW\",false);unexportedRuntimeFunction(\"GLEW\",false);unexportedRuntimeFunction(\"IDBStore\",false);unexportedRuntimeFunction(\"runAndAbortIfError\",false);unexportedRuntimeFunction(\"InternalError\",false);unexportedRuntimeFunction(\"BindingError\",false);unexportedRuntimeFunction(\"UnboundTypeError\",false);unexportedRuntimeFunction(\"PureVirtualError\",false);unexportedRuntimeFunction(\"init_embind\",false);unexportedRuntimeFunction(\"throwInternalError\",false);unexportedRuntimeFunction(\"throwBindingError\",false);unexportedRuntimeFunction(\"throwUnboundTypeError\",false);unexportedRuntimeFunction(\"ensureOverloadTable\",false);unexportedRuntimeFunction(\"exposePublicSymbol\",false);unexportedRuntimeFunction(\"replacePublicSymbol\",false);unexportedRuntimeFunction(\"extendError\",false);unexportedRuntimeFunction(\"createNamedFunction\",false);unexportedRuntimeFunction(\"registeredInstances\",false);unexportedRuntimeFunction(\"getBasestPointer\",false);unexportedRuntimeFunction(\"registerInheritedInstance\",false);unexportedRuntimeFunction(\"unregisterInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstanceCount\",false);unexportedRuntimeFunction(\"getLiveInheritedInstances\",false);unexportedRuntimeFunction(\"registeredTypes\",false);unexportedRuntimeFunction(\"awaitingDependencies\",false);unexportedRuntimeFunction(\"typeDependencies\",false);unexportedRuntimeFunction(\"registeredPointers\",false);unexportedRuntimeFunction(\"registerType\",false);unexportedRuntimeFunction(\"whenDependentTypesAreResolved\",false);unexportedRuntimeFunction(\"embind_charCodes\",false);unexportedRuntimeFunction(\"embind_init_charCodes\",false);unexportedRuntimeFunction(\"readLatin1String\",false);unexportedRuntimeFunction(\"getTypeName\",false);unexportedRuntimeFunction(\"heap32VectorToArray\",false);unexportedRuntimeFunction(\"requireRegisteredType\",false);unexportedRuntimeFunction(\"getShiftFromSize\",false);unexportedRuntimeFunction(\"integerReadValueFromPointer\",false);unexportedRuntimeFunction(\"enumReadValueFromPointer\",false);unexportedRuntimeFunction(\"floatReadValueFromPointer\",false);unexportedRuntimeFunction(\"simpleReadValueFromPointer\",false);unexportedRuntimeFunction(\"runDestructors\",false);unexportedRuntimeFunction(\"new_\",false);unexportedRuntimeFunction(\"craftInvokerFunction\",false);unexportedRuntimeFunction(\"embind__requireFunction\",false);unexportedRuntimeFunction(\"tupleRegistrations\",false);unexportedRuntimeFunction(\"structRegistrations\",false);unexportedRuntimeFunction(\"genericPointerToWireType\",false);unexportedRuntimeFunction(\"constNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"nonConstNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"init_RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer_getPointee\",false);unexportedRuntimeFunction(\"RegisteredPointer_destructor\",false);unexportedRuntimeFunction(\"RegisteredPointer_deleteObject\",false);unexportedRuntimeFunction(\"RegisteredPointer_fromWireType\",false);unexportedRuntimeFunction(\"runDestructor\",false);unexportedRuntimeFunction(\"releaseClassHandle\",false);unexportedRuntimeFunction(\"finalizationRegistry\",false);unexportedRuntimeFunction(\"detachFinalizer_deps\",false);unexportedRuntimeFunction(\"detachFinalizer\",false);unexportedRuntimeFunction(\"attachFinalizer\",false);unexportedRuntimeFunction(\"makeClassHandle\",false);unexportedRuntimeFunction(\"init_ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle_isAliasOf\",false);unexportedRuntimeFunction(\"throwInstanceAlreadyDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_clone\",false);unexportedRuntimeFunction(\"ClassHandle_delete\",false);unexportedRuntimeFunction(\"deletionQueue\",false);unexportedRuntimeFunction(\"ClassHandle_isDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_deleteLater\",false);unexportedRuntimeFunction(\"flushPendingDeletes\",false);unexportedRuntimeFunction(\"delayFunction\",false);unexportedRuntimeFunction(\"setDelayFunction\",false);unexportedRuntimeFunction(\"RegisteredClass\",false);unexportedRuntimeFunction(\"shallowCopyInternalPointer\",false);unexportedRuntimeFunction(\"downcastPointer\",false);unexportedRuntimeFunction(\"upcastPointer\",false);unexportedRuntimeFunction(\"validateThis\",false);unexportedRuntimeFunction(\"char_0\",false);unexportedRuntimeFunction(\"char_9\",false);unexportedRuntimeFunction(\"makeLegalFunctionName\",false);unexportedRuntimeFunction(\"emval_handle_array\",false);unexportedRuntimeFunction(\"emval_free_list\",false);unexportedRuntimeFunction(\"emval_symbols\",false);unexportedRuntimeFunction(\"init_emval\",false);unexportedRuntimeFunction(\"count_emval_handles\",false);unexportedRuntimeFunction(\"get_first_emval\",false);unexportedRuntimeFunction(\"getStringOrSymbol\",false);unexportedRuntimeFunction(\"Emval\",false);unexportedRuntimeFunction(\"emval_newers\",false);unexportedRuntimeFunction(\"craftEmvalAllocator\",false);unexportedRuntimeFunction(\"emval_get_global\",false);unexportedRuntimeFunction(\"emval_methodCallers\",false);unexportedRuntimeFunction(\"emval_registeredMethods\",false);unexportedRuntimeFunction(\"warnOnce\",false);unexportedRuntimeFunction(\"stackSave\",false);unexportedRuntimeFunction(\"stackRestore\",false);unexportedRuntimeFunction(\"stackAlloc\",false);unexportedRuntimeFunction(\"AsciiToString\",false);unexportedRuntimeFunction(\"stringToAscii\",false);unexportedRuntimeFunction(\"UTF16ToString\",false);unexportedRuntimeFunction(\"stringToUTF16\",false);unexportedRuntimeFunction(\"lengthBytesUTF16\",false);unexportedRuntimeFunction(\"UTF32ToString\",false);unexportedRuntimeFunction(\"stringToUTF32\",false);unexportedRuntimeFunction(\"lengthBytesUTF32\",false);unexportedRuntimeFunction(\"allocateUTF8\",false);unexportedRuntimeFunction(\"allocateUTF8OnStack\",false);Module[\"writeStackCookie\"]=writeStackCookie;Module[\"checkStackCookie\"]=checkStackCookie;unexportedRuntimeSymbol(\"ALLOC_NORMAL\",false);unexportedRuntimeSymbol(\"ALLOC_STACK\",false);var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args){args=args||arguments_;if(runDependencies>0){return}stackCheckInit();preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();assert(!Module[\"_main\"],'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]');postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}checkStackCookie()}Module[\"run\"]=run;function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=(x=>{has=true});try{___stdio_exit();[\"stdout\",\"stderr\"].forEach(function(name){var info=FS.analyzePath(\"/dev/\"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true}})}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\")}}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();module.exports=Module;\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteBuffer(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: false,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()'\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n","import Module from './decoder/decoder';\nimport createWebGL from './utils/webgl';\nimport {WORKER_CMD_TYPE, MEDIA_TYPE, WORKER_SEND_TYPE, ENCODED_VIDEO_TYPE, DEFAULT_PLAYER_OPTIONS} from \"./constant\";\nimport {formatVideoDecoderConfigure, isGreenYUV} from \"./utils\";\n\nif (!Date.now) Date.now = function () {\n return new Date().getTime();\n};\n\nModule.postRun = function () {\n var buffer = [];\n var tempAudioBuffer = [];\n var wcsVideoDecoder = {};\n if (\"VideoEncoder\" in self) {\n wcsVideoDecoder = {\n hasInit: false,\n isEmitInfo: false,\n offscreenCanvas: null,\n offscreenCanvasCtx: null,\n decoder: new VideoDecoder({\n output: function (videoFrame) {\n if (!wcsVideoDecoder.isEmitInfo) {\n decoder.opt.debug && console.log('Jessibuca: [worker] Webcodecs Video Decoder initSize');\n postMessage({\n cmd: WORKER_CMD_TYPE.initVideo,\n w: videoFrame.codedWidth,\n h: videoFrame.codedHeight\n });\n wcsVideoDecoder.isEmitInfo = true;\n wcsVideoDecoder.offscreenCanvas = new OffscreenCanvas(videoFrame.codedWidth, videoFrame.codedHeight);\n wcsVideoDecoder.offscreenCanvasCtx = wcsVideoDecoder.offscreenCanvas.getContext(\"2d\");\n }\n\n wcsVideoDecoder.offscreenCanvasCtx.drawImage(videoFrame, 0, 0, videoFrame.codedWidth, videoFrame.codedHeight);\n let image_bitmap = wcsVideoDecoder.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: decoder.delay,\n ts: 0\n }, [image_bitmap]);\n\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close();\n } else {\n videoFrame.destroy();\n }\n }, 100);\n\n },\n error: function (error) {\n console.error(error);\n }\n }),\n decode: function (payload, ts) {\n const isIFrame = payload[0] >> 4 === 1;\n if (!wcsVideoDecoder.hasInit) {\n if (isIFrame && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n decoder.setVideoCodec(videoCodec);\n const config = formatVideoDecoderConfigure(payload.slice(5));\n wcsVideoDecoder.decoder.configure(config);\n wcsVideoDecoder.hasInit = true;\n }\n } else {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIFrame ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n });\n wcsVideoDecoder.decoder.decode(chunk);\n }\n },\n reset() {\n wcsVideoDecoder.hasInit = false;\n wcsVideoDecoder.isEmitInfo = false;\n wcsVideoDecoder.offscreenCanvas = null;\n wcsVideoDecoder.offscreenCanvasCtx = null;\n }\n };\n }\n\n var decoder = {\n opt: {\n debug: DEFAULT_PLAYER_OPTIONS.debug,\n useOffscreen: DEFAULT_PLAYER_OPTIONS.useOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment,\n videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay\n },\n useOffscreen: function () {\n return decoder.opt.useOffscreen && typeof OffscreenCanvas != 'undefined';\n },\n initAudioPlanar: function (channels, samplerate) {\n postMessage({cmd: WORKER_CMD_TYPE.initAudio, sampleRate: samplerate, channels: channels});\n var outputArray = [];\n var remain = 0;\n this.playAudioPlanar = function (data, len, ts) {\n var frameCount = len;\n var origin = [];\n var start = 0;\n for (var channel = 0; channel < 2; channel++) {\n var fp = Module.HEAPU32[(data >> 2) + channel] >> 2;\n origin[channel] = Module.HEAPF32.subarray(fp, fp + frameCount);\n }\n if (remain) {\n len = 1024 - remain;\n if (frameCount >= len) {\n outputArray[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0].subarray(0, len));\n if (channels == 2) {\n outputArray[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1].subarray(0, len));\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n start = len;\n frameCount -= len;\n } else {\n remain += frameCount;\n tempAudioBuffer[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0]);\n if (channels == 2) {\n tempAudioBuffer[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1]);\n }\n return;\n }\n }\n for (remain = frameCount; remain >= 1024; remain -= 1024) {\n outputArray[0] = origin[0].slice(start, start += 1024);\n if (channels == 2) {\n outputArray[1] = origin[1].slice(start - 1024, start);\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n }\n if (remain) {\n tempAudioBuffer[0] = origin[0].slice(start);\n if (channels == 2) {\n tempAudioBuffer[1] = origin[1].slice(start);\n }\n }\n };\n },\n setVideoCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.videoCode, code});\n },\n setAudioCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.audioCode, code});\n },\n setVideoSize: function (w, h) {\n postMessage({cmd: WORKER_CMD_TYPE.initVideo, w: w, h: h});\n var size = w * h;\n var qsize = size >> 2;\n if (decoder.useOffscreen()) {\n this.offscreenCanvas = new OffscreenCanvas(w, h);\n this.offscreenCanvasGL = this.offscreenCanvas.getContext(\"webgl\");\n this.webglObj = createWebGL(this.offscreenCanvasGL, decoder.opt.openWebglAlignment);\n this.draw = function (ts, y, u, v) {\n const yData = Module.HEAPU8.subarray(y, y + size);\n const uData = Module.HEAPU8.subarray(u, u + qsize);\n const vData = Module.HEAPU8.subarray(v, v + (qsize));\n // if (isGreenYUV(Uint8Array.from(yData))) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: draw offscreenCanvas is green yuv');\n // return\n // }\n\n this.webglObj.render(w, h, yData, uData, vData);\n let image_bitmap = this.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: this.delay,\n ts\n }, [image_bitmap]);\n };\n } else {\n this.draw = function (ts, y, u, v) {\n const yData = Uint8Array.from(Module.HEAPU8.subarray(y, y + size));\n const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize));\n const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize)));\n // if (isGreenYUV(yData)) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: draw is green yuv');\n // return\n // }\n const outputArray = [yData, uData, vData];\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n output: outputArray,\n delay: this.delay,\n ts\n }, outputArray.map(x => x.buffer));\n };\n }\n },\n getDelay: function (timestamp) {\n if (!timestamp) {\n return -1;\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp;\n this.startTimestamp = Date.now();\n this.delay = -1;\n } else {\n\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay;\n },\n resetDelay: function () {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n },\n\n init: function () {\n decoder.opt.debug && console.log('Jessibuca: [worker] init');\n const _doDecode = (data) => {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode');\n if (decoder.opt.useWCS && decoder.useOffscreen() && data.type === MEDIA_TYPE.video && wcsVideoDecoder.decode) {\n wcsVideoDecoder.decode(data.payload, data.ts);\n } else {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode wasm');\n data.decoder.decode(data.payload, data.ts);\n }\n };\n const loop = () => {\n if (buffer.length) {\n if (this.dropping) {\n // // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n while (!data.isIFrame && buffer.length) {\n // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n }\n if (data.isIFrame) {\n this.dropping = false;\n _doDecode(data);\n }\n } else {\n var data = buffer[0];\n if (this.getDelay(data.ts) === -1) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1');\n buffer.shift();\n _doDecode(data);\n } else if (this.delay > decoder.opt.videoBuffer + decoder.opt.videoBufferDelay) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true;\n } else {\n while (buffer.length) {\n data = buffer[0];\n if (this.getDelay(data.ts) > decoder.opt.videoBuffer) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`);\n buffer.shift();\n _doDecode(data);\n } else {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`);\n break;\n }\n }\n }\n }\n }\n };\n this.stopId = setInterval(loop, 10);\n },\n close: function () {\n decoder.opt.debug && console.log('Jessibuca: [worker]: close');\n clearInterval(this.stopId);\n this.stopId = null;\n audioDecoder.clear && audioDecoder.clear();\n videoDecoder.clear && videoDecoder.clear();\n wcsVideoDecoder.reset && wcsVideoDecoder.reset();\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n\n if (this.webglObj) {\n this.webglObj.destroy();\n this.offscreenCanvas = null;\n this.offscreenCanvasGL = null;\n this.offscreenCanvasCtx = null;\n }\n buffer = [];\n tempAudioBuffer = [];\n delete this.playAudioPlanar;\n delete this.draw;\n },\n pushBuffer: function (bufferData, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: audioDecoder,\n type: MEDIA_TYPE.audio,\n });\n } else if (options.type === MEDIA_TYPE.video) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: videoDecoder,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n });\n }\n }\n };\n var audioDecoder = new Module.AudioDecoder(decoder);\n var videoDecoder = new Module.VideoDecoder(decoder);\n postMessage({cmd: WORKER_SEND_TYPE.init});\n self.onmessage = function (event) {\n var msg = event.data;\n switch (msg.cmd) {\n case WORKER_SEND_TYPE.init:\n try {\n decoder.opt = Object.assign(decoder.opt, JSON.parse(msg.opt));\n } catch (e) {\n\n }\n audioDecoder.sample_rate = msg.sampleRate;\n decoder.init();\n break;\n case WORKER_SEND_TYPE.decode:\n decoder.pushBuffer(msg.buffer, msg.options);\n break;\n case WORKER_SEND_TYPE.audioDecode:\n audioDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.videoDecode:\n videoDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.close:\n decoder.close();\n break;\n case WORKER_SEND_TYPE.updateConfig:\n decoder.opt[msg.key] = msg.value;\n break;\n }\n };\n};\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","Object","assign","thisProgram","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","process","versions","node","ENVIRONMENT_IS_SHELL","Error","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","require","require$$0","dirname","__dirname","require$$1","shell_read","filename","binary","readFileSync","undefined","ret","buffer","Uint8Array","assert","onload","onerror","readFile","err","data","length","replace","arguments_","slice","module","ex","ExitStatus","reason","read","f","readbuffer","setTimeout","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","status","out","bind","checkIncomingModuleAPI","legacyModuleProp","quit_","warnOnce","shown","prop","newName","getOwnPropertyDescriptor","defineProperty","configurable","get","abort","ignoredModuleProp","unexportedMessage","sym","isFSSybol","msg","unexportedRuntimeSymbol","unexportedRuntimeFunction","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","toString","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF16Decoder","UTF16ToString","maxIdx","HEAPU16","codeUnit","HEAP16","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","HEAP32","stringToUTF32","trailSurrogate","lengthBytesUTF32","allocateUTF8","size","_malloc","HEAP8","writeAsciiToMemory","dontAddNull","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","TOTAL_STACK","INITIAL_MEMORY","prototype","set","wasmTable","writeStackCookie","max","_emscripten_stack_get_end","checkStackCookie","cookie1","cookie2","h16","h8","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runtimeInitialized","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","Math","imul","fround","clz32","trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","callback","what","e","RuntimeError","dataURIPrefix","isDataURI","startsWith","isFileURI","createExportWrapper","name","fixedasm","displayName","asm","apply","arguments","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","trueModule","receiveInstantiationResult","result","instantiateArrayBuffer","receiver","instantiate","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","getWasmTableEntry","demangle","demangleAll","regex","x","y","funcPtr","jsStackTrace","stack","setErrNo","value","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","paths","Array","call","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","crypto_module","require$$2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","min","samePartsLength","outputParts","push","concat","TTY","ttys","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","BUFSIZE","Buffer","alloc","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","val","default_tty1_ops","zeroMemory","address","fill","alignMemory","alignment","ceil","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","key","hasOwnProperty","newname","oldpath","position","canOwn","ArrayBuffer","whence","prot","flags","allocated","byteOffset","mmapFlags","asyncLoad","noRunDep","arrayBuffer","event","ERRNO_MESSAGES","ERRNO_CODES","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","object","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","encoding","writeFile","actualNumBytes","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","code","writable","constructor","staticInit","quit","___stdio_exit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","obj","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","Number","getResponseHeader","header","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","defineProperties","fn","forceLoadLazyFile","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","absolutePath","createFolder","createLink","joinPath","standardizePath","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","___syscall_fcntl64","newStream","___syscall_openat","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","createNamedFunction","body","Function","extendError","baseErrorType","errorName","errorClass","BindingError","throwBindingError","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","destructors","o","pointer","destructorFunction","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","rv","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","actualType","getActualType","registeredPointerRecord","toType","isConst","constPointerType","pointerType","dp","FinalizationRegistry","leakWarning","cls","captureStackTrace","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","rawConstructor","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","substring","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","map","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","array","runDestructors","del","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","classType","argTypes","craftInvokerFunction","new_","argumentList","dummy","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","Symbol","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","v","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_std_string","stdStringIsUTF8","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","getLength","valueIsOfTypeString","Uint8ClampedArray","charCode","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_void","isVoid","__emscripten_date_now","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","__gmtime_js","time","tmPtr","date","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","__localtime_js","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","getTimezoneOffset","summerOffset","winterOffset","dst","__mktime_js","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","_tzset_impl","timezone","daylight","tzname","currentYear","winter","summer","stdTimezoneOffset","extractZone","match","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","__tzset_js","called","_abort","reallyNegative","Infinity","convertI32PairToI53","lo","hi","convertU32PairToI53","reSign","bits","half","pow","unSign","formatString","format","textIndex","argIndex","prepVararg","getNextArg","currArg","startTextIndex","flagAlwaysSigned","flagLeftAlign","flagAlternative","flagZeroPad","flagPadSign","flagsLoop","width","precisionSet","precision","precisionChr","argSize","nextNext","argText","limit","currAbsArg","prefix","parseInt","toUpperCase","chr","isNaN","isFinite","isGeneral","effectivePrecision","exponent","toExponential","test","toFixed","argLength","_strlen","traverseStack","callee","funcname","first","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","RegExp","firefoxRe","chromeRe","line","symbolName","lineno","column","haveSourceMap","originalPositionFor","source","_emscripten_log_js","debug","_emscripten_log","_emscripten_get_heap_max","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","navigator","languages","env","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","_fd_read","pnum","num","_fd_seek","offset_low","offset_high","newOffset","HIGH_OFFSET","DOUBLE_LIMIT","_fd_write","_setTempRet0","readMode","writeMode","stringy","u8array","numBytesWritten","_emscripten_stack_init","calledRun","runCaller","run","stackCheckInit","doRun","gl","openWebglAlignment","vertexShaderScript","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","render","w","h","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","initVideo","playAudio","initAudio","kBps","audioCode","videoCode","wasmError","MEDIA_TYPE","video","WORKER_SEND_TYPE","audioDecode","videoDecode","updateConfig","ENCODED_VIDEO_TYPE","delta","of","Instance","formatVideoDecoderConfigure","avcC","codecArray","codecString","j","codec","description","tempAudioBuffer","wcsVideoDecoder","hasInit","isEmitInfo","offscreenCanvas","offscreenCanvasCtx","VideoDecoder","videoFrame","opt","codedWidth","codedHeight","OffscreenCanvas","getContext","drawImage","image_bitmap","transferToImageBitmap","delay","ts","payload","isIFrame","videoCodec","setVideoCodec","config","configure","chunk","EncodedVideoChunk","reset","initAudioPlanar","channels","samplerate","sampleRate","outputArray","remain","playAudioPlanar","frameCount","origin","channel","setAudioCodec","setVideoSize","qsize","offscreenCanvasGL","webglObj","createWebGL","draw","yData","uData","vData","getDelay","firstTimestamp","startTimestamp","localTimestamp","timeTimestamp","resetDelay","_doDecode","loop","dropping","stopId","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"decoder.js","sources":["../../src/decoder/decoder.js","../../src/utils/webgl.js","../../src/constant/index.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/worker.js"],"sourcesContent":["var Module=typeof Module!=\"undefined\"?Module:{};var Module={};Module.print=function(text){console.log(\"Jessibuca: [worker]:\",text)};Module.printErr=function(text){console.warn(\"Jessibuca: [worker]:\",text);postMessage({cmd:\"wasmError\",message:text})};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module[\"ENVIRONMENT\"]){throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\")}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;if(e&&typeof e==\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exiting due to exception: \"+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(!(typeof process==\"object\"&&typeof require==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}requireNodeFS=(()=>{if(!nodePath){fs=require(\"fs\");nodePath=require(\"path\")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath[\"normalize\"](filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath[\"normalize\"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process[\"exitCode\"]=status;throw toThrow}logExceptionOnExit(toThrow);process[\"exit\"](status)});Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process==\"object\"&&typeof require===\"function\"||typeof window==\"object\"||typeof importScripts==\"function\")throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){let data;if(typeof readbuffer==\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data==\"object\");return data};readAsync=function readAsync(f,onload,onerror){setTimeout(()=>onload(readBinary(f)),0)};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit==\"function\"){quit_=((status,toThrow)=>{logExceptionOnExit(toThrow);quit(status)})}if(typeof print!=\"undefined\"){if(typeof console==\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!=\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(!(typeof window==\"object\"||typeof importScripts==\"function\"))throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");{read_=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{throw new Error(\"environment detection error\")}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;checkIncomingModuleAPI();if(Module[\"arguments\"])arguments_=Module[\"arguments\"];legacyModuleProp(\"arguments\",\"arguments_\");if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];legacyModuleProp(\"thisProgram\",\"thisProgram\");if(Module[\"quit\"])quit_=Module[\"quit\"];legacyModuleProp(\"quit\",\"quit_\");assert(typeof Module[\"memoryInitializerPrefixURL\"]==\"undefined\",\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"pthreadMainPrefixURL\"]==\"undefined\",\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"cdInitializerPrefixURL\"]==\"undefined\",\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"filePackagePrefixURL\"]==\"undefined\",\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");assert(typeof Module[\"read\"]==\"undefined\",\"Module.read option was removed (modify read_ in JS)\");assert(typeof Module[\"readAsync\"]==\"undefined\",\"Module.readAsync option was removed (modify readAsync in JS)\");assert(typeof Module[\"readBinary\"]==\"undefined\",\"Module.readBinary option was removed (modify readBinary in JS)\");assert(typeof Module[\"setWindowTitle\"]==\"undefined\",\"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");assert(typeof Module[\"TOTAL_MEMORY\"]==\"undefined\",\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");legacyModuleProp(\"read\",\"read_\");legacyModuleProp(\"readAsync\",\"readAsync\");legacyModuleProp(\"readBinary\",\"readBinary\");legacyModuleProp(\"setWindowTitle\",\"setWindowTitle\");assert(!ENVIRONMENT_IS_SHELL,\"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.\");var POINTER_SIZE=4;function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function uleb128Encode(n){assert(n<16384);if(n<128){return[n]}return[n%128|128,n>>7]}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==\"function\"){var typeNames={\"i\":\"i32\",\"j\":\"i64\",\"f\":\"f32\",\"d\":\"f64\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;iabort(unexportedMessage(sym,isFSSybol)))}}var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];legacyModuleProp(\"wasmBinary\",\"wasmBinary\");var noExitRuntime=Module[\"noExitRuntime\"]||true;legacyModuleProp(\"noExitRuntime\",\"noExitRuntime\");if(typeof WebAssembly!=\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed\"+(text?\": \"+text:\"\"))}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!==\"array\",'Return type should not be \"array\".');if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;if(u>1114111)warnOnce(\"Invalid Unicode code point 0x\"+u.toString(16)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite==\"number\",\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function UTF16ToString(ptr,maxBytesToRead){assert(ptr%2==0,\"Pointer passed to UTF16ToString must be aligned to two bytes!\");var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){assert(outPtr%2==0,\"Pointer passed to stringToUTF16 must be aligned to two bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){assert(ptr%4==0,\"Pointer passed to UTF32ToString must be aligned to four bytes!\");var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){assert(outPtr%4==0,\"Pointer passed to stringToUTF32 must be aligned to four bytes!\");assert(typeof maxBytesToWrite==\"number\",\"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){assert(array.length>=0,\"writeArrayToMemory array must have a length (should be an array or typed array)\");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var TOTAL_STACK=5242880;if(Module[\"TOTAL_STACK\"])assert(TOTAL_STACK===Module[\"TOTAL_STACK\"],\"the stack size can no longer be determined at runtime\");var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||67108864;legacyModuleProp(\"INITIAL_MEMORY\",\"INITIAL_MEMORY\");assert(INITIAL_MEMORY>=TOTAL_STACK,\"INITIAL_MEMORY should be larger than TOTAL_STACK, was \"+INITIAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");assert(typeof Int32Array!=\"undefined\"&&typeof Float64Array!==\"undefined\"&&Int32Array.prototype.subarray!=undefined&&Int32Array.prototype.set!=undefined,\"JS engine does not provide full typed array support\");assert(!Module[\"wasmMemory\"],\"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally\");assert(INITIAL_MEMORY==67108864,\"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically\");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);HEAP32[max>>2]=34821223;HEAP32[max+4>>2]=2310721022;HEAP32[0]=1668509029}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\"+cookie2.toString(16)+\" 0x\"+cookie1.toString(16))}if(HEAP32[0]!==1668509029)abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\")}(function(){var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\"})();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){checkStackCookie();assert(!runtimeInitialized);runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){checkStackCookie();if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,\"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.fround,\"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.clz32,\"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");assert(Math.trunc,\"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=\"undefined\"){runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err(\"still waiting on run dependencies:\")}err(\"dependency: \"+dep)}if(shown){err(\"(end of list)\")}},1e4)}}else{err(\"warning: run dependency added without ID\")}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err(\"warning: run dependency removed without ID\")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){{if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}}what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith(\"file://\")}function createExportWrapper(name,fixedasm){return function(){var displayName=name;var asm=fixedasm;if(!fixedasm){asm=Module[\"asm\"]}assert(runtimeInitialized,\"native function `\"+displayName+\"` called before runtime initialization\");if(!asm[name]){assert(asm[name],\"exported native function `\"+displayName+\"` not found\")}return asm[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile=\"decoder.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"memory\"];assert(wasmMemory,\"memory not found in wasm exports\");updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"__indirect_function_table\"];assert(wasmTable,\"table not found in wasm exports\");addOnInit(Module[\"asm\"][\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,\"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?\");trueModule=null;receiveInstance(result[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);if(isFileURI(wasmBinaryFile)){err(\"warning: Loading from a file URI (\"+wasmBinaryFile+\") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing\")}abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func==\"number\"){if(callback.arg===undefined){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){warnOnce(\"warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return\"(no stack trace available)\"}}return error.stack.toString()}function setWasmTableEntry(idx,func){wasmTable.set(idx,func)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:(l,r)=>{return PATH.normalize(l+\"/\"+r)}};function getRandomDevice(){if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");return function(){return crypto_module[\"randomBytes\"](1)[0]}}catch(e){}}return function(){abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\")}}var PATH_FS={resolve:function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function alignMemory(size,alignment){assert(alignment,\"alignment argument is required\");return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),false);var current=FS.root;var current_path=\"/\";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{assert(typeof parent==\"object\");var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{\"r\":0,\"r+\":2,\"w\":577,\"w+\":578,\"a\":1089,\"a+\":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags==\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags},flagsToPermissionString:flag=>{var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get function(){return this.shared.position},set:function(val){this.shared.position=val}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{if(typeof type==\"string\"){throw type}var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split(\"/\");var d=\"\";for(var i=0;i{if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices:()=>{FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories:()=>{FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:()=>{var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams:()=>{if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1);assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}};this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack){Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true});this.stack=demangleAll(this.stack)}};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"\"})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS}},init:(input,output,error)=>{assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;___stdio_exit();for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=((stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return\"EM_FS_\"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},absolutePath:()=>{abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder:()=>{abort(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink:()=>{abort(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath:()=>{abort(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc:()=>{abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath:()=>{abort(\"FS.standardizePath has been removed; use PATH.normalize instead\")}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){assert(SYSCALLS.varargs!=undefined);SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret=\"\";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return\"_unknown\"}name=name.replace(/[^a-zA-Z0-9_]/g,\"$\");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return\"_\"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function(\"body\",\"return function \"+name+\"() {\\n\"+' \"use strict\";'+\" return body.apply(this, arguments);\\n\"+\"};\\n\")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+\"\\n\"+stack.replace(/^Error(:[^\\n]*)?\\n/,\"\")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+\": \"+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError(\"Mismatched type converter count\")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!(\"argPackAdvance\"in registeredInstance)){throw new TypeError(\"registerType registeredInstance requires argPackAdvance\")}var name=registeredInstance.name;if(!rawType){throwBindingError('type \"'+name+'\" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(\"Cannot register type '\"+name+\"' twice\")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(wt){return!!wt},\"toWireType\":function(destructors,o){return o?trueValue:falseValue},\"argPackAdvance\":8,\"readValueFromPointer\":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError(\"Unknown boolean type size: \"+name)}return this[\"fromWireType\"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+\" instance already deleted\")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj[\"delete\"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module[\"getInheritedInstanceCount\"]=getInheritedInstanceCount;Module[\"getLiveInheritedInstances\"]=getLiveInheritedInstances;Module[\"flushPendingDeletes\"]=flushPendingDeletes;Module[\"setDelayFunction\"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError(\"ptr should not be undefined\")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError(\"makeClassHandle requires ptr and ptrType\")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError(\"Both smartPtrType and smartPtr must be specified\")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance[\"clone\"]()}else{var rv=registeredInstance[\"clone\"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if(\"undefined\"===typeof FinalizationRegistry){attachFinalizer=(handle=>handle);return handle}finalizationRegistry=new FinalizationRegistry(info=>{console.warn(info.leakWarning.stack.replace(/^Error: /,\"\"));releaseClassHandle(info.$$)});attachFinalizer=(handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};var cls=$$.ptrType.registeredClass;info.leakWarning=new Error(\"Embind found a leaked C++ instance \"+cls.name+\" <0x\"+$$.ptr.toString(16)+\">.\\n\"+\"We'll free it automatically in this case, but this functionality is not reliable across various environments.\\n\"+\"Make sure to invoke .delete() manually once you're done with the instance instead.\\n\"+\"Originally allocated\");if(\"captureStackTrace\"in Error){Error.captureStackTrace(info.leakWarning,RegisteredPointer_fromWireType)}finalizationRegistry.register(handle,info,handle)}return handle});detachFinalizer=(handle=>finalizationRegistry.unregister(handle));return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError(\"Object already scheduled for deletion\")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype[\"isAliasOf\"]=ClassHandle_isAliasOf;ClassHandle.prototype[\"clone\"]=ClassHandle_clone;ClassHandle.prototype[\"delete\"]=ClassHandle_delete;ClassHandle.prototype[\"isDeleted\"]=ClassHandle_isDeleted;ClassHandle.prototype[\"deleteLater\"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(\"Function '\"+humanName+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+proto[methodName].overloadTable+\")!\")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(\"Cannot register public name '\"+name+\"' twice\")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(\"Cannot register multiple overloads of a function with the same number of arguments (\"+numArguments+\")!\")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(\"Expected null or instance of \"+desiredClass.name+\", got an instance of \"+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError(\"Passing raw pointer to smart pointer is illegal\")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(\"Cannot convert argument of type \"+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+\" to parameter type \"+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle[\"clone\"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle[\"delete\"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError(\"Unsupporting sharing policy\")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(\"null is not a valid \"+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass \"'+_embind_repr(handle)+'\" as a '+this.name)}if(!handle.$$.ptr){throwBindingError(\"Cannot pass deleted object as a pointer of type \"+this.name)}if(handle.$$.ptrType.isConst){throwBindingError(\"Cannot convert argument of type \"+handle.$$.ptrType.name+\" to parameter type \"+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this[\"fromWireType\"](HEAPU32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle[\"delete\"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype[\"argPackAdvance\"]=8;RegisteredPointer.prototype[\"readValueFromPointer\"]=simpleReadValueFromPointer;RegisteredPointer.prototype[\"deleteObject\"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype[\"fromWireType\"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this[\"toWireType\"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this[\"toWireType\"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this[\"toWireType\"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError(\"Replacing nonexistant public symbol\")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){assert(\"dynCall_\"+sig in Module,\"bad function pointer type - no table for sig '\"+sig+\"'\");if(args&&args.length){assert(args.length===sig.substring(1).replace(/j/g,\"--\").length)}else{assert(sig.length==1)}var f=Module[\"dynCall_\"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes(\"j\")){return dynCallLegacy(sig,ptr,args)}assert(getWasmTableEntry(ptr),\"missing table entry in dynCall: \"+ptr);return getWasmTableEntry(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.includes(\"j\"),\"getDynCaller should only be called with i64 sigs\");var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes(\"j\")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!=\"function\"){throwBindingError(\"unknown function pointer with signature \"+signature+\": \"+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+\": \"+unboundTypes.map(getTypeName).join([\", \"]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(\"Cannot construct \"+name+\" due to unbound types\",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError(\"Use 'new' to construct \"+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+\" has no accessible constructor\")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(\"Tried to invoke ctor of \"+name+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(registeredClass.constructor_body).toString()+\") parameters instead!\")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+\"*\",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+\" const*\",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2)+i])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=\"constructor \"+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(\"Cannot register multiple constructors with identical number of parameters (\"+(argCount-1)+\") for class '\"+classType.name+\"'! Overload resolution is currently only performed using the parameter count, not actual type info!\")}classType.registeredClass.constructor_body[argCount-1]=(()=>{throwUnboundTypeError(\"Cannot construct \"+classType.name+\" due to unbound types\",rawArgTypes)});whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(\"new_ called with constructor type \"+typeof constructor+\" which is not a function\")}var dummy=createNamedFunction(constructor.name||\"unknownFunctionName\",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError(\"argTypes array size mismatch! Must at least get return value and 'this' types!\")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?\", \":\"\")+argsListWired}invokerFnBody+=(returns?\"var rv = \":\"\")+\"invoker(fn\"+(argsListWired.length>0?\", \":\"\")+argsListWired+\");\\n\";if(needsDestructorStack){invokerFnBody+=\"runDestructors(destructors);\\n\"}else{for(var i=isClassMethodFunc?1:2;i{throwUnboundTypeError(\"Cannot access \"+humanName+\" due to unbound types\",[getterReturnType,setterArgumentType])})}else{desc.set=(v=>{throwBindingError(humanName+\" is a read-only property\")})}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],function(types){var getterReturnType=types[0];var desc={get:function(){var ptr=validateThis(this,classType,humanName+\" getter\");return getterReturnType[\"fromWireType\"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+\" setter\");var destructors=[];setter(setterContext,ptr,setterArgumentType[\"toWireType\"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError(\"Cannot use deleted val. handle = \"+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},\"toWireType\":function(destructors,value){return Emval.toHandle(value)},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:null})}function _embind_repr(v){if(v===null){return\"null\"}var t=typeof v;if(t===\"object\"||t===\"array\"||t===\"function\"){return v.toString()}else{return\"\"+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this[\"fromWireType\"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this[\"fromWireType\"](HEAPF64[pointer>>3])};default:throw new TypeError(\"Unknown float type: \"+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":function(value){return value},\"toWireType\":function(destructors,value){if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+this.name)}return value},\"argPackAdvance\":8,\"readValueFromPointer\":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError(\"Unknown integer type: \"+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=(value=>value<>>bitshift)}var isUnsignedType=name.includes(\"unsigned\");var checkAssertions=(value,toTypeName)=>{if(typeof value!=\"number\"&&typeof value!=\"boolean\"){throw new TypeError('Cannot convert \"'+_embind_repr(value)+'\" to '+toTypeName)}if(valuemaxRange){throw new TypeError('Passing a number \"'+_embind_repr(value)+'\" from JS side to C/C++ side to an argument of type \"'+name+'\", which is outside the valid range ['+minRange+\", \"+maxRange+\"]!\")}};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,\"fromWireType\":fromWireType,\"toWireType\":toWireType,\"argPackAdvance\":8,\"readValueFromPointer\":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,\"fromWireType\":decodeMemoryView,\"argPackAdvance\":8,\"readValueFromPointer\":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name===\"std::string\";registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;ilengthBytesUTF8(value))}else{getLength=(()=>value.length)}var length=getLength();var ptr=_malloc(4+length+1);HEAPU32[ptr>>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError(\"String has UTF-16 code units that do not fit in 8 bits\")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;iHEAPU16);shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=(()=>HEAPU32);shift=2}registerType(rawType,{name:name,\"fromWireType\":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},\"toWireType\":function(destructors,value){if(!(typeof value==\"string\")){throwBindingError(\"Cannot pass non-string to C++ string type \"+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},\"argPackAdvance\":8,\"readValueFromPointer\":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,\"argPackAdvance\":0,\"fromWireType\":function(){return undefined},\"toWireType\":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+\" has unknown type \"+getTypeName(rawType))}return impl}function __emval_as(handle,returnType,destructorsRef){handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,\"emval::as\");var destructors=[];var rd=Emval.toHandle(destructors);HEAP32[destructorsRef>>2]=rd;return returnType[\"toWireType\"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],\"parameter \"+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+\"_$\"+types.slice(1).map(function(t){return t.name}).join(\"_\")+\"$\";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=[\"retType\"];var args=[retType];var argsList=\"\";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function __emval_run_destructors(handle){var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}function __emval_take_value(type,argv){type=requireRegisteredType(type,\"_emval_take_value\");var v=type[\"readValueFromPointer\"](argv);return Emval.toHandle(v)}function __gmtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function __localtime_js(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();return date.getTime()/1e3|0}function _tzset_impl(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return match?match[1]:\"GMT\"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[tzname+4>>2]=summerNamePtr}else{HEAP32[tzname>>2]=summerNamePtr;HEAP32[tzname+4>>2]=winterNamePtr}}function __tzset_js(timezone,daylight,tzname){if(__tzset_js.called)return;__tzset_js.called=true;_tzset_impl(timezone,daylight,tzname)}function _abort(){abort(\"native code called abort()\")}function reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function convertI32PairToI53(lo,hi){assert(hi===(hi|0));return(lo>>>0)+hi*4294967296}function convertU32PairToI53(lo,hi){return(lo>>>0)+(hi>>>0)*4294967296}function reSign(value,bits){if(value<=0){return value}var half=bits<=32?Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}function unSign(value,bits){if(value>=0){return value}return bits<=32?2*Math.abs(1<>3]);argIndex+=8}else if(type==\"i64\"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type=\"i32\";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break}case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg(\"i32\");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg(\"i32\");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case\"h\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case\"l\":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case\"L\":case\"q\":case\"j\":argSize=8;break;case\"z\":case\"t\":case\"I\":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case\"d\":case\"i\":case\"u\":case\"o\":case\"x\":case\"X\":case\"p\":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg(\"i\"+argSize*8);var argText;if(argSize==8){currArg=next==117?convertU32PairToI53(currArg[0],currArg[1]):convertI32PairToI53(currArg[0],currArg[1])}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix=\"\";if(next==100||next==105){argText=reSign(currArg,8*argSize).toString(10)}else if(next==117){argText=unSign(currArg,8*argSize).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?\"0\":\"\")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?\"0x\":\"\";if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?\"f\":\"F\").charCodeAt(0);precision-=exponent+1}else{next=(next==103?\"e\":\"E\").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\\d$/.test(argText)){argText=argText.slice(0,-1)+\"0\"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&reallyNegative(currArg)){argText=\"-\"+argText}}var parts=argText.split(\"e\");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].includes(\".\")&&(parts[0].slice(-1)==\"0\"||parts[0].slice(-1)==\".\")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(\".\")==-1)parts[0]+=\".\";while(precision>effectivePrecision++)parts[0]+=\"0\"}argText=parts[0]+(parts.length>1?\"e\"+parts[1]:\"\");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText=\"+\"+argText}else if(flagPadSign){argText=\" \"+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg(\"i8\"));break}case\"n\":{var ptr=getNextArg(\"i32*\");HEAP32[ptr>>2]=ret.length;break}case\"%\":{ret.push(curr);break}default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function traverseStack(args){if(!args||!args.callee||!args.callee.name){return[null,\"\",\"\"]}var funstr=args.callee.toString();var funcname=args.callee.name;var str=\"(\";var first=true;for(var i in args){var a=args[i];if(!first){str+=\", \"}first=false;if(typeof a==\"number\"||typeof a==\"string\"){str+=a}else{str+=\"(\"+typeof a+\")\"}}str+=\")\";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str=\"\";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf(\"_emscripten_log\");var iThisFunc2=callstack.lastIndexOf(\"_emscripten_get_callstack\");var iNextLine=callstack.indexOf(\"\\n\",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&32){warnOnce(\"EM_LOG_DEMANGLE is deprecated; ignoring\")}if(flags&8&&typeof emscripten_source_map==\"undefined\"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with \"--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js\" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=traverseStack(arguments);while(stack_args[1].includes(\"_emscripten_\"))stack_args=traverseStack(stack_args[0])}var lines=callstack.split(\"\\n\");callstack=\"\";var newFirefoxRe=new RegExp(\"\\\\s*(.*?)@(.*?):([0-9]+):([0-9]+)\");var firefoxRe=new RegExp(\"\\\\s*(.*?)@(.*):(.*)(:(.*))?\");var chromeRe=new RegExp(\"\\\\s*at (.*?) \\\\((.*):(.*):(.*)\\\\)\");for(var l in lines){var line=lines[l];var symbolName=\"\";var file=\"\";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){symbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+\"\\n\";continue}}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=\" at \"+symbolName+\" (\"+orig.source+\":\"+orig.line+\":\"+orig.column+\")\\n\"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\\\/g,\"/\").lastIndexOf(\"/\")+1)}callstack+=(haveSourceMap?\" = \"+symbolName:\" at \"+symbolName)+\" (\"+file+\":\"+lineno+\":\"+column+\")\\n\"}if(flags&128&&stack_args[0]){if(stack_args[1]==symbolName&&stack_args[2].length>0){callstack=callstack.replace(/\\s+$/,\"\");callstack+=\" with values: \"+stack_args[1]+stack_args[2]+\"\\n\"}stack_args=traverseStack(stack_args[0])}}callstack=callstack.replace(/\\s+$/,\"\");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\\s+$/,\"\");str+=(str.length>0?\"\\n\":\"\")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else if(flags&512){console.info(str)}else if(flags&256){console.debug(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,format,varargs){var result=formatString(format,varargs);var str=UTF8ArrayToString(result,0);_emscripten_log_js(flags,str)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){err(\"emscripten_realloc_buffer: Attempted to grow heap from \"+buffer.byteLength+\" bytes to \"+size+\" bytes, but got error: \"+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;assert(requestedSize>oldSize);var maxHeapSize=_emscripten_get_heap_max();if(requestedSize>maxHeapSize){err(\"Cannot enlarge memory, asked to go up to \"+requestedSize+\" bytes, but the limit is \"+maxHeapSize+\" bytes!\");return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}err(\"Failed to grow the heap from \"+oldSize+\" bytes to \"+newSize+\" bytes, not enough memory!\");return false}var ENV={};function getExecutableName(){return thisProgram||\"./this.program\"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+\"=\"+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();ERRNO_CODES={\"EPERM\":63,\"ENOENT\":44,\"ESRCH\":71,\"EINTR\":27,\"EIO\":29,\"ENXIO\":60,\"E2BIG\":1,\"ENOEXEC\":45,\"EBADF\":8,\"ECHILD\":12,\"EAGAIN\":6,\"EWOULDBLOCK\":6,\"ENOMEM\":48,\"EACCES\":2,\"EFAULT\":21,\"ENOTBLK\":105,\"EBUSY\":10,\"EEXIST\":20,\"EXDEV\":75,\"ENODEV\":43,\"ENOTDIR\":54,\"EISDIR\":31,\"EINVAL\":28,\"ENFILE\":41,\"EMFILE\":33,\"ENOTTY\":59,\"ETXTBSY\":74,\"EFBIG\":22,\"ENOSPC\":51,\"ESPIPE\":70,\"EROFS\":69,\"EMLINK\":34,\"EPIPE\":64,\"EDOM\":18,\"ERANGE\":68,\"ENOMSG\":49,\"EIDRM\":24,\"ECHRNG\":106,\"EL2NSYNC\":156,\"EL3HLT\":107,\"EL3RST\":108,\"ELNRNG\":109,\"EUNATCH\":110,\"ENOCSI\":111,\"EL2HLT\":112,\"EDEADLK\":16,\"ENOLCK\":46,\"EBADE\":113,\"EBADR\":114,\"EXFULL\":115,\"ENOANO\":104,\"EBADRQC\":103,\"EBADSLT\":102,\"EDEADLOCK\":16,\"EBFONT\":101,\"ENOSTR\":100,\"ENODATA\":116,\"ETIME\":117,\"ENOSR\":118,\"ENONET\":119,\"ENOPKG\":120,\"EREMOTE\":121,\"ENOLINK\":47,\"EADV\":122,\"ESRMNT\":123,\"ECOMM\":124,\"EPROTO\":65,\"EMULTIHOP\":36,\"EDOTDOT\":125,\"EBADMSG\":9,\"ENOTUNIQ\":126,\"EBADFD\":127,\"EREMCHG\":128,\"ELIBACC\":129,\"ELIBBAD\":130,\"ELIBSCN\":131,\"ELIBMAX\":132,\"ELIBEXEC\":133,\"ENOSYS\":52,\"ENOTEMPTY\":55,\"ENAMETOOLONG\":37,\"ELOOP\":32,\"EOPNOTSUPP\":138,\"EPFNOSUPPORT\":139,\"ECONNRESET\":15,\"ENOBUFS\":42,\"EAFNOSUPPORT\":5,\"EPROTOTYPE\":67,\"ENOTSOCK\":57,\"ENOPROTOOPT\":50,\"ESHUTDOWN\":140,\"ECONNREFUSED\":14,\"EADDRINUSE\":3,\"ECONNABORTED\":13,\"ENETUNREACH\":40,\"ENETDOWN\":38,\"ETIMEDOUT\":73,\"EHOSTDOWN\":142,\"EHOSTUNREACH\":23,\"EINPROGRESS\":26,\"EALREADY\":7,\"EDESTADDRREQ\":17,\"EMSGSIZE\":35,\"EPROTONOSUPPORT\":66,\"ESOCKTNOSUPPORT\":137,\"EADDRNOTAVAIL\":4,\"ENETRESET\":39,\"EISCONN\":30,\"ENOTCONN\":53,\"ETOOMANYREFS\":141,\"EUSERS\":136,\"EDQUOT\":19,\"ESTALE\":72,\"ENOTSUP\":138,\"ENOMEDIUM\":148,\"EILSEQ\":25,\"EOVERFLOW\":61,\"ECANCELED\":11,\"ENOTRECOVERABLE\":56,\"EOWNERDEAD\":62,\"ESTRPIPE\":135};embind_init_charCodes();BindingError=Module[\"BindingError\"]=extendError(Error,\"BindingError\");InternalError=Module[\"InternalError\"]=extendError(Error,\"InternalError\");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module[\"UnboundTypeError\"]=extendError(Error,\"UnboundTypeError\");init_emval();var ASSERTIONS=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function checkIncomingModuleAPI(){ignoredModuleProp(\"fetchSettings\")}var asmLibraryArg={\"__syscall_fcntl64\":___syscall_fcntl64,\"__syscall_openat\":___syscall_openat,\"_embind_register_bigint\":__embind_register_bigint,\"_embind_register_bool\":__embind_register_bool,\"_embind_register_class\":__embind_register_class,\"_embind_register_class_constructor\":__embind_register_class_constructor,\"_embind_register_class_function\":__embind_register_class_function,\"_embind_register_class_property\":__embind_register_class_property,\"_embind_register_emval\":__embind_register_emval,\"_embind_register_float\":__embind_register_float,\"_embind_register_integer\":__embind_register_integer,\"_embind_register_memory_view\":__embind_register_memory_view,\"_embind_register_std_string\":__embind_register_std_string,\"_embind_register_std_wstring\":__embind_register_std_wstring,\"_embind_register_void\":__embind_register_void,\"_emscripten_date_now\":__emscripten_date_now,\"_emval_as\":__emval_as,\"_emval_call_void_method\":__emval_call_void_method,\"_emval_decref\":__emval_decref,\"_emval_get_method_caller\":__emval_get_method_caller,\"_emval_incref\":__emval_incref,\"_emval_run_destructors\":__emval_run_destructors,\"_emval_take_value\":__emval_take_value,\"_gmtime_js\":__gmtime_js,\"_localtime_js\":__localtime_js,\"_mktime_js\":__mktime_js,\"_tzset_js\":__tzset_js,\"abort\":_abort,\"emscripten_log\":_emscripten_log,\"emscripten_resize_heap\":_emscripten_resize_heap,\"environ_get\":_environ_get,\"environ_sizes_get\":_environ_sizes_get,\"fd_close\":_fd_close,\"fd_fdstat_get\":_fd_fdstat_get,\"fd_read\":_fd_read,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"setTempRet0\":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=createExportWrapper(\"__wasm_call_ctors\");var _free=Module[\"_free\"]=createExportWrapper(\"free\");var _malloc=Module[\"_malloc\"]=createExportWrapper(\"malloc\");var _strlen=Module[\"_strlen\"]=createExportWrapper(\"strlen\");var ___errno_location=Module[\"___errno_location\"]=createExportWrapper(\"__errno_location\");var ___getTypeName=Module[\"___getTypeName\"]=createExportWrapper(\"__getTypeName\");var ___embind_register_native_and_builtin_types=Module[\"___embind_register_native_and_builtin_types\"]=createExportWrapper(\"__embind_register_native_and_builtin_types\");var ___stdio_exit=Module[\"___stdio_exit\"]=createExportWrapper(\"__stdio_exit\");var _emscripten_builtin_memalign=Module[\"_emscripten_builtin_memalign\"]=createExportWrapper(\"emscripten_builtin_memalign\");var _emscripten_stack_init=Module[\"_emscripten_stack_init\"]=function(){return(_emscripten_stack_init=Module[\"_emscripten_stack_init\"]=Module[\"asm\"][\"emscripten_stack_init\"]).apply(null,arguments)};var _emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=function(){return(_emscripten_stack_get_free=Module[\"_emscripten_stack_get_free\"]=Module[\"asm\"][\"emscripten_stack_get_free\"]).apply(null,arguments)};var _emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=function(){return(_emscripten_stack_get_base=Module[\"_emscripten_stack_get_base\"]=Module[\"asm\"][\"emscripten_stack_get_base\"]).apply(null,arguments)};var _emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=function(){return(_emscripten_stack_get_end=Module[\"_emscripten_stack_get_end\"]=Module[\"asm\"][\"emscripten_stack_get_end\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=createExportWrapper(\"stackSave\");var stackRestore=Module[\"stackRestore\"]=createExportWrapper(\"stackRestore\");var stackAlloc=Module[\"stackAlloc\"]=createExportWrapper(\"stackAlloc\");var dynCall_ijiii=Module[\"dynCall_ijiii\"]=createExportWrapper(\"dynCall_ijiii\");var dynCall_viiijj=Module[\"dynCall_viiijj\"]=createExportWrapper(\"dynCall_viiijj\");var dynCall_jij=Module[\"dynCall_jij\"]=createExportWrapper(\"dynCall_jij\");var dynCall_jii=Module[\"dynCall_jii\"]=createExportWrapper(\"dynCall_jii\");var dynCall_jiji=Module[\"dynCall_jiji\"]=createExportWrapper(\"dynCall_jiji\");var _ff_h264_cabac_tables=Module[\"_ff_h264_cabac_tables\"]=112940;unexportedRuntimeFunction(\"intArrayFromString\",false);unexportedRuntimeFunction(\"intArrayToString\",false);unexportedRuntimeFunction(\"ccall\",false);unexportedRuntimeFunction(\"cwrap\",false);unexportedRuntimeFunction(\"setValue\",false);unexportedRuntimeFunction(\"getValue\",false);unexportedRuntimeFunction(\"allocate\",false);unexportedRuntimeFunction(\"UTF8ArrayToString\",false);unexportedRuntimeFunction(\"UTF8ToString\",false);unexportedRuntimeFunction(\"stringToUTF8Array\",false);unexportedRuntimeFunction(\"stringToUTF8\",false);unexportedRuntimeFunction(\"lengthBytesUTF8\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"addOnPreRun\",false);unexportedRuntimeFunction(\"addOnInit\",false);unexportedRuntimeFunction(\"addOnPreMain\",false);unexportedRuntimeFunction(\"addOnExit\",false);unexportedRuntimeFunction(\"addOnPostRun\",false);unexportedRuntimeFunction(\"writeStringToMemory\",false);unexportedRuntimeFunction(\"writeArrayToMemory\",false);unexportedRuntimeFunction(\"writeAsciiToMemory\",false);unexportedRuntimeFunction(\"addRunDependency\",true);unexportedRuntimeFunction(\"removeRunDependency\",true);unexportedRuntimeFunction(\"FS_createFolder\",false);unexportedRuntimeFunction(\"FS_createPath\",true);unexportedRuntimeFunction(\"FS_createDataFile\",true);unexportedRuntimeFunction(\"FS_createPreloadedFile\",true);unexportedRuntimeFunction(\"FS_createLazyFile\",true);unexportedRuntimeFunction(\"FS_createLink\",false);unexportedRuntimeFunction(\"FS_createDevice\",true);unexportedRuntimeFunction(\"FS_unlink\",true);unexportedRuntimeFunction(\"getLEB\",false);unexportedRuntimeFunction(\"getFunctionTables\",false);unexportedRuntimeFunction(\"alignFunctionTables\",false);unexportedRuntimeFunction(\"registerFunctions\",false);unexportedRuntimeFunction(\"addFunction\",false);unexportedRuntimeFunction(\"removeFunction\",false);unexportedRuntimeFunction(\"prettyPrint\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"getCompilerSetting\",false);unexportedRuntimeFunction(\"print\",false);unexportedRuntimeFunction(\"printErr\",false);unexportedRuntimeFunction(\"getTempRet0\",false);unexportedRuntimeFunction(\"setTempRet0\",false);unexportedRuntimeFunction(\"callMain\",false);unexportedRuntimeFunction(\"abort\",false);unexportedRuntimeFunction(\"keepRuntimeAlive\",false);unexportedRuntimeFunction(\"ptrToString\",false);unexportedRuntimeFunction(\"zeroMemory\",false);unexportedRuntimeFunction(\"stringToNewUTF8\",false);unexportedRuntimeFunction(\"emscripten_realloc_buffer\",false);unexportedRuntimeFunction(\"ENV\",false);unexportedRuntimeFunction(\"ERRNO_CODES\",false);unexportedRuntimeFunction(\"ERRNO_MESSAGES\",false);unexportedRuntimeFunction(\"setErrNo\",false);unexportedRuntimeFunction(\"inetPton4\",false);unexportedRuntimeFunction(\"inetNtop4\",false);unexportedRuntimeFunction(\"inetPton6\",false);unexportedRuntimeFunction(\"inetNtop6\",false);unexportedRuntimeFunction(\"readSockaddr\",false);unexportedRuntimeFunction(\"writeSockaddr\",false);unexportedRuntimeFunction(\"DNS\",false);unexportedRuntimeFunction(\"getHostByName\",false);unexportedRuntimeFunction(\"Protocols\",false);unexportedRuntimeFunction(\"Sockets\",false);unexportedRuntimeFunction(\"getRandomDevice\",false);unexportedRuntimeFunction(\"traverseStack\",false);unexportedRuntimeFunction(\"UNWIND_CACHE\",false);unexportedRuntimeFunction(\"convertPCtoSourceLocation\",false);unexportedRuntimeFunction(\"readAsmConstArgsArray\",false);unexportedRuntimeFunction(\"readAsmConstArgs\",false);unexportedRuntimeFunction(\"mainThreadEM_ASM\",false);unexportedRuntimeFunction(\"jstoi_q\",false);unexportedRuntimeFunction(\"jstoi_s\",false);unexportedRuntimeFunction(\"getExecutableName\",false);unexportedRuntimeFunction(\"listenOnce\",false);unexportedRuntimeFunction(\"autoResumeAudioContext\",false);unexportedRuntimeFunction(\"dynCallLegacy\",false);unexportedRuntimeFunction(\"getDynCaller\",false);unexportedRuntimeFunction(\"dynCall\",false);unexportedRuntimeFunction(\"setWasmTableEntry\",false);unexportedRuntimeFunction(\"getWasmTableEntry\",false);unexportedRuntimeFunction(\"handleException\",false);unexportedRuntimeFunction(\"runtimeKeepalivePush\",false);unexportedRuntimeFunction(\"runtimeKeepalivePop\",false);unexportedRuntimeFunction(\"callUserCallback\",false);unexportedRuntimeFunction(\"maybeExit\",false);unexportedRuntimeFunction(\"safeSetTimeout\",false);unexportedRuntimeFunction(\"asmjsMangle\",false);unexportedRuntimeFunction(\"asyncLoad\",false);unexportedRuntimeFunction(\"alignMemory\",false);unexportedRuntimeFunction(\"mmapAlloc\",false);unexportedRuntimeFunction(\"reallyNegative\",false);unexportedRuntimeFunction(\"unSign\",false);unexportedRuntimeFunction(\"reSign\",false);unexportedRuntimeFunction(\"formatString\",false);unexportedRuntimeFunction(\"PATH\",false);unexportedRuntimeFunction(\"PATH_FS\",false);unexportedRuntimeFunction(\"SYSCALLS\",false);unexportedRuntimeFunction(\"getSocketFromFD\",false);unexportedRuntimeFunction(\"getSocketAddress\",false);unexportedRuntimeFunction(\"JSEvents\",false);unexportedRuntimeFunction(\"registerKeyEventCallback\",false);unexportedRuntimeFunction(\"specialHTMLTargets\",false);unexportedRuntimeFunction(\"maybeCStringToJsString\",false);unexportedRuntimeFunction(\"findEventTarget\",false);unexportedRuntimeFunction(\"findCanvasEventTarget\",false);unexportedRuntimeFunction(\"getBoundingClientRect\",false);unexportedRuntimeFunction(\"fillMouseEventData\",false);unexportedRuntimeFunction(\"registerMouseEventCallback\",false);unexportedRuntimeFunction(\"registerWheelEventCallback\",false);unexportedRuntimeFunction(\"registerUiEventCallback\",false);unexportedRuntimeFunction(\"registerFocusEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceOrientationEventData\",false);unexportedRuntimeFunction(\"registerDeviceOrientationEventCallback\",false);unexportedRuntimeFunction(\"fillDeviceMotionEventData\",false);unexportedRuntimeFunction(\"registerDeviceMotionEventCallback\",false);unexportedRuntimeFunction(\"screenOrientation\",false);unexportedRuntimeFunction(\"fillOrientationChangeEventData\",false);unexportedRuntimeFunction(\"registerOrientationChangeEventCallback\",false);unexportedRuntimeFunction(\"fillFullscreenChangeEventData\",false);unexportedRuntimeFunction(\"registerFullscreenChangeEventCallback\",false);unexportedRuntimeFunction(\"registerRestoreOldStyle\",false);unexportedRuntimeFunction(\"hideEverythingExceptGivenElement\",false);unexportedRuntimeFunction(\"restoreHiddenElements\",false);unexportedRuntimeFunction(\"setLetterbox\",false);unexportedRuntimeFunction(\"currentFullscreenStrategy\",false);unexportedRuntimeFunction(\"restoreOldWindowedStyle\",false);unexportedRuntimeFunction(\"softFullscreenResizeWebGLRenderTarget\",false);unexportedRuntimeFunction(\"doRequestFullscreen\",false);unexportedRuntimeFunction(\"fillPointerlockChangeEventData\",false);unexportedRuntimeFunction(\"registerPointerlockChangeEventCallback\",false);unexportedRuntimeFunction(\"registerPointerlockErrorEventCallback\",false);unexportedRuntimeFunction(\"requestPointerLock\",false);unexportedRuntimeFunction(\"fillVisibilityChangeEventData\",false);unexportedRuntimeFunction(\"registerVisibilityChangeEventCallback\",false);unexportedRuntimeFunction(\"registerTouchEventCallback\",false);unexportedRuntimeFunction(\"fillGamepadEventData\",false);unexportedRuntimeFunction(\"registerGamepadEventCallback\",false);unexportedRuntimeFunction(\"registerBeforeUnloadEventCallback\",false);unexportedRuntimeFunction(\"fillBatteryEventData\",false);unexportedRuntimeFunction(\"battery\",false);unexportedRuntimeFunction(\"registerBatteryEventCallback\",false);unexportedRuntimeFunction(\"setCanvasElementSize\",false);unexportedRuntimeFunction(\"getCanvasElementSize\",false);unexportedRuntimeFunction(\"demangle\",false);unexportedRuntimeFunction(\"demangleAll\",false);unexportedRuntimeFunction(\"jsStackTrace\",false);unexportedRuntimeFunction(\"stackTrace\",false);unexportedRuntimeFunction(\"getEnvStrings\",false);unexportedRuntimeFunction(\"checkWasiClock\",false);unexportedRuntimeFunction(\"writeI53ToI64\",false);unexportedRuntimeFunction(\"writeI53ToI64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToI64Signaling\",false);unexportedRuntimeFunction(\"writeI53ToU64Clamped\",false);unexportedRuntimeFunction(\"writeI53ToU64Signaling\",false);unexportedRuntimeFunction(\"readI53FromI64\",false);unexportedRuntimeFunction(\"readI53FromU64\",false);unexportedRuntimeFunction(\"convertI32PairToI53\",false);unexportedRuntimeFunction(\"convertU32PairToI53\",false);unexportedRuntimeFunction(\"dlopenMissingError\",false);unexportedRuntimeFunction(\"setImmediateWrapped\",false);unexportedRuntimeFunction(\"clearImmediateWrapped\",false);unexportedRuntimeFunction(\"polyfillSetImmediate\",false);unexportedRuntimeFunction(\"uncaughtExceptionCount\",false);unexportedRuntimeFunction(\"exceptionLast\",false);unexportedRuntimeFunction(\"exceptionCaught\",false);unexportedRuntimeFunction(\"ExceptionInfo\",false);unexportedRuntimeFunction(\"exception_addRef\",false);unexportedRuntimeFunction(\"exception_decRef\",false);unexportedRuntimeFunction(\"Browser\",false);unexportedRuntimeFunction(\"setMainLoop\",false);unexportedRuntimeFunction(\"wget\",false);unexportedRuntimeFunction(\"FS\",false);unexportedRuntimeFunction(\"MEMFS\",false);unexportedRuntimeFunction(\"TTY\",false);unexportedRuntimeFunction(\"PIPEFS\",false);unexportedRuntimeFunction(\"SOCKFS\",false);unexportedRuntimeFunction(\"_setNetworkCallback\",false);unexportedRuntimeFunction(\"tempFixedLengthArray\",false);unexportedRuntimeFunction(\"miniTempWebGLFloatBuffers\",false);unexportedRuntimeFunction(\"heapObjectForWebGLType\",false);unexportedRuntimeFunction(\"heapAccessShiftForWebGLHeap\",false);unexportedRuntimeFunction(\"GL\",false);unexportedRuntimeFunction(\"emscriptenWebGLGet\",false);unexportedRuntimeFunction(\"computeUnpackAlignedImageSize\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetTexPixelData\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetUniform\",false);unexportedRuntimeFunction(\"webglGetUniformLocation\",false);unexportedRuntimeFunction(\"webglPrepareUniformLocationsBeforeFirstUse\",false);unexportedRuntimeFunction(\"webglGetLeftBracePos\",false);unexportedRuntimeFunction(\"emscriptenWebGLGetVertexAttrib\",false);unexportedRuntimeFunction(\"writeGLArray\",false);unexportedRuntimeFunction(\"AL\",false);unexportedRuntimeFunction(\"SDL_unicode\",false);unexportedRuntimeFunction(\"SDL_ttfContext\",false);unexportedRuntimeFunction(\"SDL_audio\",false);unexportedRuntimeFunction(\"SDL\",false);unexportedRuntimeFunction(\"SDL_gfx\",false);unexportedRuntimeFunction(\"GLUT\",false);unexportedRuntimeFunction(\"EGL\",false);unexportedRuntimeFunction(\"GLFW_Window\",false);unexportedRuntimeFunction(\"GLFW\",false);unexportedRuntimeFunction(\"GLEW\",false);unexportedRuntimeFunction(\"IDBStore\",false);unexportedRuntimeFunction(\"runAndAbortIfError\",false);unexportedRuntimeFunction(\"InternalError\",false);unexportedRuntimeFunction(\"BindingError\",false);unexportedRuntimeFunction(\"UnboundTypeError\",false);unexportedRuntimeFunction(\"PureVirtualError\",false);unexportedRuntimeFunction(\"init_embind\",false);unexportedRuntimeFunction(\"throwInternalError\",false);unexportedRuntimeFunction(\"throwBindingError\",false);unexportedRuntimeFunction(\"throwUnboundTypeError\",false);unexportedRuntimeFunction(\"ensureOverloadTable\",false);unexportedRuntimeFunction(\"exposePublicSymbol\",false);unexportedRuntimeFunction(\"replacePublicSymbol\",false);unexportedRuntimeFunction(\"extendError\",false);unexportedRuntimeFunction(\"createNamedFunction\",false);unexportedRuntimeFunction(\"registeredInstances\",false);unexportedRuntimeFunction(\"getBasestPointer\",false);unexportedRuntimeFunction(\"registerInheritedInstance\",false);unexportedRuntimeFunction(\"unregisterInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstance\",false);unexportedRuntimeFunction(\"getInheritedInstanceCount\",false);unexportedRuntimeFunction(\"getLiveInheritedInstances\",false);unexportedRuntimeFunction(\"registeredTypes\",false);unexportedRuntimeFunction(\"awaitingDependencies\",false);unexportedRuntimeFunction(\"typeDependencies\",false);unexportedRuntimeFunction(\"registeredPointers\",false);unexportedRuntimeFunction(\"registerType\",false);unexportedRuntimeFunction(\"whenDependentTypesAreResolved\",false);unexportedRuntimeFunction(\"embind_charCodes\",false);unexportedRuntimeFunction(\"embind_init_charCodes\",false);unexportedRuntimeFunction(\"readLatin1String\",false);unexportedRuntimeFunction(\"getTypeName\",false);unexportedRuntimeFunction(\"heap32VectorToArray\",false);unexportedRuntimeFunction(\"requireRegisteredType\",false);unexportedRuntimeFunction(\"getShiftFromSize\",false);unexportedRuntimeFunction(\"integerReadValueFromPointer\",false);unexportedRuntimeFunction(\"enumReadValueFromPointer\",false);unexportedRuntimeFunction(\"floatReadValueFromPointer\",false);unexportedRuntimeFunction(\"simpleReadValueFromPointer\",false);unexportedRuntimeFunction(\"runDestructors\",false);unexportedRuntimeFunction(\"new_\",false);unexportedRuntimeFunction(\"craftInvokerFunction\",false);unexportedRuntimeFunction(\"embind__requireFunction\",false);unexportedRuntimeFunction(\"tupleRegistrations\",false);unexportedRuntimeFunction(\"structRegistrations\",false);unexportedRuntimeFunction(\"genericPointerToWireType\",false);unexportedRuntimeFunction(\"constNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"nonConstNoSmartPtrRawPointerToWireType\",false);unexportedRuntimeFunction(\"init_RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer\",false);unexportedRuntimeFunction(\"RegisteredPointer_getPointee\",false);unexportedRuntimeFunction(\"RegisteredPointer_destructor\",false);unexportedRuntimeFunction(\"RegisteredPointer_deleteObject\",false);unexportedRuntimeFunction(\"RegisteredPointer_fromWireType\",false);unexportedRuntimeFunction(\"runDestructor\",false);unexportedRuntimeFunction(\"releaseClassHandle\",false);unexportedRuntimeFunction(\"finalizationRegistry\",false);unexportedRuntimeFunction(\"detachFinalizer_deps\",false);unexportedRuntimeFunction(\"detachFinalizer\",false);unexportedRuntimeFunction(\"attachFinalizer\",false);unexportedRuntimeFunction(\"makeClassHandle\",false);unexportedRuntimeFunction(\"init_ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle\",false);unexportedRuntimeFunction(\"ClassHandle_isAliasOf\",false);unexportedRuntimeFunction(\"throwInstanceAlreadyDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_clone\",false);unexportedRuntimeFunction(\"ClassHandle_delete\",false);unexportedRuntimeFunction(\"deletionQueue\",false);unexportedRuntimeFunction(\"ClassHandle_isDeleted\",false);unexportedRuntimeFunction(\"ClassHandle_deleteLater\",false);unexportedRuntimeFunction(\"flushPendingDeletes\",false);unexportedRuntimeFunction(\"delayFunction\",false);unexportedRuntimeFunction(\"setDelayFunction\",false);unexportedRuntimeFunction(\"RegisteredClass\",false);unexportedRuntimeFunction(\"shallowCopyInternalPointer\",false);unexportedRuntimeFunction(\"downcastPointer\",false);unexportedRuntimeFunction(\"upcastPointer\",false);unexportedRuntimeFunction(\"validateThis\",false);unexportedRuntimeFunction(\"char_0\",false);unexportedRuntimeFunction(\"char_9\",false);unexportedRuntimeFunction(\"makeLegalFunctionName\",false);unexportedRuntimeFunction(\"emval_handle_array\",false);unexportedRuntimeFunction(\"emval_free_list\",false);unexportedRuntimeFunction(\"emval_symbols\",false);unexportedRuntimeFunction(\"init_emval\",false);unexportedRuntimeFunction(\"count_emval_handles\",false);unexportedRuntimeFunction(\"get_first_emval\",false);unexportedRuntimeFunction(\"getStringOrSymbol\",false);unexportedRuntimeFunction(\"Emval\",false);unexportedRuntimeFunction(\"emval_newers\",false);unexportedRuntimeFunction(\"craftEmvalAllocator\",false);unexportedRuntimeFunction(\"emval_get_global\",false);unexportedRuntimeFunction(\"emval_methodCallers\",false);unexportedRuntimeFunction(\"emval_registeredMethods\",false);unexportedRuntimeFunction(\"warnOnce\",false);unexportedRuntimeFunction(\"stackSave\",false);unexportedRuntimeFunction(\"stackRestore\",false);unexportedRuntimeFunction(\"stackAlloc\",false);unexportedRuntimeFunction(\"AsciiToString\",false);unexportedRuntimeFunction(\"stringToAscii\",false);unexportedRuntimeFunction(\"UTF16ToString\",false);unexportedRuntimeFunction(\"stringToUTF16\",false);unexportedRuntimeFunction(\"lengthBytesUTF16\",false);unexportedRuntimeFunction(\"UTF32ToString\",false);unexportedRuntimeFunction(\"stringToUTF32\",false);unexportedRuntimeFunction(\"lengthBytesUTF32\",false);unexportedRuntimeFunction(\"allocateUTF8\",false);unexportedRuntimeFunction(\"allocateUTF8OnStack\",false);Module[\"writeStackCookie\"]=writeStackCookie;Module[\"checkStackCookie\"]=checkStackCookie;unexportedRuntimeSymbol(\"ALLOC_NORMAL\",false);unexportedRuntimeSymbol(\"ALLOC_STACK\",false);var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args){args=args||arguments_;if(runDependencies>0){return}stackCheckInit();preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();assert(!Module[\"_main\"],'compiled without a main, but one is present. if you added it from JS, use Module[\"onRuntimeInitialized\"]');postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}checkStackCookie()}Module[\"run\"]=run;function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=(x=>{has=true});try{___stdio_exit();[\"stdout\",\"stderr\"].forEach(function(name){var info=FS.analyzePath(\"/dev/\"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty&&tty.output&&tty.output.length){has=true}})}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\")}}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module[\"onExit\"])Module[\"onExit\"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();module.exports=Module;\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()'\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n","import Module from './decoder/decoder';\nimport createWebGL from './utils/webgl';\nimport {WORKER_CMD_TYPE, MEDIA_TYPE, WORKER_SEND_TYPE, ENCODED_VIDEO_TYPE, DEFAULT_PLAYER_OPTIONS} from \"./constant\";\nimport {formatVideoDecoderConfigure, isGreenYUV} from \"./utils\";\n\nif (!Date.now) Date.now = function () {\n return new Date().getTime();\n};\n\nModule.postRun = function () {\n var buffer = [];\n var tempAudioBuffer = [];\n var wcsVideoDecoder = {};\n if (\"VideoEncoder\" in self) {\n wcsVideoDecoder = {\n hasInit: false,\n isEmitInfo: false,\n offscreenCanvas: null,\n offscreenCanvasCtx: null,\n decoder: new VideoDecoder({\n output: function (videoFrame) {\n if (!wcsVideoDecoder.isEmitInfo) {\n decoder.opt.debug && console.log('Jessibuca: [worker] Webcodecs Video Decoder initSize');\n postMessage({\n cmd: WORKER_CMD_TYPE.initVideo,\n w: videoFrame.codedWidth,\n h: videoFrame.codedHeight\n });\n wcsVideoDecoder.isEmitInfo = true;\n wcsVideoDecoder.offscreenCanvas = new OffscreenCanvas(videoFrame.codedWidth, videoFrame.codedHeight);\n wcsVideoDecoder.offscreenCanvasCtx = wcsVideoDecoder.offscreenCanvas.getContext(\"2d\");\n }\n\n wcsVideoDecoder.offscreenCanvasCtx.drawImage(videoFrame, 0, 0, videoFrame.codedWidth, videoFrame.codedHeight);\n let image_bitmap = wcsVideoDecoder.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: decoder.delay,\n ts: 0\n }, [image_bitmap]);\n\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close();\n } else {\n videoFrame.destroy();\n }\n }, 100);\n\n },\n error: function (error) {\n console.error(error);\n }\n }),\n decode: function (payload, ts) {\n const isIFrame = payload[0] >> 4 === 1;\n if (!wcsVideoDecoder.hasInit) {\n if (isIFrame && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n decoder.setVideoCodec(videoCodec);\n const config = formatVideoDecoderConfigure(payload.slice(5));\n wcsVideoDecoder.decoder.configure(config);\n wcsVideoDecoder.hasInit = true;\n }\n } else {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIFrame ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n });\n wcsVideoDecoder.decoder.decode(chunk);\n }\n },\n reset() {\n wcsVideoDecoder.hasInit = false;\n wcsVideoDecoder.isEmitInfo = false;\n wcsVideoDecoder.offscreenCanvas = null;\n wcsVideoDecoder.offscreenCanvasCtx = null;\n }\n };\n }\n\n var decoder = {\n opt: {\n debug: DEFAULT_PLAYER_OPTIONS.debug,\n useOffscreen: DEFAULT_PLAYER_OPTIONS.useOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment,\n videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay\n },\n useOffscreen: function () {\n return decoder.opt.useOffscreen && typeof OffscreenCanvas != 'undefined';\n },\n initAudioPlanar: function (channels, samplerate) {\n postMessage({cmd: WORKER_CMD_TYPE.initAudio, sampleRate: samplerate, channels: channels});\n var outputArray = [];\n var remain = 0;\n this.playAudioPlanar = function (data, len, ts) {\n var frameCount = len;\n var origin = [];\n var start = 0;\n for (var channel = 0; channel < 2; channel++) {\n var fp = Module.HEAPU32[(data >> 2) + channel] >> 2;\n origin[channel] = Module.HEAPF32.subarray(fp, fp + frameCount);\n }\n if (remain) {\n len = 1024 - remain;\n if (frameCount >= len) {\n outputArray[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0].subarray(0, len));\n if (channels == 2) {\n outputArray[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1].subarray(0, len));\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n start = len;\n frameCount -= len;\n } else {\n remain += frameCount;\n tempAudioBuffer[0] = Float32Array.of(...tempAudioBuffer[0], ...origin[0]);\n if (channels == 2) {\n tempAudioBuffer[1] = Float32Array.of(...tempAudioBuffer[1], ...origin[1]);\n }\n return;\n }\n }\n for (remain = frameCount; remain >= 1024; remain -= 1024) {\n outputArray[0] = origin[0].slice(start, start += 1024);\n if (channels == 2) {\n outputArray[1] = origin[1].slice(start - 1024, start);\n }\n postMessage({\n cmd: WORKER_CMD_TYPE.playAudio,\n buffer: outputArray,\n ts\n }, outputArray.map(x => x.buffer));\n }\n if (remain) {\n tempAudioBuffer[0] = origin[0].slice(start);\n if (channels == 2) {\n tempAudioBuffer[1] = origin[1].slice(start);\n }\n }\n };\n },\n setVideoCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.videoCode, code});\n },\n setAudioCodec: function (code) {\n postMessage({cmd: WORKER_CMD_TYPE.audioCode, code});\n },\n setVideoSize: function (w, h) {\n postMessage({cmd: WORKER_CMD_TYPE.initVideo, w: w, h: h});\n var size = w * h;\n var qsize = size >> 2;\n if (decoder.useOffscreen()) {\n this.offscreenCanvas = new OffscreenCanvas(w, h);\n this.offscreenCanvasGL = this.offscreenCanvas.getContext(\"webgl\");\n this.webglObj = createWebGL(this.offscreenCanvasGL, decoder.opt.openWebglAlignment);\n this.draw = function (ts, y, u, v) {\n const yData = Module.HEAPU8.subarray(y, y + size);\n const uData = Module.HEAPU8.subarray(u, u + qsize);\n const vData = Module.HEAPU8.subarray(v, v + (qsize));\n // if (isGreenYUV(Uint8Array.from(yData))) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: draw offscreenCanvas is green yuv');\n // return\n // }\n\n this.webglObj.render(w, h, yData, uData, vData);\n let image_bitmap = this.offscreenCanvas.transferToImageBitmap();\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n buffer: image_bitmap,\n delay: this.delay,\n ts\n }, [image_bitmap]);\n };\n } else {\n this.draw = function (ts, y, u, v) {\n const yData = Uint8Array.from(Module.HEAPU8.subarray(y, y + size));\n const uData = Uint8Array.from(Module.HEAPU8.subarray(u, u + qsize));\n const vData = Uint8Array.from(Module.HEAPU8.subarray(v, v + (qsize)));\n // if (isGreenYUV(yData)) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: draw is green yuv');\n // return\n // }\n const outputArray = [yData, uData, vData];\n postMessage({\n cmd: WORKER_CMD_TYPE.render,\n output: outputArray,\n delay: this.delay,\n ts\n }, outputArray.map(x => x.buffer));\n };\n }\n },\n getDelay: function (timestamp) {\n if (!timestamp) {\n return -1;\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp;\n this.startTimestamp = Date.now();\n this.delay = -1;\n } else {\n\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay;\n },\n resetDelay: function () {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n },\n\n init: function () {\n decoder.opt.debug && console.log('Jessibuca: [worker] init');\n const _doDecode = (data) => {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode');\n if (decoder.opt.useWCS && decoder.useOffscreen() && data.type === MEDIA_TYPE.video && wcsVideoDecoder.decode) {\n wcsVideoDecoder.decode(data.payload, data.ts);\n } else {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: _doDecode wasm');\n data.decoder.decode(data.payload, data.ts);\n }\n };\n const loop = () => {\n if (buffer.length) {\n if (this.dropping) {\n // // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n while (!data.isIFrame && buffer.length) {\n // dropping\n data = buffer.shift();\n //\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n _doDecode(data);\n }\n }\n if (data.isIFrame) {\n this.dropping = false;\n _doDecode(data);\n }\n } else {\n var data = buffer[0];\n if (this.getDelay(data.ts) === -1) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1');\n buffer.shift();\n _doDecode(data);\n } else if (this.delay > decoder.opt.videoBuffer + decoder.opt.videoBufferDelay) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true;\n } else {\n while (buffer.length) {\n data = buffer[0];\n if (this.getDelay(data.ts) > decoder.opt.videoBuffer) {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`);\n buffer.shift();\n _doDecode(data);\n } else {\n // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`);\n break;\n }\n }\n }\n }\n }\n else {\n }\n };\n this.stopId = setInterval(loop, 10);\n },\n close: function () {\n decoder.opt.debug && console.log('Jessibuca: [worker]: close');\n clearInterval(this.stopId);\n this.stopId = null;\n audioDecoder.clear && audioDecoder.clear();\n videoDecoder.clear && videoDecoder.clear();\n wcsVideoDecoder.reset && wcsVideoDecoder.reset();\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n\n if (this.webglObj) {\n this.webglObj.destroy();\n this.offscreenCanvas = null;\n this.offscreenCanvasGL = null;\n this.offscreenCanvasCtx = null;\n }\n buffer = [];\n tempAudioBuffer = [];\n delete this.playAudioPlanar;\n delete this.draw;\n },\n pushBuffer: function (bufferData, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: audioDecoder,\n type: MEDIA_TYPE.audio,\n });\n } else if (options.type === MEDIA_TYPE.video) {\n buffer.push({\n ts: options.ts,\n payload: bufferData,\n decoder: videoDecoder,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n });\n }\n }\n };\n var audioDecoder = new Module.AudioDecoder(decoder);\n var videoDecoder = new Module.VideoDecoder(decoder);\n postMessage({cmd: WORKER_SEND_TYPE.init});\n self.onmessage = function (event) {\n var msg = event.data;\n switch (msg.cmd) {\n case WORKER_SEND_TYPE.init:\n try {\n decoder.opt = Object.assign(decoder.opt, JSON.parse(msg.opt));\n } catch (e) {\n\n }\n audioDecoder.sample_rate = msg.sampleRate;\n decoder.init();\n break;\n case WORKER_SEND_TYPE.decode:\n decoder.pushBuffer(msg.buffer, msg.options);\n break;\n case WORKER_SEND_TYPE.audioDecode:\n audioDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.videoDecode:\n videoDecoder.decode(msg.buffer, msg.ts);\n break;\n case WORKER_SEND_TYPE.close:\n decoder.close();\n break;\n case WORKER_SEND_TYPE.updateConfig:\n decoder.opt[msg.key] = msg.value;\n break;\n }\n };\n};\n"],"names":["Module","print","text","console","log","printErr","warn","postMessage","cmd","message","moduleOverrides","Object","assign","thisProgram","ENVIRONMENT_IS_WEB","window","ENVIRONMENT_IS_WORKER","importScripts","ENVIRONMENT_IS_NODE","process","versions","node","ENVIRONMENT_IS_SHELL","Error","scriptDirectory","locateFile","path","read_","readAsync","readBinary","fs","nodePath","requireNodeFS","require","require$$0","dirname","__dirname","require$$1","shell_read","filename","binary","readFileSync","undefined","ret","buffer","Uint8Array","assert","onload","onerror","readFile","err","data","length","replace","arguments_","slice","module","ex","ExitStatus","reason","read","f","readbuffer","setTimeout","scriptArgs","error","self","location","href","document","currentScript","src","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","responseType","response","status","out","bind","checkIncomingModuleAPI","legacyModuleProp","quit_","warnOnce","shown","prop","newName","getOwnPropertyDescriptor","defineProperty","configurable","get","abort","ignoredModuleProp","unexportedMessage","sym","isFSSybol","msg","unexportedRuntimeSymbol","unexportedRuntimeFunction","wasmBinary","WebAssembly","wasmMemory","ABORT","condition","UTF8Decoder","TextDecoder","UTF8ArrayToString","heapOrArray","idx","maxBytesToRead","endIdx","endPtr","decode","subarray","str","u0","String","fromCharCode","u1","u2","toString","ch","UTF8ToString","ptr","HEAPU8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","i","u","charCodeAt","stringToUTF8","outPtr","lengthBytesUTF8","len","UTF16Decoder","UTF16ToString","maxIdx","HEAPU16","codeUnit","HEAP16","stringToUTF16","startPtr","numCharsToWrite","lengthBytesUTF16","UTF32ToString","utf32","HEAP32","stringToUTF32","trailSurrogate","lengthBytesUTF32","allocateUTF8","size","_malloc","HEAP8","writeAsciiToMemory","dontAddNull","HEAPU32","HEAPF32","HEAPF64","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint16Array","Uint32Array","Float32Array","Float64Array","TOTAL_STACK","INITIAL_MEMORY","prototype","set","wasmTable","writeStackCookie","max","_emscripten_stack_get_end","checkStackCookie","cookie1","cookie2","h16","h8","__ATPRERUN__","__ATINIT__","__ATPOSTRUN__","runtimeInitialized","preRun","addOnPreRun","shift","callRuntimeCallbacks","initRuntime","FS","init","initialized","ignorePermissions","postRun","addOnPostRun","cb","unshift","addOnInit","Math","imul","fround","clz32","trunc","runDependencies","runDependencyWatcher","dependenciesFulfilled","runDependencyTracking","getUniqueRunDependency","id","orig","random","addRunDependency","setInterval","clearInterval","dep","removeRunDependency","callback","what","e","RuntimeError","dataURIPrefix","isDataURI","startsWith","isFileURI","createExportWrapper","name","fixedasm","displayName","asm","apply","arguments","wasmBinaryFile","getBinary","file","getBinaryPromise","fetch","credentials","then","catch","Promise","resolve","reject","createWasm","info","asmLibraryArg","receiveInstance","instance","exports","trueModule","receiveInstantiationResult","result","instantiateArrayBuffer","receiver","instantiate","instantiateAsync","instantiateStreaming","tempDouble","tempI64","callbacks","func","arg","getWasmTableEntry","demangle","demangleAll","regex","x","y","funcPtr","jsStackTrace","stack","setErrNo","value","___errno_location","PATH","isAbs","charAt","splitPath","splitPathRe","exec","normalizeArray","parts","allowAboveRoot","up","last","splice","normalize","isAbsolute","trailingSlash","split","filter","p","join","root","dir","basename","lastSlash","paths","Array","call","join2","l","r","getRandomDevice","crypto","randomBuffer","getRandomValues","crypto_module","require$$2","PATH_FS","resolvedPath","resolvedAbsolute","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","min","samePartsLength","outputParts","push","concat","TTY","ttys","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","flush","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","BUFSIZE","Buffer","alloc","readSync","stdin","fd","includes","prompt","readline","intArrayFromString","val","default_tty1_ops","zeroMemory","address","fill","alignMemory","alignment","ceil","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","CAPACITY_DOUBLING_MAX","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","key","hasOwnProperty","newname","oldpath","position","canOwn","ArrayBuffer","whence","prot","flags","allocated","byteOffset","mmapFlags","asyncLoad","noRunDep","arrayBuffer","event","ERRNO_MESSAGES","ERRNO_CODES","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","destroyNode","isSocket","flagModes","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","errno","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","getStream","createStream","FSStream","shared","object","isRead","isWrite","isAppend","function","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","readFiles","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","encoding","writeFile","actualNumBytes","isView","byteLength","chdir","createDefaultDirectories","createDefaultDevices","random_device","createDevice","createSpecialDirectories","proc_self","createStandardStreams","stdout","stderr","ensureErrnoError","setErrno","code","writable","constructor","staticInit","quit","___stdio_exit","getMode","canRead","canWrite","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","reverse","part","createFile","properties","createDataFile","forceLoadFile","obj","isDevice","isFolder","createLazyFile","LazyUint8Array","lengthKnown","chunks","LazyUint8Array_get","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","LazyUint8Array_setDataGetter","cacheLength","LazyUint8Array_cacheLength","datalength","Number","getResponseHeader","header","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","lazyArray","_length","_chunkSize","defineProperties","fn","forceLoadLazyFile","createPreloadedFile","dontCreateFile","preFinish","fullname","processData","byteArray","finish","Browser","handledByPreloadPlugin","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","db","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","getRequest","absolutePath","createFolder","createLink","joinPath","standardizePath","SYSCALLS","DEFAULT_POLLMASK","calculateAt","dirfd","allowEmpty","dirstream","doStat","abs","floor","getTime","doMsync","addr","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","___syscall_fcntl64","newStream","___syscall_openat","__embind_register_bigint","primitiveType","minRange","maxRange","getShiftFromSize","embind_init_charCodes","codes","embind_charCodes","readLatin1String","c","awaitingDependencies","registeredTypes","typeDependencies","char_0","char_9","makeLegalFunctionName","createNamedFunction","body","Function","extendError","baseErrorType","errorName","errorClass","BindingError","throwBindingError","InternalError","throwInternalError","whenDependentTypesAreResolved","myTypes","dependentTypes","getTypeConverters","onComplete","typeConverters","myTypeConverters","registerType","unregisteredTypes","registered","dt","rawType","registeredInstance","options","ignoreDuplicateRegistrations","__embind_register_bool","trueValue","falseValue","wt","destructors","o","pointer","destructorFunction","ClassHandle_isAliasOf","other","ClassHandle","leftClass","$$","ptrType","registeredClass","left","rightClass","right","baseClass","upcast","shallowCopyInternalPointer","deleteScheduled","preservePointerOnDelete","smartPtr","smartPtrType","throwInstanceAlreadyDeleted","getInstanceTypeName","handle","finalizationRegistry","detachFinalizer","runDestructor","rawDestructor","releaseClassHandle","toDelete","downcastPointer","ptrClass","desiredClass","rv","downcast","registeredPointers","getInheritedInstanceCount","registeredInstances","getLiveInheritedInstances","k","deletionQueue","flushPendingDeletes","delayFunction","setDelayFunction","init_embind","getBasestPointer","class_","getInheritedInstance","makeClassHandle","record","hasSmartPtrType","hasSmartPtr","attachFinalizer","RegisteredPointer_fromWireType","rawPointer","getPointee","destructor","makeDefaultHandle","isSmartPointer","instancePrototype","pointeeType","actualType","getActualType","registeredPointerRecord","toType","isConst","constPointerType","pointerType","dp","FinalizationRegistry","leakWarning","cls","captureStackTrace","unregister","ClassHandle_clone","clone","getPrototypeOf","ClassHandle_delete","ClassHandle_isDeleted","ClassHandle_deleteLater","init_ClassHandle","ensureOverloadTable","proto","methodName","humanName","overloadTable","prevFunc","argCount","exposePublicSymbol","numArguments","RegisteredClass","pureVirtualFunctions","upcastPointer","constNoSmartPtrRawPointerToWireType","isReference","_embind_repr","handleClass","genericPointerToWireType","rawConstructor","sharingPolicy","clonedHandle","rawShare","Emval","toHandle","nonConstNoSmartPtrRawPointerToWireType","simpleReadValueFromPointer","RegisteredPointer_getPointee","rawGetPointee","RegisteredPointer_destructor","RegisteredPointer_deleteObject","init_RegisteredPointer","RegisteredPointer","replacePublicSymbol","dynCallLegacy","sig","args","substring","dynCall","getDynCaller","argCache","embind__requireFunction","signature","rawFunction","makeDynCaller","fp","UnboundTypeError","getTypeName","___getTypeName","_free","throwUnboundTypeError","types","unboundTypes","seen","visit","map","__embind_register_class","rawPointerType","rawConstPointerType","baseClassRawType","getActualTypeSignature","upcastSignature","downcastSignature","destructorSignature","legalFunctionName","base","basePrototype","constructor_body","referenceConverter","pointerConverter","constPointerConverter","heap32VectorToArray","firstElement","array","runDestructors","del","__embind_register_class_constructor","rawClassType","rawArgTypesAddr","invokerSignature","invoker","rawArgTypes","classType","argTypes","craftInvokerFunction","new_","argumentList","dummy","cppInvokerFunc","cppTargetFunc","isClassMethodFunc","needsDestructorStack","returns","argsList","argsListWired","invokerFnBody","dtorStack","args1","args2","paramName","invokerFunction","__embind_register_class_function","rawInvoker","context","isPureVirtual","Symbol","unboundTypesHandler","method","className","memberFunction","validateThis","this_","__embind_register_class_property","fieldName","getterReturnType","getterSignature","getterContext","setterArgumentType","setterSignature","setter","setterContext","desc","enumerable","v","emval_free_list","emval_handle_array","__emval_decref","refcount","count_emval_handles","get_first_emval","init_emval","toValue","__embind_register_emval","t","floatReadValueFromPointer","__embind_register_float","integerReadValueFromPointer","signed","readS8FromPointer","readU8FromPointer","readS16FromPointer","readU16FromPointer","readS32FromPointer","readU32FromPointer","__embind_register_integer","fromWireType","bitshift","isUnsignedType","checkAssertions","toTypeName","toWireType","__embind_register_memory_view","dataTypeIndex","typeMapping","TA","decodeMemoryView","__embind_register_std_string","stdStringIsUTF8","decodeStartPtr","currentBytePtr","maxRead","stringSegment","a","getLength","valueIsOfTypeString","Uint8ClampedArray","charCode","__embind_register_std_wstring","charSize","decodeString","encodeString","getHeap","lengthBytesUTF","HEAP","maxReadBytes","__embind_register_void","isVoid","__emscripten_date_now","requireRegisteredType","impl","__emval_as","returnType","destructorsRef","rd","emval_symbols","getStringOrSymbol","symbol","emval_methodCallers","__emval_call_void_method","caller","__emval_addMethodCaller","__emval_lookupTypes","emval_registeredMethods","__emval_get_method_caller","retType","signatureName","returnId","params","functionName","functionBody","__emval_incref","__emval_run_destructors","__emval_take_value","argv","__gmtime_js","time","tmPtr","date","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","UTC","yday","__localtime_js","getSeconds","getMinutes","getHours","getDate","getMonth","getFullYear","getDay","getTimezoneOffset","summerOffset","winterOffset","dst","__mktime_js","guessedOffset","dstOffset","nonDstOffset","trueOffset","setTime","_tzset_impl","timezone","daylight","tzname","currentYear","winter","summer","stdTimezoneOffset","extractZone","match","toTimeString","winterName","summerName","winterNamePtr","summerNamePtr","__tzset_js","called","_abort","reallyNegative","Infinity","convertI32PairToI53","lo","hi","convertU32PairToI53","reSign","bits","half","pow","unSign","formatString","format","textIndex","argIndex","prepVararg","getNextArg","currArg","startTextIndex","flagAlwaysSigned","flagLeftAlign","flagAlternative","flagZeroPad","flagPadSign","flagsLoop","width","precisionSet","precision","precisionChr","argSize","nextNext","argText","limit","currAbsArg","prefix","parseInt","toUpperCase","chr","isNaN","isFinite","isGeneral","effectivePrecision","exponent","toExponential","test","toFixed","argLength","_strlen","traverseStack","callee","funcname","first","_emscripten_get_callstack_js","callstack","iThisFunc","iThisFunc2","iNextLine","emscripten_source_map","stack_args","lines","newFirefoxRe","RegExp","firefoxRe","chromeRe","line","symbolName","lineno","column","haveSourceMap","originalPositionFor","source","_emscripten_log_js","debug","_emscripten_log","_emscripten_get_heap_max","emscripten_realloc_buffer","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","alignUp","multiple","cutDown","overGrownHeapSize","replacement","ENV","getExecutableName","getEnvStrings","strings","lang","navigator","languages","env","_environ_get","__environ","environ_buf","bufSize","string","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","_fd_read","pnum","num","_fd_seek","offset_low","offset_high","newOffset","HIGH_OFFSET","DOUBLE_LIMIT","_fd_write","_setTempRet0","readMode","writeMode","stringy","u8array","numBytesWritten","_emscripten_stack_init","calledRun","runCaller","run","stackCheckInit","doRun","gl","openWebglAlignment","vertexShaderScript","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","render","w","h","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","destroy","deleteProgram","deleteBuffer","deleteTexture","PLAYER_PLAY_PROTOCOL","websocket","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","controlAutoHide","hasControl","loadingText","background","decoder","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","initVideo","playAudio","initAudio","kBps","audioCode","videoCode","wasmError","MEDIA_TYPE","video","WORKER_SEND_TYPE","audioDecode","videoDecode","updateConfig","ENCODED_VIDEO_TYPE","delta","of","Instance","formatVideoDecoderConfigure","avcC","codecArray","codecString","j","codec","description","tempAudioBuffer","wcsVideoDecoder","hasInit","isEmitInfo","offscreenCanvas","offscreenCanvasCtx","VideoDecoder","videoFrame","opt","codedWidth","codedHeight","OffscreenCanvas","getContext","drawImage","image_bitmap","transferToImageBitmap","delay","ts","payload","isIFrame","videoCodec","setVideoCodec","config","configure","chunk","EncodedVideoChunk","reset","initAudioPlanar","channels","samplerate","sampleRate","outputArray","remain","playAudioPlanar","frameCount","origin","channel","setAudioCodec","setVideoSize","qsize","offscreenCanvasGL","webglObj","createWebGL","draw","yData","uData","vData","getDelay","firstTimestamp","startTimestamp","localTimestamp","timeTimestamp","resetDelay","_doDecode","loop","dropping","stopId","audioDecoder","clear","videoDecoder","pushBuffer","AudioDecoder","onmessage","JSON","parse","sample_rate"],"mappings":"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"} \ No newline at end of file diff --git a/demo/public/dist.zip b/demo/public/dist.zip index 28707eafe5bf89486a5255184fb15ff4ac5e867b..ea0c737eb1d19768f016af91e27562612fc57f90 100644 GIT binary patch delta 65477 zcmX`Rb8z6j8}?fpTie|lTW)RJ=GMm6`gUvEwr$(CZQDH0`#bMBnMtlc?oaN_WHOn_ zb!V`j__UuGQ9&9U0v+W4GyxE=SVTOk*G>{+(k>F?|D(=s@F1WNkDwqR|6~4N76t_7 zf2_h!`2UY(?jnix4F(qm@rs87{R#i|e^dOY^<1F%vHuHb#{K&L1OMYylOw7?g^>h7 zywv`;{(l2GaXeQ%KK%Rto&TTK8^*`u13ytelj$~L_7(F%Fj;lK$8}--)V}Y=1b)Wu zs;f)Xu?AHuYE)EZGZAYEwbSbiIfSIqq(Gw!d#vYlmWo<-gs{GPa(SWGMVBs60m**T=Ydxi+eHFjB73|Ebz(uW=N4zK-7CIt%BP`E37BSr-QYe|#a#Y?LVR(UM&Glwvu_s;RF4SFAM^tN$Y za(Xz{Q_BAwPxW9Z>CA}$SlgGfSUZu@+`5{qDhe}Lv@FVP<^bWxrBpPllIC96J+V?yAJP7Mx2rp#N_sMn#RIjh6&2 zZOD82u-fiRW%-aXF8j1;p7uZzLW{VaBaaFQGVDbt_uQxEKY& z&8kPcXgm}_p0zhSP{GYcy{&pK8Bv{924YzfI1t!i%@_cq_C5#KL+E6vj)cer>l;M# z8C*q(hPe5L!{5@C=4bMB`^{;H8%c^}N!6i8XQG%}P$XINgSIw7=5zH2u695U2|1#q z%+K_BdUU0KZuuhBMHbrZDi#`r5S4#g=)2{ZIcmuL{jZY|fU4x_Wr-P^y_r13)99bF zPjI&wWTj;r)Yb9anovGal!*7y2|bi`Cd#v}<3)L8)>1jvaF8mE3mtKmwr&wOni~lc z4$65qs+YpUK|ukIh&y4Mji{xaQQ5fzR-G?DqyqktRqN$!A;2cW^lFn&udO3Mw_=(0<;2o z>)wM7h%40IC6KfO?CKaT8%Sp5VUYc= zB1GZE3$$1pyOkNFCW~~`E9y=HS7ihBp&x&&T1gUZ746XVfzmrdsIFdw=U98m#r$al zVY5OWyYY9lZ6i`$ouUj6EM`Q!j#tF{S@3$_FoPrNc@vM3^Mv3nd0}&_kj8I===HYO zNGn4a;5CA#YPHY_e#f@)zgvhu4c$gSlA?g$#OT5!T*Fpm-fheH5~?UQW;8BT zzi?1A0#M&{&g2fE=5d#VQ+KCdjb?zV^j7E%{tjuQ#?4SGC}P~FNkYA5jr-X-Pm?YZ zpAo>t9+1)$+t8U`q%+7T{T6cCZytm!1feGSRBXC{z|Y`sMv_FQ45}s#H3F zG!>lI*OpUaThyb)S>yZUi@)!~YT6W9J@`O15wxn(f%UFK7%HZMi;3LDMQ_lN5{pg& zX5&TKDfR0ao`(n*rF9n@gaUD9rAe166m){;KKxF$z+ezt{rE&G*+9xO+_X@G&rDy= z8L4c~(Xx43I@T+vK>7Ulbyc~NS}{+-1?d{OU+^ub@|b`7pA8O!XRNBFrZAj}Cp!8n zlqzCsVZG#Ow6~FM44{1|na{%Bx}CoOZto!9cokMQ#ymfMO4XM=Bq2XTnDT_x2@yyycp{=VwfV26k- zZ-SbR{%O|vytb!vliCZzR3GIb7b;WrKq-4%u^Wg7AL)0XqE&g4sWmMgzf!;~Zp21M zBtHA^ZLf|X3dkl&tUlNkpJo{|K>MOu+8op%ur0979DDO_9gj*^F*#7UX9JYG7tMJ= z^ES#1jqt2+Ddg4g@GsQc+OLz|_P5FkRCC8j#4sCllXPMg@3AnCtV2uWfSLESR%BC~ z7fnr1v70mFvocq7=GvejnMTp`5(HLg@wlAxf^ZJg*uCe4AAVR zERMG9PPnKsZroAbWa%~2-|4yn{4&Y>OD%Oa*=NjHgTS2l{HQ#PL%>tWda>(pdCO7M z#%nS~NdvkNNwKivtFdW%xbm!$yc(Qd{F(j69m6zd;)cpV`G=!fvL!X=7-M<>Z}$R> zCwsWN(_^%j(*0L&9IiGUpuF49RPqnqNe9+=Z~*+_5(n_MYF9{T1NBTHO0XK zn4G@ymlne;iD9%U3?(jFMJ}#l;_Jm){I-CTKh6ygpW#xxmMpcB&C)Dx}3gx!zuqxUCq{ zs?Z@kJ}6&dG6V~7^vl@D)j7s^avkKC6$r+FZy#=;H{Un$({705(CuLW+8rlm$9}{4 z#a~M};2VG9UUblEZVK(Nhc$gLRH9TF zs8o%(x#m!_xT*&;Qn&mqMvLUQDtoe!7XRnCq;B@l#FEJD8@-I(Dv4f*sRhk|o^e$g zBiSpq{B+|86m~w_{oynen{xAloqe*j_mql6r%+KlEG%dQ2$q>4Da{?m$mOic2#9xG ziu!zZ#412e={_yfQsX|b_y>P5zYWKy;#83a`sU;6G-iB_V=zj`1zE2aei`u=i=TRG zSU6~2H4O2PE$J5><6?(X>C^pQ(2qIOs-T97r%Gkq4Siuh3I8|2Ff?T2RH2!N+oSLe zo@LZg)#)Ok^zRiB%rB!$JOgFOV(%LxVjWMz?@r)kFS_DeQ$jxF0_HZH01ev6nF{YN z6{o5E&NpCi#^;R_q>v^sNr>0is-#JHWn~9*u~A2Kw$;-h~f51)-nAV3_C(2 zz6-Fv>E?(bFBzu)^j(mgUtwx%@ixoo`5~dyHh%x8xjlI^k0YJETYzK4_4k1?Vd~a6 z)PFq1NO^BurY?Kf@}f#bTXTPkmcoe4>B~^2**vK)WEvSi2TNb!mn2r)v%tIz8|=mv*t3ULC|lMZXHb(kR?-j zM!5Nnz=uaM^cCqa~u2pzx^EVOIrR4ac%L({^ ze-Vm=Eif_;!Mxi|fSM1JZW&D1~w+-I~h33jgLc&eH_v{qU!9{*U3Ch zRxr?lu(*}mMYrgtL030fN3jrToTR>EkWbbeYV2N?Z|?YevW_H^%F}xqH=jw;uT(RR zaf)pU^4HB99${~7R|My6SDG z5b8E3BlKGFZ6<>n>$#A-id#J6ZLrG&YrZKS44#=k*=&aJKyV*HQwuWxMVEzh$I?O-4OqUeNHHTmSEULH06bV`BJ1@8U%3}gkkWi#$`sd(q6q$=K zs)J8z`ybSO$83gbXyE%Ghz+>Wl+e(kg6T|$Mt*b&-Du;YJ+lqb%qh4&nZ#f?*y}SY zrK$3}IMDrf5FcROe(3gue*(@^1i^RgAUn6#pVMzbVn6WyZ2maBodN4Op&7=37Il=2 z!eZZ>*G&(rN-}^cq~mIV`Gp1$emv4|kPA(mu+c87GtObhE&js;XV8wCti zJJFWscEHSo36eADF^K=G%@nk=U9vk#;j|rI7GpQ1ad$o_G52J0sIP}PhSv8{=N`Y<`$*UO(4CBSIiMrgIzWqqD+MYee(l&$3V0#Qvg6H!a}KD#3_~JR zglaHLEMqOzO}ixyZJV|Y8JNC3ZSnZlH`}q@ycp3RcM(VBNp~OumprxyvDo{cHa4ST zJ#C)#p^${73Pz&3r|ZEn?3b=`xrgRo?kw9A`nRI6{!*w=OM@m@{P&x&sNCPD+havu ziZURdWW?T@G*Z#0G}9&-MdhF%NMa|9v||$4NgqV3hA(Nknjl6c=&>duD2h--k7OPT zjEgahT4a!0q4K~Hv~Gkpj`%YF)kC^0c(2GU1P%;p4`l z$j$x~f>`HMHI%AStQ4koS++sUPu|bZ{1TyT>RJdoIF|$FQGU&i6YswgX@>O&L;52> z->vb`A82U{g$7K5<|&*ACiqF-vogH|lM-YMPf|`s^`m6PIxWTd?aXyA{NNWO8}oiV2g|CO+Kz*iDC-xc z8YY<=vd#p?q~0aDp&4S8FWM8HDk&~yorw!ktDRxdsZ{Qx-=8?jeeA2dETS<)=gRUR*M_ESPBWQq%5Gv84E0b!MHs+(LPndxA5EUZ)~ zax5{AXCvcGgF?cURaAhi+W6a1kNM^+V8^*iDUc4#;Dt7amzBvemCIhP@Z#pE3b4Y1 zYwG2KRZb?24?1$*j#xgvOzT!w;xu}klzPJ@%)rf=wJp!D$;A?g2lUjL(!31C_c7LI zQn_8ej!A}Q-cH`@=YA?eJdgeUx^Ls-=tJ%orq5aKp`B8pIAwaWx}t6`rt0tHGt_tb z)6fZYGHJUI|5IS_ewM!;2yj{rJ=S)B42A1eH}Li!-6WP>^= ze9Vzn?MhG8ao~)D!kt;Ar;Zkf)Qgp!r=I{K=jH!%soF`ta%duD7es}B=|@}ZYElU- z_N}oWV3;&03f9)mys;Y;JU4=fmV6};rxPg%k=KC)euR=@>D9?+vs^iv~Wlx;N>}&heRe}*OR5wuoV5&N;EW-q3zO&kOKJ6-09%v0aNEeguRpYzq!-QF; zjw=CEI*Ow>u#{)7KN`)?!z#_Q)UAO>GaIiXZF!eF8O%ZNF0X=f&bQ0xTk4pVe%it^ zy$ zOJ{01<|c&Nhzb`*nIZRrHGzN7K@zfP%=Ng3+c0O+j6cd9-~q{(_)$?*JtF{IOnl`l z=X%Hl!S@%zHj7WSHiKbU_yzRn+`lyi`@h*ft%YNGb!G7)V|cN-G`%P4G^FDD&gMU0 zYa4Gs%*z+=zB^(5Np&9byxxiv6Se86LaS}Ucw^w*shx`!y&dQbIu3{*Ms)--;)F0Ww$@vnMxceAp8F;zZ#T#1__atgr2}xqVwA4}dO}3pA zsaO#OmS#s)DXxyM2q}R&c*k9;VoJ#0&o*pUs5(nrzaZY7UcVjU#tJTZs)_qHhFQABU$P_Bi z2ayr^OYRUy^VVw!+9^N+8$z5EC0lKr$+-!le_|+2L}{*RaGne4&k!e*IQ;}+xXnb! zkGV(U*C`Q{7FtOjCli)N#5A^6vENDoOK(|Hyd(RLx>TzgX||?8SLJ@NG)}Ek0#mJC za_VUkAU<~$=*A!q z{Ygytnt(F+4h&F3UD^m~B@_cMq3oO&M>WG4%zIc@QaX5pw+LQMMVeag=Z(Aix0j?n zHCTSmvIX@Ej$_^+*X7?_-`}T0CeJ*CGK! z@XDY2a;E9L1GYP~b9hp%e^8%Dz9R@{wQFpWm<} zMM+*^`00|Xz7Qe0cZ1|9$>5lZbLU6@^jP~UU!*-H z4}PXmNu}T9K51_{()_+XDU=DGN4i>IJY6aGG;?#T<}=Li&Pvq3cG$8PA(~<`jYA(l zKhV5;&rMWz|LUUk%2?*f4o{4Jf?JZSVMxj>&;^j!M%Ts-E*re=qLui`1Ssu$uE~ zM0D2rG$UD^J&E_eOkFowx6>9&7w8K|Z)F!>b`G9o&})2D6j1&1(RJKDu^)bxU(t{2x41J3S-qLk zO4;A@uO6P^t!Rw5$Stpd^AsG`!Ty62YCVj@an6kPx}?qe2=yF4Oq$hk0lUCdk_6V* z6Az+K#ajfK(46O*nhpqK?d}g9n>(H50U~~aYfkLXJH6@8$FF=lD~v-n^OtLGu8GN z=@CLFEh27+19FGw$t7PYQUCO<&v%ci`~wS?s3hohzdyjeA1Pv#=PP6`X={(>sj2^a zWbfK_|Ezv9?fG#``EmS^_}3>X8_V)Xvue6n-J&67z3SrueeaMLKHt2;67Z+TO$ z*C0E;ZI{j*ToJ4R{d4PAw|E9zO~QoE^tyY|7qVKz>4iv=_22$bRrYc#=^nr0t)V6M zM&*Vc*X5&gGKm)~PmJb8)rYWB~ z7%JAAfmA5@{lSG3ZtR6vf^#(SD4d{_E2&bRcI9e94Dh|DvAWiYjtRez!mJbH)BeDz z&XGTby$Mc!>cqY-8Vp`uPX5lgfUSzoF{#*YER>{`@BhMi1*tqB6gp z#CC*FLPD;-omt~$`2noLx*nbw=(suOYI>n$!j}lN49Sl{POwrLEoxZonRJ9wF*AVm zXzl03S;mkU`IF*e(F8vDh9^o(CYrHW&7NI22R1-byrOtuQ*!?jA@sj+M$Z%3NrG(L zkh7oErxfz)zgP4Kujo>?5a9H9)a%;JiS*eI@n`b_)56A1u>jD4b9M@MzUekk&*kL< z53b4J_B|+=)R0&;=JkHDv~I%`&Mu~spECR6Xs<&e)E8gOkeESy_vERjK59NDqi0zv zaYrFE0tpNh0cVw0&dV>7DJ4Jp3a!UosA zuZR(P={Pj!*np~n!^Hi5j$7~e$IXTkZ(K61j)m<-EfRkhS!`S3LpHqxW@Hvu-8@7( z0>emq2Ul7zhU_lPcEV$>`(O~`{o$QstIi0wS-I#>Y9CR8KnU(V4(_1#o;-w{H~j=0 zeJuq}XGobmF$)OzcrXr?+~i+30!=LjbcbP?#WnOIU_i`Jm?V=M`Wz{fRCA0_8SSQq z{u(yN1WWHfDWVW+_1Ab)K#MQjOwJFW8Dla~p8GBpfGb!CM z2A0l_D3&bq8$3z$y|zypHg8miGi-82r9uu)6_CC@EHWiso5s$rTD?kLgta@g#gp(L zYrRkxK}8f;L3bE^8=S8CgqY zvgxzD#BSmyzL1ia*!Cd)f_(Y!;IBtIJ;0(APeeIy;TYLX?1`^i=LvoOGSBJa_23Nh z3&>$L^bK1jt<)KC=@3)DH+Nm-&xM??tA^CD$W0aZI9ra#0A%49TUhvV79 zo5bt(FLMZTev@fhjOP<`N>Q(D4Yh@g?8iaBl#aqK-D&eE$g>3U1G?1*IN=K z#dNWS4^*(IkF%+w&b<9@V>7YCk(dck2Mk3rl0^UIb`#B|u5J-Bb=gY|wj-Jy3%%mU zZ|Tw;&A8{@T-Z2h?s!K?Veg9q9p=qi=2(8ml|&e7vtxFsuQ(M2xMM0|NWze~MbNZ` zuMP5Q&5u4hJaSc+#p$vjbsW`kgPUaPVB~4au{71QgC~=wMoFau$=}02#i# zbT*E)H3Ioo+1FgyCz{LL@Jx(e1dH3W7scM-hfCk5ER86=v$HYkVHll=MY{7bhbRUO z)9NtW#A|YzA^9@Q;Gf&EW*=_h{9wm_Kj`JE_Q_6_<=BSgHbLsj8FDmE1|Nw8=s<|D z8m=Y-cx`sdEN^TlN&-#60gDQ;kO<`^ zj@Q@yW7lej(_1YIfx}g>CU6*exFSM1!|-3`Sa#6H{YWM#O+j^GlDip6Hp!UVzU~S)>YZPAfe8>QDA?Bpf8vLj}j3^vsXhlr-`@I*+_khQwh-*dO^$- zJ8Cj45dLVOF?(6+NC#VV0PK!whysj;{t`9;!=;Kizq8*9lfJZrB%Xr%`w zdFFK202vd8?@$T^F%w+)VgX6Wy9m#d$IvKNE&@z$3BAYR?^yZQnfYOSw z{v1U{2~H)K2R(a0u4`7PBUWv84LeN)a&9am z0NN+yd*CGv;DyopqB?mI{%No6Zocm4*N-N^Z$7FX;)&TIu6>C}tPB(VZRMhjY}yx| z-%TcLc}D4Wx~QrAZqc(VtErPEN$oX$&!nXj=3$?hF#`t+eNF*labH`sj|j6b6|us^ zPFJGQ?MoH~RjF4R32lBzvm2X!ElTc1As8LeSyAr_tZ!wd_jKzq@>&`06sYY^Q6sE% z-asBa2_Z}loH_53v8E?pVp~Ghs=N6?GYrx&q0cs`7~l@HgP*YQAO}@(;AOn;Svy_H zJEy!oAaD(V!V2>xYuOUHpPez;4NtlTK9ATB{z~L7>r|fgM}k|<#*c|WtQ(@uBSJ=C`BDM$z_-@cZpq@(gY}TQu=LiWi}V0QL<)Q$v&_Z&R~@O+u~C)iQ(*$ zS;Z<7tS1fGBR_zYk3NR^F3TmImf`=sph{}Xlhq1Ba<$=8_NJ3s^t4gCda zJvtaZz6B|Ox9Bc?8TI)&HBTu|Bx;6ryzt>hd7=Qpd+DGajFHMpZ0sc_xiMQn=*D1cJ^ zXiHN^l4JsT%-N8;|4R~vin~gh2u3UEmwOYcB{l|0Fbdf$Q8F+xZhizdG>-p{J zMxN&}lbP!+?iyS)ofOWdrzQ5a7T(Q$gIJdb9}pxc?d0&4|F!D=`(ZKn{OIkYQs!Qw zjZ7MULDR|hHEXpUsaj#0UsbRX7;pImY(Ux9Pw(xRhx5+q@0fRG)r=nqQA zUxAhCSR5vPk1$0-YD5I$9H%tC-Mfjq4O|S5OkDWrM>zf=GGRR5M00FG**mzVuY93; z-io{U%4?iyG8qE(s4$QX`1J9J0fZTviNVa8?%Mi z;y=xxkL?YyiyK$k_%JWhs4J9V2N@a_oH}+PLuN*}(Mi~;{-}yEGuYZJk^KoOmvQY+mT807O57r_VvVLy}Eqh{LBlGNg+V^iTov5B(C|C_` z53D~q2@7*#evuWjVuJ(%=$T3TpN`e#sYqZ_@~(q(pfVBu0}?yBT`&lADjE4*ud|tW zMB|6Og6)fEtyqjyHM|+k$u%HR_VDc|;^OTuqV!P>v3c7wP;5*8eI(p}jaMsQ zbSfjPyJx0Vy32b?`->;0u6viRTQ|7v0?ZIn(URkicujD1FLuMDh=-(LRD;!73?f(%KFSANVn zZk^8SNKqi+kj<3`z`HRU3^T$W68@n9og{U16?&X~;+cL(!FDkIJR)15hu33nLN-o% ztUax9;Tg3ncB=r(@#l^N!_!sVmnVvfiwYsol>BxIwwjr?eZjcpIXooMk6enx3IEQq z$Aow|2=cypTXBNOFU;$OfLWgNPnUaJYbSfFC`0pa(YQ2RAloNVEU6OetT7gk2p6xr()ALW zO3r@B_8lxo-6xvt0^qvTGE(g9{vDtS8DSS)>Usz;ZYDnT~u za%zplbeA-fPufw+t}CC^S4Hl>D<^*ks|cS&h&311k=A6w%SBN8@tjxtMuMTT#4Sk- z_qNdp!2RttVz%l1&1>qxRV}SDfo~)$IW3p?bld2z%Plehf2tnO^lkdNxHcG9J+~2B zX@0Z2Z;@-_7xNMnNt|AA+N@UcPY4-7sa~}nm_rtj##Gc-!SLvRy2zCGUBp&Cm)DG}o~&Eu?3N=0h*+naWOjBy??q~spfLL z`n4H@gzxk%=;C?%pIp|GrJ!h}N*j5T_&~*yGbYJeLg{~tJ&Q*WZ<@g|P>N}bRK{!2 z$MG)&p`5Fuwk)o1N)!i$s&umMD0>J2aq>45**pa}=)N))KQNhyx?rFd|C$*gR^UDK zF8~{s4hQYQV78sEA)BIhe~WS3IN=b2eH`K&p^DF%p5}dd5F}ZzxH3^LL0<9y<<9B9 zm~NBB^zg?VtLv%nyfl1ZzUAIH-=s>sQ8}Ci{DiJJKewH5NUc*Q>sW#cO)y?@1PoT9oAm zha~5DKu8**kV~mn_e|}n=^RRf*aLD5wQeqOBy^x7G-NZ5~|pS#gbY#e0K7E9Sh65$SH^s~$y-$)XoIBpG%~ z{wnN#7IasW>rw})gX`povv1J?HO1qMuv?&!KQN-=A|onCE4p|K3jH1@rDfMqWiQDX zZ!RoLtZXhk8IbAsTFVczkfwS&l^_Wd7jRtDcrtZu0{`Wnt3Ubfu8s~wuhIih-@1K( zk=p#oSEkf&#FM|d_b;{Ew=P$&PhKt7P0jhqpiUT_Fl(PB>vwjyh`hNC5c8-K?R~Ul zLARjCyFnxJsLLF)V{yg4Gx6@rJ`~KY#NZRnRXa1+LhGyf+B*lBCz^qTCq+v8L|2|2 zN4wauCb?K`L+cE9IjF$O!(JFHz2)#WyqfiI+z1I!B=|asvZj)`;~Z%9$^}F3Yl4&E zJ0A1LJ1h&vZCE6yjm?Jf!Rfod-%8(G7TNDugX+g#i{+~$C8<|am6hRX$?f$@V}n;e zZI8nZK2E?~Y|P9sNRh&3MReIVIN-Sar5cWf&xj=d`mhh!56|#~uu66Y>2{NYW#A7L#B1 zOKLSz zs%!2Z*8q(>&v!shpZc&)L;`(VC-rl!daWKIAtj@c4jlqzxiqEi)JzJ*DZIC4W$TjI z(NCS)^jZVE5)MxZt(_Sb@qE1FSR)+|HMT7fnx6I66RE^doKDZYlSx-IpQqmgl($&g7KG}7&MQYtpE0p zhL|*iq)t=!zQw{VGjlbbqWUmjxV&gqKR#p4NgM<=lJu(`W{?NM%ze_9v|?up{n-$c^Ni04+#P;3#k2qdg~YfR`hamyDPU#U>! z#x0LS6|Ac{(Xij(L>Ozb?!bFQ3(RLHGiJXEblYN4`}pW()Hf4O6ZQ95ZmVbRccZaM;0g=l$-OL#9Di8npp(i* zOMX%*#Wib8MEOBlGtY!=eBW#8pIf(1yM_bCjkff|=W}~FvmV-=CxJAp;VvN72QLp~ z{xNzozULlCB%^J%4MW)TcMFA%HCLqt+OqG9C{=l<+F_`e24xs^< zj!E>_+$-dX5M8pa8eGN4r1Dp$Gf~QB&*Q*Z#x1zH`?EIWK*V&8%|-e&q@;Y&W{7f^ z+Lo6s^*qb943Q9#byVF(U6DS(?dG{yoDz~&b)e7|+=8ZEFk)-x*(uZ0Pe5~=Omr?V z>6$)ZKG6>$>1as2nC!9H-|7lqV{HI2CbAUeGm`2T1h%K?xOR*IZD+iOwAiOC%!eJGXu62belm9)MCBXuoA>50tyb#*u z&>B3viMI4$(CY!q8Uph{axG22xPJ^P3zl}Y(*~&yFmW-FFT!J5XkT;K%!t5RXM=_n ztEYs^2&+JHY`V1=c=AO2pY*&%xFcIwzQ~w;SX|;wP&hsgb6)SKgVp^ed2`LJCY!z~ zdF^+BDoyH3fA2&`V&$jo(gZV_!&WJW6OfT1E_oG4akg!SVyCR?DH25JC66U2FQBFx z3d-U=+7M*gQ02*B5RDWms}acJyTsN-1MSb`2V7>##!sA{p0mpk7V;R`cP}!oh5pQK zqEb|(`~~syP!gTJ*FK-!f3wok*M1Z6=%9#3CM;)L1w3vJc2)(COKT}Ei=h`Q&l`xe z@s{1c3R29%*SsrS!ABKZapjS-n!+FSyT0yDaTs^L1Y>FDxuB!7U4bkYYmi)m!lDaB zQMen2p0;3#Ob{8LCx{~I?`>qz;{p56K$8R(gJCYy-KnXt ziPg=#*vre=aBqj44#9m1qJEwy!wpB-zo{YhJ^a^d)YT*cRNhzwdW^EBmKS z!~TJ$gF>hJq+w*#tq8jgz5aDP3pV1Chr)O2kAwbkue+up(z z2-Udf=1ugV&%MEV6Dh`FRGgCz@6_d9jQrO(3syo`NQ3Yh#J>-wG~2YPs23OWhEIa?Kt2kk}&%yyE z8@*2)ml1)J1#tLS$2FdvK^S{mFw3iR7h_=Ru1nHAdYK37I20$mMIc!QQ^913%~Id1 z&Gr1-{%U^&PNLV(@o>L7im_OjMyy&NXU&ZZ(fi-9C@aU-ayarqj2L7Dv3?Vm_3T!) z=lInfK=*xow|sQBTz^=7?3s)`0MkjURk;@)FP_#w10+cF@!3$RXf|Q5g*9$vN=IQN ziceZL;>)fj=nwE|2TNl$db3R1cs>#on17|VZk46)3X{TV+f#+Vn&3u>&_UoM!CTI! z-B=WqD$K!plv7kaYQ&7t@U)1SX*jn<&4psjZ4k@(WrE!aZJd(4$Pk24EJhRA|(9->b;7iD68=hMD&=JJhyX zP5ferl1C=Ub_hohss_D#6iZyp-s&QuFC>jQJa5kR)>n~3^!?&4kIVMq~etSVu?Ut`vxtK)~0|v<&q45@#}|EOP*eU zEHd8{$#e-eq2#CCjW|zh4ZHD|wuFLUC7FoJLX{_=vw8|kEDDFo@*NjLF)PAu8hcF2umBMO~;KdCTjvz~(=Ii#d5pHaGwJwEw^b5s&kOF=3%kqsk=Pko?Ayy^=sO+UAIW$E zzGm%ZEq=-7z9JFE@rV_Iar2ak2E6LUgm&LnN@2ybfcw#{9U@M;n9U+yqNLjMt{)OUrk8x_hB_jK~4Z2LEmv4LDSs{z&}5#k5CG;Lke6p$sLlgJAvANK@ypkl#kT(RY={5_+a9ae;|tA1I53>6l;Y# z2kMJ`__y$zX}_{sbZ?15)-kF>*V#%U*V$V5ZI^exqt{IW>sZJ*Qg=5AanFnzm==ad zGzJve7Q{JEk%Qh8n8o~slHrcvK12I#k0#>12i+T9Yl?tbrZ zl+L8?Mx`qQ+8h_E$$w20wAJx22rU<~hSi&-u!;Db1(&$1_p6_jNlpZyz*$I1+7_h| zQ%9bnUGq_Bqj1F40riF#(@|+6Pzva4IV}(Qesy7K>H=y4G+zw}!ZFB9Q3)Q^v%W#E z6xZ0)NJBRl?3A21bK(^{G)sf8f}&}`fjM#I;!W(>;g*GoZj0~mR|4{e4FWqoKd_Dl zPSB+^9RTxkwLxU{G2E@{grBLTJKXx<3!o;SL67+n;U;B?z+y_%o-}QJz%agX zx1|Pqp|koLfQWh&BtFm{6729)_J?Y~q_kw7vX14Wp(j8!S4fG;39Hv#q2NYeSe@%J z(R91jXhkA^sjgmXzNynT_lq{&98sO<@op(kowivgqIFnEDJDKwR4cD;g}bppZBhR4 zP?HGrlt(!9r-&Scl!=jnbCZbVM=4S#%oGIOLz_#9N%{52U4XRai)9s6 zCb*4eqHh@(ZGdL&Xr#;3FZb@ZSCDcvYZXz`YCZ^qcS*&rnFbuWQa^P37R8!y_a{qb zOGth>hoO=n@h{tXpL4_2bHTd^&S`HB&R*U6-a!pI;Lf-Lo7xV9XB@`b-(s}{OYBw@Qxl7nO(dRc5(TU*jDI%=d2k8Zy>+8(Qve13-)YTt%^`No99;$ zMYbJDtOt6SD1C;~P)1qHA=(gC6o1-*D7|@UrA6)96;Y8eyAJj1R8#^2?~N9yU!mGv*st~#OeP8;!=5L+pdSEXf zTEF$o{dEc*rA1T3tEeS*1rzaQ6GZ$|u!NDT)z3g58+6`mAJ@Zhq`1{PHfWf$MgPcN znrbQ9OiLaEoNcOL+A!>DbyGjq>oP!qjJbOFDpyi!jWyXIvSHy~_pY?l6srQnukk0K zBwQwFUJb(<;)iBsad)@Z2#-|!(P2{en{8Sf-Mv9(q`d-u;+kFxM)h4xl}1_0K7Xz- z3~^i_B$zD~-K@iyRN38A@La8kj?RN$l|o2jB#yWR^~$!9?+%>JBm0sQ<1Nb`>Ef}P z;U>%R9&7YOn<7xkHA9l7SFn0Ug1R1%KlNWJZitElvzMKP4zJ@Dgo3(3M;zH(l_34n zhd@NmhjLJORt!*VL{tf=w`gyB!Jg&fx{HQXcQYD)+n9Br zOQ1y^bmiN5J>>J0@#;7?DT0B7@uX*9%9<{Gv%FoY$}(>hfW+8Rpit6_QHlf_Hi{ZH ztN74g9cD1!J%`}i_+glFb|GRi2*6A)NM&Y5=OCd*45TQ6{vQBHK)1iVV7VbZ+`vc) zD(YM$)?~PJmloo*jJ<>yPJff;SByuMCetatjhfph0|}uMq@*e0e=o#BFxh1rs;l); z%L0H}I6_*Xk4Mr2~S*aJ=@m#NeyMapgh8xh-B7N`!x4Rl?JP|1Hvo*M*ECo$`R(~2~ znV4NnZ@IVcTyaQk;y;d*kQ`mXseOlmy<+Ivk$R<$?Lyx^Jp$k6H?Lr zl190S&Pcz|(iMx!p~8N`@PT+d{C~#9B5x>-E8Gyny;9enpY2iq%=$bhj=}4yz?A4l zB(}m)5`fl;MD62T|3YU^u>xFgbU563GQ9;-e@b5RF*^F?^p>VKn^F9k!lPmVDE|v} zw4*S)SO8HFX9yyi)Ku*;@Tjlm3>ZN?uYTca!NS7JwhTwri{FAfQ~a%hl1B=^j#&%f_IR9tQ1G#{szP?vY*3v zG&N~F{XU6(%DDEQGtqFE?y9fudJcuO*H7xwC*fb2#tzd&O`9PwKhU z*gajtN=hY2+bH3?yDb{B2|3~B8y8(}<@e7S9URs`#KxW;5a;lFdo4G)X#~Vt{?R_E zkxjjzq&H1&|7bt5nSXm$bY1Yr?_EY}XH#FLxRcT*CvYA&pENrTMis5Ojeu4qI@sxHMgb;{EC%0e|CoE4@Fgef3qsg*k;a z4al0%2Gn>XrziKunz8UlTcq4F#6KwhwB`>78+NYnQe3*@jYTlZvCAZ@V0C3y#x>-! zSx7D|(5$KXd0N$1G{+ygQ8a)P~d^Wf#3s4S0+K&6A*HoDGEjs_>i zGg^1c911}JjeloFev9jd%M#PSTp6lVRrkuIVPI4uA-;6^VL#^JJ0DiQm9r6xC9bFdJ0IOKYRD)K2EXkB(34U{D$T5W*tvmo3!+8m*NJ zVGK%oLE)#$5h^U{w-0! zHkx)nD(ta^FHG#qm|}XcNJu3g7+kjU-AzxoLUi zrDKGev$vU4IX3^CdSD@9@`V6*{v9@LBDxz4Wb8 zw%l$w8+A`tUd`w%=|SD#^}bclM0r>RDN#2iUbj1{-xa<^efs95rF4&=Ur4Sae1GFm*#+$6wgThwWjcw*mV|VOH%~vzmVk z^M5wC6;oZWcL6B>TaSiy@sMF%paLo>FId+nQ6aKJ!pn*ZTU#I?EMv98#K&R|>n7-_ z;%z)m+&d8u5&NLij4pS+vc^4r$hgO~<6cX-@F3`7e%K%;UD7zYcN`P{Uo5Kr%U#sG zUMWd6eoa>YdeC}seWaSIVL)Px>}NyOpt#jn9@PhXKwhtIFh=@WdMCOk8`ZC!gEX4X2$7txyY zQ+K53c~6B><*A!Z-@@D^Kx}XCwkg`E{MNp8uDsF)%Oxe6*8h#3l^C}(xK@|HT1E|G zB*x)lnwt|mBcy$9O-7~>CB8Bcsek6CoHCZdA35nTtig9G=t`f^^n5 z;@8A#86(pyNM_p`OH&EIia4s3s%2JncVp$UKZMrvZrNvoXCCwifs>{BX2u6?t&sk} zF>tT}>4%i}Cy|W!37#tQL^um?+#H|0qwFo|19hW^P2|{@fxrdM2>8FOn}4kEX->b& zaRY>S46#LZFYQ}hWxPK*>hpDNwDTch(|c^LTghcsu#%!l5}x~YW$r&b;mDrwx{*GJ z3j9_yUm2g(3*$&^2DX13U20PIo(|rk2h=Y4ko8HE6n@iR02oO_fA~S+8!}#RM+Qkc z#@CaAUnw$(zpcw4ypAToEPqC%$>NJ!;f6O&=5v!TLgb@alM2nvL#n8a7nhZD@=ZGjSt%yN0Uec)h70;Q@*!=x47^YF4?9qK(-!W4)OLASs1xm7^xZe)*&f z(21!6>gw8HR4SaRn^sP zUPV$AC6c;OnltF(T@*la#cU zR@Lh2p5D99gR#42mdLy@GcqzVA~G`KABtyt{p%9Ug5KYyxHa`5y^+YO*k7&C+y}D* zb657q&$hg8zkmIF4}8uCfl*y*HeJbQD(^3<{#;u(t|GVt*%Pc^Qk*}01d`rw`@(rxo*K`FYRE&wEyWt!KBT_RwR@yT^w0KAPq8St-Aql^=uWKzr8Q z!_x`{fV`i*?qvU0)$1&fLBHO7dN!rKt>F^{KEv>f?|(^vYh~Bgwc(CU>bbd3U00q4 z`Sr?n|6qUFjQ)hb~3!be@(ju1a~{Dse9Vf?RD?pgYW+d z`|}6*@dK9+BE!yiz@P9xzwgK=cp3p33N{?@M08JR_cZ+T`x{XUx|61BQ3QT0JAN!n z{`pGm`jQAS8jVn-b3V`qhV8llDk7bi->$&zIDa9zcBi;$KJ%;AlY5tbzOrAZ&lMh~ zl@;%jJIC^!ZSdV|A7tzqnSY%;G#x>_*Cf!LDlUCeIf6O5DMemLz3L&K`qnSt&Yb62 z*Xl33_B6p@_&@xBfB4X|q0c)EIM5En37D6Mpo4G%00*AX?g{Ol`l;*yU0$c;^8xA) z=6^#k*meJXzEl7F~-KMy)lgNLwMcA(Zh|M4>Ni+@4kjcf_OiflcjHM3Fix6zs}3CUd(kA&oz z_}GK&p0d2Oe_jYfH`|?t^+FZ;%O(AMbw2s>r*{l}jdVwAx7C+kS6}n4Kazg&oICh} z8a)g!3*+d>(|;4N zhHtJ5wR~ZD7tcpme0_99@50%9b0-8o!+^#FNcao|uJhbI*55p}{Y_B3dN!hNrC-o? z`?XWU?F*-dkH>i6lihj6*H01e0)BL!u6`8UciltsV|$C|dh3Ys^5No=ntXW0ow7+9 zrLlE2Jo@RvecWW=>+4Uw68Cm;`+rlJmS*%*H|8!r;nUckX9s2Rf&A`;{A-McpPJ6_ z8h#(a*PE4hL-Hk1`ql@N5&mq9EQo zVC@_T-&O9SYM7VMF)uXvMG{or4$7X7`x#ldY1ZG|Q3AN51TQt%-7fzc$bZQ1%1@oU zWE!O0Zc~5%;cHcH+t8O~e)!=B41Mc9({Vg2@cs9XsPb~#Z@c_YKiB?KxgWpGd|@PUjkD4RUoCm03?wAq5S^)^dEpo zdYQd6jh-w89)bN~-FAl7H);T&u{?9Q?WC z^7>d4cjPerf^+K-4DKiA(ur<@f_@ghIR+L-PFxtoJnO{3-c!7bEMg21GvG*MDB|`qoo|H#fY*dVi-`khUZJfk=Fi8ptJ zNT2iZrLpLDqtqYUcAvHV^P}o(^m|G5yf^n>>Ra4Do0aU@Tm0d9`EDTb=X3UDla~nC z@PqZC3tSDq|9=e7{k5-uos@e z!+6}4en9$wfZu-Wevc48zOJuC2y{Q~AKtt}hn=3m?SEr!-}kEvd-JTH%~!K~&tlJk zeE;_F8T{`i4F5dyE)T`u{7lvR1$dd7hp#}oYYRg=SU*pA&wY5-OB!%%Oy}Vd%q=}& zKK0nE0U4%SB=xu7c0UcE+S-SD&|Huq1arT<%zf``_Du*dWBCDn8(%_`haY+>^CR*O z1z`Noh>ZtSW)$DHV{^Yn>xqoLrY?}QWd3vs@$-&){(h@}A^5$UD3kAVu77l&dUFYu`BQ%-_@mdkXn4mxbk;U{ z_ZNIKdB^lmNfp1NJ0qn0r#`;V&A&^1Grej)J@l&WpSl}ew_Nd-d;0W{b!Q)dSGmt; zpYlK5HqI|-Xs;B$u%#qeUF5S}{Ss5M?1M>m9uU*3`^_i%n0|O2KskgCi8p`W{Q*FS zFMmP#-lcc);PZ{L(}i5r2JTgDKoIY)o_c8T+Ii`Ib&=#pqg%$z43cXiN!}8<6^4RL>R6#eH?~!-<8Lbfc`V!;zE&=Um)8iZV=AkpW0(?n_C67@O%13Q60=>q* zy{mv<{2g?hL~(HtTs&2}sEsk?+h>}W8#OX-o~^oK$p_*Qt5bm0>Gx(IE$!ot+kd+@ zfDo^fUa!?@SfLN-!=;~{XNn-H+$;C@x&G(Iq9$F`Dp2iqe0S{5XRe%Tap_n$`lsf~ z-o(@1TpbcWt?@@s7JZU%^G$qL;OcUqcL&og{aYLNl;E+IYvN-&&kEhO)UVP$|DI$% zbcfLZw?CMFyeFNPo9t{yIYG`N6@TqIeTUdxukYz*7gNg2wT{enL0)ep@7b04tAFI4 za)R0TyARJ&{@9aJAWM9aej%klljC$}q4&W=I=5H-L{ay5^lxPWtNwW^X#0Jq_x1GN z4vf7;w<~*N%K}hU_q*5Bz`3+)e<+?5Fi02iH2Uz$tZn3vuRar-uwHDs3V$*-kcXZ^ zu>sci{mm5Md$i+{KfHpw3s?^k^r8H8#g7lsr^`6*7DDp45U8gWlR(gCOe@tht=DgV zxeP9A;BxKl^SG9GXkYg64$H?teph3Q{$5-+=2s8pRqmYrM$@OgS#+l5PgY6SQ{Mjm zxG44$b(bmjmM32Nm~=hLy?;B9yR*>${JO#Bc9Q%{R}H#Y0#7b%?sG0aYp&YdTiVST z=odYD^K*mzVjN!`_gAf*?g#aB-uMg(&+h8If8I+l_q`tdR`_FDm0iTH{w~-@6NN*?&Fo5+gLxdD*mc@y4x=RXLIk4<(eiuhJQr*qOq5Z$-jg+ z{GZYK`GsP?Z20}Lf4iKfyPpm8XDqzo-n{!chQ!tBX72szezM$`EViz<{_c_K9xcAP zYv9#``=W{L&A94{?Kj6$y#>>sfLQj(iFAC)^|)@>$v7`uA+2u+ak&clw43&Z-B(8~ z&vwy1TRG4(H3|Md6WdAcNV=}O<=JipXn0I+?xmp=dQXNkkb``lM(2mI#eDa(^RbGQC4 zk-D6IGMRmqgs(4=d7mcf;qjXAyYgc25&USpJAQh8qvOjP3V-FB{;KdZVtM)PoKD-% z3?lv(bnH;@p||pP@4}lt8v5t%XLol$2lu@N|EI5?!2RrscnPlGcqVA;)%8&C=kOmH ze(U!4biH3g5bv)J^<)pUr+#_+=JO#6C^1yhQon>Je?C#a`M%Zr+llYJ7mb?%!E>f4 z_+_Rj?UlsOnSY}6o+(OurYHrCK_Aj95Av}e-n-xd>~;Nx8_*Dd#Q4-}OC$N%xK|Kb0a{_4<{W2j<&--~j#~EPrFbnYz9ExaWmR)9MMxD?nMg+}$bbNfXfICGyw1S8tJ5pKd1{ zH-G7{c#0+yfG)o3aP!r}Txj5Uj`>pd@@tH5OtI*`WiGMrup+8)T&y$N?1(-U37d=ehJUlDldG{r} z2%yLF5*J5UU6}F=6u`+06nH#`_^ecCdwNY+n28%bSA zBG{C{ymbMVKJ+>h5iC@IUTNsVYZpx6r5m@Tr%t#(UOM{j`J{E1 zc7Wje<(vZ0UrT^wI`Cf@&*Sc9eh98sZ=J9Ja0cLb0H)#ZIz4y(WAN_cCHz9dFR>-B zAb(ET@4k_~+})@0&&&3O-d(5S(|<#9xg~LSdzU1a)sUxA(XGWti)7d0L2G*7+PB}{ z$0xn4_}27J? zQ`+7eWFK4M2e6S|LtypCI)7kC>*UV?Ms(4B)8~l<{O0ewh;1KS@bkX>5PXloKX&|I z0D*qL>;FEaAhGKS)NzJ@n*)4dpAMF2-&mejNf(v!%@^hJM_oPqq|W-(Uu}5;#`Q|_ zJ?-g|o)eyzChbeI@>KA`5nooYg%j*%>Q+VZG ziTd#xa*ryZ;a$E0@fpAxpz(HE(WUa-ol?2^m%Fey(_U-U7=T< z$EB~td+mu@AKCSeoqx28PMYktWYF=TyZq7L&g;3FAJc2cX%|pI_jUeopW8Y1{Ve|K zHM*<5cir;G`Zw>31o@OY3YT|0)T&n|Ni6K zOL()lk0kotjS6=Z{ZpC#d-X#Tt(`_`{_fup z7z|_Z`&*+{dU{*zO$Ttr@Hg-`*p#XWLNuArtA1`{`jXq zK1oiGTEKU97w+#TzlV13%5b_ z&v!uWeSE*G^62%eUK#foyZwFVah$*(f;BzY8hASKQwsd2=&L=q^1&0^y?;^-Lv6ti zZBTVAfCt78BTijwsS07c#kN?g+JPcncei8sXj7J;f*9`R=1wZfeN>08kVm#%QT&o< zxCzXwb5~VmM%)B@!rrU?)DOd{cs@><^)|?cxVVV}HC)E$?Vhh4Y?okX)*2OUH5l3T zXkxPAg5zgnd@+SteK%%XmVY`6&8QMlL1Uw}WDEz&Fdy@&z-*m-;MI&4C|aCJ1jPkT zx>Av$GJz<8qTFC}QHv7~fP*F~&iboaHgmciv z3Z<5|qALOG!2_Ec4o;MCVl$ufV1;5$i4f#fF!d>`whx)3PojmiTYpPTO07IcKZf#Y zBcGOXWDnxd;{4L*mdH|1Hen9oe2vxX6&bw zVLPXJGOSm@*iS^((2p@13G!k}W}&w}QXjNZ4A}U8B@Ml&yT6`n?K?fum3aN0w1eYrv;*B4 zddUIWAq=p=Su`5fX-5(ijKUgFID-i>J>aDcItu-Wwtsb=pIXO8)lEFi&tWyC;jvmiQ@hIxNG$_2>>T<&nOv$*u>kEWFBzSH~X@Fd4DaF|IQleHH6VjrTri_N#ig{AP zXIk-h!GGvjT7ut@8sEswK;`{tuG?l48Pq|*{M9k%5Ie~IbufxUYJ1iP@X0z!I%_)( zHPKBXnY#Q^obTM#S;ow5z;QHN$qjpuCLT0B@l$cWg=mMC$sow|NkGR!xv{LuD+6iA zX>>IQ#7m!!OnstB;@omqafF!XsjjKQKJv>jFn^b}6P1&-zv7@Q3)e%OHv@e{p7Z7y z$?04q8GDZ!Af4QdHd?k^Hx$7x#^GeeZ@G+`ufpXR5SF?;A~OiCoN1`)K7G_9X|vg$ zrpAG+HHw)+DPdWf=xjxZHb<*bK0Wv&d5B34wcjjvba96BO+_2KRi&(FK8l$Y&5u@M zgnyoCODadOM5WU;G1xS6NND5OpXyR1A)&lH@o^}fnaCtpI|ms~Bz0P!tN1LD{+VPc zuJ(2*AO%MjN4Rozh*y4UN)2UF$swP*)>_2yxqc*v3auO?h5{51X4b4) zY&}S}Jku;Vk!KgaD>BFe8O(ga6b079seiL`LYMrg0kiex8vVuf_9*p!e8!Ia0#g9L z&rGL34uHSGz~=q}gJ8VAFb9XKC{TmpD->0A%An?6I00-DPuzZ`FPEZv+2iq~g9n0~^JN|koyqE}{I)5q# zIH&6o{vB^ae%3e7L%_e!I@N*AOaQ6sL3%G8e1jC z4^+G`uLur$*uOTH9uMK}esnJgIF9q%zSf_AJZW=2zRdN%f6jFN;-{{<(C3)g3FdE| z0DPE}fX^naH`iaS31o<099V!(B1Z#xjV%?~(g%wz}1H zogL5f-p6L{2g%#6g9!X9ducCdyR~~oQjqei|F`=yXEwE`P^N7aDc# zXcT?(N3{5+3$_Qk`Zle~M`^e!07wcq0)xLG;1>yZ4P6W={y2PW>Q_(DOKCmgJ_(As z3+QN2yU!=*XE6VX9+Q6qn*3}pF6`GgfBfti^y3{^`^U(AqQt-Ht9R!F|GesN-R@lC zx3tlZu|EU;PY!5 z?@9CX5r4T6zc{p)S_5d&ytt)3v3y@rp}(nhfG%a)*-W@!{mviB7k@tV{udGUF0K2- z+Y1x)&388yTvze$g19qXGL!OGDOn#mqsvY?grE4V;b+Y8Z<36g?w!0y#uPD7qBHmv zgqv1vj9A{ban_nKNS3v=sH!8#nZZX~)V4Ey0Z&6yS#lhehRTX#`FtF3;ykDr28AHp ziJ)Z}jFWk6c^lr(&wrf0*bAdIB#POD)D?)&$>VYAtK2kQg{sCi#!@awd_0U>7b!h# zSfG}-tVW6BjfUiTI2@cHn;ebjwLRNz6YDfva%Wuh=VC0LLM_a5V*zIZ#m?8e1tUs+i0^G?&M34hjJYjcyYn%oXh-FQ=W4Y%FdXO@0s2*O5{HEj zcf<<{F(X!EmxTqR`fl#c+S!Q>Mxf+`&qqsPGGXjs-AuQW;X;Om<;)_+t7)k$SIE5e z$G#QF4B`Yc&3{k_{)wB+_>xUjP1p%D?jWAhcY6{!8tUp_D3U6rh zC8{6SXKRGGUb_>LHq;VLnP}k_4T{5%nvJHgI}j*kG=FawgPFLi7UX;x4*5Wr*zAyG z=V;Ao&{k}B+{)0D!E8G^JIj1+8QhqUw8avV`7m&c{m4VM_6Z-r@HjD=v1LXlR+Afs zoO6raK$ipjaM&4A;CD3uBVZ(JE6u1 zHRAk?Bd}qOkuqNf^Mg$BBdvjk)vhA=%ComlG0LJ*6D;*mTj;A`*a~evbeALfTyBmS z>c?ganec3fv}{X{<P#pt9&+uiJto@a@K5g4m8ZY&MF z8arUdTwbGGVt_@U4oCZi$gi}ev-Zt1dD@#t+;^vIH^!xGKaBGcNzTMI0dUOTZpWLU z0e?DZrNM#Fr9^CF<3^H7SQ%5YxZ8d03Pfw(~byx82Y?&HT zVDr;npDC@}?ni}ajR_LkuJZNqq>fr5F$roJ>BMT@PEa+fF@mrTm^BmF6Kw=-J`A{1YgK)6j)P*IM65LLBMPrC5 zKG@4DENx4YcQ$YlpnHXfwOC+eTemhzPGpPOfDx&gf97~oX-8#2wN=f<=cP2=rDd#^ znF+x-w?-|sN{QVb_xM~an~G$}MZD4%ND9`b(Vn<@gE2-hX^;Fuc9XG^Dl(2OMSm3; zuQV=>wJp5mM|?XUgu_!SHyeNJFgtU1K(PJ5Gub7ySe>~IGMvu`OLC?L%wd(|0>u!V zJD5!d&@A?pP=Rx7VV)5bKcx5xqu45-wI&*HGg_H0`GJ0Fg=nbHm+Fve^F*eUvsxTZ zPMT_Y93mpTT=4B;WkX?+Y>)6b!hZuOBuy!o4J$AY`H0(dYj~$c?5>UQp)Z|TWv@jC zFAEt*E{P3~)}q7i76m&?&c(Po=@e3C2ImO%3K@>aM?Xvi;aCmgl$}Q#C0s7g6`C(6 z)7ji}(*(>$#8*iTlhmAEP)0QvA42m`m|jx&OMe}kkV_u~o3`Ry#00}W*?$O&)TTAG zkkUG<)3rXghHl=Dmy=xOsaZ%a=KGB-jt=vtYF4LoJ=hXLf(r2&uGrG2d>hxSomvi- zWi(pk>+{gg4@A8oWRl*1=HTIISy4yIfHSPb?3UcGr@pMRoM_7%w5TLPPFIOB4u<7y zTJWnWzqQ33vCgQ?DcI%cX@4@v&0Hco^0nXVkL`kRc>;lO{!I8Mt|W9wFs`2D4)8G|^O9ypu&}cbzlqb7oy{?~f@;Z}F6o0|6S)Uk9`94I zS0lO%RtpYsbAA&{>S2Nw>!2mEl3Z8KW;4#T^Oj^!)o|QO;!#>tdwT&%3qd5$q$QKO zEalBY5XOhCD`Fwf@sM7`*&sh2l#wt4v}TQN*89WW$+i7N8h@Ek#OI4GYfvRk5F>S9 z3`Z!IL8a2ja+6ygl8Yio=jT)AFT=CCqX;(QZ7}cNj3Oo^?hx9#rg!^t=*|ZXM9?(p)BmLYG%Ai$`i}c{rdJaorFpHOHa`MgWNUyYVv1X1V;UqEcPFgSG6C1UF zEu6*1T<3~}s^{l1GV+Xa43MeJM%>WCHMq9DbF-`zUw^Y`pFUwiB^~8;yJ+L>AjC(r0Ee- zZ=79SsecDtE4Eu6r`B}ji}Uq5;)X*(6Hg_I?JCBLCx>cY0NS-k11c!W4LUMBliS9k zHQ(+R_SiDc%|=7gfRos*8fr+JZx7sIaz1)TYwD2ZD3sQv?5hw42V}M{(Z)M#Q_+c~ zP@)&1y0k>us~l;>EO!cBuQT80Y(J~*!A!=;mVeVNSt?Gn!VRdg6&P^tfX0`q;ajJ( znK^}-Tkv8Q8RaIKq=q%kVwfw6V}@B$HpMx3Zp5yGLHiZWF34uci(_O48nMr^EXrIo zXDo9UMEb@xW{Itx@Gx33TcpUm3Fho~(&mIsY<8u=97kijSp#!R)GwEWzT0ftLmcI_ zD1R{#yr-t##^0@Dp=giBZhf*C{gg2}DoGSk#p1prz|*z7uuNKl^l_OU*P1!R64&u5 zi<&lKBjCJEwUh~KFxXB>ezaJ$2ssW3jn^nhJ}Wk5qz85lr^*KGV(tcK0Erk=!YFNOadeFNIDe+510-9Ma7>=nnYYt-BNDM`q%{O>s_js5 zmia76L97|e_)aX3L22NFgQcE^0Y{A*ISuv+wjNN79d2flGEg^%v4xz5<%BM*4Nx$(mX8-Wm8cauaEAnTjQj$s#;mdES75Ky4s2DsimY!%$HbF&R)YGmQ;M(p|BpXpJ3t)fRHY3BB0TE-S*raye_c zQ|)2Upl(qi93um6Not@xF^($6yP=tX;VnLo;%`0piWU zp@c13C>Yz$$mp<%a1m3S@o6-ea|ox{P6qlD3z&-_368WiSauSrg?}qZA}FebP9=|* zuBuK(3%-b&*ro#6)6aWmgsSy;AP%THDbV?Hq)J8D?^~3~)mt()pa z>Ha%ytt|Xx=Ww$wmVc4_LqMGZF5q;Bvn7iIG|!%z2W+*52E=hx4Gw9&ScFsTXaQy~ z8WGvhDv6^TFQ)O-b3Ip`3iDLv8O4VL#19CMm*#OjTE|SCv4}#BwtJGw8pUARj7FE@ zgdedQ8>2yz#U;*JG%0)3%$}@-jV|Qptu$>sZPvuqY=P67RDX|`3aa@u+Enxir8mV9 zT90Q-x@$+-(Lfm6OK=K}8BwE4AOgxqpJEvz(O4^6&&OhQ46r>jrH3|~Pj>7&%y3iO zi)+->)$@5Xp6NCd+Uil9dqu*`wa~^y46%mm^2}?okBI8XDdB^O1-7oD3@YuZ!)k?| zLkDuWQAsNq8h@Z^L`f1~*-*liLjqTqro$6r>#z2~dJ-JZK{7Sf!!DB+s94g*GF(Wz zJ;fM6jLs&_L>$u_kS6aUilLX0Gr`j#M-d$2Yze{z+o6&dq>2%(kJM{(X|_r+3XFx% zt|h767J#tUg4UWWm+sG%FX7BGAo0Q(Wb8gFxBHB|}AR1ip5m|Bc@^s(X9WICCmyL8boHIIu(LahpU|MIrcvN@JC8NSfG|^pw{V<$%&BPQt{RMly#UGlxbc&&TcF_6MwV+L4?2 zE~5sz)rJfTBpdEH_x!~yq_t@qS19Ilm3}~qaDS+a*cJuc5Jn5LYS-fYN%9EKF9B>8 zzPOPb2-8=&aLC7Vbc_p$w3=-IW2H}y1-izWS|UkLfCIukGy7?dPtW>zBhCj@;zNX1 zvn_1+6wSCi=aiwT*2M699;oZat(wIahL&T#QdAPK8jT>Fyiwx_!8udL`H1$oh@2d@ z^?w-BZPx%h&>+^??Q)OOX6j?QaD=n%64jT-B*nFjo*egdLPjLt>I!aoQW^~oVM1EQ zN=H#Jt7p$E;mlm0nTEIgaiNAf%Y}AXxx3w=B7-?pN(&&_rXvc@g6-59Va) zc70HiY=3g%C_LZ=H#_XTW=k^j^Lz_?7Jos9(O^pO^7N!bGh~{vdudC?bv_w7sn$du zL8v=#VjcGK9?!TE8-{Bju4V(VURKG9JeJEK8jO5Xm~YYZAp<1YZO7J7i)nW2HnDDa z2C8ZGPTtnmazEcgN_Cu><4uD=XE`zaIjT3|PDAmO10)+ww?a!ZCJgvgeO{{az<-03 zMt}sL+*65_Z+-QjBf0&$?V~%4_JQ9SF_rGHLLy4ZdUs*Pab|xzVct~XaCiH z_W#HBv;V@2v9t2|ebymO!B48wMm;hsnzFr(VH9$XQpRSvFp`u!uW7(-5|oLhf(V5S zd)%64BSi<@MKG*t=QwVi;MqXnCVzt(@hN8vF#D|fTU;FQq%5tXbFT6wi&CW++DgiE zD`+=LMk{BaBq~;M8i}J!|eU7(R`*XgU&L*psou@XYs9F#o#)d>s z%+0K>7iVXxz$q~pt4r`iUuf}WfA*FlyU~pk!_jf>pxo9t=z?^N2}@0b0Hx+zS|0A;lh2>H zb(Yz=TC36=Zuh+G2K;tM{rQ=l5EbGV#6M7T` zm9*V!X@s)Uabh49TU6=J(PFt$c6vM6tnB_>&;c)hjud~2a`{#-_kUB22Xx=o>&y@j zsa%dF&m@+!CIXzoj1DyprGzn^2l8+_0iUinVpK{7=K&NeB?&&qu*EUF&#nMngEl*r zXPhjwlXaESGdLI?4305O#VdEJHEX0o#3*W^U=F2vk>L8jKQ>$}?S7}N8+tlz+39Gp zTxmCeh$LldCb^ z(B~5na}|*wW-_rFnWw{Eu;RVH3A{3~Pw6~ZW4tX6u@>_NE-@UA@pdn&3q3iI1Wl(U zE;{rwoof7yOX19{6@T!URl#tML8Q`bA*-^t z@W%Wp;qibBnEj>?~PCw3^4m-8u<#s#phwStS|d76E(Xynl8##SK;62s3+#&U`v^)QXw|F`S~CipF7hw>-=h#}p6LXg;h^Yh5Ip z6~a}Ab^#5O#qi|J)`wb@LWX9^6S-z$WI|F~p9(4JRFb>lVYrQbMn6VNO2S!mZnFc* z@TsNZS=%*7iTpyWr_+GLSz=N#u1TH@!Y?yvNw6_pbAODl@medm+I*t{p= zw=anuMG^E?R&v5QAJ=I(-4~P0R8(}ik%}^R4ULu@ysAwSPX=2W_f)at>QNArV{2gFQlUsk3G7 z^Oba@7J0P?f?$#?&c$)+Wk!Y|$zW0wXqyUDp6U=~dP_nLgGnwHW;?Z7W8|(yfh&=f zj*WdLoVS~8xepHt2bI;X0^-_EB@N9;NClrRhmp+hh|1h9N+@a0Y*jNPymj_9J+9_d zg@0^PQ=v3`B2EXCP&+xKQtpW!algBE`|9)S_mn`q)sqCGZ;O?xF?@Ztr+6Y624@Mh z)6DTO8Tj>>VR2$4GGbMpI3DZ{4!>HF#By)~*tbZ^vuZCPb65+U^CExI20a!#G8MKd=f1wQ%&%lKmLs~)u|*h7kD_SA7?JK$QVVG4qp6Pxk$ zu%^W|JrR9#ui$j8$+JTdEw<5aVSg=$Sfino<C26iKNDET0>h_L7nl8xbf0Qx0L>oS==n-K<=HX%4c+Jc_=1a?YZHSAS=15g%9b zPBXZ=iWUuv`B@INc3w`@lh_yi}vevympdpV?g@Mp>}IGa4CM|x=|T( zk(A?h77BUK2tvN1rnY%mxz zVL_8T3KMj-Huoz6;PIT329z~|rVd3r%aZ(O*`E9@B%;4Z_PY>>342pfkm$}d0YtT> z;0*?GI-UByYBqN4!)Y{$V6&;Ubhf6o2_LD*R^5raqqd&LQq247aDO=Fc=a4^4}NSO zENPUWn}D*WQ-(gmYp+cJKS03062}>#m|WMjI~ZCsVQkl)X%g4~-Bh)?E!|W+Yy}_< z%_(Zj&KuF92Dmp~)Q#X#CCOUNq^9(tOnUfOOk85l%*ipc^!YiRZ;vZvhc)zqS{32K zVPh;9p$DJlPK-fqCbXL2$EAO#k<9FDIIu~OWtYc+5;5aB`wenlknW5Z^ns3@;nS1~ z6km-gbY`xEh9=phQ9R0Oi~(POo=rwn5?~_9MYcRoYGFcdRBj1VC!86_MKGcT->N8H zH%wu_S2eexS${XDx#6*?t2LtQm3iJ2Q$T3#^$w@XBd(FLbDAcz(A$44N2|ohIhPwb z?8u*w)){LL77ewR^48R`6WDy`ZNB1dX}@0W4*UEd8JHcoLYAcdcBP!l)zSds36L*q zZJwAzlcI(FWHR)y<1P*{tSw8tsVPgOZN{bp`=l%K)S1GXuekI8tlzawpTcbD@}z0Z zf<-W$v)Uwc2xBKX)xLi!X}}9+zG5J>KPaWJ9tUQMS9nRcJ87ukscE!GjpCFTi*+M& zc;-&@gf&J7MrKeClP2kUq+`dyfF*g7m70|-WqzP0c}paL?CY_#O})_2n@vFnqOUcR zg%U3co6;zaJx;PwTfy_Z9YlC|*zTjooyZ~1S^FcI8k|iulSY3Sl+^xAp$sBTydnd0 zusqVW6t=QNV>{ZU#pxuR046@$m==s+{H8YTG&SZZGKELzkl5(Bsuh}wFZP08Eb>!) zC{zy2A#s{c#GT|?ligZlo4KIOrQvQhKEMT`92dz-vNOgWhx%HXQq*v#p3_+Z`)16} z3h{vFOs?AIXn}vU=OxlMu^4a=H7&gS

yT~$Vl3j4yb>Itq*HODk#L~5?&aRC?d7H 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 W1O$Tr>$sF`3IuXEPf~;rmHt0vX}eqi delta 65480 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¥&ei`~(I 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 diff --git a/demo/public/jessibuca.js b/demo/public/jessibuca.js index 9a966d0f..f6840ba8 100644 --- a/demo/public/jessibuca.js +++ b/demo/public/jessibuca.js @@ -70,7 +70,7 @@ // second loadingTimeoutReplay: true, // loading timeout replay. default is true - heartTimeoutReplay: false, + heartTimeoutReplay: true, // heart timeout replay. loadingTimeoutReplayTimes: 3, // loading timeout replay fail times @@ -228,6 +228,7 @@ loadingTimeout: EVENTS.loadingTimeout, delayTimeout: EVENTS.delayTimeout, fullscreen: 'fullscreen', + webFullscreen: EVENTS.webFullscreen, play: EVENTS.play, pause: EVENTS.pause, mute: EVENTS.mute, @@ -1168,7 +1169,7 @@ gl.deleteBuffer(texturePosBuffer); gl.deleteTexture(yTextureRef); gl.deleteTexture(uTextureRef); - gl.deleteBuffer(vTextureRef); + gl.deleteTexture(vTextureRef); } catch (e) {// console.error(e); } } @@ -1660,7 +1661,7 @@ proxy } = this.player.events; proxy(this.$videoElement, 'canplay', () => { - this.player.debug.log('Video', 'canplay'); + this.player.debug.log('Video', `canplay and _delayPlay is ${this._delayPlay}`); if (this._delayPlay) { this._play(); @@ -1674,7 +1675,8 @@ const timeStamp = parseInt(event.timeStamp, 10); this.player.emit(EVENTS.timeUpdate, timeStamp); // check is pause; - if (!this.isPlaying()) { + if (!this.isPlaying() && this.init) { + this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`); this.$videoElement.play(); } }); diff --git a/demo/public/jessibuca.js.map b/demo/public/jessibuca.js.map index 489a8bab..72efdb65 100644 --- a/demo/public/jessibuca.js.map +++ b/demo/public/jessibuca.js.map @@ -1 +1 @@ -{"version":3,"file":"jessibuca.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/constant/index.js","../../src/utils/debug.js","../../src/utils/events.js","../../src/player/property.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/player/events.js","../../src/utils/emitter.js","../../src/utils/webgl.js","../../src/video/commonLoader.js","../../src/utils/file-save.js","../../src/video/canvasLoader.js","../../src/video/videoLoader.js","../../src/video/index.js","../../src/audio/audioContextLoader.js","../../src/audio/index.js","../../src/stream/fetchLoader.js","../../src/stream/websocketLoader.js","../../src/stream/index.js","../../node_modules/recordrtc/RecordRTC.js","../../src/recorder/recordRTCLoader.js","../../src/recorder/index.js","../../src/worker/index.js","../../src/demux/commonLoader.js","../../src/demux/flvLoader.js","../../src/demux/m7sLoader.js","../../src/demux/index.js","../../src/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/decoder/webcodecs.js","../../src/control/icons.js","../../src/control/template.js","../../src/control/observer.js","../../src/control/property.js","../../src/control/events.js","../../node_modules/style-inject/dist/style-inject.es.js","../../src/control/hotkey.js","../../src/control/index.js","../../src/player/observer.js","../../src/remux/fmp4-generator.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: false,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()'\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt.debug) {\n console.log(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt.debug) {\n console.warn(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n console.error(`Jessibuca: [${name}]`, ...args);\n };\n }\n}\n","export default class Events {\n constructor(master) {\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.master = master;\n }\n\n proxy(target, name, callback, option = {}) {\n if (!target) {\n return;\n }\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option));\n }\n target.addEventListener(name, callback, option);\n const destroy = () => target.removeEventListener(name, callback, option);\n this.destroys.push(destroy);\n return destroy;\n }\n\n destroy() {\n this.master.debug && this.master.debug.log(`Events`, 'destroy');\n this.destroys.forEach(event => event());\n }\n}\n","export default (player) => {\n Object.defineProperty(player, 'rect', {\n get: () => {\n const clientRect = player.$container.getBoundingClientRect()\n clientRect.width = Math.max(clientRect.width, player.$container.clientWidth);\n clientRect.height = Math.max(clientRect.height, player.$container.clientHeight);\n return clientRect;\n },\n });\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(key => {\n Object.defineProperty(player, key, {\n get: () => {\n return player.rect[key];\n },\n });\n });\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {getTarget, isMobile, setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = (e) => {\n if (getTarget(e) === player.$container) {\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n\n // 如果不是fullscreen,则触发下 resize 方法\n if (!player.fullscreen) {\n player.resize();\n } else {\n if (player._opt.useMSE) {\n player.resize();\n }\n }\n }\n };\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n //\n player.on(EVENTS.decoderWorkerInit, () => {\n player.debug.log('player', 'has loaded');\n player.loaded = true;\n })\n\n //\n player.on(EVENTS.play, () => {\n player.loading = false;\n })\n\n //\n player.on(EVENTS.fullscreen, (value) => {\n if (value) {\n try {\n screenfull.request(player.$container).then(() => {\n\n }).catch((e) => {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n });\n\n } catch (e) {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n }\n } else {\n try {\n screenfull.exit().then(() => {\n if (player.webFullscreen) {\n player.webFullscreen = false;\n }\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n if (isMobile()) {\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('jessibuca-fullscreen-web')\n } else {\n player.$container.classList.remove('jessibuca-fullscreen-web')\n }\n //\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n })\n }\n\n\n //\n player.on(EVENTS.resize, () => {\n player.video && player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\n }\n\n player.debug.log('player events', EVENTS[key], value);\n })\n })\n\n Object.keys(EVENTS_ERROR).forEach((key) => {\n player.on(EVENTS_ERROR[key], (value) => {\n player.debug.log('player event error', EVENTS_ERROR[key], value);\n })\n })\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({fn, ctx});\n return this;\n }\n\n once(name, fn, ctx) {\n const self = this;\n\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {});\n\n if (!name) {\n Object.keys(e).forEach((key) => {\n delete e[key];\n })\n delete this.e\n return;\n }\n\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n return this;\n }\n}\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteBuffer(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor() {\n super();\n this.init = false;\n }\n\n resetInit() {\n this.init = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n }\n destroy() {\n this.resetInit();\n this.player.$container.removeChild(this.$videoElement);\n this.off();\n }\n\n //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[data.encTypeCode];\n }\n\n if (data.width) {\n this.videoInfo.width = data.width;\n }\n\n if (data.height) {\n this.videoInfo.height = data.height;\n }\n\n // video 基本信息\n if (this.videoInfo.encType && this.videoInfo.height && this.videoInfo.width && !this.init) {\n this.player.emit(EVENTS.videoInfo, this.videoInfo);\n this.init = true;\n }\n }\n\n play() {\n\n }\n\n pause() {\n\n }\n\n clearView() {\n\n }\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom(blob, opts) {\n if (typeof opts === 'undefined') opts = {autoBom: false}\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = {autoBom: !opts}\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type})\n }\n return blob\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {\n }\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs() { /* noop */\n }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n // Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561)\n var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () {\n URL.revokeObjectURL(a.href)\n }, 4E4) // 40s\n setTimeout(function () {\n click(a)\n }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () {\n click(a)\n })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url)\n }, 4E4) // 40s\n }\n }\n)\n\n\nexport default saveAs\n","import Emitter from \"../utils/emitter\";\nimport {\n closeVideoFrame,\n createContextGL,\n createEmptyImageBitmap,\n dataURLToFile,\n downloadImg,\n isMobile,\n now,\n supportOffscreen\n} from \"../utils\";\nimport createWebGL from \"../utils/webgl\";\nimport {CANVAS_RENDER_TYPE, CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class CanvasVideoLoader extends CommonLoader {\n\n constructor(player) {\n super()\n this.player = player;\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.style.position = \"absolute\";\n $canvasElement.style.top = 0;\n $canvasElement.style.left = 0;\n this.$videoElement = $canvasElement;\n player.$container.appendChild(this.$videoElement);\n\n this.context2D = null;\n this.contextGl = null;\n this.contextGlRender = null;\n this.contextGlDestroy = null;\n this.bitmaprenderer = null;\n this.renderType = null;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n //\n this._initCanvasRender();\n this.player.debug.log('CanvasVideo', 'init');\n }\n\n destroy() {\n super.destroy();\n if (this.contextGl) {\n this.contextGl = null;\n }\n if (this.context2D) {\n this.context2D = null;\n }\n if (this.contextGlRender) {\n this.contextGlDestroy && this.contextGlDestroy();\n this.contextGlDestroy = null;\n this.contextGlRender = null;\n }\n if (this.bitmaprenderer) {\n this.bitmaprenderer = null;\n }\n\n this.renderType = null;\n\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\n }\n\n _initContext2D() {\n this.context2D = this.$videoElement.getContext('2d');\n }\n\n\n // 渲染类型\n _initCanvasRender() {\n if (this.player._opt.useWCS && !this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.webcodecs;\n this._initContext2D();\n } else if (this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.offscreen;\n this._bindOffscreen();\n } else {\n this.renderType = CANVAS_RENDER_TYPE.webgl;\n this._initContextGl();\n }\n }\n\n _supportOffscreen() {\n return supportOffscreen(this.$videoElement) && this.player._opt.useOffscreen;\n }\n\n //\n _bindOffscreen() {\n this.bitmaprenderer = this.$videoElement.getContext('bitmaprenderer');\n }\n\n initCanvasViewSize() {\n this.$videoElement.width = this.videoInfo.width;\n this.$videoElement.height = this.videoInfo.height;\n this.resize();\n }\n\n //\n render(msg) {\n this.player.videoTimestamp = msg.ts;\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n this.bitmaprenderer.transferFromImageBitmap(msg.buffer);\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n // can use createImageBitmap in wexin\n this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\n closeVideoFrame(msg.videoFrame);\n break;\n }\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const dataURL = this.$videoElement.toDataURL(formatType[format] || formatType.png, encoderOptions);\n\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename);\n }\n }\n\n }\n\n //\n clearView() {\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n createEmptyImageBitmap(this.$videoElement.width, this.$videoElement.height).then((imageBitMap) => {\n this.bitmaprenderer.transferFromImageBitmap(imageBitMap);\n })\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n this.context2D.clearRect(0, 0, this.$videoElement.width, this.$videoElement.height)\n break;\n }\n }\n\n resize() {\n this.player.debug.log('canvasVideo', 'resize');\n const option = this.player._opt;\n let width = this.player.width;\n let height = this.player.height;\n if (option.hasControl && !option.controlAutoHide) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n const rotate = option.rotate;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n if (rotate === 270 || rotate === 90) {\n resizeWidth = this.$videoElement.height;\n resizeHeight = this.$videoElement.width;\n }\n\n const wScale = width / resizeWidth;\n const hScale = height / resizeHeight;\n\n let scale = wScale > hScale ? hScale : wScale;\n //\n if (!option.isResize) {\n if (wScale !== hScale) {\n scale = wScale + ',' + hScale;\n }\n }\n //\n if (option.isFullResize) {\n scale = wScale > hScale ? wScale : hScale;\n }\n let transform = \"scale(\" + scale + \")\";\n\n if (rotate) {\n transform += ' rotate(' + rotate + 'deg)'\n }\n\n this.$videoElement.style.transform = transform;\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport {dataURLToFile, downloadImg, getBrowser, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n const $canvasElement = document.createElement('canvas');\n $videoElement.muted = true;\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n this._delayPlay = false;\n player.$container.appendChild($videoElement);\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n const _opt = this.player._opt;\n if (_opt.useWCS && _opt.wcsUseVideoRender) {\n this.trackGenerator = new MediaStreamTrackGenerator({kind: 'video'});\n $videoElement.srcObject = new MediaStream([this.trackGenerator]);\n this.vwriter = this.trackGenerator.writable.getWriter();\n }\n this.$videoElement = $videoElement;\n this.$canvasElement = $canvasElement;\n this.canvasContext = $canvasElement.getContext('2d');\n this.fixChromeVideoFlashBug();\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', 'canplay');\n if (this._delayPlay) {\n this._play();\n }\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n this.player.emit(EVENTS.videoWaiting);\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n const timeStamp = parseInt(event.timeStamp, 10);\n this.player.emit(EVENTS.timeUpdate, timeStamp)\n // check is pause;\n if (!this.isPlaying()) {\n this.$videoElement.play();\n }\n })\n\n this.player.debug.log('Video', 'init');\n }\n\n destroy() {\n super.destroy();\n this.$canvasElement = null;\n this.canvasContext = null;\n if (this.$videoElement) {\n this.$videoElement.pause();\n this.$videoElement.currentTime = 0;\n this.$videoElement.src = ''\n this.$videoElement.removeAttribute('src');\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator.stop();\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n this.vwriter.close();\n this.vwriter = null;\n }\n this.player.debug.log('Video', 'destroy');\n }\n\n fixChromeVideoFlashBug() {\n const browser = getBrowser();\n const type = browser.type.toLowerCase();\n if (type === 'chrome' || type === 'edge') {\n const $container = this.player.$container;\n $container.style.backdropFilter = 'blur(0px)';\n $container.style.translateZ = '0';\n }\n }\n\n play() {\n if (this.$videoElement) {\n const readyState = this._getVideoReadyState();\n this.player.debug.log('Video', `play and readyState: ${readyState}`);\n if (readyState === 0) {\n this.player.debug.warn('Video', 'readyState is 0 and set _delayPlay to true');\n this._delayPlay = true;\n return;\n }\n this._play();\n }\n }\n\n _getVideoReadyState() {\n let result = 0;\n if (this.$videoElement) {\n result = this.$videoElement.readyState;\n }\n return result;\n }\n\n _play() {\n this.$videoElement && this.$videoElement.play().then(() => {\n this._delayPlay = false;\n this.player.debug.log('Video', '_play success');\n setTimeout(() => {\n if (!this.isPlaying()) {\n this.player.debug.warn('Video', `play failed and retry play`)\n this._play();\n }\n }, 100)\n\n }).catch((e) => {\n this.player.debug.error('Video', '_play error', e);\n })\n }\n\n pause(isNow) {\n // 预防\n // https://developer.chrome.com/blog/play-request-was-interrupted/\n // http://alonesuperman.com/?p=23\n if (isNow) {\n this.$videoElement && this.$videoElement.pause();\n } else {\n setTimeout(() => {\n this.$videoElement && this.$videoElement.pause();\n }, 100)\n }\n }\n\n clearView() {\n\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const $video = this.$videoElement;\n let canvas = this.$canvasElement;\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n this.canvasContext.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(formatType[format] || formatType.png, encoderOptions);\n // release memory\n this.canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = 0;\n canvas.height = 0;\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL);\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename)\n }\n }\n\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n //\n render(msg) {\n if (this.vwriter) {\n this.vwriter.write(msg.videoFrame);\n }\n }\n\n resize() {\n let width = this.player.width;\n let height = this.player.height;\n const option = this.player._opt;\n const rotate = option.rotate;\n if (option.hasControl && !option.controlAutoHide) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n\n this.$videoElement.width = width;\n this.$videoElement.height = height;\n\n if (rotate === 270 || rotate === 90) {\n this.$videoElement.width = height;\n this.$videoElement.height = width;\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n let objectFill = 'contain';\n\n // 默认是true\n // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n\n // 视频画面完全填充canvas区域,画面会被拉伸\n if (!option.isResize) {\n objectFill = 'fill';\n }\n\n // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n if (option.isFullResize) {\n objectFill = 'none';\n }\n this.$videoElement.style.objectFit = objectFill;\n this.$videoElement.style.transform = 'rotate(' + rotate + 'deg)';\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n isPlaying() {\n return this.$videoElement && !this.$videoElement.paused;\n }\n}\n","import CanvasVideoLoader from './canvasLoader';\nimport VideoLoader from \"./videoLoader\";\n\nexport default class Video {\n constructor(player) {\n const Loader = Video.getLoaderFactory(player._opt);\n return new Loader(player);\n }\n\n static getLoaderFactory(opt) {\n if (opt.useMSE || (opt.useWCS && !opt.useOffscreen && opt.wcsUseVideoRender)) {\n return VideoLoader;\n } else {\n return CanvasVideoLoader;\n }\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {AUDIO_ENC_TYPE, AUDIO_SYNC_VIDEO_DIFF, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\nimport {clamp, noop} from \"../utils\";\n\nexport default class AudioContextLoader extends Emitter {\n constructor(player) {\n super();\n this.bufferList = [];\n this.player = player;\n this.scriptNode = null;\n this.hasInitScriptNode = false;\n this.audioContextChannel = null;\n\n this.audioContext = new (window.AudioContext || window.webkitAudioContext)();\n //\n this.gainNode = this.audioContext.createGain();\n // Get an AudioBufferSourceNode.\n // This is the AudioNode to use when we want to play an AudioBuffer\n const source = this.audioContext.createBufferSource();\n // set the buffer in the AudioBufferSourceNode\n source.buffer = this.audioContext.createBuffer(1, 1, 22050);\n // connect the AudioBufferSourceNode to the\n // destination so we can hear the sound\n source.connect(this.audioContext.destination);\n // noteOn as start\n // start the source playing\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n this.audioBufferSourceNode = source;\n //\n this.mediaStreamAudioDestinationNode = this.audioContext.createMediaStreamDestination();\n //\n this.audioEnabled(true);\n // default setting 0\n this.gainNode.gain.value = 0;\n\n this.playing = false;\n //\n this.audioSyncVideoOption = {\n diff: null\n };\n\n\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n this.init = false;\n this.hasAudio = false;\n\n // update\n this.on(EVENTS.videoSyncAudio, (options) => {\n // this.player.debug.log('AudioContext', `videoSyncAudio , audioTimestamp: ${options.audioTimestamp},videoTimestamp: ${options.videoTimestamp},diff:${options.diff}`)\n this.audioSyncVideoOption = options;\n })\n\n this.player.debug.log('AudioContext', 'init');\n }\n\n resetInit() {\n this.init = false;\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n }\n\n\n destroy() {\n this.closeAudio();\n this.resetInit();\n this.audioContext.close();\n this.audioContext = null;\n this.gainNode = null;\n this.hasAudio = false;\n this.playing = false;\n if (this.scriptNode) {\n this.scriptNode.onaudioprocess = noop;\n this.scriptNode = null;\n }\n this.audioBufferSourceNode = null;\n this.mediaStreamAudioDestinationNode = null;\n this.hasInitScriptNode = false;\n this.audioSyncVideoOption = {\n diff: null\n };\n this.off();\n this.player.debug.log('AudioContext', 'destroy');\n }\n\n updateAudioInfo(data) {\n if (data.encTypeCode) {\n this.audioInfo.encType = AUDIO_ENC_TYPE[data.encTypeCode];\n }\n\n if (data.channels) {\n this.audioInfo.channels = data.channels;\n }\n\n if (data.sampleRate) {\n this.audioInfo.sampleRate = data.sampleRate;\n }\n\n // audio 基本信息\n if (this.audioInfo.sampleRate && this.audioInfo.channels && this.audioInfo.encType && !this.init) {\n this.player.emit(EVENTS.audioInfo, this.audioInfo);\n this.init = true;\n }\n }\n\n //\n get isPlaying() {\n return this.playing;\n }\n\n get isMute() {\n return this.gainNode.gain.value === 0 || this.isStateSuspended();\n }\n\n get volume() {\n return this.gainNode.gain.value;\n }\n\n get bufferSize() {\n return this.bufferList.length;\n }\n\n\n initScriptNode() {\n this.playing = true;\n\n if (this.hasInitScriptNode) {\n return;\n }\n const channels = this.audioInfo.channels;\n\n const scriptNode = this.audioContext.createScriptProcessor(1024, 0, channels);\n // tips: if audio isStateSuspended onaudioprocess method not working\n scriptNode.onaudioprocess = (audioProcessingEvent) => {\n const outputBuffer = audioProcessingEvent.outputBuffer;\n\n if (this.bufferList.length && this.playing) {\n // just for wasm\n if (!this.player._opt.useWCS && !this.player._opt.useMSE && this.player._opt.wasmDecodeAudioSyncVideo) {\n // audio > video\n // wait\n if (this.audioSyncVideoOption.diff > AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`)\n // wait\n return;\n }\n // audio < video\n // throw away then chase video\n else if (this.audioSyncVideoOption.diff < -AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`)\n\n //\n let bufferItem = this.bufferList.shift();\n //\n while ((bufferItem.ts - this.player.videoTimestamp < -AUDIO_SYNC_VIDEO_DIFF) && this.bufferList.length > 0) {\n // this.player.debug.warn('AudioContext', `audioSyncVideoOption less than inner ts is:${bufferItem.ts}, videoTimestamp is ${this.player.videoTimestamp},diff:${bufferItem.ts - this.player.videoTimestamp}`)\n bufferItem = this.bufferList.shift();\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n }\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n\n const bufferItem = this.bufferList.shift();\n\n // update audio time stamp\n if (bufferItem && bufferItem.ts) {\n this.player.audioTimestamp = bufferItem.ts;\n }\n\n for (let channel = 0; channel < channels; channel++) {\n const b = bufferItem.buffer[channel]\n const nowBuffering = outputBuffer.getChannelData(channel);\n for (let i = 0; i < 1024; i++) {\n nowBuffering[i] = b[i] || 0\n }\n }\n }\n }\n\n scriptNode.connect(this.gainNode);\n this.scriptNode = scriptNode;\n this.gainNode.connect(this.audioContext.destination);\n this.gainNode.connect(this.mediaStreamAudioDestinationNode);\n this.hasInitScriptNode = true;\n }\n\n mute(flag) {\n if (flag) {\n if (!this.isMute) {\n this.player.emit(EVENTS.mute, flag);\n }\n this.setVolume(0);\n this.audioEnabled(false);\n this.clear();\n } else {\n if (this.isMute) {\n this.player.emit(EVENTS.mute, flag);\n }\n this.setVolume(0.5);\n this.audioEnabled(true);\n }\n }\n\n setVolume(volume) {\n volume = parseFloat(volume).toFixed(2);\n if (isNaN(volume)) {\n return;\n }\n this.audioEnabled(true);\n volume = clamp(volume, 0, 1);\n this.gainNode.gain.value = volume;\n this.gainNode.gain.setValueAtTime(volume, this.audioContext.currentTime);\n this.player.emit(EVENTS.volumechange, this.player.volume);\n }\n\n closeAudio() {\n if (this.hasInitScriptNode) {\n this.scriptNode && this.scriptNode.disconnect(this.gainNode);\n this.gainNode && this.gainNode.disconnect(this.audioContext.destination);\n this.gainNode && this.gainNode.disconnect(this.mediaStreamAudioDestinationNode);\n }\n this.clear();\n }\n\n // 是否播放。。。\n audioEnabled(flag) {\n if (flag) {\n if (this.audioContext.state === 'suspended') {\n // resume\n this.audioContext.resume();\n }\n } else {\n if (this.audioContext.state === 'running') {\n // suspend\n this.audioContext.suspend();\n }\n }\n }\n\n isStateRunning() {\n return this.audioContext.state === 'running';\n }\n\n isStateSuspended() {\n return this.audioContext.state === 'suspended';\n }\n\n clear() {\n this.bufferList = [];\n }\n\n play(buffer, ts) {\n // if is mute\n if (this.isMute) {\n return;\n }\n\n this.hasAudio = true;\n\n this.bufferList.push({\n buffer,\n ts\n });\n\n if (this.bufferList.length > 20) {\n this.player.debug.warn('AudioContext', `bufferList is large: ${this.bufferList.length}`)\n\n // out of memory\n if (this.bufferList.length > 50) {\n this.bufferList.shift();\n }\n }\n // this.player.debug.log('AudioContext', `bufferList is ${this.bufferList.length}`)\n }\n\n pause() {\n this.audioSyncVideoOption = {\n diff: null\n };\n this.playing = false;\n this.clear();\n }\n\n resume() {\n this.playing = true;\n }\n\n\n}\n","import AudioContextLoader from \"./audioContextLoader\";\nimport AudioLoader from \"./audioLoader\";\n\nexport default class Audio {\n constructor(player) {\n const Loader = Audio.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return AudioContextLoader;\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FETCH_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class FetchLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.playing = false;\n\n this.abortController = new AbortController();\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n player.debug.log('FetchStream', 'init');\n }\n\n destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options = {}) {\n const {demux} = this.player;\n this.player._times.streamStart = now();\n const fetchOptions = Object.assign({\n signal: this.abortController.signal,\n }, {\n headers: options.headers || {}\n });\n fetch(url, fetchOptions).then((res) => {\n const reader = res.body.getReader();\n this.emit(EVENTS.streamSuccess);\n const fetchNext = () => {\n reader.read().then(({done, value}) => {\n if (done) {\n demux.close();\n } else {\n this.streamRate && this.streamRate(value.byteLength);\n demux.dispatch(value);\n fetchNext();\n }\n }\n ).catch((e) => {\n demux.close();\n const errorString = e.toString();\n // aborted a request 。\n if (errorString.indexOf(FETCH_ERROR.abortError1) !== -1) {\n return\n }\n\n if (errorString.indexOf(FETCH_ERROR.abortError2) !== -1) {\n return;\n }\n\n if (e.name === FETCH_ERROR.abort) {\n return;\n }\n\n\n this.abort();\n\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n fetchNext();\n }).catch((e) => {\n if (e.name === 'AbortError') {\n return;\n }\n demux.close();\n this.abort();\n this.emit(EVENTS_ERROR.fetchError, e)\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n\n abort() {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null\n }\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, WEBSOCKET_STATUS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class WebsocketLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.socket = null;\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.wsUrl = null;\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n\n player.debug.log('WebsocketLoader', 'init');\n }\n\n destroy() {\n if (this.socket) {\n this.socket.close();\n this.socket = null;\n }\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.streamRate = null;\n this.wsUrl = null;\n this.off();\n this.player.debug.log('websocketLoader', 'destroy');\n }\n\n _createWebSocket() {\n const player = this.player;\n const {\n debug,\n events: {proxy},\n demux,\n } = player;\n\n this.socket = new WebSocket(this.wsUrl);\n this.socket.binaryType = 'arraybuffer';\n proxy(this.socket, 'open', () => {\n this.emit(EVENTS.streamSuccess);\n debug.log('websocketLoader', 'socket open');\n this.socketStatus = WEBSOCKET_STATUS.open;\n });\n\n proxy(this.socket, 'message', event => {\n this.streamRate && this.streamRate(event.data.byteLength);\n this._handleMessage(event.data);\n });\n\n\n proxy(this.socket, 'close', () => {\n debug.log('websocketLoader', 'socket close');\n this.emit(EVENTS.streamEnd);\n this.socketStatus = WEBSOCKET_STATUS.close;\n });\n\n proxy(this.socket, 'error', error => {\n debug.log('websocketLoader', 'socket error');\n this.emit(EVENTS_ERROR.websocketError, error);\n this.player.emit(EVENTS.error, EVENTS_ERROR.websocketError);\n this.socketStatus = WEBSOCKET_STATUS.error;\n demux.close();\n debug.log('websocketLoader', `socket error:`, error);\n });\n }\n\n //\n _handleMessage(message) {\n const {demux} = this.player;\n if (!demux) {\n this.player.debug.warn('websocketLoader', 'websocket handle message demux is null');\n return;\n }\n demux.dispatch(message);\n }\n\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options) {\n this.player._times.streamStart = now();\n this.wsUrl = url;\n this._createWebSocket();\n }\n\n\n}\n","import FetchLoader from \"./fetchLoader\";\nimport WebsocketLoader from \"./websocketLoader\";\nimport {PLAYER_PLAY_PROTOCOL} from \"../constant\";\n\nexport default class Stream {\n constructor(player) {\n const Loader = Stream.getLoaderFactory(player._opt.protocol);\n return new Loader(player);\n }\n\n static getLoaderFactory(protocol) {\n if (protocol === PLAYER_PLAY_PROTOCOL.fetch) {\n return FetchLoader;\n } else if (protocol === PLAYER_PLAY_PROTOCOL.websocket) {\n return WebsocketLoader;\n }\n }\n}\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","import {downloadRecord, now} from \"../utils\";\nimport saveAs from \"../utils/file-save\";\nimport RecordRTC from 'recordrtc';\nimport {EVENTS, FILE_SUFFIX} from \"../constant\";\nimport Emitter from \"../utils/emitter\";\n\nexport default class RecordRTCLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.fileName = '';\n this.fileType = player._opt.recordType || FILE_SUFFIX.webm;\n this.isRecording = false;\n this.recordingTimestamp = 0;\n this.recordingInterval = null;\n player.debug.log('Recorder', 'init');\n }\n\n destroy() {\n this._reset();\n this.player.debug.log('Recorder', 'destroy');\n }\n\n setFileName(fileName, fileType) {\n this.fileName = fileName;\n\n if (FILE_SUFFIX.mp4 === fileType || FILE_SUFFIX.webm === fileType) {\n this.fileType = fileType;\n }\n }\n\n get recording() {\n return this.isRecording;\n }\n\n get recordTime() {\n return this.recordingTimestamp;\n }\n\n startRecord() {\n const debug = this.player.debug;\n const options = {\n type: 'video',\n mimeType: 'video/webm;codecs=h264',\n onTimeStamp: (timestamp) => {\n debug.log('Recorder', 'record timestamp :' + timestamp);\n },\n disableLogs: !this.player._opt.debug\n }\n\n try {\n const stream = this.player.video.$videoElement.captureStream(25);\n if (this.player.audio && this.player.audio.mediaStreamAudioDestinationNode &&\n this.player.audio.mediaStreamAudioDestinationNode.stream &&\n !this.player.audio.isStateSuspended() &&\n this.player.audio.hasAudio && this.player._opt.hasAudio) {\n const audioStream = this.player.audio.mediaStreamAudioDestinationNode.stream;\n if (audioStream.getAudioTracks().length > 0) {\n const audioTrack = audioStream.getAudioTracks()[0];\n if (audioTrack && audioTrack.enabled) {\n stream.addTrack(audioTrack);\n }\n }\n }\n this.recorder = RecordRTC(stream, options);\n } catch (e) {\n debug.error('Recorder', 'startRecord error', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.player.emit(EVENTS.recording, true);\n this.recorder.startRecording();\n debug.log('Recorder', 'start recording');\n this.player.emit(EVENTS.recordStart);\n this.recordingInterval = window.setInterval(() => {\n this.recordingTimestamp += 1;\n this.player.emit(EVENTS.recordingTimestamp, this.recordingTimestamp);\n }, 1000);\n }\n }\n\n stopRecordAndSave() {\n if (!this.recorder || !this.isRecording) {\n return;\n }\n this.recorder.stopRecording(() => {\n this.player.debug.log('Recorder', 'stop recording');\n this.player.emit(EVENTS.recordEnd)\n const fileName = (this.fileName || now()) + '.' + (this.fileType || FILE_SUFFIX.webm)\n saveAs(this.recorder.getBlob(), fileName)\n this._reset();\n this.player.emit(EVENTS.recording, false);\n })\n }\n\n _reset() {\n this.isRecording = false;\n this.recordingTimestamp = 0;\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n this.fileName = null;\n if (this.recordingInterval) {\n clearInterval(this.recordingInterval);\n }\n this.recordingInterval = null;\n }\n\n\n}\n","import RecordRTCLoader from \"./recordRTCLoader\";\n\nexport default class Recorder {\n constructor(player) {\n const Loader = Recorder.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return RecordRTCLoader;\n }\n}\n","import {EVENTS, EVENTS_ERROR, MEDIA_TYPE, WASM_ERROR, WORKER_CMD_TYPE, WORKER_SEND_TYPE} from \"../constant\";\nimport {isWebglRenderSupport, now} from \"../utils\";\n\nexport default class DecoderWorker {\n constructor(player) {\n this.player = player;\n this.decoderWorker = new Worker(player._opt.decoder)\n this._initDecoderWorker();\n player.debug.log('decoderWorker', 'init')\n }\n\n destroy() {\n this.decoderWorker.postMessage({cmd: WORKER_SEND_TYPE.close})\n this.decoderWorker.terminate();\n this.decoderWorker = null;\n this.player.debug.log(`decoderWorker`, 'destroy');\n }\n\n _initDecoderWorker() {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n this.decoderWorker.onmessage = (event) => {\n const msg = event.data;\n switch (msg.cmd) {\n case WORKER_CMD_TYPE.init:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.init);\n if (!this.player.loaded) {\n this.player.emit(EVENTS.load);\n }\n this.player.emit(EVENTS.decoderWorkerInit);\n this._initWork();\n break;\n case WORKER_CMD_TYPE.videoCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.videoCode, msg.code);\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n this.player.video.updateVideoInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.audioCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.audioCode, msg.code);\n this.player.audio && this.player.audio.updateAudioInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.initVideo:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initVideo, `width:${msg.w},height:${msg.h}`);\n this.player.video.updateVideoInfo({\n width: msg.w,\n height: msg.h\n })\n if (!this.player._opt.openWebglAlignment && !isWebglRenderSupport(msg.w)) {\n this.player.emit(EVENTS_ERROR.webglAlignmentError);\n return;\n }\n\n this.player.video.initCanvasViewSize();\n break;\n case WORKER_CMD_TYPE.initAudio:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initAudio, `channels:${msg.channels},sampleRate:${msg.sampleRate}`);\n if (this.player.audio) {\n this.player.audio.updateAudioInfo(msg);\n this.player.audio.initScriptNode(msg);\n }\n break;\n case WORKER_CMD_TYPE.render:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.render, `msg ts:${msg.ts}`);\n this.player.handleRender();\n this.player.video.render(msg);\n this.player.emit(EVENTS.timeUpdate, msg.ts)\n this.player.updateStats({fps: true, ts: msg.ts, buf: msg.delay})\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n break;\n case WORKER_CMD_TYPE.playAudio:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.playAudio, `msg ts:${msg.ts}`);\n // 只有在 playing 的时候。\n if (this.player.playing && this.player.audio) {\n this.player.audio.play(msg.buffer, msg.ts);\n }\n break;\n case WORKER_CMD_TYPE.wasmError:\n if (msg.message) {\n if (msg.message.indexOf(WASM_ERROR.invalidNalUnitSize) !== -1) {\n this.player.emit(EVENTS.error, EVENTS_ERROR.wasmDecodeError);\n this.player.emit(EVENTS_ERROR.wasmDecodeError);\n }\n }\n break;\n default:\n this.player[msg.cmd] && this.player[msg.cmd](msg);\n }\n }\n }\n\n _initWork() {\n const opt = {\n debug: this.player._opt.debug,\n useOffscreen: this.player._opt.useOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\n videoBufferDelay: this.player._opt.videoBufferDelay,\n openWebglAlignment: this.player._opt.openWebglAlignment\n }\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.init,\n opt: JSON.stringify(opt),\n sampleRate: (this.player.audio && this.player.audio.audioContext.sampleRate) || 0\n })\n }\n\n decodeVideo(arrayBuffer, ts, isIFrame) {\n\n const options = {\n type: MEDIA_TYPE.video,\n ts: Math.max(ts, 0),\n isIFrame\n }\n // this.player.debug.log('decoderWorker', 'decodeVideo', options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n decodeAudio(arrayBuffer, ts) {\n if (this.player._opt.useWCS) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else if (this.player._opt.useMSE) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else {\n this._decodeAudio(arrayBuffer, ts);\n }\n }\n\n //\n _decodeAudio(arrayBuffer, ts) {\n const options = {\n type: MEDIA_TYPE.audio,\n ts: Math.max(ts, 0)\n }\n // this.player.debug.log('decoderWorker', 'decodeAudio',options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n\n _decodeAudioNoDelay(arrayBuffer, ts) {\n // console.log('_decodeAudioNoDelay', arrayBuffer);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.audioDecode,\n buffer: arrayBuffer,\n ts: Math.max(ts, 0)\n }, [arrayBuffer.buffer])\n }\n\n\n updateWorkConfig(config) {\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.updateConfig,\n key: config.key,\n value: config.value\n })\n }\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {MEDIA_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n\n this.stopId = null;\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.initInterval();\n }\n\n destroy() {\n if (this.stopId) {\n clearInterval(this.stopId);\n this.stopId = null;\n }\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.off();\n this.player.debug.log('CommonDemux', 'destroy');\n }\n\n getDelay(timestamp) {\n if (!timestamp) {\n return -1\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp\n this.startTimestamp = Date.now()\n this.delay = -1;\n } else {\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay\n }\n\n resetDelay() {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n }\n\n //\n initInterval() {\n this.player.debug.log('common dumex', `init Interval`);\n let _loop = () => {\n let data;\n const videoBuffer = this.player._opt.videoBuffer;\n const videoBufferDelay = this.player._opt.videoBufferDelay;\n if (this.bufferList.length) {\n if (this.dropping) {\n // this.player.debug.log('common dumex', `is dropping`);\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n while (!data.isIFrame && this.bufferList.length) {\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n }\n // i frame\n if (data.isIFrame && this.getDelay(data.ts) <= Math.min(videoBuffer, 200)) {\n this.dropping = false;\n this._doDecoderDecode(data);\n }\n } else {\n data = this.bufferList[0];\n if (this.getDelay(data.ts) === -1) {\n // this.player.debug.log('common dumex', `delay is -1`);\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else if (this.delay > (videoBuffer + videoBufferDelay)) {\n // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true\n } else {\n data = this.bufferList[0]\n if (this.getDelay(data.ts) > videoBuffer) {\n // drop frame\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else {\n // this.player.debug.log('common dumex', `delay is ${this.delay}`);\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame, cts) {\n const player = this.player;\n let options = {\n ts: ts,\n cts: cts,\n type: type,\n isIFrame: false\n }\n // use offscreen\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else if (player._opt.useMSE) {\n // use mse\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else {\n //\n if (type === MEDIA_TYPE.video) {\n player.decoderWorker && player.decoderWorker.decodeVideo(payload, ts, isIFrame);\n } else if (type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(payload, ts);\n }\n }\n }\n }\n\n _doDecoderDecode(data) {\n const player = this.player;\n const {webcodecsDecoder, mseDecoder} = player;\n\n if (data.type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(data.payload, data.ts)\n }\n } else if (data.type === MEDIA_TYPE.video) {\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n webcodecsDecoder.decodeVideo(data.payload, data.ts, data.isIFrame);\n } else if (player._opt.useMSE) {\n mseDecoder.decodeVideo(data.payload, data.ts, data.isIFrame, data.cts);\n }\n }\n }\n\n pushBuffer(payload, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n this.bufferList.push({\n ts: options.ts,\n payload: payload,\n type: MEDIA_TYPE.audio,\n })\n } else if (options.type === MEDIA_TYPE.video) {\n this.bufferList.push({\n ts: options.ts,\n cts: options.cts,\n payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class FlvLoader extends CommonLoader {\n constructor(player) {\n super(player);\n this.input = this._inputFlv();\n this.flvDemux = this.dispatchFlvData(this.input);\n player.debug.log('FlvDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.input = null;\n this.flvDemux = null;\n this.player.debug.log('FlvDemux', 'destroy')\n }\n\n dispatch(data) {\n this.flvDemux(data);\n }\n\n * _inputFlv() {\n yield 9;\n const tmp = new ArrayBuffer(4)\n const tmp8 = new Uint8Array(tmp)\n const tmp32 = new Uint32Array(tmp)\n const player = this.player;\n\n while (true) {\n tmp8[3] = 0\n const t = yield 15\n const type = t[4]\n tmp8[0] = t[7]\n tmp8[1] = t[6]\n tmp8[2] = t[5]\n const length = tmp32[0]\n tmp8[0] = t[10]\n tmp8[1] = t[9]\n tmp8[2] = t[8]\n let ts = tmp32[0]\n if (ts === 0xFFFFFF) {\n tmp8[3] = t[11]\n ts = tmp32[0]\n }\n const payload = yield length\n switch (type) {\n case FLV_MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, MEDIA_TYPE.audio, ts)\n }\n }\n break\n case FLV_MEDIA_TYPE.video:\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (player._opt.hasVideo) {\n player.updateStats({\n vbps: payload.byteLength\n })\n const isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n }\n break\n }\n }\n }\n\n dispatchFlvData(input) {\n let need = input.next()\n let buffer = null\n return (value) => {\n let data = new Uint8Array(value)\n if (buffer) {\n let combine = new Uint8Array(buffer.length + data.length)\n combine.set(buffer)\n combine.set(data, buffer.length)\n data = combine\n buffer = null\n }\n while (data.length >= need.value) {\n let remain = data.slice(need.value)\n need = input.next(data.slice(0, need.value))\n data = remain\n }\n if (data.length > 0) {\n buffer = data\n }\n }\n }\n\n close() {\n this.input && this.input.return(null)\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class M7sLoader extends CommonLoader {\n constructor(player) {\n super(player);\n player.debug.log('M7sDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.player.debug.log('M7sDemux', 'destroy')\n this.player = null;\n }\n\n dispatch(data) {\n const player = this.player;\n const dv = new DataView(data)\n const type = dv.getUint8(0);\n const ts = dv.getUint32(1, false);\n switch (type) {\n case MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n const payload = new Uint8Array(data, 5)\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts)\n }\n }\n break;\n case MEDIA_TYPE.video:\n if (player._opt.hasVideo) {\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (dv.byteLength > 5) {\n const payload = new Uint8Array(data, 5);\n const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts, isIframe)\n }\n } else {\n this.player.debug.warn('M7sDemux', 'dispatch', 'dv byteLength is', dv.byteLength)\n }\n }\n break;\n }\n }\n\n\n}\n","import FlvLoader from \"./flvLoader\";\nimport M7sLoader from \"./m7sLoader\";\nimport {DEMUX_TYPE} from \"../constant\";\n\nexport default class Demux {\n constructor(player) {\n const Loader = Demux.getLoaderFactory(player._opt.demuxType);\n return new Loader(player);\n }\n\n static getLoaderFactory(type) {\n if (type === DEMUX_TYPE.m7s) {\n return M7sLoader;\n } else if (type === DEMUX_TYPE.flv) {\n return FlvLoader;\n }\n }\n}\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Exponential-Golomb buffer decoder\nclass ExpGolomb {\n\n constructor(uint8array) {\n this.TAG = 'ExpGolomb';\n\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n destroy() {\n this._buffer = null;\n }\n\n _fillCurrentWord() {\n let buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) {\n // throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n }\n\n let bytes_read = Math.min(4, buffer_bytes_left);\n let word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n }\n\n readBits(bits) {\n if (bits > 32) {\n // throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n }\n\n if (bits <= this._current_word_bits_left) {\n let result = this._current_word >>> (32 - bits);\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return result;\n }\n\n let result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> (32 - this._current_word_bits_left);\n let bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n\n let result2 = this._current_word >>> (32 - bits_read_next);\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n\n result = (result << bits_read_next) | result2;\n return result;\n }\n\n readBool() {\n return this.readBits(1) === 1;\n }\n\n readByte() {\n return this.readBits(8);\n }\n\n _skipLeadingZero() {\n let zero_count;\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n this._fillCurrentWord();\n return zero_count + this._skipLeadingZero();\n }\n\n readUEG() { // unsigned exponential golomb\n let leading_zeros = this._skipLeadingZero();\n return this.readBits(leading_zeros + 1) - 1;\n }\n\n readSEG() { // signed exponential golomb\n let value = this.readUEG();\n if (value & 0x01) {\n return (value + 1) >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n }\n\n}\n\nexport default ExpGolomb;\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ExpGolomb from './exp-golomb.js';\n\nclass SPSParser {\n\n static _ebsp2rbsp(uint8array) {\n let src = uint8array;\n let src_length = src.byteLength;\n let dst = new Uint8Array(src_length);\n let dst_idx = 0;\n\n for (let i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n }\n\n // 解析 SPS\n // https://zhuanlan.zhihu.com/p/27896239\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n\n gb.readByte();\n // 标识当前H.264码流的profile。\n // 我们知道,H.264中定义了三种常用的档次profile: 基准档次:baseline profile;主要档次:main profile; 扩展档次:extended profile;\n\n let profile_idc = gb.readByte(); // profile_idc\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n // 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。\n let level_idc = gb.readByte(); // level_idc\n // 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。\n gb.readUEG(); // seq_parameter_set_id\n\n let profile_string = SPSParser.getProfileString(profile_idc);\n\n let level_string = SPSParser.getLevelString(level_idc);\n\n let chroma_format_idc = 1;\n let chroma_format = 420;\n let chroma_format_table = [0, 420, 422, 444];\n let bit_depth = 8;\n\n //\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||\n profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||\n profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||\n profile_idc === 138 || profile_idc === 144) {\n //\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n gb.readUEG(); // bit_depth_chroma_minus8\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n if (gb.readBool()) { // seq_scaling_matrix_present_flag\n let scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;\n for (let i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) { // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n // 用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 +\n gb.readUEG(); // log2_max_frame_num_minus4\n // 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。\n let pic_order_cnt_type = gb.readUEG();\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n gb.readSEG(); // offset_for_non_ref_pic\n gb.readSEG(); // offset_for_top_to_bottom_field\n let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n // 用于表示参考帧的最大数目。\n let ref_frames = gb.readUEG(); // max_num_ref_frames\n // 标识位,说明frame_num中是否允许不连续的值。\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n // 用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:\n let pic_width_in_mbs_minus1 = gb.readUEG();\n // 使用PicHeightInMapUnits来度量视频中一帧图像的高度。\n // PicHeightInMapUnits并非图像明确的以像素或宏块为单位的高度,而需要考虑该宏块是帧编码或场编码。PicHeightInMapUnits的计算方式为:\n let pic_height_in_map_units_minus1 = gb.readUEG();\n // 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;\n // 该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,\n // 为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。\n let frame_mbs_only_flag = gb.readBits(1);\n if (frame_mbs_only_flag === 0) {\n // 标识位,说明是否采用了宏块级的帧场自适应编码。当该标识位为0时,不存在帧编码和场编码之间的切换;当标识位为1时,宏块可能在帧编码和场编码模式之间进行选择。\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n // 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。\n gb.readBits(1); // direct_8x8_inference_flag\n\n let frame_crop_left_offset = 0;\n let frame_crop_right_offset = 0;\n let frame_crop_top_offset = 0;\n let frame_crop_bottom_offset = 0;\n\n let frame_cropping_flag = gb.readBool();\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n let sar_width = 1, sar_height = 1;\n let fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;\n // 标识位,说明SPS中是否存在VUI信息。\n let vui_parameters_present_flag = gb.readBool();\n if (vui_parameters_present_flag) {\n if (gb.readBool()) { // aspect_ratio_info_present_flag\n let aspect_ratio_idc = gb.readByte();\n let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) { // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n if (gb.readBool()) { // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n if (gb.readBool()) { // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n if (gb.readBool()) { // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n if (gb.readBool()) { // timing_info_present_flag\n let num_units_in_tick = gb.readBits(32);\n let time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n let sarScale = 1;\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n let crop_unit_x = 0, crop_unit_y = 0;\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n let sub_wc = (chroma_format_idc === 3) ? 1 : 2;\n let sub_hc = (chroma_format_idc === 1) ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n\n let present_width = Math.ceil(codec_width * sarScale);\n\n gb.destroy();\n gb = null;\n\n\n // 解析出来的SPS 内容。\n return {\n profile_string: profile_string, // baseline, high, high10, ...\n level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth, // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format, // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n }\n\n static _skipScalingList(gb, count) {\n let last_scale = 8, next_scale = 8;\n let delta_scale = 0;\n for (let i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n last_scale = (next_scale === 0) ? last_scale : next_scale;\n }\n }\n\n // profile_idc = 66 → baseline profile;\n // profile_idc = 77 → main profile;\n // profile_idc = 88 → extended profile;\n // 在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High\n // 4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra\n static getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n case 77:\n return 'Main';\n case 88:\n return 'Extended';\n case 100:\n return 'High';\n case 110:\n return 'High10';\n case 122:\n return 'High422';\n case 244:\n return 'High444';\n default:\n return 'Unknown';\n }\n }\n\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n static getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n case 422:\n return '4:2:2';\n case 444:\n return '4:4:4';\n default:\n return 'Unknown';\n }\n }\n\n}\n\nexport default SPSParser;","import SPSParser from './h264-sps-parser.js';\n\n//\nexport function parseAVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n const v = new DataView(arrayBuffer.buffer);\n let version = v.getUint8(0); // configurationVersion\n let avcProfile = v.getUint8(1); // avcProfileIndication\n let profileCompatibility = v.getUint8(2); // profile_compatibil\n let avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return meta;\n }\n\n const _naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (_naluLengthSize !== 3 && _naluLengthSize !== 4) { // holy shit!!!\n // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${_naluLengthSize - 1}`);\n return meta;\n }\n let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n return;\n } else if (spsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);\n }\n\n let offset = 6;\n for (let i = 0; i < spsCount; i++) {\n let len = v.getUint16(offset, false); // sequenceParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n\n // Notice: Nalu without startcode header (00 00 00 01)\n let sps = new Uint8Array(arrayBuffer.buffer, offset, len);\n offset += len;\n // flv.js作者选择了自己来解析这个数据结构,也是迫不得已,因为JS环境下没有ffmpeg,解析这个结构主要是为了提取 sps和pps。虽然理论上sps允许有多个,但其实一般就一个。\n // packetTtype 为 1 表示 NALU,NALU= network abstract layer unit,这是H.264的概念,网络抽象层数据单元,其实简单理解就是一帧视频数据。\n // pps的信息没什么用,所以作者只实现了sps的分析器,说明作者下了很大功夫去学习264的标准,其中的Golomb解码还是挺复杂的,能解对不容易,我在PC和手机平台都是用ffmpeg去解析的。\n // SPS里面包括了视频分辨率,帧率,profile level等视频重要信息。\n let config = SPSParser.parseSPS(sps);\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false ||\n config.frame_rate.fps_num === 0 ||\n config.frame_rate.fps_den === 0) {\n meta.frameRate = {};\n }\n\n let fps_den = meta.frameRate.fps_den;\n let fps_num = meta.frameRate.fps_num;\n\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n let codecArray = sps.subarray(1, 4);\n\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n // codec\n meta.codec = codecString;\n }\n\n let ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n if (ppsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n return meta;\n } else if (ppsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);\n }\n\n offset++;\n for (let i = 0; i < ppsCount; i++) {\n let len = v.getUint16(offset, false); // pictureParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n let pps = new Uint8Array(arrayBuffer.buffer, offset, len);\n\n // pps is useless for extracting video information\n offset += len;\n }\n\n meta.videoType = 'avc';\n\n // meta.avcc = arrayBuffer;\n return meta;\n}\n","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE, WCS_ERROR} from \"../constant\";\nimport {parseAVCDecoderConfigurationRecord} from \"../utils/h264\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = false;\n this.isDecodeFirstIIframe = false;\n this.isInitInfo = false;\n this.decoder = null;\n this.initDecoder();\n player.debug.log('Webcodecs', 'init')\n }\n\n destroy() {\n if (this.decoder) {\n if (this.decoder.state !== 'closed') {\n this.decoder.close();\n }\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('Webcodecs', 'destroy')\n }\n\n initDecoder() {\n const _this = this;\n this.decoder = new VideoDecoder({\n output(videoFrame) {\n _this.handleDecode(videoFrame)\n },\n error(error) {\n _this.handleError(error)\n }\n })\n }\n\n handleDecode(videoFrame) {\n if (!this.isInitInfo) {\n this.player.video.updateVideoInfo({\n width: videoFrame.codedWidth,\n height: videoFrame.codedHeight\n })\n this.player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n\n this.player.handleRender();\n this.player.video.render({\n videoFrame\n })\n\n this.player.updateStats({fps: true, ts: 0, buf: this.player.demux.delay})\n }\n\n handleError(error) {\n this.player.debug.error('Webcodecs', 'VideoDecoder handleError', error)\n }\n\n decodeVideo(payload, ts, isIframe) {\n // this.player.debug.log('Webcodecs decoder', 'decodeVideo', ts, isIframe);\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n this.player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n return;\n }\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n\n const config = formatVideoDecoderConfigure(payload.slice(5));\n this.decoder.configure(config);\n this.hasInit = true;\n }\n } else {\n\n // check width or height change\n if (isIframe && payload[1] === 0) {\n let data = payload.slice(5);\n const config = parseAVCDecoderConfigurationRecord(data)\n const videoInfo = this.player.video.videoInfo;\n if (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height) {\n this.player.debug.log('Webcodecs', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.player.emit(EVENTS_ERROR.webcodecsWidthOrHeightChange)\n return;\n }\n }\n\n\n // fix : Uncaught DOMException: Failed to execute 'decode' on 'VideoDecoder': A key frame is required after configure() or flush().\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n\n if (this.isDecodeFirstIIframe) {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIframe ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n })\n this.player.emit(EVENTS.timeUpdate, ts);\n try {\n this.decoder.decode(chunk);\n } catch (e) {\n this.player.debug.error('Webcodecs', 'VideoDecoder', e)\n if (e.toString().indexOf(WCS_ERROR.keyframeIsRequiredError) !== -1) {\n this.player.emit(EVENTS_ERROR.webcodecsDecodeError);\n\n }\n }\n } else {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeFirstIIframe false')\n }\n }\n }\n}\n","const iconsMap = {\n play: '播放',\n pause: '暂停',\n audio: '',\n mute: '',\n screenshot: '截图',\n loading: '加载',\n fullscreen: '全屏',\n fullscreenExit: '退出全屏',\n record: '录制',\n recordStop: '停止录制',\n}\n\nexport default Object.keys(iconsMap).reduce((icons, key) => {\n icons[key] = `\n \n ${iconsMap[key] ? `${iconsMap[key]}` : ''}\n`;\n return icons;\n}, {});\n","import icons from './icons';\n\nexport default (player, control) => {\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n player.$container.classList.add('jessibuca-controls-show-auto-hide');\n }\n else {\n player.$container.classList.add('jessibuca-controls-show');\n }\n const options = player._opt;\n const operateBtns = options.operateBtns;\n\n\n player.$container.insertAdjacentHTML(\n 'beforeend',\n `\n ${options.background ? `

` : ''}\n
\n ${icons.loading}\n ${options.loadingText ? `
${options.loadingText}
` : ''}\n
\n ${options.hasControl && operateBtns.play ? `
` : ''}\n ${options.hasControl ? `\n
\n
\n
00:00:01
\n
${icons.recordStop}
\n
\n `:''}\n ${options.hasControl ? `\n
\n
\n
\n ${options.showBandwidth ? `
` : ''}\n
\n
\n ${operateBtns.audio ? `\n
\n ${icons.audio}\n ${icons.mute}\n
\n
\n
\n
\n
\n
\n
\n ` : ''}\n ${operateBtns.play ? `
${icons.play}
${icons.pause}
` : ''}\n ${operateBtns.screenshot ? `
${icons.screenshot}
` : ''}\n ${operateBtns.record ? `
${icons.record}
${icons.recordStop}
` : ''}\n ${operateBtns.fullscreen ? `
${icons.fullscreen}
${icons.fullscreenExit}
` : ''}\n
\n
\n
\n ` : ''}\n\n `\n )\n\n Object.defineProperty(control, '$poster', {\n value: player.$container.querySelector('.jessibuca-poster'),\n });\n\n Object.defineProperty(control, '$loading', {\n value: player.$container.querySelector('.jessibuca-loading'),\n });\n\n Object.defineProperty(control, '$play', {\n value: player.$container.querySelector('.jessibuca-play'),\n });\n\n Object.defineProperty(control, '$playBig', {\n value: player.$container.querySelector('.jessibuca-play-big'),\n });\n\n Object.defineProperty(control, '$recording', {\n value: player.$container.querySelector('.jessibuca-recording'),\n });\n Object.defineProperty(control, '$recordingTime', {\n value: player.$container.querySelector('.jessibuca-recording-time'),\n });\n\n Object.defineProperty(control, '$recordingStop', {\n value: player.$container.querySelector('.jessibuca-recording-stop'),\n });\n\n Object.defineProperty(control, '$pause', {\n value: player.$container.querySelector('.jessibuca-pause'),\n });\n\n Object.defineProperty(control, '$controls', {\n value: player.$container.querySelector('.jessibuca-controls'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n\n Object.defineProperty(control, '$volume', {\n value: player.$container.querySelector('.jessibuca-volume'),\n });\n\n Object.defineProperty(control, '$volumePanelWrap', {\n value: player.$container.querySelector('.jessibuca-volume-panel-wrap'),\n });\n\n Object.defineProperty(control, '$volumePanelText', {\n value: player.$container.querySelector('.jessibuca-volume-panel-text'),\n });\n\n Object.defineProperty(control, '$volumePanel', {\n value: player.$container.querySelector('.jessibuca-volume-panel'),\n });\n\n Object.defineProperty(control, '$volumeHandle', {\n value: player.$container.querySelector('.jessibuca-volume-panel-handle'),\n });\n\n Object.defineProperty(control, '$volumeOn', {\n value: player.$container.querySelector('.jessibuca-icon-audio'),\n });\n\n Object.defineProperty(control, '$volumeOff', {\n value: player.$container.querySelector('.jessibuca-icon-mute'),\n });\n\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreenExit', {\n value: player.$container.querySelector('.jessibuca-fullscreen-exit'),\n });\n\n Object.defineProperty(control, '$record', {\n value: player.$container.querySelector('.jessibuca-record'),\n });\n Object.defineProperty(control, '$recordStop', {\n value: player.$container.querySelector('.jessibuca-record-stop'),\n });\n\n Object.defineProperty(control, '$screenshot', {\n value: player.$container.querySelector('.jessibuca-screenshot'),\n });\n\n Object.defineProperty(control, '$speed', {\n value: player.$container.querySelector('.jessibuca-speed'),\n });\n}\n","import {CONTROL_HEIGHT, EVENTS} from \"../constant\";\nimport {bpsSize, formatTimeTips, getStyle, isBoolean, isMobile, setStyle} from \"../utils\";\nimport screenfull from \"screenfull\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n } = player;\n\n const object = document.createElement('object');\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.type = 'text/html';\n object.data = 'about:blank';\n\n setStyle(object, {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '-1',\n });\n\n let playerWidth = player.width;\n let playerHeight = player.height;\n\n proxy(object, 'load', () => {\n proxy(object.contentDocument.defaultView, 'resize', () => {\n if (player.width !== playerWidth || player.height !== playerHeight) {\n playerWidth = player.width;\n playerHeight = player.height;\n player.emit(EVENTS.resize);\n screenfullH5Control();\n }\n });\n });\n player.$container.appendChild(object);\n\n player.on(EVENTS.destroy, () => {\n player.$container.removeChild(object);\n })\n\n function setVolumeHandle(percentage) {\n if (percentage === 0) {\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'flex');\n setStyle(control.$volumeHandle, 'top', `${48}px`);\n } else {\n if (control.$volumeHandle && control.$volumePanel) {\n const panelHeight = getStyle(control.$volumePanel, 'height') || 60;\n const handleHeight = getStyle(control.$volumeHandle, 'height');\n const top = panelHeight - (panelHeight - handleHeight) * percentage - handleHeight;\n setStyle(control.$volumeHandle, 'top', `${top}px`);\n setStyle(control.$volumeOn, 'display', 'flex');\n setStyle(control.$volumeOff, 'display', 'none');\n }\n }\n control.$volumePanelText && (control.$volumePanelText.innerHTML = parseInt(percentage * 100))\n }\n\n player.on(EVENTS.volumechange, () => {\n setVolumeHandle(player.volume);\n });\n\n player.on(EVENTS.loading, (flag) => {\n setStyle(control.$loading, 'display', flag ? 'flex' : 'none');\n setStyle(control.$poster, 'display', 'none')\n\n if (flag) {\n setStyle(control.$playBig, 'display', 'none');\n }\n })\n\n const screenfullChange = (fullscreen) => {\n let isFullScreen = isBoolean(fullscreen) ? fullscreen : player.fullscreen\n setStyle(control.$fullscreenExit, 'display', isFullScreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', isFullScreen ? 'none' : 'flex');\n // control.autoSize();\n };\n const screenfullH5Control = () => {\n if (isMobile() && control.$controls && player._opt.useWebFullScreen) {\n setTimeout(() => {\n if (player.fullscreen) {\n // console.log(player.width, player.height);\n let translateX = player.height / 2 - player.width + CONTROL_HEIGHT / 2;\n let translateY = player.height / 2 - CONTROL_HEIGHT / 2;\n\n control.$controls.style.transform = `translateX(${-translateX}px) translateY(-${translateY}px) rotate(-90deg)`\n } else {\n control.$controls.style.transform = `translateX(0) translateY(0) rotate(0)`\n }\n\n }, 10)\n }\n }\n\n try {\n\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n\n //\n player.on(EVENTS.webFullscreen, (value) => {\n screenfullChange(value);\n screenfullH5Control();\n\n })\n\n\n player.on(EVENTS.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n setStyle(control.$recording, 'display', player.recording ? 'flex' : 'none')\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(timestamp);\n control.$recordingTime && (control.$recordingTime.innerHTML = formatTimeTips(timestamp))\n })\n\n player.on(EVENTS.playing, (flag) => {\n setStyle(control.$play, 'display', flag ? 'none' : 'flex');\n setStyle(control.$playBig, 'display', flag ? 'none' : 'block');\n setStyle(control.$pause, 'display', flag ? 'flex' : 'none');\n setStyle(control.$screenshot, 'display', flag ? 'flex' : 'none');\n setStyle(control.$record, 'display', flag ? 'flex' : 'none');\n setStyle(control.$qualityMenu, 'display', flag ? 'flex' : 'none');\n setStyle(control.$volume, 'display', flag ? 'flex' : 'none');\n // setStyle(control.$fullscreen, 'display', flag ? 'flex' : 'none');\n screenfullChange();\n // 不在播放\n if (!flag) {\n control.$speed && (control.$speed.innerHTML = bpsSize(''));\n }\n })\n\n\n player.on(EVENTS.kBps, (rate) => {\n const bps = bpsSize(rate);\n control.$speed && (control.$speed.innerHTML = bps);\n })\n}\n","export default (player, control) => {\n\n Object.defineProperty(control, 'controlsRect', {\n get: () => {\n return control.$controls.getBoundingClientRect();\n },\n });\n\n}\n","import {clamp, isMobile, setStyle} from \"../utils\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n debug\n } = player;\n\n function volumeChangeFromEvent(event) {\n const {bottom: panelBottom, height: panelHeight} = control.$volumePanel.getBoundingClientRect();\n const {height: handleHeight} = control.$volumeHandle.getBoundingClientRect();\n\n let moveLen = event.y;\n\n // if (isMobile() && player.fullscreen) {\n // moveLen = event.x;\n // }\n\n const percentage =\n clamp(panelBottom - moveLen - handleHeight / 2, 0, panelHeight - handleHeight / 2) / (panelHeight - handleHeight);\n return percentage;\n }\n\n //\n proxy(window, ['click', 'contextmenu'], event => {\n if (event.composedPath().indexOf(player.$container) > -1) {\n control.isFocus = true;\n } else {\n control.isFocus = false;\n }\n });\n\n //\n proxy(window, 'orientationchange', () => {\n setTimeout(() => {\n player.resize();\n }, 300);\n });\n\n\n proxy(control.$controls, 'click', (e) => {\n e.stopPropagation();\n })\n\n proxy(control.$pause, 'click', (e) => {\n player.pause();\n })\n // 监听 play 方法\n proxy(control.$play, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n proxy(control.$volume, 'mouseover', () => {\n control.$volumePanelWrap.classList.add('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volume, 'mouseout', () => {\n control.$volumePanelWrap.classList.remove('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volumeOn, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'block');\n const lastVolume = player.volume;\n player.volume = 0;\n player._lastVolume = lastVolume;\n })\n\n proxy(control.$volumeOff, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'block');\n setStyle(control.$volumeOff, 'display', 'none');\n player.volume = player.lastVolume || 0.5;\n })\n\n proxy(control.$screenshot, 'click', (e) => {\n e.stopPropagation();\n player.video.screenshot();\n })\n\n proxy(control.$volumePanel, 'click', event => {\n event.stopPropagation();\n player.volume = volumeChangeFromEvent(event);\n });\n\n proxy(control.$volumeHandle, 'mousedown', () => {\n control.isVolumeDroging = true;\n });\n\n proxy(control.$volumeHandle, 'mousemove', event => {\n if (control.isVolumeDroging) {\n player.volume = volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (control.isVolumeDroging) {\n control.isVolumeDroging = false;\n }\n });\n\n proxy(control.$record, 'click', (e) => {\n e.stopPropagation();\n player.recording = true;\n })\n\n proxy(control.$recordStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$recordingStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$fullscreen, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = true;\n })\n\n proxy(control.$fullscreenExit, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = false;\n })\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n //\n proxy(player.$container, 'mouseover', () => {\n if (!player.fullscreen) {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n })\n\n proxy(player.$container, 'mousemove', () => {\n if (player.$container && control.$controls) {\n if (!player.fullscreen) {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n } else {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n }\n }\n })\n\n proxy(player.$container, 'mouseout', () => {\n stopDelayControlHidden();\n setStyle(control.$controls, 'display', 'none');\n })\n let delayHiddenTimeout = null;\n const startDelayControlHidden = () => {\n stopDelayControlHidden();\n delayHiddenTimeout = setTimeout(() => {\n setStyle(control.$controls, 'display', 'none');\n }, 5 * 1000)\n }\n\n const stopDelayControlHidden = () => {\n if (delayHiddenTimeout) {\n clearTimeout(delayHiddenTimeout);\n delayHiddenTimeout = null;\n }\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// todo: 待定\nimport {HOT_KEY} from \"../constant\";\n\nexport default (player, control) => {\n const {\n events: {proxy}\n } = player;\n\n const keys = {};\n\n function addHotkey(key, event) {\n if (keys[key]) {\n keys[key].push(event);\n } else {\n keys[key] = [event];\n }\n }\n\n //\n addHotkey(HOT_KEY.esc, () => {\n if (player.fullscreen) {\n player.fullscreen = false;\n }\n })\n\n //\n addHotkey(HOT_KEY.arrowUp, () => {\n player.volume += 0.05;\n })\n\n //\n addHotkey(HOT_KEY.arrowDown, () => {\n player.volume -= 0.05;\n })\n\n proxy(window, 'keydown', event => {\n if (control.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n const events = keys[event.keyCode];\n if (events) {\n event.preventDefault();\n events.forEach(fn => fn());\n }\n }\n }\n });\n}\n","import template from \"./template\";\nimport observer from './observer';\nimport property from './property';\nimport events from './events';\nimport './style.scss'\nimport hotkey from \"./hotkey\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n property(player, this);\n observer(player, this);\n events(player, this);\n if (player._opt.hotKey) {\n hotkey(player, this);\n }\n this.player.debug.log('Control', 'init');\n }\n\n destroy() {\n if (this.$poster) {\n this.player.$container.removeChild(this.$poster);\n }\n if (this.$loading) {\n this.player.$container.removeChild(this.$loading);\n }\n if (this.$controls) {\n this.player.$container.removeChild(this.$controls);\n }\n\n if(this.$recording){\n this.player.$container.removeChild(this.$recording);\n }\n\n if(this.$playBig){\n this.player.$container.removeChild(this.$playBig);\n }\n\n this.player.debug.log('control', 'destroy');\n }\n\n autoSize() {\n const player = this.player;\n player.$container.style.padding = '0 0';\n const playerWidth = player.width;\n const playerHeight = player.height;\n const playerRatio = playerWidth / playerHeight;\n const canvasWidth = player.video.$videoElement.width;\n const canvasHeight = player.video.$videoElement.height;\n const canvasRatio = canvasWidth / canvasHeight;\n if (playerRatio > canvasRatio) {\n const padding = (playerWidth - playerHeight * canvasRatio) / 2;\n player.$container.style.padding = `0 ${padding}px`;\n } else {\n const padding = (playerHeight - playerWidth / canvasRatio) / 2;\n player.$container.style.padding = `${padding}px 0`;\n }\n }\n\n\n}\n","import {getTarget} from \"../utils\";\n\nexport default (player) => {\n\n const {\n _opt,\n debug,\n events: {proxy},\n } = player;\n\n\n if (_opt.supportDblclickFullscreen) {\n proxy(player.$container, 'dblclick', (e) => {\n const target = getTarget(e);\n const nodeName = target.nodeName.toLowerCase();\n if (nodeName === 'canvas' || nodeName === 'video') {\n player.fullscreen = !player.fullscreen;\n }\n })\n }\n\n\n //\n proxy(document, 'visibilitychange', () => {\n if (_opt.hiddenAutoPause) {\n debug.log('visibilitychange', document.visibilityState, player._isPlayingBeforePageHidden)\n\n if (\"visible\" === document.visibilityState) {\n if (player._isPlayingBeforePageHidden) {\n player.play();\n }\n } else {\n player._isPlayingBeforePageHidden = player.playing;\n // hidden\n if (player.playing) {\n player.pause();\n }\n }\n }\n })\n\n proxy(window, 'fullscreenchange', () => {\n //\n if (player.keepScreenOn !== null && \"visible\" === document.visibilityState) {\n player.enableWakeLock();\n }\n })\n}\n","class MP4 {\n\n static init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n hvc1: [],\n hvcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n for (let name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [\n name.charCodeAt(0),\n name.charCodeAt(1),\n name.charCodeAt(2),\n name.charCodeAt(3)\n ];\n }\n }\n\n let constants = MP4.constants = {};\n\n constants.FTYP = new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n\n constants.STSD_PREFIX = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n\n constants.STTS = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n constants.STSC = constants.STCO = constants.STTS;\n\n constants.STSZ = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n\n constants.HDLR_VIDEO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x56, 0x69, 0x64, 0x65,\n 0x6F, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n\n constants.HDLR_AUDIO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x53, 0x6F, 0x75, 0x6E,\n 0x64, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n\n constants.DREF = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]);\n\n // Sound media header\n constants.SMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]);\n\n // video media header\n constants.VMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00\n ]);\n }\n\n // Generate a box\n static box(type) {\n let size = 8;\n let result = null;\n let datas = Array.prototype.slice.call(arguments, 1);\n let arrayCount = datas.length;\n\n for (let i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = (size >>> 24) & 0xFF; // size\n result[1] = (size >>> 16) & 0xFF;\n result[2] = (size >>> 8) & 0xFF;\n result[3] = (size) & 0xFF;\n\n result.set(type, 4); // type\n\n let offset = 8;\n for (let i = 0; i < arrayCount; i++) { // data body\n result.set(datas[i], offset);\n offset += datas[i].byteLength;\n }\n\n return result;\n }\n\n // emit ftyp & moov\n static generateInitSegment(meta) {\n let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n let moov = MP4.moov(meta);\n\n let result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n }\n\n // Movie metadata box\n static moov(meta) {\n let mvhd = MP4.mvhd(meta.timescale, meta.duration);\n let trak = MP4.trak(meta);\n let mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n }\n\n // Movie header box\n static mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n }\n\n // Track box\n static trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n }\n\n // Track header box\n static tkhd(meta) {\n let trackId = meta.id, duration = meta.duration;\n let width = meta.presentWidth, height = meta.presentHeight;\n\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (trackId >>> 24) & 0xFF, // track_ID: 4 bytes\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n (width >>> 8) & 0xFF, // width and height\n (width) & 0xFF,\n 0x00, 0x00,\n (height >>> 8) & 0xFF,\n (height) & 0xFF,\n 0x00, 0x00\n ]));\n }\n\n static mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta))\n }\n\n // Media header box\n static mdhd(meta) {\n let timescale = meta.timescale;\n let duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n }\n\n // Media handler reference box\n static hdlr(meta) {\n let data = null;\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n return MP4.box(MP4.types.hdlr, data);\n }\n\n // Media infomation box\n static minf(meta) {\n let xmhd = null;\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n }\n\n // Data infomation box\n static dinf() {\n let result = MP4.box(MP4.types.dinf,\n MP4.box(MP4.types.dref, MP4.constants.DREF)\n );\n return result;\n }\n\n // Sample table box\n static stbl(meta) {\n let result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n }\n\n // Sample description box\n static stsd(meta) {\n if (meta.type === 'audio') {\n // else: aac -> mp4a\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n if (meta.videoType === 'avc') {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n } else {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.hvc1(meta))\n }\n }\n }\n\n static mp4a(meta) {\n let channelCount = meta.channelCount;\n let sampleRate = meta.audioSampleRate;\n\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n (sampleRate >>> 8) & 0xFF, // Audio sample rate\n (sampleRate) & 0xFF,\n 0x00, 0x00\n ]);\n\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n }\n\n static esds(meta) {\n let config = meta.config || [];\n let configSize = config.length;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version 0 + flags\n\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([\n configSize\n ]).concat(\n config\n ).concat([\n 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n }\n\n // avc\n static avc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255]\n );\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc))\n }\n\n // hvc\n static hvc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255\n ]);\n return MP4.box(MP4.types.hvc1, data, MP4.box(MP4.types.hvcC, avcc))\n }\n\n // Movie Extends box\n static mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta))\n }\n\n // Track Extends box\n static trex(meta) {\n let trackId = meta.id;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n }\n\n // Movie fragment box\n static moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime))\n }\n //\n static mfhd(sequenceNumber) {\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n (sequenceNumber >>> 24) & 0xFF, // sequence_number: int32\n (sequenceNumber >>> 16) & 0xFF,\n (sequenceNumber >>> 8) & 0xFF,\n (sequenceNumber) & 0xFF\n ]);\n return MP4.box(MP4.types.mfhd, data);\n }\n\n // Track fragment box\n static traf(track, baseMediaDecodeTime) {\n let trackId = track.id;\n\n // Track fragment header box\n let tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF\n ]));\n // Track Fragment Decode Time\n let tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (baseMediaDecodeTime >>> 24) & 0xFF, // baseMediaDecodeTime: int32\n (baseMediaDecodeTime >>> 16) & 0xFF,\n (baseMediaDecodeTime >>> 8) & 0xFF,\n (baseMediaDecodeTime) & 0xFF\n ]));\n let sdtp = MP4.sdtp(track);\n let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n }\n\n // Sample Dependency Type box\n static sdtp(track) {\n let data = new Uint8Array(4 + 1);\n let flags = track.flags;\n data[4] = flags.isLeading << 6\n | flags.dependsOn << 4\n | flags.isDependedOn << 2\n | flags.hasRedundancy;\n return MP4.box(MP4.types.sdtp, data);\n }\n // trun\n static trun(track, offset) {\n let dataSize = 12 + 16;\n let data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n\n data.set([\n 0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n 0x00, 0x00, 0x00, 0x01, // sample_count\n (offset >>> 24) & 0xFF, // data_offset\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n (offset) & 0xFF\n ], 0);\n\n let duration = track.duration;\n let size = track.size;\n let flags = track.flags;\n let cts = track.cts;\n\n data.set([\n (duration >>> 24) & 0xFF, // sample_duration\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n (size >>> 24) & 0xFF, // sample_size\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n (size) & 0xFF,\n (flags.isLeading << 2) | flags.dependsOn, // sample_flags\n (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,\n 0x00, 0x00, // sample_degradation_priority\n (cts >>> 24) & 0xFF, // sample_composition_time_offset\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n (cts) & 0xFF\n ], 12);\n\n return MP4.box(MP4.types.trun, data);\n }\n // mdat\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data)\n }\n}\n\nMP4.init();\n\nexport default MP4;\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FRAG_DURATION, MEDIA_SOURCE_STATE, MP4_CODECS, VIDEO_ENC_CODE} from \"../constant\";\nimport MP4 from \"../remux/fmp4-generator\";\nimport {parseAVCDecoderConfigurationRecord,} from \"../utils/h264\";\nimport {now} from \"../utils\";\n\nexport default class MseDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.isAvc = true;\n this.mediaSource = new window.MediaSource();\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.cacheTrack = {};\n this.timeInit = false;\n this.sequenceNumber = 0;\n this.mediaSourceOpen = false;\n this.dropping = false;\n this.firstRenderTime = null;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.player.video.$videoElement.src = window.URL.createObjectURL(this.mediaSource);\n const {\n debug,\n events: {proxy},\n } = player;\n\n\n proxy(this.mediaSource, 'sourceopen', () => {\n this.mediaSourceOpen = true;\n this.player.emit(EVENTS.mseSourceOpen)\n })\n\n proxy(this.mediaSource, 'sourceclose', () => {\n this.player.emit(EVENTS.mseSourceClose);\n })\n\n player.debug.log('MediaSource', 'init')\n }\n\n destroy() {\n this.stop();\n this.mediaSource = null;\n this.mediaSourceOpen = false;\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return this.mediaSource && this.mediaSource.readyState\n }\n\n get isStateOpen() {\n return this.state === MEDIA_SOURCE_STATE.open;\n }\n\n get isStateClosed() {\n return this.state === MEDIA_SOURCE_STATE.closed;\n }\n\n get isStateEnded() {\n return this.state === MEDIA_SOURCE_STATE.ended;\n }\n\n get duration() {\n return this.mediaSource && this.mediaSource.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe, cts) {\n const player = this.player;\n\n if (!player) {\n return;\n }\n\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n return;\n }\n if (!player._times.decodeStart) {\n player._times.decodeStart = now();\n }\n\n this._decodeConfigurationRecord(payload, ts, isIframe, videoCodec)\n this.hasInit = true;\n }\n } else {\n if (isIframe && payload[1] === 0) {\n let config = parseAVCDecoderConfigurationRecord(payload.slice(5))\n const videoInfo = this.player.video.videoInfo;\n if ((videoInfo && videoInfo.width && videoInfo.height) && (config && config.codecWidth && config.codecHeight) && (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height)) {\n this.player.debug.warn('MediaSource', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.isInitInfo = false;\n this.player.video.init = false;\n }\n }\n\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n if (this.isDecodeFirstIIframe) {\n if (this.firstRenderTime === null) {\n this.firstRenderTime = ts;\n }\n const dts = ts - this.firstRenderTime;\n\n this._decodeVideo(payload, dts, isIframe, cts);\n } else {\n this.player.debug.warn('MediaSource', 'decodeVideo isDecodeFirstIIframe false')\n }\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n config = parseAVCDecoderConfigurationRecord(data)\n\n const metaData = {\n id: 1, // video tag data\n type: 'video',\n timescale: 1000,\n duration: 0,\n avcc: data,\n codecWidth: config.codecWidth,\n codecHeight: config.codecHeight,\n videoType: config.videoType\n }\n // ftyp\n const metaBox = MP4.generateInitSegment(metaData);\n this.isAvc = true;\n this.appendBuffer(metaBox.buffer);\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n }\n\n //\n _decodeVideo(payload, dts, isIframe, cts) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n const videoBufferDelay = player._opt.videoBufferDelay;\n if ($video.buffered.length > 1) {\n this.removeBuffer($video.buffered.start(0), $video.buffered.end(0));\n this.timeInit = false;\n }\n if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) {\n this.dropping = false;\n this.cacheTrack = {};\n } else if (this.cacheTrack && dts >= this.cacheTrack.dts) {\n // 需要额外加8个size\n let mdatBytes = 8 + this.cacheTrack.size;\n let mdatbox = new Uint8Array(mdatBytes);\n mdatbox[0] = mdatBytes >>> 24 & 255;\n mdatbox[1] = mdatBytes >>> 16 & 255;\n mdatbox[2] = mdatBytes >>> 8 & 255;\n mdatbox[3] = mdatBytes & 255;\n mdatbox.set(MP4.types.mdat, 4);\n mdatbox.set(this.cacheTrack.data, 8);\n\n this.cacheTrack.duration = dts - this.cacheTrack.dts;\n // moof\n let moofbox = MP4.moof(this.cacheTrack, this.cacheTrack.dts);\n let result = new Uint8Array(moofbox.byteLength + mdatbox.byteLength);\n result.set(moofbox, 0);\n result.set(mdatbox, moofbox.byteLength);\n // appendBuffer\n this.appendBuffer(result.buffer)\n player.handleRender();\n player.updateStats({fps: true, ts: dts, buf: (player.demux && player.demux.delay) || 0})\n if (!player._times.videoStart) {\n player._times.videoStart = now();\n player.handlePlayToRenderTimes()\n }\n } else {\n player.debug.log('MediaSource', 'timeInit set false , cacheTrack = {}');\n this.timeInit = false;\n this.cacheTrack = {};\n }\n if (!this.cacheTrack) {\n this.cacheTrack = {};\n }\n this.cacheTrack.id = 1;\n this.cacheTrack.sequenceNumber = ++this.sequenceNumber;\n this.cacheTrack.size = bytes;\n this.cacheTrack.dts = dts;\n this.cacheTrack.cts = cts;\n this.cacheTrack.isKeyframe = isIframe;\n this.cacheTrack.data = arrayBuffer;\n //\n this.cacheTrack.flags = {\n isLeading: 0,\n dependsOn: isIframe ? 2 : 1,\n isDependedOn: isIframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isIframe ? 0 : 1\n }\n\n //\n if (!this.timeInit && $video.buffered.length === 1) {\n player.debug.log('MediaSource', 'timeInit set true');\n this.timeInit = true;\n $video.currentTime = $video.buffered.end(0);\n }\n\n if (!this.isInitInfo && $video.videoWidth > 0 && $video.videoHeight > 0) {\n player.debug.log('MediaSource', `updateVideoInfo: ${$video.videoWidth},${$video.videoHeight}`);\n player.video.updateVideoInfo({\n width: $video.videoWidth,\n height: $video.videoHeight\n })\n player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n }\n\n appendBuffer(buffer) {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n if (this.sourceBuffer === null) {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(MP4_CODECS.avc);\n proxy(this.sourceBuffer, 'error', (error) => {\n this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.mediaSourceAppendBufferError) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferError is true`);\n return;\n }\n\n if (this.mediaSourceAppendBufferFull) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferFull is true`);\n return;\n }\n\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n try {\n this.sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n debug.warn('MediaSource', 'this.sourceBuffer.appendBuffer()', e.code, e);\n if (e.code === 22) {\n // QuotaExceededError\n // The SourceBuffer is full, and cannot free space to append additional buffers\n this.stop();\n this.mediaSourceAppendBufferFull = true;\n this.emit(EVENTS_ERROR.mediaSourceFull)\n } else if (e.code === 11) {\n // Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.\n this.stop();\n this.mediaSourceAppendBufferError = true;\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError);\n } else {\n debug.error('MediaSource', 'appendBuffer error', e)\n this.player.emit(EVENTS.mseSourceBufferError, e);\n }\n }\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emit(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emit(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(true);\n }\n }\n }\n\n stop() {\n this.abortSourceBuffer();\n this.removeSourceBuffer();\n this.endOfStream();\n }\n\n dropSourceBuffer(isDropping) {\n const $video = this.player.video.$videoElement;\n this.dropping = isDropping;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\n this.player.debug.warn('MediaSource', 'dropSourceBuffer', `$video.buffered.end(0) is ${$video.buffered.end(0)} - $video.currentTime ${$video.currentTime}`);\n $video.currentTime = $video.buffered.end(0);\n }\n }\n }\n\n\n removeBuffer(start, end) {\n\n if (this.isStateOpen && this.sourceBuffer.updating === false) {\n try {\n this.sourceBuffer.remove(start, end)\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeBuffer() error', e);\n }\n } else {\n this.player.debug.warn('MediaSource', 'removeBuffer() this.isStateOpen is', this.isStateOpen, 'this.sourceBuffer.updating', this.sourceBuffer.updating);\n }\n }\n\n endOfStream() {\n // fix: MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error\n const $videoElement = this.player.video && this.player.video.$videoElement;\n if (this.isStateOpen && $videoElement && $videoElement.readyState >= 1) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n this.player.debug.warn('MediaSource', 'endOfStream() error', e);\n }\n }\n }\n\n abortSourceBuffer() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n this.sourceBuffer = null;\n }\n }\n }\n\n removeSourceBuffer() {\n if (!this.isStateClosed) {\n if (this.mediaSource && this.sourceBuffer) {\n try {\n this.mediaSource.removeSourceBuffer(this.sourceBuffer);\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeSourceBuffer() error', e);\n }\n }\n }\n }\n\n\n}\n","// tks: https://github.com/richtr/NoSleep.js\n\nconst WEBM = \"data:video/webm;base64,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\";\nconst MP4 = \"data:video/mp4;base64,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\";\n\n\n// Detect iOS browsers < version 10\nconst\n oldIOS = () =>\n typeof navigator !== \"undefined\" &&\n parseFloat(\n (\n \"\" +\n (/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(\n navigator.userAgent\n ) || [0, \"\"])[1]\n )\n .replace(\"undefined\", \"3_2\")\n .replace(\"_\", \".\")\n .replace(\"_\", \"\")\n ) < 10 &&\n !window.MSStream;\n\n// Detect native Wake Lock API support\nconst nativeWakeLock = () => \"wakeLock\" in navigator;\n\nexport default class NoSleep {\n constructor(player) {\n this.player = player;\n this.enabled = false;\n if (nativeWakeLock()) {\n this._wakeLock = null;\n const handleVisibilityChange = () => {\n if (this._wakeLock !== null && document.visibilityState === \"visible\") {\n this.enable();\n }\n };\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n document.addEventListener(\"fullscreenchange\", handleVisibilityChange);\n } else if (oldIOS()) {\n this.noSleepTimer = null;\n } else {\n // Set up no sleep video element\n this.noSleepVideo = document.createElement(\"video\");\n\n this.noSleepVideo.setAttribute(\"title\", \"No Sleep\");\n this.noSleepVideo.setAttribute(\"playsinline\", \"\");\n\n this._addSourceToVideo(this.noSleepVideo, \"webm\", WEBM);\n this._addSourceToVideo(this.noSleepVideo, \"mp4\", MP4);\n\n this.noSleepVideo.addEventListener(\"loadedmetadata\", () => {\n if (this.noSleepVideo.duration <= 1) {\n // webm source\n this.noSleepVideo.setAttribute(\"loop\", \"\");\n } else {\n // mp4 source\n this.noSleepVideo.addEventListener(\"timeupdate\", () => {\n if (this.noSleepVideo.currentTime > 0.5) {\n this.noSleepVideo.currentTime = Math.random();\n }\n });\n }\n });\n }\n }\n\n _addSourceToVideo(element, type, dataURI) {\n var source = document.createElement(\"source\");\n source.src = dataURI;\n source.type = `video/${type}`;\n element.appendChild(source);\n }\n\n get isEnabled() {\n return this.enabled;\n }\n\n enable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n return navigator.wakeLock\n .request(\"screen\")\n .then((wakeLock) => {\n this._wakeLock = wakeLock;\n this.enabled = true;\n debug.log('wakeLock', 'Wake Lock active.')\n this._wakeLock.addEventListener(\"release\", () => {\n // ToDo: Potentially emit an event for the page to observe since\n // Wake Lock releases happen when page visibility changes.\n // (https://web.dev/wakelock/#wake-lock-lifecycle)\n debug.log('wakeLock', 'Wake Lock released.')\n });\n })\n .catch((err) => {\n this.enabled = false;\n debug.error('wakeLock', `${err.name}, ${err.message}`)\n throw err;\n });\n } else if (oldIOS()) {\n this.disable();\n this.noSleepTimer = window.setInterval(() => {\n if (!document.hidden) {\n window.location.href = window.location.href.split(\"#\")[0];\n window.setTimeout(window.stop, 0);\n }\n }, 15000);\n this.enabled = true;\n return Promise.resolve();\n } else {\n let playPromise = this.noSleepVideo.play();\n return playPromise\n .then((res) => {\n this.enabled = true;\n return res;\n })\n .catch((err) => {\n this.enabled = false;\n throw err;\n });\n }\n }\n\n disable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n if (this._wakeLock) {\n this._wakeLock.release();\n }\n this._wakeLock = null;\n } else if (oldIOS()) {\n if (this.noSleepTimer) {\n debug.warn('wakeLock', 'NoSleep now disabled for older iOS devices.')\n\n window.clearInterval(this.noSleepTimer);\n this.noSleepTimer = null;\n }\n } else {\n this.noSleepVideo.pause();\n }\n this.enabled = false;\n }\n}\n","import {DEFAULT_PLAYER_OPTIONS, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport Debug from \"../utils/debug\";\nimport Events from \"../utils/events\";\nimport property from './property';\nimport events from './events';\nimport {\n fpsStatus,\n initPlayTimes,\n isEmpty,\n isFullScreen, isMobile,\n isNotEmpty,\n now, supportMediaStreamTrack,\n supportMSE,\n supportOffscreenV2,\n supportWCS\n} from \"../utils\";\nimport Video from \"../video\";\nimport Audio from \"../audio\";\nimport Stream from \"../stream\";\nimport Recorder from \"../recorder\";\nimport DecoderWorker from \"../worker/index\";\nimport Emitter from \"../utils/emitter\";\nimport Demux from \"../demux\";\nimport WebcodecsDecoder from \"../decoder/webcodecs\";\nimport Control from \"../control\";\nimport './style.scss'\nimport observer from \"./observer\";\nimport MseDecoder from \"../decoder/mediaSource\";\nimport NoSleep from \"../utils/noSleep\";\n\nexport default class Player extends Emitter {\n constructor(container, options) {\n super()\n this.$container = container;\n this._opt = Object.assign({}, DEFAULT_PLAYER_OPTIONS, options)\n this.debug = new Debug(this);\n\n //\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n //\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\n }\n\n //\n if (this._opt.wcsUseVideoRender) {\n this._opt.wcsUseVideoRender = supportMediaStreamTrack()\n }\n\n // 如果使用mse则强制不允许 webcodecs\n if (this._opt.useMSE) {\n if (this._opt.useWCS) {\n this.debug.log('Player', 'useWCS set true->false')\n }\n\n if (!this._opt.forceNoOffscreen) {\n this.debug.log('Player', 'forceNoOffscreen set false->true')\n }\n\n this._opt.useWCS = false;\n this._opt.forceNoOffscreen = true;\n }\n\n if (!this._opt.forceNoOffscreen) {\n if (!supportOffscreenV2()) {\n this._opt.forceNoOffscreen = true;\n this._opt.useOffscreen = false;\n } else {\n this._opt.useOffscreen = true;\n }\n }\n\n if (!this._opt.hasAudio) {\n this._opt.operateBtns.audio = false\n }\n\n this._opt.hasControl = this._hasControl();\n //\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n //\n this._checkHeartTimeout = null;\n this._checkLoadingTimeout = null;\n this._checkStatsInterval = null;\n\n //\n this._startBpsTime = null;\n this._isPlayingBeforePageHidden = false;\n this._stats = {\n buf: 0, // 当前缓冲区时长,单位毫秒,\n fps: 0, // 当前视频帧率\n abps: 0, // 当前音频码率,单位bit\n vbps: 0, // 当前视频码率,单位bit\n ts: 0 // 当前视频帧pts,单位毫秒\n }\n\n // 各个步骤的时间统计\n this._times = initPlayTimes();\n\n //\n this._videoTimestamp = 0;\n this._audioTimestamp = 0;\n\n property(this);\n\n this.events = new Events(this);\n this.video = new Video(this);\n\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n this.recorder = new Recorder(this);\n\n if (!this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n } else {\n this.loaded = true;\n }\n\n this.stream = null;\n this.demux = null;\n this._lastVolume = null;\n\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n this.loaded = true\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n this.loaded = true\n }\n\n //\n this.control = new Control(this);\n\n if (isMobile()) {\n this.keepScreenOn = new NoSleep(this);\n }\n\n events(this);\n observer(this);\n\n if (this._opt.useWCS) {\n this.debug.log('Player', 'use WCS')\n }\n\n if (this._opt.useMSE) {\n this.debug.log('Player', 'use MSE')\n }\n\n if (this._opt.useOffscreen) {\n this.debug.log('Player', 'use offscreen')\n }\n\n this.debug.log('Player options', this._opt);\n }\n\n\n destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n this._lastVolume = null;\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n if (this.video) {\n this.video.destroy();\n this.video = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n //\n this.releaseWakeLock();\n this.keepScreenOn = null;\n // reset stats\n this.resetStats();\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n\n // 其他没法解耦的,通过 destroy 方式\n this.emit('destroy');\n // 接触所有绑定事件\n this.off();\n\n this.debug.log('play', 'destroy end');\n }\n\n set fullscreen(value) {\n if (isMobile() && this._opt.useWebFullScreen) {\n this.emit(EVENTS.webFullscreen, value);\n setTimeout(() => {\n this.updateOption({\n rotate: value ? 270 : 0,\n })\n this.resize();\n }, 10)\n } else {\n this.emit(EVENTS.fullscreen, value);\n }\n }\n\n get fullscreen() {\n return isFullScreen() || this.webFullscreen;\n }\n\n set webFullscreen(value) {\n this.emit(EVENTS.webFullscreen, value);\n }\n\n get webFullscreen() {\n return this.$container.classList.contains('jessibuca-fullscreen-web')\n }\n\n set loaded(value) {\n this._hasLoaded = value;\n }\n\n get loaded() {\n return this._hasLoaded;\n }\n\n //\n set playing(value) {\n\n if (value) {\n // 将loading 设置为 false\n this.loading = false;\n }\n\n if (this.playing !== value) {\n this._playing = value;\n this.emit(EVENTS.playing, value);\n this.emit(EVENTS.volumechange, this.volume);\n\n if (value) {\n this.emit(EVENTS.play);\n } else {\n this.emit(EVENTS.pause);\n }\n }\n }\n\n get playing() {\n return this._playing;\n }\n\n get volume() {\n return (this.audio && this.audio.volume) || 0;\n }\n\n set volume(value) {\n if (value !== this.volume) {\n this.audio && this.audio.setVolume(value);\n this._lastVolume = value;\n }\n }\n\n get lastVolume() {\n return this._lastVolume\n }\n\n set loading(value) {\n if (this.loading !== value) {\n this._loading = value;\n this.emit(EVENTS.loading, this._loading);\n }\n }\n\n get loading() {\n return this._loading;\n }\n\n set recording(value) {\n if (value) {\n if (this.playing) {\n this.recorder && this.recorder.startRecord();\n }\n } else {\n this.recorder && this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder ? this.recorder.recording : false;\n }\n\n set audioTimestamp(value) {\n if (value === null) {\n return;\n }\n this._audioTimestamp = value;\n }\n\n //\n get audioTimestamp() {\n return this._audioTimestamp;\n }\n\n //\n set videoTimestamp(value) {\n if (value === null) {\n return;\n }\n this._videoTimestamp = value;\n // just for wasm\n if (!this._opt.useWCS && !this._opt.useMSE) {\n if (this.audioTimestamp && this.videoTimestamp) {\n this.audio && this.audio.emit(EVENTS.videoSyncAudio, {\n audioTimestamp: this.audioTimestamp,\n videoTimestamp: this.videoTimestamp,\n diff: this.audioTimestamp - this.videoTimestamp\n })\n }\n }\n }\n\n //\n get videoTimestamp() {\n return this._videoTimestamp;\n }\n\n get isDebug() {\n return this._opt.debug === true;\n }\n\n\n /**\n *\n * @param options\n */\n updateOption(options) {\n this._opt = Object.assign({}, this._opt, options)\n }\n\n /**\n *\n * @returns {Promise}\n */\n init() {\n return new Promise((resolve, reject) => {\n if (!this.stream) {\n this.stream = new Stream(this);\n }\n\n if (!this.audio) {\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n }\n if (!this.demux) {\n this.demux = new Demux(this);\n }\n\n if (this._opt.useWCS) {\n if (!this.webcodecsDecoder) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n }\n\n if (this._opt.useMSE) {\n if (!this.mseDecoder) {\n this.mseDecoder = new MseDecoder(this);\n }\n }\n\n if (!this.decoderWorker && !this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n\n this.once(EVENTS.decoderWorkerInit, () => {\n resolve()\n })\n } else {\n resolve()\n }\n\n })\n }\n\n\n /**\n *\n * @param url\n * @returns {Promise}\n */\n play(url, options) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n return reject();\n }\n\n this.loading = true;\n this.playing = false;\n this._times.playInitStart = now();\n if (!url) {\n url = this._opt.url;\n }\n this._opt.url = url;\n\n this.clearCheckHeartTimeout();\n\n this.init().then(() => {\n this._times.playStart = now();\n //\n if (this._opt.isNotMute) {\n this.mute(false);\n }\n\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.webcodecsH265NotSupport);\n }\n })\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.mediaSourceH265NotSupport);\n }\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.emit(EVENTS_ERROR.mediaSourceFull)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.emit(EVENTS_ERROR.mediaSourceBufferListLarge);\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout);\n })\n }\n\n this.enableWakeLock();\n\n this.stream.fetchStream(url, options);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n reject(error)\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n reject(error)\n })\n\n // stream end\n this.stream.once(EVENTS.streamEnd, () => {\n reject();\n })\n // hls\n this.stream.once(EVENTS_ERROR.hlsError, (error) => {\n reject(error)\n })\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\n this.checkStatsInterval();\n })\n\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n /**\n *\n */\n close() {\n return new Promise((resolve, reject) => {\n this._close().then(() => {\n this.video && this.video.clearView();\n resolve()\n })\n })\n }\n\n resumeAudioAfterPause() {\n if (this.lastVolume) {\n this.volume = this.lastVolume;\n }\n }\n\n _close() {\n return new Promise((resolve, reject) => {\n //\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n //\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n\n if (this.video) {\n this.video.resetInit();\n this.video.pause(true);\n }\n // release lock\n this.releaseWakeLock();\n // reset stats\n this.resetStats();\n //\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n //\n this._times = initPlayTimes();\n //\n setTimeout(() => {\n resolve()\n }, 0)\n })\n }\n\n /**\n *\n * @param flag {boolean} 是否清除画面\n * @returns {Promise}\n */\n pause(flag = false) {\n if (flag) {\n return this.close();\n } else {\n return this._close();\n }\n }\n\n /**\n *\n * @param flag\n */\n mute(flag) {\n this.audio && this.audio.mute(flag)\n }\n\n /**\n *\n */\n resize() {\n this.video.resize();\n }\n\n /**\n *\n * @param fileName\n * @param fileType\n */\n startRecord(fileName, fileType) {\n if (this.recording) {\n return;\n }\n\n this.recorder.setFileName(fileName, fileType);\n this.recording = true;\n }\n\n /**\n *\n */\n stopRecordAndSave() {\n if (this.recording) {\n this.recording = false;\n }\n }\n\n _hasControl() {\n let result = false;\n\n let hasBtnShow = false;\n Object.keys(this._opt.operateBtns).forEach((key) => {\n if (this._opt.operateBtns[key]) {\n hasBtnShow = true;\n }\n });\n\n if (this._opt.showBandwidth || this._opt.text || hasBtnShow) {\n result = true;\n }\n\n return result;\n }\n\n _onlyMseOrWcsVideo() {\n return this._opt.hasAudio === false && (this._opt.useMSE || (this._opt.useWCS && !this._opt.useOffscreen))\n }\n\n checkHeart() {\n this.clearCheckHeartTimeout();\n this.checkHeartTimeout();\n }\n\n // 心跳检查,如果渲染间隔暂停了多少时间之后,就会抛出异常\n checkHeartTimeout() {\n this._checkHeartTimeout = setTimeout(() => {\n if (this.playing) {\n // check again\n if (this._stats.fps !== 0) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }\n\n }, this._opt.heartTimeout * 1000)\n }\n\n checkStatsInterval() {\n this._checkStatsInterval = setInterval(() => {\n this.updateStats();\n }, 1000)\n }\n\n //\n clearCheckHeartTimeout() {\n if (this._checkHeartTimeout) {\n clearTimeout(this._checkHeartTimeout);\n this._checkHeartTimeout = null;\n }\n }\n\n // loading 等待时间\n checkLoadingTimeout() {\n this._checkLoadingTimeout = setTimeout(() => {\n // check again\n if (this.playing) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.loadingTimeout);\n this.emit(EVENTS.loadingTimeout);\n });\n }, this._opt.loadingTimeout * 1000)\n }\n\n clearCheckLoadingTimeout() {\n if (this._checkLoadingTimeout) {\n clearTimeout(this._checkLoadingTimeout);\n this._checkLoadingTimeout = null;\n }\n }\n\n clearStatsInterval() {\n if (this._checkStatsInterval) {\n clearInterval(this._checkStatsInterval);\n this._checkStatsInterval = null;\n }\n }\n\n handleRender() {\n if (this.loading) {\n this.emit(EVENTS.start);\n this.loading = false;\n this.clearCheckLoadingTimeout();\n }\n if (!this.playing) {\n this.playing = true;\n }\n this.checkHeart();\n }\n\n\n //\n updateStats(options) {\n options = options || {};\n\n if (!this._startBpsTime) {\n this._startBpsTime = now();\n }\n\n if (isNotEmpty(options.ts)) {\n this._stats.ts = options.ts;\n }\n\n if (isNotEmpty(options.buf)) {\n this._stats.buf = options.buf;\n }\n\n if (options.fps) {\n this._stats.fps += 1;\n }\n if (options.abps) {\n this._stats.abps += options.abps;\n }\n if (options.vbps) {\n this._stats.vbps += options.vbps;\n }\n\n const _nowTime = now();\n const timestamp = _nowTime - this._startBpsTime;\n\n if (timestamp < 1 * 1000) {\n return;\n }\n\n this.emit(EVENTS.stats, this._stats);\n this.emit(EVENTS.performance, fpsStatus(this._stats.fps));\n this._stats.fps = 0;\n this._stats.abps = 0;\n this._stats.vbps = 0;\n this._startBpsTime = _nowTime;\n }\n\n resetStats() {\n this._startBpsTime = null;\n this._stats = {\n buf: 0, //ms\n fps: 0,\n abps: 0,\n vbps: 0,\n ts: 0\n }\n }\n\n enableWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.disable();\n }\n }\n\n handlePlayToRenderTimes() {\n const _times = this._times;\n _times.playTimestamp = _times.playStart - _times.playInitStart;\n _times.streamTimestamp = _times.streamStart - _times.playStart;\n _times.streamResponseTimestamp = _times.streamResponse - _times.streamStart;\n _times.demuxTimestamp = _times.demuxStart - _times.streamResponse;\n _times.decodeTimestamp = _times.decodeStart - _times.demuxStart;\n _times.videoTimestamp = _times.videoStart - _times.decodeStart;\n _times.allTimestamp = _times.videoStart - _times.playInitStart;\n this.emit(EVENTS.playToRenderTimes, _times);\n }\n\n getOption() {\n return this._opt;\n }\n}\n","import Player from './player';\nimport Events from \"./utils/events\";\nimport {DEMUX_TYPE, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS, PLAYER_PLAY_PROTOCOL, SCALE_MODE_TYPE} from \"./constant\";\nimport {isEmpty, isMobile, isNotEmpty, supportWCS, uuid16} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\n\n\nclass Jessibuca extends Emitter {\n static ERROR = EVENTS_ERROR\n\n static TIMEOUT = {\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n }\n\n constructor(options) {\n super()\n let _opt = options;\n let $container = options.container;\n if (typeof options.container === 'string') {\n $container = document.querySelector(options.container);\n }\n if (!$container) {\n throw new Error('Jessibuca need container option');\n return;\n }\n // check container node name\n if ($container.nodeName === 'CANVAS' || $container.nodeName === 'VIDEO') {\n throw new Error(`Jessibuca container type can not be ${$container.nodeName} type`);\n return;\n }\n\n if (_opt.videoBuffer >= _opt.heartTimeout) {\n throw new Error(`Jessibuca videoBuffer ${_opt.videoBuffer}s must be less than heartTimeout ${_opt.heartTimeout}s`);\n return;\n }\n\n\n $container.classList.add('jessibuca-container');\n\n delete _opt.container;\n\n // 禁用离屏渲染\n _opt.forceNoOffscreen = true;\n\n // 移动端不支持自动关闭控制栏\n if (isMobile()) {\n _opt.controlAutoHide = false;\n }\n\n // s -> ms\n if (isNotEmpty(_opt.videoBuffer)) {\n _opt.videoBuffer = Number(_opt.videoBuffer) * 1000\n }\n\n // setting\n if (isNotEmpty(_opt.timeout)) {\n if (isEmpty(_opt.loadingTimeout)) {\n _opt.loadingTimeout = _opt.timeout;\n }\n\n if (isEmpty(_opt.heartTimeout)) {\n _opt.heartTimeout = _opt.timeout\n }\n }\n\n this._opt = _opt;\n this.$container = $container;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.events = new Events(this);\n this._initPlayer($container, _opt);\n }\n\n /**\n *\n */\n destroy() {\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n this.$container = null;\n this._opt = null;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.off();\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n this.player.debug.log('jessibuca', '_initPlayer', this.player.getOption())\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n this._opt = Object.assign(this._opt, options);\n this._opt.url = '';// reset url\n this._initPlayer(this.$container, this._opt);\n }\n\n _bindEvents() {\n // 对外的事件\n Object.keys(JESSIBUCA_EVENTS).forEach((key) => {\n this.player.on(JESSIBUCA_EVENTS[key], (value) => {\n this.emit(key, value)\n })\n })\n }\n\n /**\n * 是否开启控制台调试打印\n * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n debug: !!value\n })\n }\n\n /**\n *\n */\n mute() {\n this.player.mute(true);\n }\n\n /**\n *\n */\n cancelMute() {\n this.player.mute(false);\n }\n\n /**\n *\n * @param value {number}\n */\n setVolume(value) {\n this.player.volume = value;\n }\n\n /**\n *\n */\n audioResume() {\n this.player.audio && this.player.audio.audioEnabled(true);\n }\n\n /**\n * 设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件\n * @param value {number}\n */\n setTimeout(time) {\n time = Number(time);\n this.player.updateOption({\n timeout: time,\n loadingTimeout: time,\n heartTimeout: time\n })\n }\n\n /**\n *\n * @param type {number}: 0,1,2\n */\n setScaleMode(type) {\n type = Number(type);\n let options = {\n isFullResize: false,\n isResize: false\n }\n switch (type) {\n case SCALE_MODE_TYPE.full:\n options.isFullResize = false;\n options.isResize = false;\n break;\n case SCALE_MODE_TYPE.auto:\n options.isFullResize = false;\n options.isResize = true;\n break;\n case SCALE_MODE_TYPE.fullAuto:\n options.isFullResize = true;\n options.isResize = true;\n break;\n }\n\n this.player.updateOption(options);\n this.resize();\n }\n\n /**\n *\n * @returns {Promise}\n */\n pause() {\n return this.player.pause();\n }\n\n /**\n *\n */\n close() {\n // clear url\n this._opt.url = '';\n this._opt.playOptions = {};\n return this.player.close();\n }\n\n\n /**\n *\n */\n clearView() {\n this.player.video.clearView()\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n */\n play(url, options = {}) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject('play url is empty')\n return;\n }\n\n if (url) {\n // url 相等的时候。\n if (this._opt.url) {\n // 存在相同的 url\n if (url === this._opt.url) {\n // 正在播放\n if (this.player.playing) {\n resolve();\n } else {\n // pause -> play\n this.clearView();\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'pause -> play and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'this._opt.url is null and pause error', e)\n reject(e);\n })\n }\n } else {\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'url is null and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n * @private\n */\n _play(url, options = {}) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\n this._opt.playOptions = options;\n // 新的url\n const isHttp = url.indexOf(\"http\") === 0;\n //\n const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket\n //\n const demuxType = (isHttp || url.indexOf(\".flv\") !== -1 || this._opt.isFlv) ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s;\n\n this.player.updateOption({\n protocol,\n demuxType\n })\n\n this.player.once(EVENTS_ERROR.webglAlignmentError, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'webglAlignmentError')\n this._resetPlayer({openWebglAlignment: true})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'webglAlignmentError and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'webglAlignmentError and play error')\n });\n });\n })\n\n\n this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n }\n });\n })\n\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n // media source full error\n this.player.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source full');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source full and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source full and reset player and play error')\n });\n })\n })\n // media source append buffer error\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source append buffer error');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source append buffer error and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source append buffer error and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source buffer list large');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source buffer list large and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source buffer list large and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source append buffer end timeout');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source append buffer end timeout and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source append buffer end timeout and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mseSourceBufferError, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'mseSourceBufferError close success')\n })\n })\n\n //\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsWidthOrHeightChange, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play')\n this._resetPlayer({useWCS: true})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'webcodecs Width Or Height Change reset player and play error')\n });\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsDecodeError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'webcodecs decode error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'webcodecs decode error reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'webcodecs decode error reset player and play error')\n });\n }\n });\n })\n // wasm。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n }\n })\n\n\n // 监听 delay timeout\n this.player.on(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay && (this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes || this.player._opt.heartTimeoutReplayTimes === -1)) {\n this.player.debug.log('Jessibuca', `delay timeout replay time is ${this._heartTimeoutReplayTimes}`)\n this._heartTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.on(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay && (this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes || this.player._opt.loadingTimeoutReplayTimes === -1)) {\n this.player.debug.log('Jessibuca', `loading timeout replay time is ${this._loadingTimeoutReplayTimes}`)\n this._loadingTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._loadingTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n\n if (this.hasLoaded()) {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.player.debug.warn('Jessibuca', 'hasLoaded and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.player.debug.warn('Jessibuca', 'decoderWorkerInit and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n })\n }\n })\n }\n\n\n /**\n *\n */\n resize() {\n this.player.resize();\n }\n\n /**\n *\n * @param time {number} s\n */\n setBufferTime(time) {\n time = Number(time)\n // s -> ms\n this.player.updateOption({\n videoBuffer: time * 1000\n })\n // update worker config\n this.player.decoderWorker && this.player.decoderWorker.updateWorkConfig({\n key: 'videoBuffer',\n value: time * 1000\n })\n }\n\n /**\n *\n * @param deg {number}\n */\n setRotate(deg) {\n deg = parseInt(deg, 10)\n const list = [0, 90, 180, 270];\n if (this._opt.rotate === deg || list.indexOf(deg) === -1) {\n return;\n }\n this.player.updateOption({\n rotate: deg\n })\n this.resize();\n }\n\n /**\n *\n * @returns {boolean}\n */\n hasLoaded() {\n return this.player.loaded;\n }\n\n /**\n *\n */\n setKeepScreenOn() {\n this.player.updateOption({\n keepScreenOn: true\n })\n }\n\n /**\n *\n * @param flag {Boolean}\n */\n setFullscreen(flag) {\n const fullscreen = !!flag;\n if (this.player.fullscreen !== fullscreen) {\n this.player.fullscreen = fullscreen;\n }\n }\n\n /**\n *\n * @param filename {string}\n * @param format {string}\n * @param quality {number}\n * @param type {string} download,base64,blob\n */\n screenshot(filename, format, quality, type) {\n\n if (!this.player.video) {\n return ''\n }\n\n return this.player.video.screenshot(filename, format, quality, type)\n }\n\n /**\n *\n * @param fileName {string}\n * @param fileType {string}\n * @returns {Promise}\n */\n startRecord(fileName, fileType) {\n return new Promise((resolve, reject) => {\n if (this.player.playing) {\n this.player.startRecord(fileName, fileType)\n resolve();\n } else {\n reject();\n }\n })\n }\n\n stopRecordAndSave() {\n if (this.player.recording) {\n this.player.stopRecordAndSave();\n }\n }\n\n /**\n *\n * @returns {Boolean}\n */\n isPlaying() {\n return this.player ? this.player.playing : false;\n }\n\n /**\n * 是否静音状态\n * @returns {Boolean}\n */\n isMute() {\n return this.player.audio ? this.player.audio.isMute : true;\n }\n\n /**\n * 是否在录制视频\n * @returns {*}\n */\n isRecording() {\n return this.player.recorder.recording;\n }\n\n\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","init","initVideo","render","playAudio","initAudio","kBps","decode","audioCode","videoCode","wasmError","WASM_ERROR","invalidNalUnitSize","MEDIA_TYPE","video","FLV_MEDIA_TYPE","WORKER_SEND_TYPE","audioDecode","videoDecode","close","updateConfig","EVENTS","webFullscreen","decoderWorkerInit","playing","pause","mute","load","loading","videoInfo","timeUpdate","audioInfo","log","error","delayTimeout","stats","performance","recording","recordingTimestamp","recordStart","recordEnd","recordCreateError","buffer","videoFrame","start","metadata","resize","streamEnd","streamSuccess","streamMessage","streamError","volumechange","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","mseSourceBufferFull","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","webcodecsDecodeError","webcodecsWidthOrHeightChange","mediaSourceH265NotSupport","mediaSourceFull","mediaSourceAppendBufferError","mediaSourceBufferListLarge","mediaSourceAppendBufferEndTimeout","wasmDecodeError","webglAlignmentError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","CANVAS_RENDER_TYPE","webcodecs","webgl","offscreen","ENCODED_VIDEO_TYPE","key","delta","MP4_CODECS","avc","hev","MEDIA_SOURCE_STATE","ended","closed","AUDIO_SYNC_VIDEO_DIFF","HOT_KEY","esc","arrowUp","arrowDown","WCS_ERROR","keyframeIsRequiredError","FETCH_ERROR","abortError1","abortError2","abort","Debug","constructor","master","name","_opt","args","console","warn","Events","destroys","proxy","bind","target","callback","option","Array","isArray","map","item","addEventListener","removeEventListener","push","forEach","event","player","Object","defineProperty","get","clientRect","$container","getBoundingClientRect","width","Math","max","clientWidth","height","clientHeight","rect","noop","supportOffscreen","$canvas","transferControlToOffscreen","supportOffscreenV2","OffscreenCanvas","createContextGL","gl","validContextNames","nameIndex","length","contextName","contextOptions","preserveDrawingBuffer","getContext","e","getParameter","dataURLToFile","dataURL","arr","split","bstr","atob","type","replace","n","u8arr","Uint8Array","charCodeAt","File","now","Date","getTime","WebAssembly","instantiate","module","Module","of","Instance","clamp","num","a","b","min","setStyle","element","value","keys","style","getStyle","numberType","getComputedStyle","getPropertyValue","parseFloat","getNowTime","calculationRate","totalSize","lastTime","size","thisTime","diffTime","isMobile","test","window","navigator","userAgent","toLowerCase","supportWCS","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","toString","codec","description","isFullScreen","screenfull","isFullscreen","bpsSize","parseInt","isNaN","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","document","createElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","supportMediaStreamTrack","MediaStreamTrackGenerator","isEmpty","undefined","isBoolean","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","formatTimeTips","time","hour","floor","sec","round","getTarget","srcElement","isWebglRenderSupport","getBrowser","UserAgent","browserInfo","browserArray","IE","ActiveXObject","Chrome","indexOf","Firefox","Opera","Safari","Edge","QQBrowser","WeixinBrowser","i","versions","match","mt","mimeTypes","version","closeVideoFrame","screenfullChange","emit","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","includes","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","evts","liveEvents","len","vertexShaderScript","join","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","w","y","u","v","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","resetInit","encType","encTypeCode","removeChild","$videoElement","updateVideoInfo","clearView","_global","global","this","bom","opts","autoBom","Blob","String","fromCharCode","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","status","click","node","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","prototype","URL","webkitURL","createElementNS","rel","href","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","resizeWidth","resizeHeight","wScale","hScale","scale","transform","VideoLoader","muted","_delayPlay","trackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","canvasContext","fixChromeVideoFlashBug","_play","timeStamp","isPlaying","currentTime","src","removeAttribute","stop","browser","backdropFilter","translateZ","readyState","_getVideoReadyState","isNow","$video","canvas","videoWidth","videoHeight","write","objectFill","objectFit","paused","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isMute","isStateSuspended","volume","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","setValueAtTime","disconnect","state","resume","suspend","isStateRunning","Audio","FetchLoader","abortController","AbortController","streamRate","rate","fetchStream","demux","_times","fetchOptions","assign","signal","headers","res","getReader","fetchNext","read","done","byteLength","dispatch","errorString","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","RecordRTCLoader","fileName","fileType","isRecording","recordingInterval","_reset","setFileName","recordTime","startRecord","mimeType","onTimeStamp","timestamp","disableLogs","stream","captureStream","audioStream","getAudioTracks","audioTrack","enabled","addTrack","recorder","RecordRTC","startRecording","setInterval","stopRecordAndSave","stopRecording","getBlob","clearInterval","Recorder","DecoderWorker","decoderWorker","Worker","_initDecoderWorker","postMessage","cmd","terminate","onmessage","_initWork","code","handleRender","updateStats","buf","delay","handlePlayToRenderTimes","JSON","stringify","decodeVideo","arrayBuffer","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","payload","_doDecoderDecode","_doDecode","cts","pushBuffer","webcodecsDecoder","mseDecoder","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp","ArrayBuffer","tmp8","tmp32","Uint32Array","t","abps","vbps","need","next","combine","set","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","isIframe","Demux","ExpGolomb","uint8array","TAG","_buffer","_buffer_index","_total_bytes","_total_bits","_current_word","_current_word_bits_left","_fillCurrentWord","buffer_bytes_left","bytes_read","word","readBits","bits","bits_need_left","bits_read_next","result2","readBool","readByte","_skipLeadingZero","zero_count","readUEG","leading_zeros","readSEG","SPSParser","_ebsp2rbsp","src_length","dst","dst_idx","parseSPS","rbsp","gb","profile_idc","level_idc","profile_string","getProfileString","level_string","getLevelString","chroma_format_idc","chroma_format","chroma_format_table","bit_depth","scaling_list_count","_skipScalingList","pic_order_cnt_type","num_ref_frames_in_pic_order_cnt_cycle","ref_frames","pic_width_in_mbs_minus1","pic_height_in_map_units_minus1","frame_mbs_only_flag","frame_crop_left_offset","frame_crop_right_offset","frame_crop_top_offset","frame_crop_bottom_offset","frame_cropping_flag","sar_width","sar_height","fps_fixed","fps_num","fps_den","vui_parameters_present_flag","aspect_ratio_idc","sar_w_table","sar_h_table","num_units_in_tick","time_scale","sarScale","crop_unit_x","crop_unit_y","sub_wc","sub_hc","codec_width","codec_height","present_width","ceil","chroma_format_string","getChromaFormatString","frame_rate","fixed","sar_ratio","codec_size","present_size","count","last_scale","next_scale","delta_scale","chroma","parseAVCDecoderConfigurationRecord","meta","avcProfile","_naluLengthSize","spsCount","offset","getUint16","sps","codecWidth","codecHeight","presentWidth","presentHeight","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","timescale","ppsCount","videoType","WebcodecsDecoder","hasInit","isDecodeFirstIIframe","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","setAttribute","display","overflow","pointerEvents","zIndex","playerWidth","playerHeight","contentDocument","defaultView","screenfullH5Control","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$qualityMenu","$volume","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","resumeAudioAfterPause","$volumePanelWrap","lastVolume","_lastVolume","isVolumeDroging","$recordingStop","startDelayControlHidden","stopDelayControlHidden","delayHiddenTimeout","clearTimeout","addHotkey","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","preventDefault","Control","template","property","observer","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","nodeName","visibilityState","_isPlayingBeforePageHidden","enableWakeLock","MP4","types","avc1","hvc1","hvcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","hasOwnProperty","constants","FTYP","STSD_PREFIX","STTS","STSC","STCO","STSZ","HDLR_VIDEO","HDLR_AUDIO","DREF","SMHD","VMHD","box","datas","call","arguments","arrayCount","generateInitSegment","duration","trackId","id","xmhd","channelCount","audioSampleRate","configSize","concat","avcc","track","baseMediaDecodeTime","sequenceNumber","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","isNonSync","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","firstRenderTime","mediaSourceAppendBufferFull","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","dts","_decodeVideo","metaData","metaBox","appendBuffer","bytes","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","abortSourceBuffer","removeSourceBuffer","endOfStream","dropSourceBuffer","isDropping","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","random","dataURI","isEnabled","wakeLock","err","disable","hidden","Promise","resolve","playPromise","release","Player","container","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_checkStatsInterval","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","clearStatsInterval","releaseWakeLock","resetStats","updateOption","contains","isDebug","reject","checkLoadingTimeout","hlsError","checkStatsInterval","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","_nowTime","getOption","Jessibuca","Error","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_initPlayer","_bindEvents","_resetPlayer","setDebug","cancelMute","audioResume","setScaleMode","playOptions","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"jessibuca.js","sources":["../../node_modules/@babel/runtime/helpers/defineProperty.js","../../src/constant/index.js","../../src/utils/debug.js","../../src/utils/events.js","../../src/player/property.js","../../node_modules/screenfull/dist/screenfull.js","../../src/utils/index.js","../../src/player/events.js","../../src/utils/emitter.js","../../src/utils/webgl.js","../../src/video/commonLoader.js","../../src/utils/file-save.js","../../src/video/canvasLoader.js","../../src/video/videoLoader.js","../../src/video/index.js","../../src/audio/audioContextLoader.js","../../src/audio/index.js","../../src/stream/fetchLoader.js","../../src/stream/websocketLoader.js","../../src/stream/index.js","../../node_modules/recordrtc/RecordRTC.js","../../src/recorder/recordRTCLoader.js","../../src/recorder/index.js","../../src/worker/index.js","../../src/demux/commonLoader.js","../../src/demux/flvLoader.js","../../src/demux/m7sLoader.js","../../src/demux/index.js","../../src/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/decoder/webcodecs.js","../../src/control/icons.js","../../src/control/template.js","../../src/control/observer.js","../../src/control/property.js","../../src/control/events.js","../../node_modules/style-inject/dist/style-inject.es.js","../../src/control/hotkey.js","../../src/control/index.js","../../src/player/observer.js","../../src/remux/fmp4-generator.js","../../src/decoder/mediaSource.js","../../src/utils/noSleep.js","../../src/player/index.js","../../src/jessibuca.js"],"sourcesContent":["function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 播放协议\nexport const PLAYER_PLAY_PROTOCOL = {\n websocket: 0,\n fetch: 1,\n webrtc: 2,\n}\n\nexport const DEMUX_TYPE = {\n flv: 'flv',\n m7s: 'm7s'\n}\n\nexport const FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\n};\n\nexport const MEDIA_SOURCE_UPDATE_END_TIMEOUT = 10 * 1000\n\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms 1 second\n videoBufferDelay: 1000,// 1000ms\n isResize: true,\n isFullResize: false, //\n isFlv: false,\n debug: false,\n hotKey: false, // 快捷键\n loadingTimeout: 10, // loading timeout\n heartTimeout: 5, // heart timeout\n timeout: 10, // second\n loadingTimeoutReplay: true, // loading timeout replay. default is true\n heartTimeoutReplay: true,// heart timeout replay.\n loadingTimeoutReplayTimes: 3, // loading timeout replay fail times\n heartTimeoutReplayTimes: 3, // heart timeout replay fail times\n supportDblclickFullscreen: false, // support double click toggle fullscreen\n showBandwidth: false, // show band width\n keepScreenOn: false, //\n isNotMute: false, //\n hasAudio: true, // has audio\n hasVideo: true, // has video\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false, // control auto hide\n hasControl: false,\n loadingText: '', // loading Text\n background: '',\n decoder: 'decoder.js',\n url: '',// play url\n rotate: 0, //\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false, //\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, // demux type\n useWCS: false, //\n wcsUseVideoRender: true,// 默认设置为true\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\n wasmDecodeAudioSyncVideo: false,// wasm 解码之后音视频同步\n recordType: FILE_SUFFIX.webm,\n useWebFullScreen: false, // use web full screen\n}\n\n\nexport const WORKER_CMD_TYPE = {\n init: 'init',\n initVideo: 'initVideo',\n render: 'render',\n playAudio: 'playAudio',\n initAudio: 'initAudio',\n kBps: 'kBps',\n decode: 'decode',\n audioCode: 'audioCode',\n videoCode: 'videoCode',\n wasmError: 'wasmError'\n}\n\nexport const WASM_ERROR = {\n invalidNalUnitSize: 'Invalid NAL unit size',\n // errorSplittingTheInputIntoNALUnits: 'Error splitting the input into NAL units'\n}\n\nexport const MEDIA_TYPE = {\n audio: 1,\n video: 2\n}\n\nexport const FLV_MEDIA_TYPE = {\n audio: 8,\n video: 9\n}\n\nexport const WORKER_SEND_TYPE = {\n init: 'init',\n decode: 'decode',\n audioDecode: 'audioDecode',\n videoDecode: 'videoDecode',\n close: 'close',\n updateConfig: 'updateConfig'\n}\n\n\n//\nexport const EVENTS = {\n fullscreen: 'fullscreen$2',\n webFullscreen: 'webFullscreen',\n decoderWorkerInit: 'decoderWorkerInit',\n play: 'play',\n playing: 'playing',\n pause: 'pause',\n mute: 'mute',\n load: 'load',\n loading: 'loading',\n videoInfo: 'videoInfo',\n timeUpdate: 'timeUpdate',\n audioInfo: \"audioInfo\",\n log: 'log',\n error: \"error\",\n kBps: 'kBps',\n timeout: 'timeout',\n delayTimeout: 'delayTimeout',\n loadingTimeout: 'loadingTimeout',\n stats: 'stats',\n performance: \"performance\",\n record: 'record',\n recording: 'recording',\n recordingTimestamp: 'recordingTimestamp',\n recordStart: 'recordStart',\n recordEnd: 'recordEnd',\n recordCreateError: 'recordCreateError',\n buffer: 'buffer',\n videoFrame: 'videoFrame',\n start: 'start',\n metadata: 'metadata',\n resize: 'resize',\n streamEnd: 'streamEnd',\n streamSuccess: 'streamSuccess',\n streamMessage: 'streamMessage',\n streamError: 'streamError',\n volumechange: 'volumechange',\n destroy: 'destroy',\n mseSourceOpen: 'mseSourceOpen',\n mseSourceClose: 'mseSourceClose',\n mseSourceBufferError: 'mseSourceBufferError',\n mseSourceBufferBusy: 'mseSourceBufferBusy',\n mseSourceBufferFull: 'mseSourceBufferFull',\n videoWaiting: 'videoWaiting',\n videoTimeUpdate: 'videoTimeUpdate',\n videoSyncAudio: 'videoSyncAudio',\n playToRenderTimes: 'playToRenderTimes'\n}\n\n\nexport const JESSIBUCA_EVENTS = {\n load: EVENTS.load,\n timeUpdate: EVENTS.timeUpdate,\n videoInfo: EVENTS.videoInfo,\n audioInfo: EVENTS.audioInfo,\n error: EVENTS.error,\n kBps: EVENTS.kBps,\n log: EVENTS.log,\n start: EVENTS.start,\n timeout: EVENTS.timeout,\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n fullscreen: 'fullscreen',\n webFullscreen: EVENTS.webFullscreen,\n play: EVENTS.play,\n pause: EVENTS.pause,\n mute: EVENTS.mute,\n stats: EVENTS.stats,\n performance: EVENTS.performance,\n recordingTimestamp: EVENTS.recordingTimestamp,\n recordStart: EVENTS.recordStart,\n recordEnd: EVENTS.recordEnd,\n playToRenderTimes: EVENTS.playToRenderTimes\n}\n\nexport const EVENTS_ERROR = {\n playError: 'playIsNotPauseOrUrlIsNull',\n fetchError: \"fetchError\",\n websocketError: 'websocketError',\n webcodecsH265NotSupport: 'webcodecsH265NotSupport',\n webcodecsDecodeError: 'webcodecsDecodeError',\n webcodecsWidthOrHeightChange: 'webcodecsWidthOrHeightChange',\n mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n mediaSourceFull: EVENTS.mseSourceBufferFull,\n mseSourceBufferError: EVENTS.mseSourceBufferError,\n mediaSourceAppendBufferError: 'mediaSourceAppendBufferError',\n mediaSourceBufferListLarge: 'mediaSourceBufferListLarge',\n mediaSourceAppendBufferEndTimeout: 'mediaSourceAppendBufferEndTimeout',\n wasmDecodeError: 'wasmDecodeError',\n webglAlignmentError: 'webglAlignmentError'\n}\n\n\nexport const WEBSOCKET_STATUS = {\n notConnect: 'notConnect',\n open: 'open',\n close: 'close',\n error: 'error'\n}\n\nexport const BUFFER_STATUS = {\n empty: 'empty',\n buffering: 'buffering',\n full: 'full'\n}\n\n\nexport const SCREENSHOT_TYPE = {\n download: 'download',\n base64: 'base64',\n blob: 'blob'\n}\n\n\nexport const VIDEO_ENC_TYPE = {\n 7: 'H264(AVC)', //\n 12: 'H265(HEVC)' //\n}\n\nexport const VIDEO_ENC_CODE = {\n h264: 7,\n h265: 12\n}\n\n\nexport const AUDIO_ENC_TYPE = {\n 10: 'AAC',\n 7: 'ALAW',\n 8: 'MULAW'\n}\n\nexport const H265_NAL_TYPE = {\n vps: 32,\n sps: 33,\n pps: 34\n}\n\nexport const CONTROL_HEIGHT = 38\n\nexport const SCALE_MODE_TYPE = {\n full: 0, // 视频画面完全填充canvas区域,画面会被拉伸\n auto: 1, // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n fullAuto: 2 // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n}\n\n\nexport const CANVAS_RENDER_TYPE = {\n webcodecs: 'webcodecs',\n webgl: 'webgl',\n offscreen: 'offscreen'\n}\n\nexport const ENCODED_VIDEO_TYPE = {\n key: 'key',\n delta: 'delta'\n}\n\n\nexport const MP4_CODECS = {\n avc: 'video/mp4; codecs=\"avc1.64002A\"',\n hev: 'video/mp4; codecs=\"hev1.1.6.L123.b0\"',\n}\n\n\nexport const MEDIA_SOURCE_STATE = {\n ended: 'ended',\n open: 'open',\n closed: 'closed'\n}\n\n\n// frag duration\nexport const FRAG_DURATION = Math.ceil(1000 / 25)\n\n\nexport const AUDIO_SYNC_VIDEO_DIFF = 1000;\n\n\nexport const HOT_KEY = {\n esc: 27, //\n arrowUp: 38, //\n arrowDown: 40, //\n}\nexport const WCS_ERROR = {\n keyframeIsRequiredError: 'A key frame is required after configure() or flush()'\n}\n\n\nexport const FETCH_ERROR = {\n abortError1: 'The user aborted a request',\n abortError2: 'AbortError',\n abort: 'AbortError'\n}\n","export default class Debug {\n constructor(master) {\n this.log = (name, ...args) => {\n if (master._opt.debug) {\n console.log(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.warn = (name, ...args) => {\n if (master._opt.debug) {\n console.warn(`Jessibuca: [${name}]`, ...args);\n }\n };\n\n this.error = (name, ...args) => {\n console.error(`Jessibuca: [${name}]`, ...args);\n };\n }\n}\n","export default class Events {\n constructor(master) {\n this.destroys = [];\n this.proxy = this.proxy.bind(this);\n this.master = master;\n }\n\n proxy(target, name, callback, option = {}) {\n if (!target) {\n return;\n }\n if (Array.isArray(name)) {\n return name.map(item => this.proxy(target, item, callback, option));\n }\n target.addEventListener(name, callback, option);\n const destroy = () => target.removeEventListener(name, callback, option);\n this.destroys.push(destroy);\n return destroy;\n }\n\n destroy() {\n this.master.debug && this.master.debug.log(`Events`, 'destroy');\n this.destroys.forEach(event => event());\n }\n}\n","export default (player) => {\n Object.defineProperty(player, 'rect', {\n get: () => {\n const clientRect = player.$container.getBoundingClientRect()\n clientRect.width = Math.max(clientRect.width, player.$container.clientWidth);\n clientRect.height = Math.max(clientRect.height, player.$container.clientHeight);\n return clientRect;\n },\n });\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(key => {\n Object.defineProperty(player, key, {\n get: () => {\n return player.rect[key];\n },\n });\n });\n}\n","/*!\n* screenfull\n* v5.1.0 - 2020-12-24\n* (c) Sindre Sorhus; MIT License\n*/\n(function () {\n\t'use strict';\n\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\n\n\tvar fn = (function () {\n\t\tvar val;\n\n\t\tvar fnMap = [\n\t\t\t[\n\t\t\t\t'requestFullscreen',\n\t\t\t\t'exitFullscreen',\n\t\t\t\t'fullscreenElement',\n\t\t\t\t'fullscreenEnabled',\n\t\t\t\t'fullscreenchange',\n\t\t\t\t'fullscreenerror'\n\t\t\t],\n\t\t\t// New WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullscreen',\n\t\t\t\t'webkitExitFullscreen',\n\t\t\t\t'webkitFullscreenElement',\n\t\t\t\t'webkitFullscreenEnabled',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t// Old WebKit\n\t\t\t[\n\t\t\t\t'webkitRequestFullScreen',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitCurrentFullScreenElement',\n\t\t\t\t'webkitCancelFullScreen',\n\t\t\t\t'webkitfullscreenchange',\n\t\t\t\t'webkitfullscreenerror'\n\n\t\t\t],\n\t\t\t[\n\t\t\t\t'mozRequestFullScreen',\n\t\t\t\t'mozCancelFullScreen',\n\t\t\t\t'mozFullScreenElement',\n\t\t\t\t'mozFullScreenEnabled',\n\t\t\t\t'mozfullscreenchange',\n\t\t\t\t'mozfullscreenerror'\n\t\t\t],\n\t\t\t[\n\t\t\t\t'msRequestFullscreen',\n\t\t\t\t'msExitFullscreen',\n\t\t\t\t'msFullscreenElement',\n\t\t\t\t'msFullscreenEnabled',\n\t\t\t\t'MSFullscreenChange',\n\t\t\t\t'MSFullscreenError'\n\t\t\t]\n\t\t];\n\n\t\tvar i = 0;\n\t\tvar l = fnMap.length;\n\t\tvar ret = {};\n\n\t\tfor (; i < l; i++) {\n\t\t\tval = fnMap[i];\n\t\t\tif (val && val[1] in document) {\n\t\t\t\tfor (i = 0; i < val.length; i++) {\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t})();\n\n\tvar eventNameMap = {\n\t\tchange: fn.fullscreenchange,\n\t\terror: fn.fullscreenerror\n\t};\n\n\tvar screenfull = {\n\t\trequest: function (element, options) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar onFullScreenEntered = function () {\n\t\t\t\t\tthis.off('change', onFullScreenEntered);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenEntered);\n\n\t\t\t\telement = element || document.documentElement;\n\n\t\t\t\tvar returnPromise = element[fn.requestFullscreen](options);\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\texit: function () {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (!this.isFullscreen) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar onFullScreenExit = function () {\n\t\t\t\t\tthis.off('change', onFullScreenExit);\n\t\t\t\t\tresolve();\n\t\t\t\t}.bind(this);\n\n\t\t\t\tthis.on('change', onFullScreenExit);\n\n\t\t\t\tvar returnPromise = document[fn.exitFullscreen]();\n\n\t\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t\t}\n\t\t\t}.bind(this));\n\t\t},\n\t\ttoggle: function (element, options) {\n\t\t\treturn this.isFullscreen ? this.exit() : this.request(element, options);\n\t\t},\n\t\tonchange: function (callback) {\n\t\t\tthis.on('change', callback);\n\t\t},\n\t\tonerror: function (callback) {\n\t\t\tthis.on('error', callback);\n\t\t},\n\t\ton: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\toff: function (event, callback) {\n\t\t\tvar eventName = eventNameMap[event];\n\t\t\tif (eventName) {\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t\t}\n\t\t},\n\t\traw: fn\n\t};\n\n\tif (!fn) {\n\t\tif (isCommonjs) {\n\t\t\tmodule.exports = {isEnabled: false};\n\t\t} else {\n\t\t\twindow.screenfull = {isEnabled: false};\n\t\t}\n\n\t\treturn;\n\t}\n\n\tObject.defineProperties(screenfull, {\n\t\tisFullscreen: {\n\t\t\tget: function () {\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\n\t\t\t}\n\t\t},\n\t\telement: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn document[fn.fullscreenElement];\n\t\t\t}\n\t\t},\n\t\tisEnabled: {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\t// Coerce to boolean in case of old WebKit\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (isCommonjs) {\n\t\tmodule.exports = screenfull;\n\t} else {\n\t\twindow.screenfull = screenfull;\n\t}\n})();\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\nimport screenfull from \"screenfull\";\nexport function noop() {\n}\n\n\nexport function supportOffscreen($canvas) {\n return typeof $canvas.transferControlToOffscreen === 'function';\n}\n\n\nexport function supportOffscreenV2() {\n return typeof OffscreenCanvas !== \"undefined\";\n}\n\n\nexport function createContextGL($canvas) {\n let gl = null;\n\n const validContextNames = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"];\n let nameIndex = 0;\n\n while (!gl && nameIndex < validContextNames.length) {\n const contextName = validContextNames[nameIndex];\n\n try {\n let contextOptions = {preserveDrawingBuffer: true};\n gl = $canvas.getContext(contextName, contextOptions);\n } catch (e) {\n gl = null;\n }\n\n if (!gl || typeof gl.getParameter !== \"function\") {\n gl = null;\n }\n\n ++nameIndex;\n }\n\n\n return gl;\n}\n\n\nexport function audioContextUnlock(context) {\n context.resume();\n const source = context.createBufferSource();\n source.buffer = context.createBuffer(1, 1, 22050);\n source.connect(context.destination);\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n}\n\nexport function dataURLToFile(dataURL = '') {\n const arr = dataURL.split(\",\");\n const bstr = atob(arr[1]);\n const type = arr[0].replace(\"data:\", \"\").replace(\";base64\", \"\")\n let n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new File([u8arr], 'file', {type});\n}\n\nexport function downloadFile(file, fileName) {\n if (file instanceof Blob || file instanceof File) {\n file = new Blob([file]);\n }\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n aLink.href = file;\n aLink.click();\n}\n\n\nexport function downloadImg(content, fileName) {\n const aLink = document.createElement(\"a\");\n aLink.download = fileName;\n const href = URL.createObjectURL(content);\n aLink.href = href;\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(href);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function checkFull() {\n let isFull = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement;\n if (isFull === undefined) isFull = false;\n return !!isFull;\n}\n\nexport function now() {\n return new Date().getTime();\n}\n\nexport const supportedWasm = (() => {\n try {\n if (typeof WebAssembly === \"object\"\n && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {\n }\n return false;\n})();\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function setStyle(element, key, value) {\n if (!element) {\n return\n }\n if (typeof key === 'object') {\n Object.keys(key).forEach(item => {\n setStyle(element, item, key[item]);\n });\n }\n element.style[key] = value;\n return element;\n}\n\n\nexport function getStyle(element, key, numberType = true) {\n if (!element) {\n return 0\n }\n\n const value = getComputedStyle(element, null).getPropertyValue(key);\n return numberType ? parseFloat(value) : value;\n}\n\nexport function getNowTime() {\n if (performance && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n}\n\nexport function calculationRate(callback) {\n let totalSize = 0;\n let lastTime = getNowTime();\n return size => {\n totalSize += size;\n const thisTime = getNowTime();\n const diffTime = thisTime - lastTime;\n if (diffTime >= 1000) {\n callback((totalSize / diffTime) * 1000);\n lastTime = thisTime;\n totalSize = 0;\n }\n };\n}\n\nexport function downloadRecord(blob, name, suffix) {\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = (name || now()) + '.' + (suffix || FILE_SUFFIX.webm);\n a.click();\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport const env = '__ENV__';\n\nexport function isMobile() {\n return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));\n}\n\nexport function isAndroid() {\n const UA = window.navigator.userAgent.toLowerCase();\n return (/android/i.test(UA));\n}\n\nexport function isIOS() {\n const UA = window.navigator.userAgent.toLowerCase();\n return UA && /iphone|ipad|ipod|ios/.test(UA);\n}\n\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n var format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n var date;\n if (typeof time === 'object') {\n date = time\n } else {\n if (('' + time).length === 10) time = parseInt(time) * 1000;\n time = +time; // 转成int 型\n date = new Date(time)\n }\n var formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n };\n var time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n var value = formatObj[key]\n if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n });\n return time_str\n}\n\n// 是否支持 webcodecs\nexport function supportWCS() {\n return \"VideoEncoder\" in window;\n}\n\nexport function toNumber(value) {\n if (typeof value !== 'string') {\n return value;\n } else {\n // 转换成 number 类型\n var parsed = Number(value);\n return isNaN(parsed) ? value : parsed;\n }\n}\n\nexport function uuid16() {\n return 'xxxxxxxxxxxx4xxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n\nexport function throttle(callback, delay) {\n let isThrottled = false;\n let args;\n let context;\n\n function fn(...args2) {\n if (isThrottled) {\n args = args2;\n context = this;\n return;\n }\n\n isThrottled = true;\n callback.apply(this, args2);\n setTimeout(() => {\n isThrottled = false;\n if (args) {\n fn.apply(context, args);\n args = null;\n context = null;\n }\n }, delay);\n }\n\n return fn;\n}\n\n\nexport function isDef(v) {\n return v !== undefined && v !== null;\n}\n\nexport function formatVideoDecoderConfigure(avcC) {\n let codecArray = avcC.subarray(1, 4);\n let codecString = \"avc1.\";\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = \"0\" + h\n }\n codecString += h\n }\n\n return {\n codec: codecString,\n description: avcC\n }\n}\n\nexport function isFullScreen() {\n return screenfull.isFullscreen\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '' || parseInt(value) === 0 || isNaN(parseInt(value))) {\n return \"0KB/s\";\n }\n let size = parseFloat(value);\n size = size.toFixed(2);\n return size + 'KB/s';\n}\n\n\nexport function fpsStatus(fps) {\n let result = 0;\n if (fps >= 24) {\n result = 2;\n } else if (fps >= 15) {\n result = 1;\n }\n\n return result;\n}\n\nexport function createEmptyImageBitmap(width, height) {\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.width = width;\n $canvasElement.height = height;\n return window.createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\n}\n\nexport function supportMediaStreamTrack() {\n return window.MediaStreamTrackGenerator && typeof window.MediaStreamTrackGenerator === 'function'\n}\n\n\nexport function formatMp4VideoCodec(codec) {\n return `video/mp4; codecs=\"${codec}\"`\n}\n\n\nexport function saveBlobToFile(fileName, blob) {\n let url = window.URL.createObjectURL(blob);\n let aLink = window.document.createElement('a');\n aLink.download = fileName;\n aLink.href = url;\n //创建内置事件并触发\n let evt = window.document.createEvent('MouseEvents');\n evt.initEvent(\"click\", true, true); //initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为\n aLink.dispatchEvent(evt);\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n }, isIOS() ? 1000 : 0)\n}\n\nexport function isEmpty(value) {\n return value === null || value === undefined\n}\n\nexport function isBoolean(value) {\n return value === true || value === false;\n}\n\nexport function isNotEmpty(value) {\n return !isEmpty(value)\n}\n\nexport function initPlayTimes() {\n return {\n playInitStart: '', //1\n playStart: '', // 2\n streamStart: '', //3\n streamResponse: '', // 4\n demuxStart: '', // 5\n decodeStart: '', // 6\n videoStart: '', // 7\n playTimestamp: '',// playStart- playInitStart\n streamTimestamp: '',// streamStart - playStart\n streamResponseTimestamp: '',// streamResponse - streamStart\n demuxTimestamp: '', // demuxStart - streamResponse\n decodeTimestamp: '', // decodeStart - demuxStart\n videoTimestamp: '',// videoStart - decodeStart\n allTimestamp: '' // videoStart - playInitStart\n }\n}\n\n// create watermark\nexport function createWatermark(options) {\n let defaultConfig = {\n container: '',\n left: '',\n right: '',\n top: '',\n bottom: '',\n image: {\n src: '',\n width: '100',\n height: '60',\n },\n text: {\n content: '',\n fontSize: '14',\n color: '#000'\n },\n }\n defaultConfig = Object.assign(defaultConfig, options)\n\n const $container = defaultConfig.container;\n\n if ($container) {\n return\n }\n\n let shadowRoot = null;\n const otDiv = document.createElement('div');\n otDiv.setAttribute('style', 'pointer-events: none !important; display: block !important');\n\n if (typeof otDiv.attachShadow === \"function\") {\n shadowRoot = otDiv.attachShadow({mode: 'open'});\n } else if (otDiv.shadowRoot) {\n shadowRoot = otDiv.shadowRoot;\n } else {\n shadowRoot = otDiv;\n }\n\n const nodeList = $container.children;\n const index = Math.floor(Math.random() * (nodeList.length - 1));\n\n if (nodeList[index]) {\n $container.insertBefore(otDiv, nodeList[index]);\n } else {\n $container.appendChild(otDiv);\n }\n\n\n const maskDiv = document.createElement('div');\n let innerDom = null;\n if (defaultConfig.text && defaultConfig.text.content) {\n innerDom = document.createTextNode(defaultConfig.text);\n } else if (defaultConfig.image && defaultConfig.image.src) {\n innerDom = document.createElement('img')\n innerDom.style.height = '100%'\n innerDom.style.width = '100%'\n innerDom.src = defaultConfig.image.src;\n }\n\n if (!innerDom) {\n return;\n }\n\n maskDiv.appendChild(innerDom);\n\n maskDiv.style.visibility = '';\n maskDiv.style.position = \"absolute\";\n maskDiv.style.display = 'block'\n maskDiv.style['-ms-user-select'] = \"none\";\n maskDiv.style.left = defaultConfig.left;\n maskDiv.style.right = defaultConfig.right;\n maskDiv.style.top = defaultConfig.top;\n maskDiv.style.bottom = defaultConfig.bottom;\n maskDiv.style.overflow = 'hidden';\n maskDiv.style.zIndex = \"9999999\";\n if (defaultConfig.text && defaultConfig.text.content) {\n maskDiv.style.fontSize = defaultConfig.text.fontSize;\n maskDiv.style.color = defaultConfig.text.color;\n } else if (defaultConfig.image && defaultConfig.image.src) {\n maskDiv.style.width = defaultConfig.image.width + 'px';\n maskDiv.style.height = defaultConfig.image.height + 'px';\n }\n\n shadowRoot.appendChild(maskDiv)\n\n // remove function\n return () => {\n $container.removeChild(otDiv);\n }\n}\n\nexport function formatTimeTips(time) {\n var result;\n\n //\n if (time > -1) {\n var hour = Math.floor(time / 3600);\n var min = Math.floor(time / 60) % 60;\n var sec = time % 60;\n\n sec = Math.round(sec);\n\n if (hour < 10) {\n result = '0' + hour + \":\";\n } else {\n result = hour + \":\";\n }\n\n if (min < 10) {\n result += \"0\";\n }\n result += min + \":\";\n if (sec < 10) {\n result += \"0\";\n }\n result += sec.toFixed(0);\n }\n\n return result;\n}\n\nexport function getTarget(e) {\n const event = e || window.event;\n const target = event.target || event.srcElement;\n return target;\n}\n\nexport function isWebglRenderSupport(width) {\n return (width / 2) % 4 === 0\n}\n\nexport function isGreenYUV(arrayBuffer) {\n let zeroNum = 0;\n for (let i = 0; i < 10; i++) {\n let temp = arrayBuffer[i];\n if (temp === 0) {\n zeroNum += 1\n }\n }\n return zeroNum === 10;\n}\n\nexport function getBrowser() {\n const UserAgent = navigator.userAgent.toLowerCase();\n const browserInfo = {};\n const browserArray = {\n IE: window.ActiveXObject || \"ActiveXObject\" in window, // IE\n Chrome: UserAgent.indexOf('chrome') > -1 && UserAgent.indexOf('safari') > -1, // Chrome浏览器\n Firefox: UserAgent.indexOf('firefox') > -1, // 火狐浏览器\n Opera: UserAgent.indexOf('opera') > -1, // Opera浏览器\n Safari: UserAgent.indexOf('safari') > -1 && UserAgent.indexOf('chrome') == -1, // safari浏览器\n Edge: UserAgent.indexOf('edge') > -1, // Edge浏览器\n QQBrowser: /qqbrowser/.test(UserAgent), // qq浏览器\n WeixinBrowser: /MicroMessenger/i.test(UserAgent) // 微信浏览器\n };\n // console.log(browserArray)\n for (let i in browserArray) {\n if (browserArray[i]) {\n let versions = '';\n if (i === 'IE') {\n versions = UserAgent.match(/(msie\\s|trident.*rv:)([\\w.]+)/)[2];\n } else if (i === 'Chrome') {\n for (let mt in navigator.mimeTypes) {\n //检测是否是360浏览器(测试只有pc端的360才起作用)\n if (navigator.mimeTypes[mt]['type'] === 'application/360softmgrplugin') {\n i = '360';\n }\n }\n versions = UserAgent.match(/chrome\\/([\\d.]+)/)[1];\n } else if (i === 'Firefox') {\n versions = UserAgent.match(/firefox\\/([\\d.]+)/)[1];\n } else if (i === 'Opera') {\n versions = UserAgent.match(/opera\\/([\\d.]+)/)[1];\n } else if (i === 'Safari') {\n versions = UserAgent.match(/version\\/([\\d.]+)/)[1];\n } else if (i === 'Edge') {\n versions = UserAgent.match(/edge\\/([\\d.]+)/)[1];\n } else if (i === 'QQBrowser') {\n versions = UserAgent.match(/qqbrowser\\/([\\d.]+)/)[1];\n }\n browserInfo.type = i;\n browserInfo.version = parseInt(versions);\n }\n }\n return browserInfo;\n}\n\n\nexport function closeVideoFrame(videoFrame) {\n if (videoFrame.close) {\n videoFrame.close()\n } else if (videoFrame.destroy) {\n videoFrame.destroy()\n }\n}\n","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {getTarget, isMobile, setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = (e) => {\n if (getTarget(e) === player.$container) {\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n\n // 如果不是fullscreen,则触发下 resize 方法\n if (!player.fullscreen) {\n player.resize();\n } else {\n if (player._opt.useMSE) {\n player.resize();\n }\n }\n }\n };\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n //\n player.on(EVENTS.decoderWorkerInit, () => {\n player.debug.log('player', 'has loaded');\n player.loaded = true;\n })\n\n //\n player.on(EVENTS.play, () => {\n player.loading = false;\n })\n\n //\n player.on(EVENTS.fullscreen, (value) => {\n if (value) {\n try {\n screenfull.request(player.$container).then(() => {\n\n }).catch((e) => {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n });\n\n } catch (e) {\n if (isMobile() && player._opt.useWebFullScreen) {\n player.webFullscreen = true;\n }\n }\n } else {\n try {\n screenfull.exit().then(() => {\n if (player.webFullscreen) {\n player.webFullscreen = false;\n }\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\n if (isMobile()) {\n player.on(EVENTS.webFullscreen, (value) => {\n if (value) {\n player.$container.classList.add('jessibuca-fullscreen-web')\n } else {\n player.$container.classList.remove('jessibuca-fullscreen-web')\n }\n //\n player.emit(JESSIBUCA_EVENTS.fullscreen, player.fullscreen)\n })\n }\n\n\n //\n player.on(EVENTS.resize, () => {\n player.video && player.video.resize();\n })\n\n\n if (player._opt.debug) {\n const ignoreList = [EVENTS.timeUpdate];\n Object.keys(EVENTS).forEach((key) => {\n player.on(EVENTS[key], (value) => {\n if (ignoreList.includes(key)) {\n return;\n }\n\n player.debug.log('player events', EVENTS[key], value);\n })\n })\n\n Object.keys(EVENTS_ERROR).forEach((key) => {\n player.on(EVENTS_ERROR[key], (value) => {\n player.debug.log('player event error', EVENTS_ERROR[key], value);\n })\n })\n }\n}\n","export default class Emitter {\n on(name, fn, ctx) {\n const e = this.e || (this.e = {});\n (e[name] || (e[name] = [])).push({fn, ctx});\n return this;\n }\n\n once(name, fn, ctx) {\n const self = this;\n\n function listener(...args) {\n self.off(name, listener);\n fn.apply(ctx, args);\n }\n\n listener._ = fn;\n return this.on(name, listener, ctx);\n }\n\n emit(name, ...data) {\n const evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n for (let i = 0; i < evtArr.length; i += 1) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n return this;\n }\n\n off(name, callback) {\n const e = this.e || (this.e = {});\n\n if (!name) {\n Object.keys(e).forEach((key) => {\n delete e[key];\n })\n delete this.e\n return;\n }\n\n const evts = e[name];\n const liveEvents = [];\n if (evts && callback) {\n for (let i = 0, len = evts.length; i < len; i += 1) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback) liveEvents.push(evts[i]);\n }\n }\n if (liveEvents.length) {\n e[name] = liveEvents;\n } else {\n delete e[name];\n }\n return this;\n }\n}\n","export default (gl, openWebglAlignment) => {\n var vertexShaderScript = [\n 'attribute vec4 vertexPos;',\n 'attribute vec4 texturePos;',\n 'varying vec2 textureCoord;',\n\n 'void main()',\n '{',\n 'gl_Position = vertexPos;',\n 'textureCoord = texturePos.xy;',\n '}'\n ].join('\\n');\n\n var fragmentShaderScript = [\n 'precision highp float;',\n 'varying highp vec2 textureCoord;',\n 'uniform sampler2D ySampler;',\n 'uniform sampler2D uSampler;',\n 'uniform sampler2D vSampler;',\n 'const mat4 YUV2RGB = mat4',\n '(',\n '1.1643828125, 0, 1.59602734375, -.87078515625,',\n '1.1643828125, -.39176171875, -.81296875, .52959375,',\n '1.1643828125, 2.017234375, 0, -1.081390625,',\n '0, 0, 0, 1',\n ');',\n\n 'void main(void) {',\n 'highp float y = texture2D(ySampler, textureCoord).r;',\n 'highp float u = texture2D(uSampler, textureCoord).r;',\n 'highp float v = texture2D(vSampler, textureCoord).r;',\n 'gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;',\n '}'\n ].join('\\n');\n\n if (openWebglAlignment) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexShaderScript);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n console.log('Vertex shader failed to compile: ' + gl.getShaderInfoLog(vertexShader));\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentShaderScript);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n console.log('Fragment shader failed to compile: ' + gl.getShaderInfoLog(fragmentShader));\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n console.log('Program failed to compile: ' + gl.getProgramInfoLog(program));\n }\n\n gl.useProgram(program);\n\n // initBuffers\n var vertexPosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), gl.STATIC_DRAW);\n\n var vertexPosRef = gl.getAttribLocation(program, 'vertexPos');\n gl.enableVertexAttribArray(vertexPosRef);\n gl.vertexAttribPointer(vertexPosRef, 2, gl.FLOAT, false, 0, 0);\n\n var texturePosBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texturePosBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), gl.STATIC_DRAW);\n\n var texturePosRef = gl.getAttribLocation(program, 'texturePos');\n gl.enableVertexAttribArray(texturePosRef);\n gl.vertexAttribPointer(texturePosRef, 2, gl.FLOAT, false, 0, 0);\n\n function _initTexture(name, index) {\n var textureRef = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, textureRef);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.uniform1i(gl.getUniformLocation(program, name), index);\n return textureRef;\n }\n\n var yTextureRef = _initTexture('ySampler', 0);\n var uTextureRef = _initTexture('uSampler', 1);\n var vTextureRef = _initTexture('vSampler', 2);\n\n return {\n render: function (w, h, y, u, v) {\n gl.viewport(0, 0, w, h);\n gl.activeTexture(gl.TEXTURE0);\n gl.bindTexture(gl.TEXTURE_2D, yTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w, h, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, y);\n gl.activeTexture(gl.TEXTURE1);\n gl.bindTexture(gl.TEXTURE_2D, uTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, u);\n gl.activeTexture(gl.TEXTURE2);\n gl.bindTexture(gl.TEXTURE_2D, vTextureRef);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, w / 2, h / 2, 0, gl.LUMINANCE, gl.UNSIGNED_BYTE, v);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n destroy: function () {\n try {\n gl.deleteProgram(program);\n\n gl.deleteBuffer(vertexPosBuffer)\n gl.deleteBuffer(texturePosBuffer);\n\n gl.deleteTexture(yTextureRef);\n gl.deleteTexture(uTextureRef);\n gl.deleteTexture(vTextureRef);\n } catch (e) {\n // console.error(e);\n }\n\n }\n }\n};\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor() {\n super();\n this.init = false;\n }\n\n resetInit() {\n this.init = false;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n }\n destroy() {\n this.resetInit();\n this.player.$container.removeChild(this.$videoElement);\n this.off();\n }\n\n //\n updateVideoInfo(data) {\n if (data.encTypeCode) {\n this.videoInfo.encType = VIDEO_ENC_TYPE[data.encTypeCode];\n }\n\n if (data.width) {\n this.videoInfo.width = data.width;\n }\n\n if (data.height) {\n this.videoInfo.height = data.height;\n }\n\n // video 基本信息\n if (this.videoInfo.encType && this.videoInfo.height && this.videoInfo.width && !this.init) {\n this.player.emit(EVENTS.videoInfo, this.videoInfo);\n this.init = true;\n }\n }\n\n play() {\n\n }\n\n pause() {\n\n }\n\n clearView() {\n\n }\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom(blob, opts) {\n if (typeof opts === 'undefined') opts = {autoBom: false}\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = {autoBom: !opts}\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type})\n }\n return blob\n}\n\nfunction download(url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled(url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {\n }\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs() { /* noop */\n }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs(blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n // Namespace is used to prevent conflict w/ Chrome Poper Blocker extension (Issue #561)\n var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () {\n URL.revokeObjectURL(a.href)\n }, 4E4) // 40s\n setTimeout(function () {\n click(a)\n }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs(blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () {\n click(a)\n })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url)\n }, 4E4) // 40s\n }\n }\n)\n\n\nexport default saveAs\n","import Emitter from \"../utils/emitter\";\nimport {\n closeVideoFrame,\n createContextGL,\n createEmptyImageBitmap,\n dataURLToFile,\n downloadImg,\n isMobile,\n now,\n supportOffscreen\n} from \"../utils\";\nimport createWebGL from \"../utils/webgl\";\nimport {CANVAS_RENDER_TYPE, CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class CanvasVideoLoader extends CommonLoader {\n\n constructor(player) {\n super()\n this.player = player;\n const $canvasElement = document.createElement(\"canvas\");\n $canvasElement.style.position = \"absolute\";\n $canvasElement.style.top = 0;\n $canvasElement.style.left = 0;\n this.$videoElement = $canvasElement;\n player.$container.appendChild(this.$videoElement);\n\n this.context2D = null;\n this.contextGl = null;\n this.contextGlRender = null;\n this.contextGlDestroy = null;\n this.bitmaprenderer = null;\n this.renderType = null;\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n //\n this._initCanvasRender();\n this.player.debug.log('CanvasVideo', 'init');\n }\n\n destroy() {\n super.destroy();\n if (this.contextGl) {\n this.contextGl = null;\n }\n if (this.context2D) {\n this.context2D = null;\n }\n if (this.contextGlRender) {\n this.contextGlDestroy && this.contextGlDestroy();\n this.contextGlDestroy = null;\n this.contextGlRender = null;\n }\n if (this.bitmaprenderer) {\n this.bitmaprenderer = null;\n }\n\n this.renderType = null;\n\n this.player.debug.log(`CanvasVideoLoader`, 'destroy');\n }\n\n\n _initContextGl() {\n this.contextGl = createContextGL(this.$videoElement);\n const webgl = createWebGL(this.contextGl, this.player._opt.openWebglAlignment);\n this.contextGlRender = webgl.render;\n this.contextGlDestroy = webgl.destroy\n }\n\n _initContext2D() {\n this.context2D = this.$videoElement.getContext('2d');\n }\n\n\n // 渲染类型\n _initCanvasRender() {\n if (this.player._opt.useWCS && !this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.webcodecs;\n this._initContext2D();\n } else if (this._supportOffscreen()) {\n this.renderType = CANVAS_RENDER_TYPE.offscreen;\n this._bindOffscreen();\n } else {\n this.renderType = CANVAS_RENDER_TYPE.webgl;\n this._initContextGl();\n }\n }\n\n _supportOffscreen() {\n return supportOffscreen(this.$videoElement) && this.player._opt.useOffscreen;\n }\n\n //\n _bindOffscreen() {\n this.bitmaprenderer = this.$videoElement.getContext('bitmaprenderer');\n }\n\n initCanvasViewSize() {\n this.$videoElement.width = this.videoInfo.width;\n this.$videoElement.height = this.videoInfo.height;\n this.resize();\n }\n\n //\n render(msg) {\n this.player.videoTimestamp = msg.ts;\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n this.bitmaprenderer.transferFromImageBitmap(msg.buffer);\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGlRender(this.$videoElement.width, this.$videoElement.height, msg.output[0], msg.output[1], msg.output[2]);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n // can use createImageBitmap in wexin\n this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\n closeVideoFrame(msg.videoFrame);\n break;\n }\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const dataURL = this.$videoElement.toDataURL(formatType[format] || formatType.png, encoderOptions);\n\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename);\n }\n }\n\n }\n\n //\n clearView() {\n switch (this.renderType) {\n case CANVAS_RENDER_TYPE.offscreen:\n createEmptyImageBitmap(this.$videoElement.width, this.$videoElement.height).then((imageBitMap) => {\n this.bitmaprenderer.transferFromImageBitmap(imageBitMap);\n })\n break;\n case CANVAS_RENDER_TYPE.webgl:\n this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);\n break;\n case CANVAS_RENDER_TYPE.webcodecs:\n this.context2D.clearRect(0, 0, this.$videoElement.width, this.$videoElement.height)\n break;\n }\n }\n\n resize() {\n this.player.debug.log('canvasVideo', 'resize');\n const option = this.player._opt;\n let width = this.player.width;\n let height = this.player.height;\n if (option.hasControl && !option.controlAutoHide) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n const rotate = option.rotate;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n if (rotate === 270 || rotate === 90) {\n resizeWidth = this.$videoElement.height;\n resizeHeight = this.$videoElement.width;\n }\n\n const wScale = width / resizeWidth;\n const hScale = height / resizeHeight;\n\n let scale = wScale > hScale ? hScale : wScale;\n //\n if (!option.isResize) {\n if (wScale !== hScale) {\n scale = wScale + ',' + hScale;\n }\n }\n //\n if (option.isFullResize) {\n scale = wScale > hScale ? wScale : hScale;\n }\n let transform = \"scale(\" + scale + \")\";\n\n if (rotate) {\n transform += ' rotate(' + rotate + 'deg)'\n }\n\n this.$videoElement.style.transform = transform;\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {CONTROL_HEIGHT, EVENTS, SCREENSHOT_TYPE, VIDEO_ENC_TYPE} from \"../constant\";\nimport {dataURLToFile, downloadImg, getBrowser, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\nimport saveAs from \"../utils/file-save\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n const $canvasElement = document.createElement('canvas');\n $videoElement.muted = true;\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n this._delayPlay = false;\n player.$container.appendChild($videoElement);\n this.videoInfo = {\n width: '',\n height: '',\n encType: '',\n }\n const _opt = this.player._opt;\n if (_opt.useWCS && _opt.wcsUseVideoRender) {\n this.trackGenerator = new MediaStreamTrackGenerator({kind: 'video'});\n $videoElement.srcObject = new MediaStream([this.trackGenerator]);\n this.vwriter = this.trackGenerator.writable.getWriter();\n }\n this.$videoElement = $videoElement;\n this.$canvasElement = $canvasElement;\n this.canvasContext = $canvasElement.getContext('2d');\n this.fixChromeVideoFlashBug();\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', `canplay and _delayPlay is ${this._delayPlay}`);\n if (this._delayPlay) {\n this._play();\n }\n })\n\n proxy(this.$videoElement, 'waiting', () => {\n this.player.emit(EVENTS.videoWaiting);\n })\n\n proxy(this.$videoElement, 'timeupdate', (event) => {\n // this.player.emit(EVENTS.videoTimeUpdate, event.timeStamp);\n const timeStamp = parseInt(event.timeStamp, 10);\n this.player.emit(EVENTS.timeUpdate, timeStamp)\n // check is pause;\n if (!this.isPlaying() && this.init) {\n this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`);\n this.$videoElement.play();\n }\n })\n\n this.player.debug.log('Video', 'init');\n }\n\n destroy() {\n super.destroy();\n this.$canvasElement = null;\n this.canvasContext = null;\n if (this.$videoElement) {\n this.$videoElement.pause();\n this.$videoElement.currentTime = 0;\n this.$videoElement.src = ''\n this.$videoElement.removeAttribute('src');\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator.stop();\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n this.vwriter.close();\n this.vwriter = null;\n }\n this.player.debug.log('Video', 'destroy');\n }\n\n fixChromeVideoFlashBug() {\n const browser = getBrowser();\n const type = browser.type.toLowerCase();\n if (type === 'chrome' || type === 'edge') {\n const $container = this.player.$container;\n $container.style.backdropFilter = 'blur(0px)';\n $container.style.translateZ = '0';\n }\n }\n\n play() {\n if (this.$videoElement) {\n const readyState = this._getVideoReadyState();\n this.player.debug.log('Video', `play and readyState: ${readyState}`);\n if (readyState === 0) {\n this.player.debug.warn('Video', 'readyState is 0 and set _delayPlay to true');\n this._delayPlay = true;\n return;\n }\n this._play();\n }\n }\n\n _getVideoReadyState() {\n let result = 0;\n if (this.$videoElement) {\n result = this.$videoElement.readyState;\n }\n return result;\n }\n\n _play() {\n this.$videoElement && this.$videoElement.play().then(() => {\n this._delayPlay = false;\n this.player.debug.log('Video', '_play success');\n setTimeout(() => {\n if (!this.isPlaying()) {\n this.player.debug.warn('Video', `play failed and retry play`)\n this._play();\n }\n }, 100)\n\n }).catch((e) => {\n this.player.debug.error('Video', '_play error', e);\n })\n }\n\n pause(isNow) {\n // 预防\n // https://developer.chrome.com/blog/play-request-was-interrupted/\n // http://alonesuperman.com/?p=23\n if (isNow) {\n this.$videoElement && this.$videoElement.pause();\n } else {\n setTimeout(() => {\n this.$videoElement && this.$videoElement.pause();\n }, 100)\n }\n }\n\n clearView() {\n\n }\n\n screenshot(filename, format, quality, type) {\n filename = filename || now();\n type = type || SCREENSHOT_TYPE.download;\n const formatType = {\n png: 'image/png',\n jpeg: 'image/jpeg',\n webp: 'image/webp'\n };\n let encoderOptions = 0.92;\n if (!formatType[format] && SCREENSHOT_TYPE[format]) {\n type = format;\n format = 'png';\n quality = undefined\n }\n if (typeof quality === \"string\") {\n type = quality;\n quality = undefined;\n }\n\n if (typeof quality !== 'undefined') {\n encoderOptions = Number(quality);\n }\n const $video = this.$videoElement;\n let canvas = this.$canvasElement;\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n this.canvasContext.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(formatType[format] || formatType.png, encoderOptions);\n // release memory\n this.canvasContext.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = 0;\n canvas.height = 0;\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else {\n const file = dataURLToFile(dataURL);\n if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n // downloadImg(file, filename);\n saveAs(file, filename)\n }\n }\n\n }\n\n initCanvasViewSize() {\n this.resize();\n }\n\n //\n render(msg) {\n if (this.vwriter) {\n this.vwriter.write(msg.videoFrame);\n }\n }\n\n resize() {\n let width = this.player.width;\n let height = this.player.height;\n const option = this.player._opt;\n const rotate = option.rotate;\n if (option.hasControl && !option.controlAutoHide) {\n if (isMobile() && this.player.fullscreen && option.useWebFullScreen) {\n width -= CONTROL_HEIGHT;\n } else {\n height -= CONTROL_HEIGHT;\n }\n }\n\n this.$videoElement.width = width;\n this.$videoElement.height = height;\n\n if (rotate === 270 || rotate === 90) {\n this.$videoElement.width = height;\n this.$videoElement.height = width;\n }\n let resizeWidth = this.$videoElement.width;\n let resizeHeight = this.$videoElement.height;\n let left = ((width - resizeWidth) / 2)\n let top = ((height - resizeHeight) / 2)\n let objectFill = 'contain';\n\n // 默认是true\n // 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边\n\n // 视频画面完全填充canvas区域,画面会被拉伸\n if (!option.isResize) {\n objectFill = 'fill';\n }\n\n // 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全\n if (option.isFullResize) {\n objectFill = 'none';\n }\n this.$videoElement.style.objectFit = objectFill;\n this.$videoElement.style.transform = 'rotate(' + rotate + 'deg)';\n this.$videoElement.style.left = left + \"px\"\n this.$videoElement.style.top = top + \"px\"\n }\n\n isPlaying() {\n return this.$videoElement && !this.$videoElement.paused;\n }\n}\n","import CanvasVideoLoader from './canvasLoader';\nimport VideoLoader from \"./videoLoader\";\n\nexport default class Video {\n constructor(player) {\n const Loader = Video.getLoaderFactory(player._opt);\n return new Loader(player);\n }\n\n static getLoaderFactory(opt) {\n if (opt.useMSE || (opt.useWCS && !opt.useOffscreen && opt.wcsUseVideoRender)) {\n return VideoLoader;\n } else {\n return CanvasVideoLoader;\n }\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {AUDIO_ENC_TYPE, AUDIO_SYNC_VIDEO_DIFF, EVENTS, VIDEO_ENC_TYPE} from \"../constant\";\nimport {clamp, noop} from \"../utils\";\n\nexport default class AudioContextLoader extends Emitter {\n constructor(player) {\n super();\n this.bufferList = [];\n this.player = player;\n this.scriptNode = null;\n this.hasInitScriptNode = false;\n this.audioContextChannel = null;\n\n this.audioContext = new (window.AudioContext || window.webkitAudioContext)();\n //\n this.gainNode = this.audioContext.createGain();\n // Get an AudioBufferSourceNode.\n // This is the AudioNode to use when we want to play an AudioBuffer\n const source = this.audioContext.createBufferSource();\n // set the buffer in the AudioBufferSourceNode\n source.buffer = this.audioContext.createBuffer(1, 1, 22050);\n // connect the AudioBufferSourceNode to the\n // destination so we can hear the sound\n source.connect(this.audioContext.destination);\n // noteOn as start\n // start the source playing\n if (source.noteOn) {\n source.noteOn(0);\n } else {\n source.start(0);\n }\n this.audioBufferSourceNode = source;\n //\n this.mediaStreamAudioDestinationNode = this.audioContext.createMediaStreamDestination();\n //\n this.audioEnabled(true);\n // default setting 0\n this.gainNode.gain.value = 0;\n\n this.playing = false;\n //\n this.audioSyncVideoOption = {\n diff: null\n };\n\n\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n this.init = false;\n this.hasAudio = false;\n\n // update\n this.on(EVENTS.videoSyncAudio, (options) => {\n // this.player.debug.log('AudioContext', `videoSyncAudio , audioTimestamp: ${options.audioTimestamp},videoTimestamp: ${options.videoTimestamp},diff:${options.diff}`)\n this.audioSyncVideoOption = options;\n })\n\n this.player.debug.log('AudioContext', 'init');\n }\n\n resetInit() {\n this.init = false;\n this.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\n }\n }\n\n\n destroy() {\n this.closeAudio();\n this.resetInit();\n this.audioContext.close();\n this.audioContext = null;\n this.gainNode = null;\n this.hasAudio = false;\n this.playing = false;\n if (this.scriptNode) {\n this.scriptNode.onaudioprocess = noop;\n this.scriptNode = null;\n }\n this.audioBufferSourceNode = null;\n this.mediaStreamAudioDestinationNode = null;\n this.hasInitScriptNode = false;\n this.audioSyncVideoOption = {\n diff: null\n };\n this.off();\n this.player.debug.log('AudioContext', 'destroy');\n }\n\n updateAudioInfo(data) {\n if (data.encTypeCode) {\n this.audioInfo.encType = AUDIO_ENC_TYPE[data.encTypeCode];\n }\n\n if (data.channels) {\n this.audioInfo.channels = data.channels;\n }\n\n if (data.sampleRate) {\n this.audioInfo.sampleRate = data.sampleRate;\n }\n\n // audio 基本信息\n if (this.audioInfo.sampleRate && this.audioInfo.channels && this.audioInfo.encType && !this.init) {\n this.player.emit(EVENTS.audioInfo, this.audioInfo);\n this.init = true;\n }\n }\n\n //\n get isPlaying() {\n return this.playing;\n }\n\n get isMute() {\n return this.gainNode.gain.value === 0 || this.isStateSuspended();\n }\n\n get volume() {\n return this.gainNode.gain.value;\n }\n\n get bufferSize() {\n return this.bufferList.length;\n }\n\n\n initScriptNode() {\n this.playing = true;\n\n if (this.hasInitScriptNode) {\n return;\n }\n const channels = this.audioInfo.channels;\n\n const scriptNode = this.audioContext.createScriptProcessor(1024, 0, channels);\n // tips: if audio isStateSuspended onaudioprocess method not working\n scriptNode.onaudioprocess = (audioProcessingEvent) => {\n const outputBuffer = audioProcessingEvent.outputBuffer;\n\n if (this.bufferList.length && this.playing) {\n // just for wasm\n if (!this.player._opt.useWCS && !this.player._opt.useMSE && this.player._opt.wasmDecodeAudioSyncVideo) {\n // audio > video\n // wait\n if (this.audioSyncVideoOption.diff > AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`)\n // wait\n return;\n }\n // audio < video\n // throw away then chase video\n else if (this.audioSyncVideoOption.diff < -AUDIO_SYNC_VIDEO_DIFF) {\n this.player.debug.warn('AudioContext', `audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`)\n\n //\n let bufferItem = this.bufferList.shift();\n //\n while ((bufferItem.ts - this.player.videoTimestamp < -AUDIO_SYNC_VIDEO_DIFF) && this.bufferList.length > 0) {\n // this.player.debug.warn('AudioContext', `audioSyncVideoOption less than inner ts is:${bufferItem.ts}, videoTimestamp is ${this.player.videoTimestamp},diff:${bufferItem.ts - this.player.videoTimestamp}`)\n bufferItem = this.bufferList.shift();\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n }\n }\n\n if (this.bufferList.length === 0) {\n return;\n }\n\n const bufferItem = this.bufferList.shift();\n\n // update audio time stamp\n if (bufferItem && bufferItem.ts) {\n this.player.audioTimestamp = bufferItem.ts;\n }\n\n for (let channel = 0; channel < channels; channel++) {\n const b = bufferItem.buffer[channel]\n const nowBuffering = outputBuffer.getChannelData(channel);\n for (let i = 0; i < 1024; i++) {\n nowBuffering[i] = b[i] || 0\n }\n }\n }\n }\n\n scriptNode.connect(this.gainNode);\n this.scriptNode = scriptNode;\n this.gainNode.connect(this.audioContext.destination);\n this.gainNode.connect(this.mediaStreamAudioDestinationNode);\n this.hasInitScriptNode = true;\n }\n\n mute(flag) {\n if (flag) {\n if (!this.isMute) {\n this.player.emit(EVENTS.mute, flag);\n }\n this.setVolume(0);\n this.audioEnabled(false);\n this.clear();\n } else {\n if (this.isMute) {\n this.player.emit(EVENTS.mute, flag);\n }\n this.setVolume(0.5);\n this.audioEnabled(true);\n }\n }\n\n setVolume(volume) {\n volume = parseFloat(volume).toFixed(2);\n if (isNaN(volume)) {\n return;\n }\n this.audioEnabled(true);\n volume = clamp(volume, 0, 1);\n this.gainNode.gain.value = volume;\n this.gainNode.gain.setValueAtTime(volume, this.audioContext.currentTime);\n this.player.emit(EVENTS.volumechange, this.player.volume);\n }\n\n closeAudio() {\n if (this.hasInitScriptNode) {\n this.scriptNode && this.scriptNode.disconnect(this.gainNode);\n this.gainNode && this.gainNode.disconnect(this.audioContext.destination);\n this.gainNode && this.gainNode.disconnect(this.mediaStreamAudioDestinationNode);\n }\n this.clear();\n }\n\n // 是否播放。。。\n audioEnabled(flag) {\n if (flag) {\n if (this.audioContext.state === 'suspended') {\n // resume\n this.audioContext.resume();\n }\n } else {\n if (this.audioContext.state === 'running') {\n // suspend\n this.audioContext.suspend();\n }\n }\n }\n\n isStateRunning() {\n return this.audioContext.state === 'running';\n }\n\n isStateSuspended() {\n return this.audioContext.state === 'suspended';\n }\n\n clear() {\n this.bufferList = [];\n }\n\n play(buffer, ts) {\n // if is mute\n if (this.isMute) {\n return;\n }\n\n this.hasAudio = true;\n\n this.bufferList.push({\n buffer,\n ts\n });\n\n if (this.bufferList.length > 20) {\n this.player.debug.warn('AudioContext', `bufferList is large: ${this.bufferList.length}`)\n\n // out of memory\n if (this.bufferList.length > 50) {\n this.bufferList.shift();\n }\n }\n // this.player.debug.log('AudioContext', `bufferList is ${this.bufferList.length}`)\n }\n\n pause() {\n this.audioSyncVideoOption = {\n diff: null\n };\n this.playing = false;\n this.clear();\n }\n\n resume() {\n this.playing = true;\n }\n\n\n}\n","import AudioContextLoader from \"./audioContextLoader\";\nimport AudioLoader from \"./audioLoader\";\n\nexport default class Audio {\n constructor(player) {\n const Loader = Audio.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return AudioContextLoader;\n }\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FETCH_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class FetchLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.playing = false;\n\n this.abortController = new AbortController();\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n player.debug.log('FetchStream', 'init');\n }\n\n destroy() {\n this.abort()\n this.off();\n this.streamRate = null;\n this.player.debug.log('FetchStream', 'destroy');\n }\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options = {}) {\n const {demux} = this.player;\n this.player._times.streamStart = now();\n const fetchOptions = Object.assign({\n signal: this.abortController.signal,\n }, {\n headers: options.headers || {}\n });\n fetch(url, fetchOptions).then((res) => {\n const reader = res.body.getReader();\n this.emit(EVENTS.streamSuccess);\n const fetchNext = () => {\n reader.read().then(({done, value}) => {\n if (done) {\n demux.close();\n } else {\n this.streamRate && this.streamRate(value.byteLength);\n demux.dispatch(value);\n fetchNext();\n }\n }\n ).catch((e) => {\n demux.close();\n const errorString = e.toString();\n // aborted a request 。\n if (errorString.indexOf(FETCH_ERROR.abortError1) !== -1) {\n return\n }\n\n if (errorString.indexOf(FETCH_ERROR.abortError2) !== -1) {\n return;\n }\n\n if (e.name === FETCH_ERROR.abort) {\n return;\n }\n\n\n this.abort();\n\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n fetchNext();\n }).catch((e) => {\n if (e.name === 'AbortError') {\n return;\n }\n demux.close();\n this.abort();\n this.emit(EVENTS_ERROR.fetchError, e)\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n })\n }\n\n abort() {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null\n }\n }\n\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, WEBSOCKET_STATUS} from \"../constant\";\nimport {calculationRate, now} from \"../utils\";\n\nexport default class WebsocketLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.socket = null;\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.wsUrl = null;\n //\n this.streamRate = calculationRate(rate => {\n player.emit(EVENTS.kBps, (rate / 1024).toFixed(2));\n });\n\n player.debug.log('WebsocketLoader', 'init');\n }\n\n destroy() {\n if (this.socket) {\n this.socket.close();\n this.socket = null;\n }\n this.socketStatus = WEBSOCKET_STATUS.notConnect;\n this.streamRate = null;\n this.wsUrl = null;\n this.off();\n this.player.debug.log('websocketLoader', 'destroy');\n }\n\n _createWebSocket() {\n const player = this.player;\n const {\n debug,\n events: {proxy},\n demux,\n } = player;\n\n this.socket = new WebSocket(this.wsUrl);\n this.socket.binaryType = 'arraybuffer';\n proxy(this.socket, 'open', () => {\n this.emit(EVENTS.streamSuccess);\n debug.log('websocketLoader', 'socket open');\n this.socketStatus = WEBSOCKET_STATUS.open;\n });\n\n proxy(this.socket, 'message', event => {\n this.streamRate && this.streamRate(event.data.byteLength);\n this._handleMessage(event.data);\n });\n\n\n proxy(this.socket, 'close', () => {\n debug.log('websocketLoader', 'socket close');\n this.emit(EVENTS.streamEnd);\n this.socketStatus = WEBSOCKET_STATUS.close;\n });\n\n proxy(this.socket, 'error', error => {\n debug.log('websocketLoader', 'socket error');\n this.emit(EVENTS_ERROR.websocketError, error);\n this.player.emit(EVENTS.error, EVENTS_ERROR.websocketError);\n this.socketStatus = WEBSOCKET_STATUS.error;\n demux.close();\n debug.log('websocketLoader', `socket error:`, error);\n });\n }\n\n //\n _handleMessage(message) {\n const {demux} = this.player;\n if (!demux) {\n this.player.debug.warn('websocketLoader', 'websocket handle message demux is null');\n return;\n }\n demux.dispatch(message);\n }\n\n\n /**\n *\n * @param url\n * @param options\n */\n fetchStream(url, options) {\n this.player._times.streamStart = now();\n this.wsUrl = url;\n this._createWebSocket();\n }\n\n\n}\n","import FetchLoader from \"./fetchLoader\";\nimport WebsocketLoader from \"./websocketLoader\";\nimport {PLAYER_PLAY_PROTOCOL} from \"../constant\";\n\nexport default class Stream {\n constructor(player) {\n const Loader = Stream.getLoaderFactory(player._opt.protocol);\n return new Loader(player);\n }\n\n static getLoaderFactory(protocol) {\n if (protocol === PLAYER_PLAY_PROTOCOL.fetch) {\n return FetchLoader;\n } else if (protocol === PLAYER_PLAY_PROTOCOL.websocket) {\n return WebsocketLoader;\n }\n }\n}\n","'use strict';\r\n\r\n// Last time updated: 2021-03-09 3:20:22 AM UTC\r\n\r\n// ________________\r\n// RecordRTC v5.6.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/RecordRTC\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\n// ____________\r\n// RecordRTC.js\r\n\r\n/**\r\n * {@link https://github.com/muaz-khan/RecordRTC|RecordRTC} is a WebRTC JavaScript library for audio/video as well as screen activity recording. It supports Chrome, Firefox, Opera, Android, and Microsoft Edge. Platforms: Linux, Mac and Windows. \r\n * @summary Record audio, video or screen inside the browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTC\r\n * @class\r\n * @example\r\n * var recorder = RecordRTC(mediaStream or [arrayOfMediaStream], {\r\n * type: 'video', // audio or video or gif or canvas\r\n * recorderType: MediaStreamRecorder || CanvasRecorder || StereoAudioRecorder || Etc\r\n * });\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, desiredSampRate: 16000, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction RecordRTC(mediaStream, config) {\r\n if (!mediaStream) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n config = config || {\r\n type: 'video'\r\n };\r\n\r\n config = new RecordRTCConfiguration(mediaStream, config);\r\n\r\n // a reference to user's recordRTC object\r\n var self = this;\r\n\r\n function startRecording(config2) {\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC version: ', self.version);\r\n }\r\n\r\n if (!!config2) {\r\n // allow users to set options using startRecording method\r\n // config2 is similar to main \"config\" object (second parameter over RecordRTC constructor)\r\n config = new RecordRTCConfiguration(mediaStream, config2);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('started recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n return self;\r\n }\r\n\r\n initRecorder(function() {\r\n if (self.recordingDuration) {\r\n handleRecordingDuration();\r\n }\r\n });\r\n\r\n return self;\r\n }\r\n\r\n function initRecorder(initCallback) {\r\n if (initCallback) {\r\n config.initCallback = function() {\r\n initCallback();\r\n initCallback = config.initCallback = null; // recorder.initRecorder should be call-backed once.\r\n };\r\n }\r\n\r\n var Recorder = new GetRecorderType(mediaStream, config);\r\n\r\n mediaRecorder = new Recorder(mediaStream, config);\r\n mediaRecorder.record();\r\n\r\n setState('recording');\r\n\r\n if (!config.disableLogs) {\r\n console.log('Initialized recorderType:', mediaRecorder.constructor.name, 'for output-type:', config.type);\r\n }\r\n }\r\n\r\n function stopRecording(callback) {\r\n callback = callback || function() {};\r\n\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state === 'paused') {\r\n self.resumeRecording();\r\n\r\n setTimeout(function() {\r\n stopRecording(callback);\r\n }, 1);\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording' && !config.disableLogs) {\r\n console.warn('Recording state should be: \"recording\", however current state is: ', self.state);\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Stopped recording ' + config.type + ' stream.');\r\n }\r\n\r\n if (config.type !== 'gif') {\r\n mediaRecorder.stop(_callback);\r\n } else {\r\n mediaRecorder.stop();\r\n _callback();\r\n }\r\n\r\n setState('stopped');\r\n\r\n function _callback(__blob) {\r\n if (!mediaRecorder) {\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, '');\r\n } else {\r\n callback('');\r\n }\r\n return;\r\n }\r\n\r\n Object.keys(mediaRecorder).forEach(function(key) {\r\n if (typeof mediaRecorder[key] === 'function') {\r\n return;\r\n }\r\n\r\n self[key] = mediaRecorder[key];\r\n });\r\n\r\n var blob = mediaRecorder.blob;\r\n\r\n if (!blob) {\r\n if (__blob) {\r\n mediaRecorder.blob = blob = __blob;\r\n } else {\r\n throw 'Recording failed.';\r\n }\r\n }\r\n\r\n if (blob && !config.disableLogs) {\r\n console.log(blob.type, '->', bytesToSize(blob.size));\r\n }\r\n\r\n if (callback) {\r\n var url;\r\n\r\n try {\r\n url = URL.createObjectURL(blob);\r\n } catch (e) {}\r\n\r\n if (typeof callback.call === 'function') {\r\n callback.call(self, url);\r\n } else {\r\n callback(url);\r\n }\r\n }\r\n\r\n if (!config.autoWriteToDisk) {\r\n return;\r\n }\r\n\r\n getDataURL(function(dataURL) {\r\n var parameter = {};\r\n parameter[config.type + 'Blob'] = dataURL;\r\n DiskStorage.Store(parameter);\r\n });\r\n }\r\n }\r\n\r\n function pauseRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'recording') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to pause the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('paused');\r\n\r\n mediaRecorder.pause();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Paused recording.');\r\n }\r\n }\r\n\r\n function resumeRecording() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n if (self.state !== 'paused') {\r\n if (!config.disableLogs) {\r\n console.warn('Unable to resume the recording. Recording state: ', self.state);\r\n }\r\n return;\r\n }\r\n\r\n setState('recording');\r\n\r\n // not all libs have this method yet\r\n mediaRecorder.resume();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Resumed recording.');\r\n }\r\n }\r\n\r\n function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n }\r\n\r\n function getDataURL(callback, _mediaRecorder) {\r\n if (!callback) {\r\n throw 'Pass a callback function over getDataURL.';\r\n }\r\n\r\n var blob = _mediaRecorder ? _mediaRecorder.blob : (mediaRecorder || {}).blob;\r\n\r\n if (!blob) {\r\n if (!config.disableLogs) {\r\n console.warn('Blob encoder did not finish its job yet.');\r\n }\r\n\r\n setTimeout(function() {\r\n getDataURL(callback, _mediaRecorder);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (typeof Worker !== 'undefined' && !navigator.mozGetUserMedia) {\r\n var webWorker = processInWebWorker(readFile);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback(event.target.result);\r\n };\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n try {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function handleRecordingDuration(counter) {\r\n counter = counter || 0;\r\n\r\n if (self.state === 'paused') {\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n return;\r\n }\r\n\r\n if (self.state === 'stopped') {\r\n return;\r\n }\r\n\r\n if (counter >= self.recordingDuration) {\r\n stopRecording(self.onRecordingStopped);\r\n return;\r\n }\r\n\r\n counter += 1000; // 1-second\r\n\r\n setTimeout(function() {\r\n handleRecordingDuration(counter);\r\n }, 1000);\r\n }\r\n\r\n function setState(state) {\r\n if (!self) {\r\n return;\r\n }\r\n\r\n self.state = state;\r\n\r\n if (typeof self.onStateChanged.call === 'function') {\r\n self.onStateChanged.call(self, state);\r\n } else {\r\n self.onStateChanged(state);\r\n }\r\n }\r\n\r\n var WARNING = 'It seems that recorder is destroyed or \"startRecording\" is not invoked for ' + config.type + ' recorder.';\r\n\r\n function warningLog() {\r\n if (config.disableLogs === true) {\r\n return;\r\n }\r\n\r\n console.warn(WARNING);\r\n }\r\n\r\n var mediaRecorder;\r\n\r\n var returnObject = {\r\n /**\r\n * This method starts the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var recorder = RecordRTC(mediaStream, {\r\n * type: 'video'\r\n * });\r\n * recorder.startRecording();\r\n */\r\n startRecording: startRecording,\r\n\r\n /**\r\n * This method stops the recording. It is strongly recommended to get \"blob\" or \"URI\" inside the callback to make sure all recorders finished their job.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * // use either \"this\" or \"recorder\" object; both are identical\r\n * video.src = this.toURL();\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n stopRecording: stopRecording,\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Firefox is unable to pause the recording. Fix it.\r\n * @example\r\n * recorder.pauseRecording(); // pause the recording\r\n * recorder.resumeRecording(); // resume again\r\n */\r\n pauseRecording: pauseRecording,\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.pauseRecording(); // first of all, pause the recording\r\n * recorder.resumeRecording(); // now resume it\r\n */\r\n resumeRecording: resumeRecording,\r\n\r\n /**\r\n * This method initializes the recording.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * recorder.initRecorder();\r\n */\r\n initRecorder: initRecorder,\r\n\r\n /**\r\n * Ask RecordRTC to auto-stop the recording after 5 minutes.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var fiveMinutes = 5 * 1000 * 60;\r\n * recorder.setRecordingDuration(fiveMinutes, function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n * \r\n * // or otherwise\r\n * recorder.setRecordingDuration(fiveMinutes).onRecordingStopped(function() {\r\n * var blob = this.getBlob();\r\n * video.src = this.toURL();\r\n * });\r\n */\r\n setRecordingDuration: function(recordingDuration, callback) {\r\n if (typeof recordingDuration === 'undefined') {\r\n throw 'recordingDuration is required.';\r\n }\r\n\r\n if (typeof recordingDuration !== 'number') {\r\n throw 'recordingDuration must be a number.';\r\n }\r\n\r\n self.recordingDuration = recordingDuration;\r\n self.onRecordingStopped = callback || function() {};\r\n\r\n return {\r\n onRecordingStopped: function(callback) {\r\n self.onRecordingStopped = callback;\r\n }\r\n };\r\n },\r\n\r\n /**\r\n * This method can be used to clear/reset all the recorded data.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo Figure out the difference between \"reset\" and \"clearRecordedData\" methods.\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n clearRecordedData: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n mediaRecorder.clearRecordedData();\r\n\r\n if (!config.disableLogs) {\r\n console.log('Cleared old recorded data.');\r\n }\r\n },\r\n\r\n /**\r\n * Get the recorded blob. Use this method inside the \"stopRecording\" callback.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.getBlob();\r\n *\r\n * var file = new File([blob], 'filename.webm', {\r\n * type: 'video/webm'\r\n * });\r\n *\r\n * var formData = new FormData();\r\n * formData.append('file', file); // upload \"File\" object rather than a \"Blob\"\r\n * uploadToServer(formData);\r\n * });\r\n * @returns {Blob} Returns recorded data as \"Blob\" object.\r\n */\r\n getBlob: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return mediaRecorder.blob;\r\n },\r\n\r\n /**\r\n * Get data-URI instead of Blob.\r\n * @param {function} callback - Callback to get the Data-URI.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * recorder.getDataURL(function(dataURI) {\r\n * video.src = dataURI;\r\n * });\r\n * });\r\n */\r\n getDataURL: getDataURL,\r\n\r\n /**\r\n * Get virtual/temporary URL. Usage of this URL is limited to current tab.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * video.src = this.toURL();\r\n * });\r\n * @returns {String} Returns a virtual/temporary URL for the recorded \"Blob\".\r\n */\r\n toURL: function() {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n return URL.createObjectURL(mediaRecorder.blob);\r\n },\r\n\r\n /**\r\n * Get internal recording object (i.e. internal module) e.g. MutliStreamRecorder, MediaStreamRecorder, StereoAudioRecorder or WhammyRecorder etc.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * var internalRecorder = recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n getInternalRecorder: function() {\r\n return mediaRecorder;\r\n },\r\n\r\n /**\r\n * Invoke save-as dialog to save the recorded blob into your disk.\r\n * @param {string} fileName - Set your own file name.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * this.save('file-name');\r\n *\r\n * // or manually:\r\n * invokeSaveAsDialog(this.getBlob(), 'filename.webm');\r\n * });\r\n */\r\n save: function(fileName) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n invokeSaveAsDialog(mediaRecorder.blob, fileName);\r\n },\r\n\r\n /**\r\n * This method gets a blob from indexed-DB storage.\r\n * @param {function} callback - Callback to get the recorded blob.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.getFromDisk(function(dataURL) {\r\n * video.src = dataURL;\r\n * });\r\n */\r\n getFromDisk: function(callback) {\r\n if (!mediaRecorder) {\r\n warningLog();\r\n return;\r\n }\r\n\r\n RecordRTC.getFromDisk(config.type, callback);\r\n },\r\n\r\n /**\r\n * This method appends an array of webp images to the recorded video-blob. It takes an \"array\" object.\r\n * @type {Array.}\r\n * @param {Array} arrayOfWebPImages - Array of webp images.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @todo This method should be deprecated.\r\n * @example\r\n * var arrayOfWebPImages = [];\r\n * arrayOfWebPImages.push({\r\n * duration: index,\r\n * image: 'data:image/webp;base64,...'\r\n * });\r\n * recorder.setAdvertisementArray(arrayOfWebPImages);\r\n */\r\n setAdvertisementArray: function(arrayOfWebPImages) {\r\n config.advertisement = [];\r\n\r\n var length = arrayOfWebPImages.length;\r\n for (var i = 0; i < length; i++) {\r\n config.advertisement.push({\r\n duration: i,\r\n image: arrayOfWebPImages[i]\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * It is equivalent to \"recorder.getBlob()\" method. Usage of \"getBlob\" is recommended, though.\r\n * @property {Blob} blob - Recorded Blob can be accessed using this property.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var blob = this.blob;\r\n *\r\n * // below one is recommended\r\n * var blob = this.getBlob();\r\n * });\r\n */\r\n blob: null,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} bufferSize - Buffer-size used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used this buffer-size: ' + this.bufferSize);\r\n * });\r\n */\r\n bufferSize: 0,\r\n\r\n /**\r\n * This works only with {recorderType:StereoAudioRecorder}. Use this property on \"stopRecording\" to verify the encoder's sample-rates.\r\n * @property {number} sampleRate - Sample-rates used to encode the WAV container\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * alert('Recorder used these sample-rates: ' + this.sampleRate);\r\n * });\r\n */\r\n sampleRate: 0,\r\n\r\n /**\r\n * {recorderType:StereoAudioRecorder} returns ArrayBuffer object.\r\n * @property {ArrayBuffer} buffer - Audio ArrayBuffer, supported only in Chrome.\r\n * @memberof RecordRTC\r\n * @instance\r\n * @readonly\r\n * @example\r\n * recorder.stopRecording(function() {\r\n * var arrayBuffer = this.buffer;\r\n * alert(arrayBuffer.byteLength);\r\n * });\r\n */\r\n buffer: null,\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.reset();\r\n * recorder.startRecording();\r\n */\r\n reset: function() {\r\n if (self.state === 'recording' && !config.disableLogs) {\r\n console.warn('Stop an active recorder.');\r\n }\r\n\r\n if (mediaRecorder && typeof mediaRecorder.clearRecordedData === 'function') {\r\n mediaRecorder.clearRecordedData();\r\n }\r\n mediaRecorder = null;\r\n setState('inactive');\r\n self.blob = null;\r\n },\r\n\r\n /**\r\n * This method is called whenever recorder's state changes. Use this as an \"event\".\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @method\r\n * @memberof RecordRTC\r\n * @instance\r\n * @example\r\n * recorder.onStateChanged = function(state) {\r\n * console.log('Recorder state: ', state);\r\n * };\r\n */\r\n onStateChanged: function(state) {\r\n if (!config.disableLogs) {\r\n console.log('Recorder state changed:', state);\r\n }\r\n },\r\n\r\n /**\r\n * A recorder can have inactive, recording, paused or stopped states.\r\n * @property {String} state - A recorder's state can be: recording, paused, stopped or inactive.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * // this looper function will keep you updated about the recorder's states.\r\n * (function looper() {\r\n * document.querySelector('h1').innerHTML = 'Recorder\\'s state is: ' + recorder.state;\r\n * if(recorder.state === 'stopped') return; // ignore+stop\r\n * setTimeout(looper, 1000); // update after every 3-seconds\r\n * })();\r\n * recorder.startRecording();\r\n */\r\n state: 'inactive',\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n getState: function() {\r\n return self.state;\r\n },\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n destroy: function() {\r\n var disableLogsCache = config.disableLogs;\r\n\r\n config = {\r\n disableLogs: true\r\n };\r\n self.reset();\r\n setState('destroyed');\r\n returnObject = self = null;\r\n\r\n if (Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor.close();\r\n Storage.AudioContextConstructor = null;\r\n }\r\n\r\n config.disableLogs = disableLogsCache;\r\n\r\n if (!config.disableLogs) {\r\n console.log('RecordRTC is destroyed.');\r\n }\r\n },\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTC\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n version: '5.6.2'\r\n };\r\n\r\n if (!this) {\r\n self = returnObject;\r\n return returnObject;\r\n }\r\n\r\n // if someone wants to use RecordRTC with the \"new\" keyword.\r\n for (var prop in returnObject) {\r\n this[prop] = returnObject[prop];\r\n }\r\n\r\n self = this;\r\n\r\n return returnObject;\r\n}\r\n\r\nRecordRTC.version = '5.6.2';\r\n\r\nif (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = RecordRTC;\r\n}\r\n\r\nif (typeof define === 'function' && define.amd) {\r\n define('RecordRTC', [], function() {\r\n return RecordRTC;\r\n });\r\n}\n\r\nRecordRTC.getFromDisk = function(type, callback) {\r\n if (!callback) {\r\n throw 'callback is mandatory.';\r\n }\r\n\r\n console.log('Getting recorded ' + (type === 'all' ? 'blobs' : type + ' blob ') + ' from disk!');\r\n DiskStorage.Fetch(function(dataURL, _type) {\r\n if (type !== 'all' && _type === type + 'Blob' && callback) {\r\n callback(dataURL);\r\n }\r\n\r\n if (type === 'all' && callback) {\r\n callback(dataURL, _type.replace('Blob', ''));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof RecordRTC\r\n * @example\r\n * RecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nRecordRTC.writeToDisk = function(options) {\r\n console.log('Writing recorded blob(s) to disk!');\r\n options = options || {};\r\n if (options.audio && options.video && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.video) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio && options.gif) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.video && options.gif) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL,\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n });\r\n } else if (options.audio) {\r\n options.audio.getDataURL(function(audioDataURL) {\r\n DiskStorage.Store({\r\n audioBlob: audioDataURL\r\n });\r\n });\r\n } else if (options.video) {\r\n options.video.getDataURL(function(videoDataURL) {\r\n DiskStorage.Store({\r\n videoBlob: videoDataURL\r\n });\r\n });\r\n } else if (options.gif) {\r\n options.gif.getDataURL(function(gifDataURL) {\r\n DiskStorage.Store({\r\n gifBlob: gifDataURL\r\n });\r\n });\r\n }\r\n};\n\r\n// __________________________\r\n// RecordRTC-Configuration.js\r\n\r\n/**\r\n * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid \"config\" object.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCConfiguration\r\n * @class\r\n * @example\r\n * var options = RecordRTCConfiguration(mediaStream, options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.}\r\n */\r\n\r\nfunction RecordRTCConfiguration(mediaStream, config) {\r\n if (!config.recorderType && !config.type) {\r\n if (!!config.audio && !!config.video) {\r\n config.type = 'video';\r\n } else if (!!config.audio && !config.video) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n if (config.recorderType && !config.type) {\r\n if (config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== 'undefined' && config.recorderType === WebAssemblyRecorder)) {\r\n config.type = 'video';\r\n } else if (config.recorderType === GifRecorder) {\r\n config.type = 'gif';\r\n } else if (config.recorderType === StereoAudioRecorder) {\r\n config.type = 'audio';\r\n } else if (config.recorderType === MediaStreamRecorder) {\r\n if (getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (!getTracks(mediaStream, 'audio').length && getTracks(mediaStream, 'video').length) {\r\n config.type = 'video';\r\n } else if (getTracks(mediaStream, 'audio').length && !getTracks(mediaStream, 'video').length) {\r\n config.type = 'audio';\r\n } else {\r\n // config.type = 'UnKnown';\r\n }\r\n }\r\n }\r\n\r\n if (typeof MediaStreamRecorder !== 'undefined' && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (!config.mimeType) {\r\n config.mimeType = 'video/webm';\r\n }\r\n\r\n if (!config.type) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n\r\n if (!config.bitsPerSecond) {\r\n // config.bitsPerSecond = 128000;\r\n }\r\n }\r\n\r\n // consider default type=audio\r\n if (!config.type) {\r\n if (config.mimeType) {\r\n config.type = config.mimeType.split('/')[0];\r\n }\r\n if (!config.type) {\r\n config.type = 'audio';\r\n }\r\n }\r\n\r\n return config;\r\n}\n\r\n// __________________\r\n// GetRecorderType.js\r\n\r\n/**\r\n * {@link GetRecorderType} is an inner/private helper for {@link RecordRTC}.\r\n * @summary It returns best recorder-type available for your browser.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GetRecorderType\r\n * @class\r\n * @example\r\n * var RecorderType = GetRecorderType(options);\r\n * var recorder = new RecorderType(options);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {type:\"video\", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction GetRecorderType(mediaStream, config) {\r\n var recorder;\r\n\r\n // StereoAudioRecorder can work with all three: Edge, Firefox and Chrome\r\n // todo: detect if it is Edge, then auto use: StereoAudioRecorder\r\n if (isChrome || isEdge || isOpera) {\r\n // Media Stream Recording API has not been implemented in chrome yet;\r\n // That's why using WebAudio API to record stereo audio in WAV format\r\n recorder = StereoAudioRecorder;\r\n }\r\n\r\n if (typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype && !isChrome) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n // video recorder (in WebM format)\r\n if (config.type === 'video' && (isChrome || isOpera)) {\r\n recorder = WhammyRecorder;\r\n\r\n if (typeof WebAssemblyRecorder !== 'undefined' && typeof ReadableStream !== 'undefined') {\r\n recorder = WebAssemblyRecorder;\r\n }\r\n }\r\n\r\n // video recorder (in Gif format)\r\n if (config.type === 'gif') {\r\n recorder = GifRecorder;\r\n }\r\n\r\n // html2canvas recording!\r\n if (config.type === 'canvas') {\r\n recorder = CanvasRecorder;\r\n }\r\n\r\n if (isMediaRecorderCompatible() && recorder !== CanvasRecorder && recorder !== GifRecorder && typeof MediaRecorder !== 'undefined' && 'requestData' in MediaRecorder.prototype) {\r\n if (getTracks(mediaStream, 'video').length || getTracks(mediaStream, 'audio').length) {\r\n // audio-only recording\r\n if (config.type === 'audio') {\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('audio/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n // else recorder = StereoAudioRecorder;\r\n } else {\r\n // video or screen tracks\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && MediaRecorder.isTypeSupported('video/webm')) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (mediaStream instanceof Array && mediaStream.length) {\r\n recorder = MultiStreamRecorder;\r\n }\r\n\r\n if (config.recorderType) {\r\n recorder = config.recorderType;\r\n }\r\n\r\n if (!config.disableLogs && !!recorder && !!recorder.name) {\r\n console.log('Using recorderType:', recorder.name || recorder.constructor.name);\r\n }\r\n\r\n if (!recorder && isSafari) {\r\n recorder = MediaStreamRecorder;\r\n }\r\n\r\n return recorder;\r\n}\n\r\n// _____________\r\n// MRecordRTC.js\r\n\r\n/**\r\n * MRecordRTC runs on top of {@link RecordRTC} to bring multiple recordings in a single place, by providing simple API.\r\n * @summary MRecordRTC stands for \"Multiple-RecordRTC\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MRecordRTC\r\n * @class\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.addStream(MediaStream);\r\n * recorder.mediaType = {\r\n * audio: true, // or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif: true // or GifRecorder\r\n * };\r\n * // mimeType is optional and should be set only in advance cases.\r\n * recorder.mimeType = {\r\n * audio: 'audio/wav',\r\n * video: 'video/webm',\r\n * gif: 'image/gif'\r\n * };\r\n * recorder.startRecording();\r\n * @see For further information:\r\n * @see {@link https://github.com/muaz-khan/RecordRTC/tree/master/MRecordRTC|MRecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction MRecordRTC(mediaStream) {\r\n\r\n /**\r\n * This method attaches MediaStream object to {@link MRecordRTC}.\r\n * @param {MediaStream} mediaStream - A MediaStream object, either fetched using getUserMedia API, or generated using captureStreamUntilEnded or WebAudio API.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.addStream(MediaStream);\r\n */\r\n this.addStream = function(_mediaStream) {\r\n if (_mediaStream) {\r\n mediaStream = _mediaStream;\r\n }\r\n };\r\n\r\n /**\r\n * This property can be used to set the recording type e.g. audio, or video, or gif, or canvas.\r\n * @property {object} mediaType - {audio: true, video: true, gif: true}\r\n * @memberof MRecordRTC\r\n * @example\r\n * var recorder = new MRecordRTC();\r\n * recorder.mediaType = {\r\n * audio: true, // TRUE or StereoAudioRecorder or MediaStreamRecorder\r\n * video: true, // TRUE or WhammyRecorder or MediaStreamRecorder or WebAssemblyRecorder or CanvasRecorder\r\n * gif : true // TRUE or GifRecorder\r\n * };\r\n */\r\n this.mediaType = {\r\n audio: true,\r\n video: true\r\n };\r\n\r\n /**\r\n * This method starts recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.startRecording();\r\n */\r\n this.startRecording = function() {\r\n var mediaType = this.mediaType;\r\n var recorderType;\r\n var mimeType = this.mimeType || {\r\n audio: null,\r\n video: null,\r\n gif: null\r\n };\r\n\r\n if (typeof mediaType.audio !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'audio').length) {\r\n mediaType.audio = false;\r\n }\r\n\r\n if (typeof mediaType.video !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.video = false;\r\n }\r\n\r\n if (typeof mediaType.gif !== 'function' && isMediaRecorderCompatible() && !getTracks(mediaStream, 'video').length) {\r\n mediaType.gif = false;\r\n }\r\n\r\n if (!mediaType.audio && !mediaType.video && !mediaType.gif) {\r\n throw 'MediaStream must have either audio or video tracks.';\r\n }\r\n\r\n if (!!mediaType.audio) {\r\n recorderType = null;\r\n if (typeof mediaType.audio === 'function') {\r\n recorderType = mediaType.audio;\r\n }\r\n\r\n this.audioRecorder = new RecordRTC(mediaStream, {\r\n type: 'audio',\r\n bufferSize: this.bufferSize,\r\n sampleRate: this.sampleRate,\r\n numberOfAudioChannels: this.numberOfAudioChannels || 2,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.audio,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp\r\n });\r\n\r\n if (!mediaType.video) {\r\n this.audioRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.video) {\r\n recorderType = null;\r\n if (typeof mediaType.video === 'function') {\r\n recorderType = mediaType.video;\r\n }\r\n\r\n var newStream = mediaStream;\r\n\r\n if (isMediaRecorderCompatible() && !!mediaType.audio && typeof mediaType.audio === 'function') {\r\n var videoTrack = getTracks(mediaStream, 'video')[0];\r\n\r\n if (isFirefox) {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n\r\n if (recorderType && recorderType === WhammyRecorder) {\r\n // Firefox does NOT supports webp-encoding yet\r\n // But Firefox do supports WebAssemblyRecorder\r\n recorderType = MediaStreamRecorder;\r\n }\r\n } else {\r\n newStream = new MediaStream();\r\n newStream.addTrack(videoTrack);\r\n }\r\n }\r\n\r\n this.videoRecorder = new RecordRTC(newStream, {\r\n type: 'video',\r\n video: this.video,\r\n canvas: this.canvas,\r\n frameInterval: this.frameInterval || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.video,\r\n timeSlice: this.timeSlice,\r\n onTimeStamp: this.onTimeStamp,\r\n workerPath: this.workerPath,\r\n webAssemblyPath: this.webAssemblyPath,\r\n frameRate: this.frameRate, // used by WebAssemblyRecorder; values: usually 30; accepts any.\r\n bitrate: this.bitrate // used by WebAssemblyRecorder; values: 0 to 1000+\r\n });\r\n\r\n if (!mediaType.audio) {\r\n this.videoRecorder.startRecording();\r\n }\r\n }\r\n\r\n if (!!mediaType.audio && !!mediaType.video) {\r\n var self = this;\r\n\r\n var isSingleRecorder = isMediaRecorderCompatible() === true;\r\n\r\n if (mediaType.audio instanceof StereoAudioRecorder && !!mediaType.video) {\r\n isSingleRecorder = false;\r\n } else if (mediaType.audio !== true && mediaType.video !== true && mediaType.audio !== mediaType.video) {\r\n isSingleRecorder = false;\r\n }\r\n\r\n if (isSingleRecorder === true) {\r\n self.audioRecorder = null;\r\n self.videoRecorder.startRecording();\r\n } else {\r\n self.videoRecorder.initRecorder(function() {\r\n self.audioRecorder.initRecorder(function() {\r\n // Both recorders are ready to record things accurately\r\n self.videoRecorder.startRecording();\r\n self.audioRecorder.startRecording();\r\n });\r\n });\r\n }\r\n }\r\n\r\n if (!!mediaType.gif) {\r\n recorderType = null;\r\n if (typeof mediaType.gif === 'function') {\r\n recorderType = mediaType.gif;\r\n }\r\n this.gifRecorder = new RecordRTC(mediaStream, {\r\n type: 'gif',\r\n frameRate: this.frameRate || 200,\r\n quality: this.quality || 10,\r\n disableLogs: this.disableLogs,\r\n recorderType: recorderType,\r\n mimeType: mimeType.gif\r\n });\r\n this.gifRecorder.startRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording.\r\n * @param {function} callback - Callback function is invoked when all encoders finished their jobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.stopRecording(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n */\r\n this.stopRecording = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (this.audioRecorder) {\r\n this.audioRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'audio');\r\n });\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'video');\r\n });\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.stopRecording(function(blobURL) {\r\n callback(blobURL, 'gif');\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.pauseRecording();\r\n */\r\n this.pauseRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.pauseRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.pauseRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.pauseRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes recording.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.resumeRecording();\r\n */\r\n this.resumeRecording = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.resumeRecording();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.resumeRecording();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.resumeRecording();\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs.\r\n * @param {function} callback - All recorded blobs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getBlob(function(recording){\r\n * var audioBlob = recording.audio;\r\n * var videoBlob = recording.video;\r\n * var gifBlob = recording.gif;\r\n * });\r\n * // or\r\n * var audioBlob = recorder.getBlob().audio;\r\n * var videoBlob = recorder.getBlob().video;\r\n */\r\n this.getBlob = function(callback) {\r\n var output = {};\r\n\r\n if (this.audioRecorder) {\r\n output.audio = this.audioRecorder.getBlob();\r\n }\r\n\r\n if (this.videoRecorder) {\r\n output.video = this.videoRecorder.getBlob();\r\n }\r\n\r\n if (this.gifRecorder) {\r\n output.gif = this.gifRecorder.getBlob();\r\n }\r\n\r\n if (callback) {\r\n callback(output);\r\n }\r\n\r\n return output;\r\n };\r\n\r\n /**\r\n * Destroy all recorder instances.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.destroy();\r\n */\r\n this.destroy = function() {\r\n if (this.audioRecorder) {\r\n this.audioRecorder.destroy();\r\n this.audioRecorder = null;\r\n }\r\n\r\n if (this.videoRecorder) {\r\n this.videoRecorder.destroy();\r\n this.videoRecorder = null;\r\n }\r\n\r\n if (this.gifRecorder) {\r\n this.gifRecorder.destroy();\r\n this.gifRecorder = null;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to manually get all recorded blobs' DataURLs.\r\n * @param {function} callback - All recorded blobs' DataURLs are passed back to the \"callback\" function.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.getDataURL(function(recording){\r\n * var audioDataURL = recording.audio;\r\n * var videoDataURL = recording.video;\r\n * var gifDataURL = recording.gif;\r\n * });\r\n */\r\n this.getDataURL = function(callback) {\r\n this.getBlob(function(blob) {\r\n if (blob.audio && blob.video) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n audio: _audioDataURL,\r\n video: _videoDataURL\r\n });\r\n });\r\n });\r\n } else if (blob.audio) {\r\n getDataURL(blob.audio, function(_audioDataURL) {\r\n callback({\r\n audio: _audioDataURL\r\n });\r\n });\r\n } else if (blob.video) {\r\n getDataURL(blob.video, function(_videoDataURL) {\r\n callback({\r\n video: _videoDataURL\r\n });\r\n });\r\n }\r\n });\r\n\r\n function getDataURL(blob, callback00) {\r\n if (typeof Worker !== 'undefined') {\r\n var webWorker = processInWebWorker(function readFile(_blob) {\r\n postMessage(new FileReaderSync().readAsDataURL(_blob));\r\n });\r\n\r\n webWorker.onmessage = function(event) {\r\n callback00(event.data);\r\n };\r\n\r\n webWorker.postMessage(blob);\r\n } else {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = function(event) {\r\n callback00(event.target.result);\r\n };\r\n }\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n var url;\r\n if (typeof URL !== 'undefined') {\r\n url = URL;\r\n } else if (typeof webkitURL !== 'undefined') {\r\n url = webkitURL;\r\n } else {\r\n throw 'Neither URL nor webkitURL detected.';\r\n }\r\n url.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n };\r\n\r\n /**\r\n * This method can be used to ask {@link MRecordRTC} to write all recorded blobs into IndexedDB storage.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.writeToDisk();\r\n */\r\n this.writeToDisk = function() {\r\n RecordRTC.writeToDisk({\r\n audio: this.audioRecorder,\r\n video: this.videoRecorder,\r\n gif: this.gifRecorder\r\n });\r\n };\r\n\r\n /**\r\n * This method can be used to invoke a save-as dialog for all recorded blobs.\r\n * @param {object} args - {audio: 'audio-name', video: 'video-name', gif: 'gif-name'}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * recorder.save({\r\n * audio: 'audio-file-name',\r\n * video: 'video-file-name',\r\n * gif : 'gif-file-name'\r\n * });\r\n */\r\n this.save = function(args) {\r\n args = args || {\r\n audio: true,\r\n video: true,\r\n gif: true\r\n };\r\n\r\n if (!!args.audio && this.audioRecorder) {\r\n this.audioRecorder.save(typeof args.audio === 'string' ? args.audio : '');\r\n }\r\n\r\n if (!!args.video && this.videoRecorder) {\r\n this.videoRecorder.save(typeof args.video === 'string' ? args.video : '');\r\n }\r\n if (!!args.gif && this.gifRecorder) {\r\n this.gifRecorder.save(typeof args.gif === 'string' ? args.gif : '');\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * This method can be used to get all recorded blobs from IndexedDB storage.\r\n * @param {string} type - 'all' or 'audio' or 'video' or 'gif'\r\n * @param {function} callback - Callback function to get all stored blobs.\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.getFromDisk('all', function(dataURL, type){\r\n * if(type === 'audio') { }\r\n * if(type === 'video') { }\r\n * if(type === 'gif') { }\r\n * });\r\n */\r\nMRecordRTC.getFromDisk = RecordRTC.getFromDisk;\r\n\r\n/**\r\n * This method can be used to store recorded blobs into IndexedDB storage.\r\n * @param {object} options - {audio: Blob, video: Blob, gif: Blob}\r\n * @method\r\n * @memberof MRecordRTC\r\n * @example\r\n * MRecordRTC.writeToDisk({\r\n * audio: audioBlob,\r\n * video: videoBlob,\r\n * gif : gifBlob\r\n * });\r\n */\r\nMRecordRTC.writeToDisk = RecordRTC.writeToDisk;\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MRecordRTC = MRecordRTC;\r\n}\n\r\nvar browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n(function(that) {\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n})(typeof global !== 'undefined' ? global : null);\n\r\n// _____________________________\r\n// Cross-Browser-Declarations.js\r\n\r\n// animation-frame used in WebM recording\r\n\r\n/*jshint -W079 */\r\nvar requestAnimationFrame = window.requestAnimationFrame;\r\nif (typeof requestAnimationFrame === 'undefined') {\r\n if (typeof webkitRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = webkitRequestAnimationFrame;\r\n } else if (typeof mozRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = mozRequestAnimationFrame;\r\n } else if (typeof msRequestAnimationFrame !== 'undefined') {\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = msRequestAnimationFrame;\r\n } else if (typeof requestAnimationFrame === 'undefined') {\r\n // via: https://gist.github.com/paulirish/1579671\r\n var lastTime = 0;\r\n\r\n /*global requestAnimationFrame:true */\r\n requestAnimationFrame = function(callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar cancelAnimationFrame = window.cancelAnimationFrame;\r\nif (typeof cancelAnimationFrame === 'undefined') {\r\n if (typeof webkitCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = webkitCancelAnimationFrame;\r\n } else if (typeof mozCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = mozCancelAnimationFrame;\r\n } else if (typeof msCancelAnimationFrame !== 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = msCancelAnimationFrame;\r\n } else if (typeof cancelAnimationFrame === 'undefined') {\r\n /*global cancelAnimationFrame:true */\r\n cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}\r\n\r\n// WebAudio API representer\r\nvar AudioContext = window.AudioContext;\r\n\r\nif (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n}\r\n\r\n/*jshint -W079 */\r\nvar URL = window.URL;\r\n\r\nif (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n}\r\n\r\nif (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n}\r\n\r\nvar isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveBlob || !!navigator.msSaveOrOpenBlob);\r\nvar isOpera = !!window.opera || navigator.userAgent.indexOf('OPR/') !== -1;\r\nvar isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 && ('netscape' in window) && / rv:/.test(navigator.userAgent);\r\nvar isChrome = (!isOpera && !isEdge && !!navigator.webkitGetUserMedia) || isElectron() || navigator.userAgent.toLowerCase().indexOf('chrome/') !== -1;\r\n\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n\r\nif (isSafari && !isChrome && navigator.userAgent.indexOf('CriOS') !== -1) {\r\n isSafari = false;\r\n isChrome = true;\r\n}\r\n\r\nvar MediaStream = window.MediaStream;\r\n\r\nif (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n}\r\n\r\n/*global MediaStream:true */\r\nif (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n}\r\n\r\n// below function via: http://goo.gl/B3ae8c\r\n/**\r\n * Return human-readable file size.\r\n * @param {number} bytes - Pass bytes and get formatted string.\r\n * @returns {string} - formatted string\r\n * @example\r\n * bytesToSize(1024*1024*5) === '5 GB'\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction bytesToSize(bytes) {\r\n var k = 1000;\r\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n var i = parseInt(Math.floor(Math.log(bytes) / Math.log(k)), 10);\r\n return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object. This parameter is required.\r\n * @param {string} fileName - Optional file name e.g. \"Recorded-Video.webm\"\r\n * @example\r\n * invokeSaveAsDialog(blob or file, [optional] fileName);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction invokeSaveAsDialog(file, fileName) {\r\n if (!file) {\r\n throw 'Blob object is required.';\r\n }\r\n\r\n if (!file.type) {\r\n try {\r\n file.type = 'video/webm';\r\n } catch (e) {}\r\n }\r\n\r\n var fileExtension = (file.type || 'video/webm').split('/')[1];\r\n if (fileExtension.indexOf(';') !== -1) {\r\n // extended mimetype, e.g. 'video/webm;codecs=vp8,opus'\r\n fileExtension = fileExtension.split(';')[0];\r\n }\r\n if (fileName && fileName.indexOf('.') !== -1) {\r\n var splitted = fileName.split('.');\r\n fileName = splitted[0];\r\n fileExtension = splitted[1];\r\n }\r\n\r\n var fileFullName = (fileName || (Math.round(Math.random() * 9999999999) + 888888888)) + '.' + fileExtension;\r\n\r\n if (typeof navigator.msSaveOrOpenBlob !== 'undefined') {\r\n return navigator.msSaveOrOpenBlob(file, fileFullName);\r\n } else if (typeof navigator.msSaveBlob !== 'undefined') {\r\n return navigator.msSaveBlob(file, fileFullName);\r\n }\r\n\r\n var hyperlink = document.createElement('a');\r\n hyperlink.href = URL.createObjectURL(file);\r\n hyperlink.download = fileFullName;\r\n\r\n hyperlink.style = 'display:none;opacity:0;color:transparent;';\r\n (document.body || document.documentElement).appendChild(hyperlink);\r\n\r\n if (typeof hyperlink.click === 'function') {\r\n hyperlink.click();\r\n } else {\r\n hyperlink.target = '_blank';\r\n hyperlink.dispatchEvent(new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n URL.revokeObjectURL(hyperlink.href);\r\n}\r\n\r\n/**\r\n * from: https://github.com/cheton/is-electron/blob/master/index.js\r\n **/\r\nfunction isElectron() {\r\n // Renderer process\r\n if (typeof window !== 'undefined' && typeof window.process === 'object' && window.process.type === 'renderer') {\r\n return true;\r\n }\r\n\r\n // Main process\r\n if (typeof process !== 'undefined' && typeof process.versions === 'object' && !!process.versions.electron) {\r\n return true;\r\n }\r\n\r\n // Detect the user agent when the `nodeIntegration` option is set to true\r\n if (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTracks(stream, kind) {\r\n if (!stream || !stream.getTracks) {\r\n return [];\r\n }\r\n\r\n return stream.getTracks().filter(function(t) {\r\n return t.kind === (kind || 'audio');\r\n });\r\n}\r\n\r\nfunction setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n}\r\n\r\n/**\r\n * @param {Blob} file - File or Blob object.\r\n * @param {function} callback - Callback function.\r\n * @example\r\n * getSeekableBlob(blob or file, callback);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\nfunction getSeekableBlob(inputBlob, callback) {\r\n // EBML.js copyrights goes to: https://github.com/legokichi/ts-ebml\r\n if (typeof EBML === 'undefined') {\r\n throw new Error('Please link: https://www.webrtc-experiment.com/EBML.js');\r\n }\r\n\r\n var reader = new EBML.Reader();\r\n var decoder = new EBML.Decoder();\r\n var tools = EBML.tools;\r\n\r\n var fileReader = new FileReader();\r\n fileReader.onload = function(e) {\r\n var ebmlElms = decoder.decode(this.result);\r\n ebmlElms.forEach(function(element) {\r\n reader.read(element);\r\n });\r\n reader.stop();\r\n var refinedMetadataBuf = tools.makeMetadataSeekable(reader.metadatas, reader.duration, reader.cues);\r\n var body = this.result.slice(reader.metadataSize);\r\n var newBlob = new Blob([refinedMetadataBuf, body], {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(newBlob);\r\n };\r\n fileReader.readAsArrayBuffer(inputBlob);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.invokeSaveAsDialog = invokeSaveAsDialog;\r\n RecordRTC.getTracks = getTracks;\r\n RecordRTC.getSeekableBlob = getSeekableBlob;\r\n RecordRTC.bytesToSize = bytesToSize;\r\n RecordRTC.isElectron = isElectron;\r\n}\r\n\r\n// __________ (used to handle stuff like http://goo.gl/xmE5eg) issue #129\r\n// Storage.js\r\n\r\n/**\r\n * Storage is a standalone object used by {@link RecordRTC} to store reusable objects e.g. \"new AudioContext\".\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * Storage.AudioContext === webkitAudioContext\r\n * @property {webkitAudioContext} AudioContext - Keeps a reference to AudioContext object.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Storage = {};\r\n\r\nif (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n} else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Storage = Storage;\r\n}\n\r\nfunction isMediaRecorderCompatible() {\r\n if (isFirefox || isSafari || isEdge) {\r\n return true;\r\n }\r\n\r\n var nVer = navigator.appVersion;\r\n var nAgt = navigator.userAgent;\r\n var fullVersion = '' + parseFloat(navigator.appVersion);\r\n var majorVersion = parseInt(navigator.appVersion, 10);\r\n var nameOffset, verOffset, ix;\r\n\r\n if (isChrome || isOpera) {\r\n verOffset = nAgt.indexOf('Chrome');\r\n fullVersion = nAgt.substring(verOffset + 7);\r\n }\r\n\r\n // trim the fullVersion string at semicolon/space if present\r\n if ((ix = fullVersion.indexOf(';')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n if ((ix = fullVersion.indexOf(' ')) !== -1) {\r\n fullVersion = fullVersion.substring(0, ix);\r\n }\r\n\r\n majorVersion = parseInt('' + fullVersion, 10);\r\n\r\n if (isNaN(majorVersion)) {\r\n fullVersion = '' + parseFloat(navigator.appVersion);\r\n majorVersion = parseInt(navigator.appVersion, 10);\r\n }\r\n\r\n return majorVersion >= 49;\r\n}\n\r\n// ______________________\r\n// MediaStreamRecorder.js\r\n\r\n/**\r\n * MediaStreamRecorder is an abstraction layer for {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}. It is used by {@link RecordRTC} to record MediaStream(s) in both Chrome and Firefox.\r\n * @summary Runs top over {@link https://w3c.github.io/mediacapture-record/MediaRecorder.html|MediaRecorder API}.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://github.com/muaz-khan|Muaz Khan}\r\n * @typedef MediaStreamRecorder\r\n * @class\r\n * @example\r\n * var config = {\r\n * mimeType: 'video/webm', // vp8, vp9, h264, mkv, opus/vorbis\r\n * audioBitsPerSecond : 256 * 8 * 1024,\r\n * videoBitsPerSecond : 256 * 8 * 1024,\r\n * bitsPerSecond: 256 * 8 * 1024, // if this is provided, skip above two\r\n * checkForInactiveTracks: true,\r\n * timeSlice: 1000, // concatenate intervals based blobs\r\n * ondataavailable: function() {} // get intervals based blobs\r\n * }\r\n * var recorder = new MediaStreamRecorder(mediaStream, config);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs:true, initCallback: function, mimeType: \"video/webm\", timeSlice: 1000}\r\n * @throws Will throw an error if first argument \"MediaStream\" is missing. Also throws error if \"MediaRecorder API\" are not supported by the browser.\r\n */\r\n\r\nfunction MediaStreamRecorder(mediaStream, config) {\r\n var self = this;\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n if (typeof MediaRecorder === 'undefined') {\r\n throw 'Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.';\r\n }\r\n\r\n config = config || {\r\n // bitsPerSecond: 256 * 8 * 1024,\r\n mimeType: 'video/webm'\r\n };\r\n\r\n if (config.type === 'audio') {\r\n if (getTracks(mediaStream, 'video').length && getTracks(mediaStream, 'audio').length) {\r\n var stream;\r\n if (!!navigator.mozGetUserMedia) {\r\n stream = new MediaStream();\r\n stream.addTrack(getTracks(mediaStream, 'audio')[0]);\r\n } else {\r\n // webkitMediaStream\r\n stream = new MediaStream(getTracks(mediaStream, 'audio'));\r\n }\r\n mediaStream = stream;\r\n }\r\n\r\n if (!config.mimeType || config.mimeType.toString().toLowerCase().indexOf('audio') === -1) {\r\n config.mimeType = isChrome ? 'audio/webm' : 'audio/ogg';\r\n }\r\n\r\n if (config.mimeType && config.mimeType.toString().toLowerCase() !== 'audio/ogg' && !!navigator.mozGetUserMedia) {\r\n // forcing better codecs on Firefox (via #166)\r\n config.mimeType = 'audio/ogg';\r\n }\r\n }\r\n\r\n var arrayOfBlobs = [];\r\n\r\n /**\r\n * This method returns array of blobs. Use only with \"timeSlice\". Its useful to preview recording anytime, without using the \"stop\" method.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var arrayOfBlobs = recorder.getArrayOfBlobs();\r\n * @returns {Array} Returns array of recorded blobs.\r\n */\r\n this.getArrayOfBlobs = function() {\r\n return arrayOfBlobs;\r\n };\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // set defaults\r\n self.blob = null;\r\n self.clearRecordedData();\r\n self.timestamps = [];\r\n allStates = [];\r\n arrayOfBlobs = [];\r\n\r\n var recorderHints = config;\r\n\r\n if (!config.disableLogs) {\r\n console.log('Passing following config over MediaRecorder API.', recorderHints);\r\n }\r\n\r\n if (mediaRecorder) {\r\n // mandatory to make sure Firefox doesn't fails to record streams 3-4 times without reloading the page.\r\n mediaRecorder = null;\r\n }\r\n\r\n if (isChrome && !isMediaRecorderCompatible()) {\r\n // to support video-only recording on stable\r\n recorderHints = 'video/vp8';\r\n }\r\n\r\n if (typeof MediaRecorder.isTypeSupported === 'function' && recorderHints.mimeType) {\r\n if (!MediaRecorder.isTypeSupported(recorderHints.mimeType)) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n\r\n recorderHints.mimeType = config.type === 'audio' ? 'audio/webm' : 'video/webm';\r\n }\r\n }\r\n\r\n // using MediaRecorder API here\r\n try {\r\n mediaRecorder = new MediaRecorder(mediaStream, recorderHints);\r\n\r\n // reset\r\n config.mimeType = recorderHints.mimeType;\r\n } catch (e) {\r\n // chrome-based fallback\r\n mediaRecorder = new MediaRecorder(mediaStream);\r\n }\r\n\r\n // old hack?\r\n if (recorderHints.mimeType && !MediaRecorder.isTypeSupported && 'canRecordMimeType' in mediaRecorder && mediaRecorder.canRecordMimeType(recorderHints.mimeType) === false) {\r\n if (!config.disableLogs) {\r\n console.warn('MediaRecorder API seems unable to record mimeType:', recorderHints.mimeType);\r\n }\r\n }\r\n\r\n // Dispatching OnDataAvailable Handler\r\n mediaRecorder.ondataavailable = function(e) {\r\n if (e.data) {\r\n allStates.push('ondataavailable: ' + bytesToSize(e.data.size));\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n if (e.data && e.data.size) {\r\n arrayOfBlobs.push(e.data);\r\n updateTimeStamp();\r\n\r\n if (typeof config.ondataavailable === 'function') {\r\n // intervals based blobs\r\n var blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n config.ondataavailable(blob);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!e.data || !e.data.size || e.data.size < 100 || self.blob) {\r\n // make sure that stopRecording always getting fired\r\n // even if there is invalid data\r\n if (self.recordingCallback) {\r\n self.recordingCallback(new Blob([], {\r\n type: getMimeType(recorderHints)\r\n }));\r\n self.recordingCallback = null;\r\n }\r\n return;\r\n }\r\n\r\n self.blob = config.getNativeBlob ? e.data : new Blob([e.data], {\r\n type: getMimeType(recorderHints)\r\n });\r\n\r\n if (self.recordingCallback) {\r\n self.recordingCallback(self.blob);\r\n self.recordingCallback = null;\r\n }\r\n };\r\n\r\n mediaRecorder.onstart = function() {\r\n allStates.push('started');\r\n };\r\n\r\n mediaRecorder.onpause = function() {\r\n allStates.push('paused');\r\n };\r\n\r\n mediaRecorder.onresume = function() {\r\n allStates.push('resumed');\r\n };\r\n\r\n mediaRecorder.onstop = function() {\r\n allStates.push('stopped');\r\n };\r\n\r\n mediaRecorder.onerror = function(error) {\r\n if (!error) {\r\n return;\r\n }\r\n\r\n if (!error.name) {\r\n error.name = 'UnknownError';\r\n }\r\n\r\n allStates.push('error: ' + error);\r\n\r\n if (!config.disableLogs) {\r\n // via: https://w3c.github.io/mediacapture-record/MediaRecorder.html#exception-summary\r\n if (error.name.toString().toLowerCase().indexOf('invalidstate') !== -1) {\r\n console.error('The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('notsupported') !== -1) {\r\n console.error('MIME type (', recorderHints.mimeType, ') is not supported.', error);\r\n } else if (error.name.toString().toLowerCase().indexOf('security') !== -1) {\r\n console.error('MediaRecorder security error', error);\r\n }\r\n\r\n // older code below\r\n else if (error.name === 'OutOfMemory') {\r\n console.error('The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'IllegalStreamModification') {\r\n console.error('A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'OtherRecordingError') {\r\n console.error('Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.', error);\r\n } else if (error.name === 'GenericError') {\r\n console.error('The UA cannot provide the codec or recording option that has been requested.', error);\r\n } else {\r\n console.error('MediaRecorder Error', error);\r\n }\r\n }\r\n\r\n (function(looper) {\r\n if (!self.manuallyStopped && mediaRecorder && mediaRecorder.state === 'inactive') {\r\n delete config.timeslice;\r\n\r\n // 10 minutes, enough?\r\n mediaRecorder.start(10 * 60 * 1000);\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000);\r\n })();\r\n\r\n if (mediaRecorder.state !== 'inactive' && mediaRecorder.state !== 'stopped') {\r\n mediaRecorder.stop();\r\n }\r\n };\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n updateTimeStamp();\r\n mediaRecorder.start(config.timeSlice);\r\n } else {\r\n // default is 60 minutes; enough?\r\n // use config => {timeSlice: 1000} otherwise\r\n\r\n mediaRecorder.start(3.6e+6);\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback(); // old code\r\n }\r\n };\r\n\r\n /**\r\n * @property {Array} timestamps - Array of time stamps\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * console.log(recorder.timestamps);\r\n */\r\n this.timestamps = [];\r\n\r\n function updateTimeStamp() {\r\n self.timestamps.push(new Date().getTime());\r\n\r\n if (typeof config.onTimeStamp === 'function') {\r\n config.onTimeStamp(self.timestamps[self.timestamps.length - 1], self.timestamps);\r\n }\r\n }\r\n\r\n function getMimeType(secondObject) {\r\n if (mediaRecorder && mediaRecorder.mimeType) {\r\n return mediaRecorder.mimeType;\r\n }\r\n\r\n return secondObject.mimeType || 'video/webm';\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n self.manuallyStopped = true; // used inside the mediaRecorder.onerror\r\n\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n this.recordingCallback = callback;\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.stop();\r\n }\r\n\r\n if (typeof config.timeSlice === 'number') {\r\n setTimeout(function() {\r\n self.blob = new Blob(arrayOfBlobs, {\r\n type: getMimeType(config)\r\n });\r\n\r\n self.recordingCallback(self.blob);\r\n }, 100);\r\n }\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'recording') {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n if (mediaRecorder.state === 'paused') {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder && mediaRecorder.state === 'recording') {\r\n self.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n arrayOfBlobs = [];\r\n mediaRecorder = null;\r\n self.timestamps = [];\r\n }\r\n\r\n // Reference to \"MediaRecorder\" object\r\n var mediaRecorder;\r\n\r\n /**\r\n * Access to native MediaRecorder API\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @instance\r\n * @example\r\n * var internal = recorder.getInternalRecorder();\r\n * internal.ondataavailable = function() {}; // override\r\n * internal.stream, internal.onpause, internal.onstop, etc.\r\n * @returns {Object} Returns internal recording object.\r\n */\r\n this.getInternalRecorder = function() {\r\n return mediaRecorder;\r\n };\r\n\r\n function isMediaStreamActive() {\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n\r\n\r\n /**\r\n * Get MediaRecorder readonly state.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getState();\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n if (!mediaRecorder) {\r\n return 'inactive';\r\n }\r\n\r\n return mediaRecorder.state || 'inactive';\r\n };\r\n\r\n // list of all recording states\r\n var allStates = [];\r\n\r\n /**\r\n * Get MediaRecorder all recording states.\r\n * @method\r\n * @memberof MediaStreamRecorder\r\n * @example\r\n * var state = recorder.getAllStates();\r\n * @returns {Array} Returns all recording states\r\n */\r\n this.getAllStates = function() {\r\n return allStates;\r\n };\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = false; // disable to minimize CPU usage\r\n }\r\n\r\n var self = this;\r\n\r\n // this method checks if media stream is stopped\r\n // or if any track is ended.\r\n (function looper() {\r\n if (!mediaRecorder || config.checkForInactiveTracks === false) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n self.stop();\r\n return;\r\n }\r\n\r\n setTimeout(looper, 1000); // check every second\r\n })();\r\n\r\n // for debugging\r\n this.name = 'MediaStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MediaStreamRecorder = MediaStreamRecorder;\r\n}\r\n\r\n// source code from: http://typedarray.org/wp-content/projects/WebAudioRecorder/script.js\r\n// https://github.com/mattdiamond/Recorderjs#license-mit\r\n// ______________________\r\n// StereoAudioRecorder.js\r\n\r\n/**\r\n * StereoAudioRecorder is a standalone class used by {@link RecordRTC} to bring \"stereo\" audio-recording in chrome.\r\n * @summary JavaScript standalone object for stereo audio recording.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef StereoAudioRecorder\r\n * @class\r\n * @example\r\n * var recorder = new StereoAudioRecorder(MediaStream, {\r\n * sampleRate: 44100,\r\n * bufferSize: 4096\r\n * });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {sampleRate: 44100, bufferSize: 4096, numberOfAudioChannels: 1, etc.}\r\n */\r\n\r\nfunction StereoAudioRecorder(mediaStream, config) {\r\n if (!getTracks(mediaStream, 'audio').length) {\r\n throw 'Your stream has no audio tracks.';\r\n }\r\n\r\n config = config || {};\r\n\r\n var self = this;\r\n\r\n // variables\r\n var leftchannel = [];\r\n var rightchannel = [];\r\n var recording = false;\r\n var recordingLength = 0;\r\n var jsAudioNode;\r\n\r\n var numberOfAudioChannels = 2;\r\n\r\n /**\r\n * Set sample rates such as 8K or 16K. Reference: http://stackoverflow.com/a/28977136/552182\r\n * @property {number} desiredSampRate - Desired Bits per sample * 1000\r\n * @memberof StereoAudioRecorder\r\n * @instance\r\n * @example\r\n * var recorder = StereoAudioRecorder(mediaStream, {\r\n * desiredSampRate: 16 * 1000 // bits-per-sample * 1000\r\n * });\r\n */\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n // backward compatibility\r\n if (config.leftChannel === true) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (config.numberOfAudioChannels === 1) {\r\n numberOfAudioChannels = 1;\r\n }\r\n\r\n if (!numberOfAudioChannels || numberOfAudioChannels < 1) {\r\n numberOfAudioChannels = 2;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('StereoAudioRecorder is set to record number of channels: ' + numberOfAudioChannels);\r\n }\r\n\r\n // if any Track within the MediaStream is muted or not enabled at any time, \r\n // the browser will only record black frames \r\n // or silence since that is the content produced by the Track\r\n // so we need to stopRecording as soon as any single track ends.\r\n if (typeof config.checkForInactiveTracks === 'undefined') {\r\n config.checkForInactiveTracks = true;\r\n }\r\n\r\n function isMediaStreamActive() {\r\n if (config.checkForInactiveTracks === false) {\r\n // always return \"true\"\r\n return true;\r\n }\r\n\r\n if ('active' in mediaStream) {\r\n if (!mediaStream.active) {\r\n return false;\r\n }\r\n } else if ('ended' in mediaStream) { // old hack\r\n if (mediaStream.ended) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n resetVariables();\r\n\r\n isAudioProcessStarted = isPaused = false;\r\n recording = true;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n looper();\r\n }\r\n };\r\n\r\n function mergeLeftRightBuffers(config, callback) {\r\n function mergeAudioBuffers(config, cb) {\r\n var numberOfAudioChannels = config.numberOfAudioChannels;\r\n\r\n // todo: \"slice(0)\" --- is it causes loop? Should be removed?\r\n var leftBuffers = config.leftBuffers.slice(0);\r\n var rightBuffers = config.rightBuffers.slice(0);\r\n var sampleRate = config.sampleRate;\r\n var internalInterleavedLength = config.internalInterleavedLength;\r\n var desiredSampRate = config.desiredSampRate;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n rightBuffers = mergeBuffers(rightBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n rightBuffers = interpolateArray(rightBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n leftBuffers = mergeBuffers(leftBuffers, internalInterleavedLength);\r\n\r\n if (desiredSampRate) {\r\n leftBuffers = interpolateArray(leftBuffers, desiredSampRate, sampleRate);\r\n }\r\n }\r\n\r\n // set sample rate as desired sample rate\r\n if (desiredSampRate) {\r\n sampleRate = desiredSampRate;\r\n }\r\n\r\n // for changing the sampling rate, reference:\r\n // http://stackoverflow.com/a/28977136/552182\r\n function interpolateArray(data, newSampleRate, oldSampleRate) {\r\n var fitCount = Math.round(data.length * (newSampleRate / oldSampleRate));\r\n var newData = [];\r\n var springFactor = Number((data.length - 1) / (fitCount - 1));\r\n newData[0] = data[0];\r\n for (var i = 1; i < fitCount - 1; i++) {\r\n var tmp = i * springFactor;\r\n var before = Number(Math.floor(tmp)).toFixed();\r\n var after = Number(Math.ceil(tmp)).toFixed();\r\n var atPoint = tmp - before;\r\n newData[i] = linearInterpolate(data[before], data[after], atPoint);\r\n }\r\n newData[fitCount - 1] = data[data.length - 1];\r\n return newData;\r\n }\r\n\r\n function linearInterpolate(before, after, atPoint) {\r\n return before + (after - before) * atPoint;\r\n }\r\n\r\n function mergeBuffers(channelBuffer, rLength) {\r\n var result = new Float64Array(rLength);\r\n var offset = 0;\r\n var lng = channelBuffer.length;\r\n\r\n for (var i = 0; i < lng; i++) {\r\n var buffer = channelBuffer[i];\r\n result.set(buffer, offset);\r\n offset += buffer.length;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function interleave(leftChannel, rightChannel) {\r\n var length = leftChannel.length + rightChannel.length;\r\n\r\n var result = new Float64Array(length);\r\n\r\n var inputIndex = 0;\r\n\r\n for (var index = 0; index < length;) {\r\n result[index++] = leftChannel[inputIndex];\r\n result[index++] = rightChannel[inputIndex];\r\n inputIndex++;\r\n }\r\n return result;\r\n }\r\n\r\n function writeUTFBytes(view, offset, string) {\r\n var lng = string.length;\r\n for (var i = 0; i < lng; i++) {\r\n view.setUint8(offset + i, string.charCodeAt(i));\r\n }\r\n }\r\n\r\n // interleave both channels together\r\n var interleaved;\r\n\r\n if (numberOfAudioChannels === 2) {\r\n interleaved = interleave(leftBuffers, rightBuffers);\r\n }\r\n\r\n if (numberOfAudioChannels === 1) {\r\n interleaved = leftBuffers;\r\n }\r\n\r\n var interleavedLength = interleaved.length;\r\n\r\n // create wav file\r\n var resultingBufferLength = 44 + interleavedLength * 2;\r\n\r\n var buffer = new ArrayBuffer(resultingBufferLength);\r\n\r\n var view = new DataView(buffer);\r\n\r\n // RIFF chunk descriptor/identifier \r\n writeUTFBytes(view, 0, 'RIFF');\r\n\r\n // RIFF chunk length\r\n // changed \"44\" to \"36\" via #401\r\n view.setUint32(4, 36 + interleavedLength * 2, true);\r\n\r\n // RIFF type \r\n writeUTFBytes(view, 8, 'WAVE');\r\n\r\n // format chunk identifier \r\n // FMT sub-chunk\r\n writeUTFBytes(view, 12, 'fmt ');\r\n\r\n // format chunk length \r\n view.setUint32(16, 16, true);\r\n\r\n // sample format (raw)\r\n view.setUint16(20, 1, true);\r\n\r\n // stereo (2 channels)\r\n view.setUint16(22, numberOfAudioChannels, true);\r\n\r\n // sample rate \r\n view.setUint32(24, sampleRate, true);\r\n\r\n // byte rate (sample rate * block align)\r\n view.setUint32(28, sampleRate * numberOfAudioChannels * 2, true);\r\n\r\n // block align (channel count * bytes per sample) \r\n view.setUint16(32, numberOfAudioChannels * 2, true);\r\n\r\n // bits per sample \r\n view.setUint16(34, 16, true);\r\n\r\n // data sub-chunk\r\n // data chunk identifier \r\n writeUTFBytes(view, 36, 'data');\r\n\r\n // data chunk length \r\n view.setUint32(40, interleavedLength * 2, true);\r\n\r\n // write the PCM samples\r\n var lng = interleavedLength;\r\n var index = 44;\r\n var volume = 1;\r\n for (var i = 0; i < lng; i++) {\r\n view.setInt16(index, interleaved[i] * (0x7FFF * volume), true);\r\n index += 2;\r\n }\r\n\r\n if (cb) {\r\n return cb({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n postMessage({\r\n buffer: buffer,\r\n view: view\r\n });\r\n }\r\n\r\n if (config.noWorker) {\r\n mergeAudioBuffers(config, function(data) {\r\n callback(data.buffer, data.view);\r\n });\r\n return;\r\n }\r\n\r\n\r\n var webWorker = processInWebWorker(mergeAudioBuffers);\r\n\r\n webWorker.onmessage = function(event) {\r\n callback(event.data.buffer, event.data.view);\r\n\r\n // release memory\r\n URL.revokeObjectURL(webWorker.workerURL);\r\n\r\n // kill webworker (or Chrome will kill your page after ~25 calls)\r\n webWorker.terminate();\r\n };\r\n\r\n webWorker.postMessage(config);\r\n }\r\n\r\n function processInWebWorker(_function) {\r\n var workerURL = URL.createObjectURL(new Blob([_function.toString(),\r\n ';this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(workerURL);\r\n worker.workerURL = workerURL;\r\n return worker;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n // stop recording\r\n recording = false;\r\n\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: recordingLength,\r\n leftBuffers: leftchannel,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : rightchannel,\r\n noWorker: config.noWorker\r\n }, function(buffer, view) {\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n self.blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n\r\n /**\r\n * @property {ArrayBuffer} buffer - The recorded buffer object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var buffer = recorder.buffer;\r\n * });\r\n */\r\n self.buffer = new ArrayBuffer(view.buffer.byteLength);\r\n\r\n /**\r\n * @property {DataView} view - The recorded data-view object.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var view = recorder.view;\r\n * });\r\n */\r\n self.view = view;\r\n\r\n self.sampleRate = desiredSampRate || sampleRate;\r\n self.bufferSize = bufferSize;\r\n\r\n // recorded audio length\r\n self.length = recordingLength;\r\n\r\n isAudioProcessStarted = false;\r\n\r\n if (callback) {\r\n callback(self.blob);\r\n }\r\n });\r\n };\r\n\r\n if (typeof RecordRTC.Storage === 'undefined') {\r\n RecordRTC.Storage = {\r\n AudioContextConstructor: null,\r\n AudioContext: window.AudioContext || window.webkitAudioContext\r\n };\r\n }\r\n\r\n if (!RecordRTC.Storage.AudioContextConstructor || RecordRTC.Storage.AudioContextConstructor.state === 'closed') {\r\n RecordRTC.Storage.AudioContextConstructor = new RecordRTC.Storage.AudioContext();\r\n }\r\n\r\n var context = RecordRTC.Storage.AudioContextConstructor;\r\n\r\n // creates an audio node from the microphone incoming stream\r\n var audioInput = context.createMediaStreamSource(mediaStream);\r\n\r\n var legalBufferValues = [0, 256, 512, 1024, 2048, 4096, 8192, 16384];\r\n\r\n /**\r\n * From the spec: This value controls how frequently the audioprocess event is\r\n * dispatched and how many sample-frames need to be processed each call.\r\n * Lower values for buffer size will result in a lower (better) latency.\r\n * Higher values will be necessary to avoid audio breakup and glitches\r\n * The size of the buffer (in sample-frames) which needs to\r\n * be processed each time onprocessaudio is called.\r\n * Legal values are (256, 512, 1024, 2048, 4096, 8192, 16384).\r\n * @property {number} bufferSize - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * bufferSize: 4096\r\n * });\r\n */\r\n\r\n // \"0\" means, let chrome decide the most accurate buffer-size for current platform.\r\n var bufferSize = typeof config.bufferSize === 'undefined' ? 4096 : config.bufferSize;\r\n\r\n if (legalBufferValues.indexOf(bufferSize) === -1) {\r\n if (!config.disableLogs) {\r\n console.log('Legal values for buffer-size are ' + JSON.stringify(legalBufferValues, null, '\\t'));\r\n }\r\n }\r\n\r\n if (context.createJavaScriptNode) {\r\n jsAudioNode = context.createJavaScriptNode(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else if (context.createScriptProcessor) {\r\n jsAudioNode = context.createScriptProcessor(bufferSize, numberOfAudioChannels, numberOfAudioChannels);\r\n } else {\r\n throw 'WebAudio API has no support on this browser.';\r\n }\r\n\r\n // connect the stream to the script processor\r\n audioInput.connect(jsAudioNode);\r\n\r\n if (!config.bufferSize) {\r\n bufferSize = jsAudioNode.bufferSize; // device buffer-size\r\n }\r\n\r\n /**\r\n * The sample rate (in sample-frames per second) at which the\r\n * AudioContext handles audio. It is assumed that all AudioNodes\r\n * in the context run at this rate. In making this assumption,\r\n * sample-rate converters or \"varispeed\" processors are not supported\r\n * in real-time processing.\r\n * The sampleRate parameter describes the sample-rate of the\r\n * linear PCM audio data in the buffer in sample-frames per second.\r\n * An implementation must support sample-rates in at least\r\n * the range 22050 to 96000.\r\n * @property {number} sampleRate - Buffer-size for how frequently the audioprocess event is dispatched.\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder = new StereoAudioRecorder(mediaStream, {\r\n * sampleRate: 44100\r\n * });\r\n */\r\n var sampleRate = typeof config.sampleRate !== 'undefined' ? config.sampleRate : context.sampleRate || 44100;\r\n\r\n if (sampleRate < 22050 || sampleRate > 96000) {\r\n // Ref: http://stackoverflow.com/a/26303918/552182\r\n if (!config.disableLogs) {\r\n console.log('sample-rate must be under range 22050 and 96000.');\r\n }\r\n }\r\n\r\n if (!config.disableLogs) {\r\n if (config.desiredSampRate) {\r\n console.log('Desired sample-rate: ' + config.desiredSampRate);\r\n }\r\n }\r\n\r\n var isPaused = false;\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (isMediaStreamActive() === false) {\r\n throw 'Please make sure MediaStream is active.';\r\n }\r\n\r\n if (!recording) {\r\n if (!config.disableLogs) {\r\n console.log('Seems recording has been restarted.');\r\n }\r\n this.record();\r\n return;\r\n }\r\n\r\n isPaused = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n config.checkForInactiveTracks = false;\r\n\r\n if (recording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n\r\n clearRecordedDataCB();\r\n };\r\n\r\n function resetVariables() {\r\n leftchannel = [];\r\n rightchannel = [];\r\n recordingLength = 0;\r\n isAudioProcessStarted = false;\r\n recording = false;\r\n isPaused = false;\r\n context = null;\r\n\r\n self.leftchannel = leftchannel;\r\n self.rightchannel = rightchannel;\r\n self.numberOfAudioChannels = numberOfAudioChannels;\r\n self.desiredSampRate = desiredSampRate;\r\n self.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n }\r\n\r\n function clearRecordedDataCB() {\r\n if (jsAudioNode) {\r\n jsAudioNode.onaudioprocess = null;\r\n jsAudioNode.disconnect();\r\n jsAudioNode = null;\r\n }\r\n\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n\r\n resetVariables();\r\n }\r\n\r\n // for debugging\r\n this.name = 'StereoAudioRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var isAudioProcessStarted = false;\r\n\r\n function onAudioProcessDataAvailable(e) {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n if (isMediaStreamActive() === false) {\r\n if (!config.disableLogs) {\r\n console.log('MediaStream seems stopped.');\r\n }\r\n jsAudioNode.disconnect();\r\n recording = false;\r\n }\r\n\r\n if (!recording) {\r\n if (audioInput) {\r\n audioInput.disconnect();\r\n audioInput = null;\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * This method is called on \"onaudioprocess\" event's first invocation.\r\n * @method {function} onAudioProcessStarted\r\n * @memberof StereoAudioRecorder\r\n * @example\r\n * recorder.onAudioProcessStarted: function() { };\r\n */\r\n if (!isAudioProcessStarted) {\r\n isAudioProcessStarted = true;\r\n if (config.onAudioProcessStarted) {\r\n config.onAudioProcessStarted();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n }\r\n\r\n var left = e.inputBuffer.getChannelData(0);\r\n\r\n // we clone the samples\r\n var chLeft = new Float32Array(left);\r\n leftchannel.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n var right = e.inputBuffer.getChannelData(1);\r\n var chRight = new Float32Array(right);\r\n rightchannel.push(chRight);\r\n }\r\n\r\n recordingLength += bufferSize;\r\n\r\n // export raw PCM\r\n self.recordingLength = recordingLength;\r\n\r\n if (typeof config.timeSlice !== 'undefined') {\r\n intervalsBasedBuffers.recordingLength += bufferSize;\r\n intervalsBasedBuffers.left.push(chLeft);\r\n\r\n if (numberOfAudioChannels === 2) {\r\n intervalsBasedBuffers.right.push(chRight);\r\n }\r\n }\r\n }\r\n\r\n jsAudioNode.onaudioprocess = onAudioProcessDataAvailable;\r\n\r\n // to prevent self audio to be connected with speakers\r\n if (context.createMediaStreamDestination) {\r\n jsAudioNode.connect(context.createMediaStreamDestination());\r\n } else {\r\n jsAudioNode.connect(context.destination);\r\n }\r\n\r\n // export raw PCM\r\n this.leftchannel = leftchannel;\r\n this.rightchannel = rightchannel;\r\n this.numberOfAudioChannels = numberOfAudioChannels;\r\n this.desiredSampRate = desiredSampRate;\r\n this.sampleRate = sampleRate;\r\n self.recordingLength = recordingLength;\r\n\r\n // helper for intervals based blobs\r\n var intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n\r\n // this looper is used to support intervals based blobs (via timeSlice+ondataavailable)\r\n function looper() {\r\n if (!recording || typeof config.ondataavailable !== 'function' || typeof config.timeSlice === 'undefined') {\r\n return;\r\n }\r\n\r\n if (intervalsBasedBuffers.left.length) {\r\n mergeLeftRightBuffers({\r\n desiredSampRate: desiredSampRate,\r\n sampleRate: sampleRate,\r\n numberOfAudioChannels: numberOfAudioChannels,\r\n internalInterleavedLength: intervalsBasedBuffers.recordingLength,\r\n leftBuffers: intervalsBasedBuffers.left,\r\n rightBuffers: numberOfAudioChannels === 1 ? [] : intervalsBasedBuffers.right\r\n }, function(buffer, view) {\r\n var blob = new Blob([view], {\r\n type: 'audio/wav'\r\n });\r\n config.ondataavailable(blob);\r\n\r\n setTimeout(looper, config.timeSlice);\r\n });\r\n\r\n intervalsBasedBuffers = {\r\n left: [],\r\n right: [],\r\n recordingLength: 0\r\n };\r\n } else {\r\n setTimeout(looper, config.timeSlice);\r\n }\r\n }\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.StereoAudioRecorder = StereoAudioRecorder;\r\n}\r\n\r\n// _________________\r\n// CanvasRecorder.js\r\n\r\n/**\r\n * CanvasRecorder is a standalone class used by {@link RecordRTC} to bring HTML5-Canvas recording into video WebM. It uses HTML2Canvas library and runs top over {@link Whammy}.\r\n * @summary HTML2Canvas recording into video WebM.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef CanvasRecorder\r\n * @class\r\n * @example\r\n * var recorder = new CanvasRecorder(htmlElement, { disableLogs: true, useWhammyRecorder: true });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {HTMLElement} htmlElement - querySelector/getElementById/getElementsByTagName[0]/etc.\r\n * @param {object} config - {disableLogs:true, initCallback: function}\r\n */\r\n\r\nfunction CanvasRecorder(htmlElement, config) {\r\n if (typeof html2canvas === 'undefined') {\r\n throw 'Please link: https://www.webrtc-experiment.com/screenshot.js';\r\n }\r\n\r\n config = config || {};\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n // via DetectRTC.js\r\n var isCanvasSupportsStreamCapturing = false;\r\n ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].forEach(function(item) {\r\n if (item in document.createElement('canvas')) {\r\n isCanvasSupportsStreamCapturing = true;\r\n }\r\n });\r\n\r\n var _isChrome = (!!window.webkitRTCPeerConnection || !!window.webkitGetUserMedia) && !!window.chrome;\r\n\r\n var chromeVersion = 50;\r\n var matchArray = navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\r\n if (_isChrome && matchArray && matchArray[2]) {\r\n chromeVersion = parseInt(matchArray[2], 10);\r\n }\r\n\r\n if (_isChrome && chromeVersion < 52) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n if (config.useWhammyRecorder) {\r\n isCanvasSupportsStreamCapturing = false;\r\n }\r\n\r\n var globalCanvas, mediaStreamRecorder;\r\n\r\n if (isCanvasSupportsStreamCapturing) {\r\n if (!config.disableLogs) {\r\n console.log('Your browser supports both MediRecorder API and canvas.captureStream!');\r\n }\r\n\r\n if (htmlElement instanceof HTMLCanvasElement) {\r\n globalCanvas = htmlElement;\r\n } else if (htmlElement instanceof CanvasRenderingContext2D) {\r\n globalCanvas = htmlElement.canvas;\r\n } else {\r\n throw 'Please pass either HTMLCanvasElement or CanvasRenderingContext2D.';\r\n }\r\n } else if (!!navigator.mozGetUserMedia) {\r\n if (!config.disableLogs) {\r\n console.error('Canvas recording is NOT supported in Firefox.');\r\n }\r\n }\r\n\r\n var isRecording;\r\n\r\n /**\r\n * This method records Canvas.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n isRecording = true;\r\n\r\n if (isCanvasSupportsStreamCapturing && !config.useWhammyRecorder) {\r\n // CanvasCaptureMediaStream\r\n var canvasMediaStream;\r\n if ('captureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.captureStream(25); // 25 FPS\r\n } else if ('mozCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.mozCaptureStream(25);\r\n } else if ('webkitCaptureStream' in globalCanvas) {\r\n canvasMediaStream = globalCanvas.webkitCaptureStream(25);\r\n }\r\n\r\n try {\r\n var mdStream = new MediaStream();\r\n mdStream.addTrack(getTracks(canvasMediaStream, 'video')[0]);\r\n canvasMediaStream = mdStream;\r\n } catch (e) {}\r\n\r\n if (!canvasMediaStream) {\r\n throw 'captureStream API are NOT available.';\r\n }\r\n\r\n // Note: Jan 18, 2016 status is that, \r\n // Firefox MediaRecorder API can't record CanvasCaptureMediaStream object.\r\n mediaStreamRecorder = new MediaStreamRecorder(canvasMediaStream, {\r\n mimeType: config.mimeType || 'video/webm'\r\n });\r\n mediaStreamRecorder.record();\r\n } else {\r\n whammy.frames = [];\r\n lastTime = new Date().getTime();\r\n drawCanvasFrame();\r\n }\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n this.getWebPImages = function(callback) {\r\n if (htmlElement.nodeName.toLowerCase() !== 'canvas') {\r\n callback();\r\n return;\r\n }\r\n\r\n var framesLength = whammy.frames.length;\r\n whammy.frames.forEach(function(frame, idx) {\r\n var framesRemaining = framesLength - idx;\r\n if (!config.disableLogs) {\r\n console.log(framesRemaining + '/' + framesLength + ' frames remaining');\r\n }\r\n\r\n if (config.onEncodingCallback) {\r\n config.onEncodingCallback(framesRemaining, framesLength);\r\n }\r\n\r\n var webp = frame.image.toDataURL('image/webp', 1);\r\n whammy.frames[idx].image = webp;\r\n });\r\n\r\n if (!config.disableLogs) {\r\n console.log('Generating WebM');\r\n }\r\n\r\n callback();\r\n };\r\n\r\n /**\r\n * This method stops recording Canvas.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n isRecording = false;\r\n\r\n var that = this;\r\n\r\n if (isCanvasSupportsStreamCapturing && mediaStreamRecorder) {\r\n mediaStreamRecorder.stop(callback);\r\n return;\r\n }\r\n\r\n this.getWebPImages(function() {\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n if (!config.disableLogs) {\r\n console.log('Recording finished!');\r\n }\r\n\r\n that.blob = blob;\r\n\r\n if (that.blob.forEach) {\r\n that.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(that.blob);\r\n }\r\n\r\n whammy.frames = [];\r\n });\r\n });\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.pause();\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (mediaStreamRecorder instanceof MediaStreamRecorder) {\r\n mediaStreamRecorder.resume();\r\n return;\r\n }\r\n\r\n if (!isRecording) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof CanvasRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (isRecording) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isRecording = false;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'CanvasRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n function cloneCanvas() {\r\n //create a new canvas\r\n var newCanvas = document.createElement('canvas');\r\n var context = newCanvas.getContext('2d');\r\n\r\n //set dimensions\r\n newCanvas.width = htmlElement.width;\r\n newCanvas.height = htmlElement.height;\r\n\r\n //apply the old canvas to the new one\r\n context.drawImage(htmlElement, 0, 0);\r\n\r\n //return the new canvas\r\n return newCanvas;\r\n }\r\n\r\n function drawCanvasFrame() {\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawCanvasFrame, 500);\r\n }\r\n\r\n if (htmlElement.nodeName.toLowerCase() === 'canvas') {\r\n var duration = new Date().getTime() - lastTime;\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: cloneCanvas(),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n return;\r\n }\r\n\r\n html2canvas(htmlElement, {\r\n grabMouse: typeof config.showMousePointer === 'undefined' || config.showMousePointer,\r\n onrendered: function(canvas) {\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n whammy.frames.push({\r\n image: canvas.toDataURL('image/webp', 1),\r\n duration: duration\r\n });\r\n\r\n if (isRecording) {\r\n setTimeout(drawCanvasFrame, config.frameInterval);\r\n }\r\n }\r\n });\r\n }\r\n\r\n var lastTime = new Date().getTime();\r\n\r\n var whammy = new Whammy.Video(100);\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.CanvasRecorder = CanvasRecorder;\r\n}\n\r\n// _________________\r\n// WhammyRecorder.js\r\n\r\n/**\r\n * WhammyRecorder is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It runs top over {@link Whammy}.\r\n * @summary Video recording feature in Chrome.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WhammyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WhammyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {disableLogs: true, initCallback: function, video: HTMLVideoElement, etc.}\r\n */\r\n\r\nfunction WhammyRecorder(mediaStream, config) {\r\n\r\n config = config || {};\r\n\r\n if (!config.frameInterval) {\r\n config.frameInterval = 10;\r\n }\r\n\r\n if (!config.disableLogs) {\r\n console.log('Using frames-interval:', config.frameInterval);\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (!config.width) {\r\n config.width = 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n context = canvas.getContext('2d');\r\n\r\n // setting defaults\r\n if (config.video && config.video instanceof HTMLVideoElement) {\r\n video = config.video.cloneNode();\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n } else {\r\n video = document.createElement('video');\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.onloadedmetadata = function() { // \"onloadedmetadata\" may NOT work in FF?\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n video.width = config.video.width;\r\n video.height = config.video.height;\r\n }\r\n\r\n video.muted = true;\r\n video.play();\r\n\r\n lastTime = new Date().getTime();\r\n whammy = new Whammy.Video();\r\n\r\n if (!config.disableLogs) {\r\n console.log('canvas resolutions', canvas.width, '*', canvas.height);\r\n console.log('video width/height', video.width || canvas.width, '*', video.height || canvas.height);\r\n }\r\n\r\n drawFrames(config.frameInterval);\r\n };\r\n\r\n /**\r\n * Draw and push frames to Whammy\r\n * @param {integer} frameInterval - set minimum interval (in milliseconds) between each time we push a frame to Whammy\r\n */\r\n function drawFrames(frameInterval) {\r\n frameInterval = typeof frameInterval !== 'undefined' ? frameInterval : 10;\r\n\r\n var duration = new Date().getTime() - lastTime;\r\n if (!duration) {\r\n return setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n\r\n if (isPausedRecording) {\r\n lastTime = new Date().getTime();\r\n return setTimeout(drawFrames, 100);\r\n }\r\n\r\n // via #206, by Jack i.e. @Seymourr\r\n lastTime = new Date().getTime();\r\n\r\n if (video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n whammy.frames.push({\r\n duration: duration,\r\n image: canvas.toDataURL('image/webp')\r\n });\r\n\r\n if (!isStopDrawing) {\r\n setTimeout(drawFrames, frameInterval, frameInterval);\r\n }\r\n }\r\n\r\n function asyncLoop(o) {\r\n var i = -1,\r\n length = o.length;\r\n\r\n (function loop() {\r\n i++;\r\n if (i === length) {\r\n o.callback();\r\n return;\r\n }\r\n\r\n // \"setTimeout\" added by Jim McLeod\r\n setTimeout(function() {\r\n o.functionToLoop(loop, i);\r\n }, 1);\r\n })();\r\n }\r\n\r\n\r\n /**\r\n * remove black frames from the beginning to the specified frame\r\n * @param {Array} _frames - array of frames to be checked\r\n * @param {number} _framesToCheck - number of frame until check will be executed (-1 - will drop all frames until frame not matched will be found)\r\n * @param {number} _pixTolerance - 0 - very strict (only black pixel color) ; 1 - all\r\n * @param {number} _frameTolerance - 0 - very strict (only black frame color) ; 1 - all\r\n * @returns {Array} - array of frames\r\n */\r\n // pull#293 by @volodalexey\r\n function dropBlackFrames(_frames, _framesToCheck, _pixTolerance, _frameTolerance, callback) {\r\n var localCanvas = document.createElement('canvas');\r\n localCanvas.width = canvas.width;\r\n localCanvas.height = canvas.height;\r\n var context2d = localCanvas.getContext('2d');\r\n var resultFrames = [];\r\n\r\n var checkUntilNotBlack = _framesToCheck === -1;\r\n var endCheckFrame = (_framesToCheck && _framesToCheck > 0 && _framesToCheck <= _frames.length) ?\r\n _framesToCheck : _frames.length;\r\n var sampleColor = {\r\n r: 0,\r\n g: 0,\r\n b: 0\r\n };\r\n var maxColorDifference = Math.sqrt(\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2) +\r\n Math.pow(255, 2)\r\n );\r\n var pixTolerance = _pixTolerance && _pixTolerance >= 0 && _pixTolerance <= 1 ? _pixTolerance : 0;\r\n var frameTolerance = _frameTolerance && _frameTolerance >= 0 && _frameTolerance <= 1 ? _frameTolerance : 0;\r\n var doNotCheckNext = false;\r\n\r\n asyncLoop({\r\n length: endCheckFrame,\r\n functionToLoop: function(loop, f) {\r\n var matchPixCount, endPixCheck, maxPixCount;\r\n\r\n var finishImage = function() {\r\n if (!doNotCheckNext && maxPixCount - matchPixCount <= maxPixCount * frameTolerance) {\r\n // console.log('removed black frame : ' + f + ' ; frame duration ' + _frames[f].duration);\r\n } else {\r\n // console.log('frame is passed : ' + f);\r\n if (checkUntilNotBlack) {\r\n doNotCheckNext = true;\r\n }\r\n resultFrames.push(_frames[f]);\r\n }\r\n loop();\r\n };\r\n\r\n if (!doNotCheckNext) {\r\n var image = new Image();\r\n image.onload = function() {\r\n context2d.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n var imageData = context2d.getImageData(0, 0, canvas.width, canvas.height);\r\n matchPixCount = 0;\r\n endPixCheck = imageData.data.length;\r\n maxPixCount = imageData.data.length / 4;\r\n\r\n for (var pix = 0; pix < endPixCheck; pix += 4) {\r\n var currentColor = {\r\n r: imageData.data[pix],\r\n g: imageData.data[pix + 1],\r\n b: imageData.data[pix + 2]\r\n };\r\n var colorDifference = Math.sqrt(\r\n Math.pow(currentColor.r - sampleColor.r, 2) +\r\n Math.pow(currentColor.g - sampleColor.g, 2) +\r\n Math.pow(currentColor.b - sampleColor.b, 2)\r\n );\r\n // difference in color it is difference in color vectors (r1,g1,b1) <=> (r2,g2,b2)\r\n if (colorDifference <= maxColorDifference * pixTolerance) {\r\n matchPixCount++;\r\n }\r\n }\r\n finishImage();\r\n };\r\n image.src = _frames[f].image;\r\n } else {\r\n finishImage();\r\n }\r\n },\r\n callback: function() {\r\n resultFrames = resultFrames.concat(_frames.slice(endCheckFrame));\r\n\r\n if (resultFrames.length <= 0) {\r\n // at least one last frame should be available for next manipulation\r\n // if total duration of all frames will be < 1000 than ffmpeg doesn't work well...\r\n resultFrames.push(_frames[_frames.length - 1]);\r\n }\r\n callback(resultFrames);\r\n }\r\n });\r\n }\r\n\r\n var isStopDrawing = false;\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n isStopDrawing = true;\r\n\r\n var _this = this;\r\n // analyse of all frames takes some time!\r\n setTimeout(function() {\r\n // e.g. dropBlackFrames(frames, 10, 1, 1) - will cut all 10 frames\r\n // e.g. dropBlackFrames(frames, 10, 0.5, 0.5) - will analyse 10 frames\r\n // e.g. dropBlackFrames(frames, 10) === dropBlackFrames(frames, 10, 0, 0) - will analyse 10 frames with strict black color\r\n dropBlackFrames(whammy.frames, -1, null, null, function(frames) {\r\n whammy.frames = frames;\r\n\r\n // to display advertisement images!\r\n if (config.advertisement && config.advertisement.length) {\r\n whammy.frames = config.advertisement.concat(whammy.frames);\r\n }\r\n\r\n /**\r\n * @property {Blob} blob - Recorded frames in video/webm blob.\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.stop(function() {\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n whammy.compile(function(blob) {\r\n _this.blob = blob;\r\n\r\n if (_this.blob.forEach) {\r\n _this.blob = new Blob([], {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback(_this.blob);\r\n }\r\n });\r\n });\r\n }, 10);\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n\r\n if (isStopDrawing) {\r\n this.record();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WhammyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (!isStopDrawing) {\r\n this.stop(clearRecordedDataCB);\r\n }\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n whammy.frames = [];\r\n isStopDrawing = true;\r\n isPausedRecording = false;\r\n }\r\n\r\n // for debugging\r\n this.name = 'WhammyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n var video;\r\n var lastTime;\r\n var whammy;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WhammyRecorder = WhammyRecorder;\r\n}\n\r\n// https://github.com/antimatter15/whammy/blob/master/LICENSE\r\n// _________\r\n// Whammy.js\r\n\r\n// todo: Firefox now supports webp for webm containers!\r\n// their MediaRecorder implementation works well!\r\n// should we provide an option to record via Whammy.js or MediaRecorder API is a better solution?\r\n\r\n/**\r\n * Whammy is a standalone class used by {@link RecordRTC} to bring video recording in Chrome. It is written by {@link https://github.com/antimatter15|antimatter15}\r\n * @summary A real time javascript webm encoder based on a canvas hack.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef Whammy\r\n * @class\r\n * @example\r\n * var recorder = new Whammy().Video(15);\r\n * recorder.add(context || canvas || dataURL);\r\n * var output = recorder.compile();\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\nvar Whammy = (function() {\r\n // a more abstract-ish API\r\n\r\n function WhammyVideo(duration) {\r\n this.frames = [];\r\n this.duration = duration || 1;\r\n this.quality = 0.8;\r\n }\r\n\r\n /**\r\n * Pass Canvas or Context or image/webp(string) to {@link Whammy} encoder.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.add(canvas || context || 'image/webp');\r\n * @param {string} frame - Canvas || Context || image/webp\r\n * @param {number} duration - Stick a duration (in milliseconds)\r\n */\r\n WhammyVideo.prototype.add = function(frame, duration) {\r\n if ('canvas' in frame) { //CanvasRenderingContext2D\r\n frame = frame.canvas;\r\n }\r\n\r\n if ('toDataURL' in frame) {\r\n frame = frame.toDataURL('image/webp', this.quality);\r\n }\r\n\r\n if (!(/^data:image\\/webp;base64,/ig).test(frame)) {\r\n throw 'Input must be formatted properly as a base64 encoded DataURI of type image/webp';\r\n }\r\n this.frames.push({\r\n image: frame,\r\n duration: duration || this.duration\r\n });\r\n };\r\n\r\n function processInWebWorker(_function) {\r\n var blob = URL.createObjectURL(new Blob([_function.toString(),\r\n 'this.onmessage = function (eee) {' + _function.name + '(eee.data);}'\r\n ], {\r\n type: 'application/javascript'\r\n }));\r\n\r\n var worker = new Worker(blob);\r\n URL.revokeObjectURL(blob);\r\n return worker;\r\n }\r\n\r\n function whammyInWebWorker(frames) {\r\n function ArrayToWebM(frames) {\r\n var info = checkFrames(frames);\r\n if (!info) {\r\n return [];\r\n }\r\n\r\n var clusterMaxDuration = 30000;\r\n\r\n var EBML = [{\r\n 'id': 0x1a45dfa3, // EBML\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0x4286 // EBMLVersion\r\n }, {\r\n 'data': 1,\r\n 'id': 0x42f7 // EBMLReadVersion\r\n }, {\r\n 'data': 4,\r\n 'id': 0x42f2 // EBMLMaxIDLength\r\n }, {\r\n 'data': 8,\r\n 'id': 0x42f3 // EBMLMaxSizeLength\r\n }, {\r\n 'data': 'webm',\r\n 'id': 0x4282 // DocType\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4287 // DocTypeVersion\r\n }, {\r\n 'data': 2,\r\n 'id': 0x4285 // DocTypeReadVersion\r\n }]\r\n }, {\r\n 'id': 0x18538067, // Segment\r\n 'data': [{\r\n 'id': 0x1549a966, // Info\r\n 'data': [{\r\n 'data': 1e6, //do things in millisecs (num of nanosecs for duration scale)\r\n 'id': 0x2ad7b1 // TimecodeScale\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x4d80 // MuxingApp\r\n }, {\r\n 'data': 'whammy',\r\n 'id': 0x5741 // WritingApp\r\n }, {\r\n 'data': doubleToString(info.duration),\r\n 'id': 0x4489 // Duration\r\n }]\r\n }, {\r\n 'id': 0x1654ae6b, // Tracks\r\n 'data': [{\r\n 'id': 0xae, // TrackEntry\r\n 'data': [{\r\n 'data': 1,\r\n 'id': 0xd7 // TrackNumber\r\n }, {\r\n 'data': 1,\r\n 'id': 0x73c5 // TrackUID\r\n }, {\r\n 'data': 0,\r\n 'id': 0x9c // FlagLacing\r\n }, {\r\n 'data': 'und',\r\n 'id': 0x22b59c // Language\r\n }, {\r\n 'data': 'V_VP8',\r\n 'id': 0x86 // CodecID\r\n }, {\r\n 'data': 'VP8',\r\n 'id': 0x258688 // CodecName\r\n }, {\r\n 'data': 1,\r\n 'id': 0x83 // TrackType\r\n }, {\r\n 'id': 0xe0, // Video\r\n 'data': [{\r\n 'data': info.width,\r\n 'id': 0xb0 // PixelWidth\r\n }, {\r\n 'data': info.height,\r\n 'id': 0xba // PixelHeight\r\n }]\r\n }]\r\n }]\r\n }]\r\n }];\r\n\r\n //Generate clusters (max duration)\r\n var frameNumber = 0;\r\n var clusterTimecode = 0;\r\n while (frameNumber < frames.length) {\r\n\r\n var clusterFrames = [];\r\n var clusterDuration = 0;\r\n do {\r\n clusterFrames.push(frames[frameNumber]);\r\n clusterDuration += frames[frameNumber].duration;\r\n frameNumber++;\r\n } while (frameNumber < frames.length && clusterDuration < clusterMaxDuration);\r\n\r\n var clusterCounter = 0;\r\n var cluster = {\r\n 'id': 0x1f43b675, // Cluster\r\n 'data': getClusterData(clusterTimecode, clusterCounter, clusterFrames)\r\n }; //Add cluster to segment\r\n EBML[1].data.push(cluster);\r\n clusterTimecode += clusterDuration;\r\n }\r\n\r\n return generateEBML(EBML);\r\n }\r\n\r\n function getClusterData(clusterTimecode, clusterCounter, clusterFrames) {\r\n return [{\r\n 'data': clusterTimecode,\r\n 'id': 0xe7 // Timecode\r\n }].concat(clusterFrames.map(function(webp) {\r\n var block = makeSimpleBlock({\r\n discardable: 0,\r\n frame: webp.data.slice(4),\r\n invisible: 0,\r\n keyframe: 1,\r\n lacing: 0,\r\n trackNum: 1,\r\n timecode: Math.round(clusterCounter)\r\n });\r\n clusterCounter += webp.duration;\r\n return {\r\n data: block,\r\n id: 0xa3\r\n };\r\n }));\r\n }\r\n\r\n // sums the lengths of all the frames and gets the duration\r\n\r\n function checkFrames(frames) {\r\n if (!frames[0]) {\r\n postMessage({\r\n error: 'Something went wrong. Maybe WebP format is not supported in the current browser.'\r\n });\r\n return;\r\n }\r\n\r\n var width = frames[0].width,\r\n height = frames[0].height,\r\n duration = frames[0].duration;\r\n\r\n for (var i = 1; i < frames.length; i++) {\r\n duration += frames[i].duration;\r\n }\r\n return {\r\n duration: duration,\r\n width: width,\r\n height: height\r\n };\r\n }\r\n\r\n function numToBuffer(num) {\r\n var parts = [];\r\n while (num > 0) {\r\n parts.push(num & 0xff);\r\n num = num >> 8;\r\n }\r\n return new Uint8Array(parts.reverse());\r\n }\r\n\r\n function strToBuffer(str) {\r\n return new Uint8Array(str.split('').map(function(e) {\r\n return e.charCodeAt(0);\r\n }));\r\n }\r\n\r\n function bitsToBuffer(bits) {\r\n var data = [];\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data.push(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return new Uint8Array(data);\r\n }\r\n\r\n function generateEBML(json) {\r\n var ebml = [];\r\n for (var i = 0; i < json.length; i++) {\r\n var data = json[i].data;\r\n\r\n if (typeof data === 'object') {\r\n data = generateEBML(data);\r\n }\r\n\r\n if (typeof data === 'number') {\r\n data = bitsToBuffer(data.toString(2));\r\n }\r\n\r\n if (typeof data === 'string') {\r\n data = strToBuffer(data);\r\n }\r\n\r\n var len = data.size || data.byteLength || data.length;\r\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\r\n var sizeToString = len.toString(2);\r\n var padded = (new Array((zeroes * 7 + 7 + 1) - sizeToString.length)).join('0') + sizeToString;\r\n var size = (new Array(zeroes)).join('0') + '1' + padded;\r\n\r\n ebml.push(numToBuffer(json[i].id));\r\n ebml.push(bitsToBuffer(size));\r\n ebml.push(data);\r\n }\r\n\r\n return new Blob(ebml, {\r\n type: 'video/webm'\r\n });\r\n }\r\n\r\n function toBinStrOld(bits) {\r\n var data = '';\r\n var pad = (bits.length % 8) ? (new Array(1 + 8 - (bits.length % 8))).join('0') : '';\r\n bits = pad + bits;\r\n for (var i = 0; i < bits.length; i += 8) {\r\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\r\n }\r\n return data;\r\n }\r\n\r\n function makeSimpleBlock(data) {\r\n var flags = 0;\r\n\r\n if (data.keyframe) {\r\n flags |= 128;\r\n }\r\n\r\n if (data.invisible) {\r\n flags |= 8;\r\n }\r\n\r\n if (data.lacing) {\r\n flags |= (data.lacing << 1);\r\n }\r\n\r\n if (data.discardable) {\r\n flags |= 1;\r\n }\r\n\r\n if (data.trackNum > 127) {\r\n throw 'TrackNumber > 127 not supported';\r\n }\r\n\r\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function(e) {\r\n return String.fromCharCode(e);\r\n }).join('') + data.frame;\r\n\r\n return out;\r\n }\r\n\r\n function parseWebP(riff) {\r\n var VP8 = riff.RIFF[0].WEBP[0];\r\n\r\n var frameStart = VP8.indexOf('\\x9d\\x01\\x2a'); // A VP8 keyframe starts with the 0x9d012a header\r\n for (var i = 0, c = []; i < 4; i++) {\r\n c[i] = VP8.charCodeAt(frameStart + 3 + i);\r\n }\r\n\r\n var width, height, tmp;\r\n\r\n //the code below is literally copied verbatim from the bitstream spec\r\n tmp = (c[1] << 8) | c[0];\r\n width = tmp & 0x3FFF;\r\n tmp = (c[3] << 8) | c[2];\r\n height = tmp & 0x3FFF;\r\n return {\r\n width: width,\r\n height: height,\r\n data: VP8,\r\n riff: riff\r\n };\r\n }\r\n\r\n function getStrLength(string, offset) {\r\n return parseInt(string.substr(offset + 4, 4).split('').map(function(i) {\r\n var unpadded = i.charCodeAt(0).toString(2);\r\n return (new Array(8 - unpadded.length + 1)).join('0') + unpadded;\r\n }).join(''), 2);\r\n }\r\n\r\n function parseRIFF(string) {\r\n var offset = 0;\r\n var chunks = {};\r\n\r\n while (offset < string.length) {\r\n var id = string.substr(offset, 4);\r\n var len = getStrLength(string, offset);\r\n var data = string.substr(offset + 4 + 4, len);\r\n offset += 4 + 4 + len;\r\n chunks[id] = chunks[id] || [];\r\n\r\n if (id === 'RIFF' || id === 'LIST') {\r\n chunks[id].push(parseRIFF(data));\r\n } else {\r\n chunks[id].push(data);\r\n }\r\n }\r\n return chunks;\r\n }\r\n\r\n function doubleToString(num) {\r\n return [].slice.call(\r\n new Uint8Array((new Float64Array([num])).buffer), 0).map(function(e) {\r\n return String.fromCharCode(e);\r\n }).reverse().join('');\r\n }\r\n\r\n var webm = new ArrayToWebM(frames.map(function(frame) {\r\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\r\n webp.duration = frame.duration;\r\n return webp;\r\n }));\r\n\r\n postMessage(webm);\r\n }\r\n\r\n /**\r\n * Encodes frames in WebM container. It uses WebWorkinvoke to invoke 'ArrayToWebM' method.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * recorder.compile(function(blob) {\r\n * // blob.size - blob.type\r\n * });\r\n */\r\n WhammyVideo.prototype.compile = function(callback) {\r\n var webWorker = processInWebWorker(whammyInWebWorker);\r\n\r\n webWorker.onmessage = function(event) {\r\n if (event.data.error) {\r\n console.error(event.data.error);\r\n return;\r\n }\r\n callback(event.data);\r\n };\r\n\r\n webWorker.postMessage(this.frames);\r\n };\r\n\r\n return {\r\n /**\r\n * A more abstract-ish API.\r\n * @method\r\n * @memberof Whammy\r\n * @example\r\n * recorder = new Whammy().Video(0.8, 100);\r\n * @param {?number} speed - 0.8\r\n * @param {?number} quality - 100\r\n */\r\n Video: WhammyVideo\r\n };\r\n})();\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.Whammy = Whammy;\r\n}\n\r\n// ______________ (indexed-db)\r\n// DiskStorage.js\r\n\r\n/**\r\n * DiskStorage is a standalone object used by {@link RecordRTC} to store recorded blobs in IndexedDB storage.\r\n * @summary Writing blobs into IndexedDB.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n * // DiskStorage.dataStoreName = 'recordRTC';\r\n * // DiskStorage.onError = function(error) { };\r\n * @property {function} init - This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @property {function} Fetch - This method fetches stored blobs from IndexedDB.\r\n * @property {function} Store - This method stores blobs in IndexedDB.\r\n * @property {function} onError - This function is invoked for any known/unknown error.\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n */\r\n\r\n\r\nvar DiskStorage = {\r\n /**\r\n * This method must be called once to initialize IndexedDB ObjectStore. Though, it is auto-used internally.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.init();\r\n */\r\n init: function() {\r\n var self = this;\r\n\r\n if (typeof indexedDB === 'undefined' || typeof indexedDB.open === 'undefined') {\r\n console.error('IndexedDB API are not available in this browser.');\r\n return;\r\n }\r\n\r\n var dbVersion = 1;\r\n var dbName = this.dbName || location.href.replace(/\\/|:|#|%|\\.|\\[|\\]/g, ''),\r\n db;\r\n var request = indexedDB.open(dbName, dbVersion);\r\n\r\n function createObjectStore(dataBase) {\r\n dataBase.createObjectStore(self.dataStoreName);\r\n }\r\n\r\n function putInDB() {\r\n var transaction = db.transaction([self.dataStoreName], 'readwrite');\r\n\r\n if (self.videoBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.videoBlob, 'videoBlob');\r\n }\r\n\r\n if (self.gifBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.gifBlob, 'gifBlob');\r\n }\r\n\r\n if (self.audioBlob) {\r\n transaction.objectStore(self.dataStoreName).put(self.audioBlob, 'audioBlob');\r\n }\r\n\r\n function getFromStore(portionName) {\r\n transaction.objectStore(self.dataStoreName).get(portionName).onsuccess = function(event) {\r\n if (self.callback) {\r\n self.callback(event.target.result, portionName);\r\n }\r\n };\r\n }\r\n\r\n getFromStore('audioBlob');\r\n getFromStore('videoBlob');\r\n getFromStore('gifBlob');\r\n }\r\n\r\n request.onerror = self.onError;\r\n\r\n request.onsuccess = function() {\r\n db = request.result;\r\n db.onerror = self.onError;\r\n\r\n if (db.setVersion) {\r\n if (db.version !== dbVersion) {\r\n var setVersion = db.setVersion(dbVersion);\r\n setVersion.onsuccess = function() {\r\n createObjectStore(db);\r\n putInDB();\r\n };\r\n } else {\r\n putInDB();\r\n }\r\n } else {\r\n putInDB();\r\n }\r\n };\r\n request.onupgradeneeded = function(event) {\r\n createObjectStore(event.target.result);\r\n };\r\n },\r\n /**\r\n * This method fetches stored blobs from IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Fetch(function(dataURL, type) {\r\n * if(type === 'audioBlob') { }\r\n * if(type === 'videoBlob') { }\r\n * if(type === 'gifBlob') { }\r\n * });\r\n */\r\n Fetch: function(callback) {\r\n this.callback = callback;\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This method stores blobs in IndexedDB.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.Store({\r\n * audioBlob: yourAudioBlob,\r\n * videoBlob: yourVideoBlob,\r\n * gifBlob : yourGifBlob\r\n * });\r\n */\r\n Store: function(config) {\r\n this.audioBlob = config.audioBlob;\r\n this.videoBlob = config.videoBlob;\r\n this.gifBlob = config.gifBlob;\r\n\r\n this.init();\r\n\r\n return this;\r\n },\r\n /**\r\n * This function is invoked for any known/unknown error.\r\n * @method\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.onError = function(error){\r\n * alerot( JSON.stringify(error) );\r\n * };\r\n */\r\n onError: function(error) {\r\n console.error(JSON.stringify(error, null, '\\t'));\r\n },\r\n\r\n /**\r\n * @property {string} dataStoreName - Name of the ObjectStore created in IndexedDB storage.\r\n * @memberof DiskStorage\r\n * @internal\r\n * @example\r\n * DiskStorage.dataStoreName = 'recordRTC';\r\n */\r\n dataStoreName: 'recordRTC',\r\n dbName: null\r\n};\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.DiskStorage = DiskStorage;\r\n}\n\r\n// ______________\r\n// GifRecorder.js\r\n\r\n/**\r\n * GifRecorder is standalone calss used by {@link RecordRTC} to record video or canvas into animated gif.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef GifRecorder\r\n * @class\r\n * @example\r\n * var recorder = new GifRecorder(mediaStream || canvas || context, { onGifPreview: function, onGifRecordingStarted: function, width: 1280, height: 720, frameRate: 200, quality: 10 });\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object or HTMLCanvasElement or CanvasRenderingContext2D.\r\n * @param {object} config - {disableLogs:true, initCallback: function, width: 320, height: 240, frameRate: 200, quality: 10}\r\n */\r\n\r\nfunction GifRecorder(mediaStream, config) {\r\n if (typeof GIFEncoder === 'undefined') {\r\n var script = document.createElement('script');\r\n script.src = 'https://www.webrtc-experiment.com/gif-recorder.js';\r\n (document.body || document.documentElement).appendChild(script);\r\n }\r\n\r\n config = config || {};\r\n\r\n var isHTMLObject = mediaStream instanceof CanvasRenderingContext2D || mediaStream instanceof HTMLCanvasElement;\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n if (typeof GIFEncoder === 'undefined') {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isLoadedMetaData) {\r\n setTimeout(self.record, 1000);\r\n return;\r\n }\r\n\r\n if (!isHTMLObject) {\r\n if (!config.width) {\r\n config.width = video.offsetWidth || 320;\r\n }\r\n\r\n if (!config.height) {\r\n config.height = video.offsetHeight || 240;\r\n }\r\n\r\n if (!config.video) {\r\n config.video = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n if (!config.canvas) {\r\n config.canvas = {\r\n width: config.width,\r\n height: config.height\r\n };\r\n }\r\n\r\n canvas.width = config.canvas.width || 320;\r\n canvas.height = config.canvas.height || 240;\r\n\r\n video.width = config.video.width || 320;\r\n video.height = config.video.height || 240;\r\n }\r\n\r\n // external library to record as GIF images\r\n gifEncoder = new GIFEncoder();\r\n\r\n // void setRepeat(int iter) \r\n // Sets the number of times the set of GIF frames should be played. \r\n // Default is 1; 0 means play indefinitely.\r\n gifEncoder.setRepeat(0);\r\n\r\n // void setFrameRate(Number fps) \r\n // Sets frame rate in frames per second. \r\n // Equivalent to setDelay(1000/fps).\r\n // Using \"setDelay\" instead of \"setFrameRate\"\r\n gifEncoder.setDelay(config.frameRate || 200);\r\n\r\n // void setQuality(int quality) \r\n // Sets quality of color quantization (conversion of images to the \r\n // maximum 256 colors allowed by the GIF specification). \r\n // Lower values (minimum = 1) produce better colors, \r\n // but slow processing significantly. 10 is the default, \r\n // and produces good color mapping at reasonable speeds. \r\n // Values greater than 20 do not yield significant improvements in speed.\r\n gifEncoder.setQuality(config.quality || 10);\r\n\r\n // Boolean start() \r\n // This writes the GIF Header and returns false if it fails.\r\n gifEncoder.start();\r\n\r\n if (typeof config.onGifRecordingStarted === 'function') {\r\n config.onGifRecordingStarted();\r\n }\r\n\r\n startTime = Date.now();\r\n\r\n function drawVideoFrame(time) {\r\n if (self.clearedRecordedData === true) {\r\n return;\r\n }\r\n\r\n if (isPausedRecording) {\r\n return setTimeout(function() {\r\n drawVideoFrame(time);\r\n }, 100);\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (typeof lastFrameTime === undefined) {\r\n lastFrameTime = time;\r\n }\r\n\r\n // ~10 fps\r\n if (time - lastFrameTime < 90) {\r\n return;\r\n }\r\n\r\n if (!isHTMLObject && video.paused) {\r\n // via: https://github.com/muaz-khan/WebRTC-Experiment/pull/316\r\n // Tweak for Android Chrome\r\n video.play();\r\n }\r\n\r\n if (!isHTMLObject) {\r\n context.drawImage(video, 0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n if (config.onGifPreview) {\r\n config.onGifPreview(canvas.toDataURL('image/png'));\r\n }\r\n\r\n gifEncoder.addFrame(context);\r\n lastFrameTime = time;\r\n }\r\n\r\n lastAnimationFrame = requestAnimationFrame(drawVideoFrame);\r\n\r\n if (config.initCallback) {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * img.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n callback = callback || function() {};\r\n\r\n if (lastAnimationFrame) {\r\n cancelAnimationFrame(lastAnimationFrame);\r\n }\r\n\r\n endTime = Date.now();\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = new Blob([new Uint8Array(gifEncoder.stream().bin)], {\r\n type: 'image/gif'\r\n });\r\n\r\n callback(this.blob);\r\n\r\n // bug: find a way to clear old recorded blobs\r\n gifEncoder.stream().bin = [];\r\n };\r\n\r\n var isPausedRecording = false;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPausedRecording = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPausedRecording = false;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof GifRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n self.clearedRecordedData = true;\r\n clearRecordedDataCB();\r\n };\r\n\r\n function clearRecordedDataCB() {\r\n if (gifEncoder) {\r\n gifEncoder.stream().bin = [];\r\n }\r\n }\r\n\r\n // for debugging\r\n this.name = 'GifRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n\r\n if (isHTMLObject) {\r\n if (mediaStream instanceof CanvasRenderingContext2D) {\r\n context = mediaStream;\r\n canvas = context.canvas;\r\n } else if (mediaStream instanceof HTMLCanvasElement) {\r\n context = mediaStream.getContext('2d');\r\n canvas = mediaStream;\r\n }\r\n }\r\n\r\n var isLoadedMetaData = true;\r\n\r\n if (!isHTMLObject) {\r\n var video = document.createElement('video');\r\n video.muted = true;\r\n video.autoplay = true;\r\n video.playsInline = true;\r\n\r\n isLoadedMetaData = false;\r\n video.onloadedmetadata = function() {\r\n isLoadedMetaData = true;\r\n };\r\n\r\n setSrcObject(mediaStream, video);\r\n\r\n video.play();\r\n }\r\n\r\n var lastAnimationFrame = null;\r\n var startTime, endTime, lastFrameTime;\r\n\r\n var gifEncoder;\r\n\r\n var self = this;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.GifRecorder = GifRecorder;\r\n}\n\r\n// Last time updated: 2019-06-21 4:09:42 AM UTC\r\n\r\n// ________________________\r\n// MultiStreamsMixer v1.2.2\r\n\r\n// Open-Sourced: https://github.com/muaz-khan/MultiStreamsMixer\r\n\r\n// --------------------------------------------------\r\n// Muaz Khan - www.MuazKhan.com\r\n// MIT License - www.WebRTC-Experiment.com/licence\r\n// --------------------------------------------------\r\n\r\nfunction MultiStreamsMixer(arrayOfMediaStreams, elementClass) {\r\n\r\n var browserFakeUserAgent = 'Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45';\r\n\r\n (function(that) {\r\n if (typeof RecordRTC !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (!that) {\r\n return;\r\n }\r\n\r\n if (typeof window !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof global === 'undefined') {\r\n return;\r\n }\r\n\r\n global.navigator = {\r\n userAgent: browserFakeUserAgent,\r\n getUserMedia: function() {}\r\n };\r\n\r\n if (!global.console) {\r\n global.console = {};\r\n }\r\n\r\n if (typeof global.console.log === 'undefined' || typeof global.console.error === 'undefined') {\r\n global.console.error = global.console.log = global.console.log || function() {\r\n console.log(arguments);\r\n };\r\n }\r\n\r\n if (typeof document === 'undefined') {\r\n /*global document:true */\r\n that.document = {\r\n documentElement: {\r\n appendChild: function() {\r\n return '';\r\n }\r\n }\r\n };\r\n\r\n document.createElement = document.captureStream = document.mozCaptureStream = function() {\r\n var obj = {\r\n getContext: function() {\r\n return obj;\r\n },\r\n play: function() {},\r\n pause: function() {},\r\n drawImage: function() {},\r\n toDataURL: function() {\r\n return '';\r\n },\r\n style: {}\r\n };\r\n return obj;\r\n };\r\n\r\n that.HTMLVideoElement = function() {};\r\n }\r\n\r\n if (typeof location === 'undefined') {\r\n /*global location:true */\r\n that.location = {\r\n protocol: 'file:',\r\n href: '',\r\n hash: ''\r\n };\r\n }\r\n\r\n if (typeof screen === 'undefined') {\r\n /*global screen:true */\r\n that.screen = {\r\n width: 0,\r\n height: 0\r\n };\r\n }\r\n\r\n if (typeof URL === 'undefined') {\r\n /*global screen:true */\r\n that.URL = {\r\n createObjectURL: function() {\r\n return '';\r\n },\r\n revokeObjectURL: function() {\r\n return '';\r\n }\r\n };\r\n }\r\n\r\n /*global window:true */\r\n that.window = global;\r\n })(typeof global !== 'undefined' ? global : null);\r\n\r\n // requires: chrome://flags/#enable-experimental-web-platform-features\r\n\r\n elementClass = elementClass || 'multi-streams-mixer';\r\n\r\n var videos = [];\r\n var isStopDrawingFrames = false;\r\n\r\n var canvas = document.createElement('canvas');\r\n var context = canvas.getContext('2d');\r\n canvas.style.opacity = 0;\r\n canvas.style.position = 'absolute';\r\n canvas.style.zIndex = -1;\r\n canvas.style.top = '-1000em';\r\n canvas.style.left = '-1000em';\r\n canvas.className = elementClass;\r\n (document.body || document.documentElement).appendChild(canvas);\r\n\r\n this.disableLogs = false;\r\n this.frameInterval = 10;\r\n\r\n this.width = 360;\r\n this.height = 240;\r\n\r\n // use gain node to prevent echo\r\n this.useGainNode = true;\r\n\r\n var self = this;\r\n\r\n // _____________________________\r\n // Cross-Browser-Declarations.js\r\n\r\n // WebAudio API representer\r\n var AudioContext = window.AudioContext;\r\n\r\n if (typeof AudioContext === 'undefined') {\r\n if (typeof webkitAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = webkitAudioContext;\r\n }\r\n\r\n if (typeof mozAudioContext !== 'undefined') {\r\n /*global AudioContext:true */\r\n AudioContext = mozAudioContext;\r\n }\r\n }\r\n\r\n /*jshint -W079 */\r\n var URL = window.URL;\r\n\r\n if (typeof URL === 'undefined' && typeof webkitURL !== 'undefined') {\r\n /*global URL:true */\r\n URL = webkitURL;\r\n }\r\n\r\n if (typeof navigator !== 'undefined' && typeof navigator.getUserMedia === 'undefined') { // maybe window.navigator?\r\n if (typeof navigator.webkitGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.webkitGetUserMedia;\r\n }\r\n\r\n if (typeof navigator.mozGetUserMedia !== 'undefined') {\r\n navigator.getUserMedia = navigator.mozGetUserMedia;\r\n }\r\n }\r\n\r\n var MediaStream = window.MediaStream;\r\n\r\n if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {\r\n MediaStream = webkitMediaStream;\r\n }\r\n\r\n /*global MediaStream:true */\r\n if (typeof MediaStream !== 'undefined') {\r\n // override \"stop\" method for all browsers\r\n if (typeof MediaStream.prototype.stop === 'undefined') {\r\n MediaStream.prototype.stop = function() {\r\n this.getTracks().forEach(function(track) {\r\n track.stop();\r\n });\r\n };\r\n }\r\n }\r\n\r\n var Storage = {};\r\n\r\n if (typeof AudioContext !== 'undefined') {\r\n Storage.AudioContext = AudioContext;\r\n } else if (typeof webkitAudioContext !== 'undefined') {\r\n Storage.AudioContext = webkitAudioContext;\r\n }\r\n\r\n function setSrcObject(stream, element) {\r\n if ('srcObject' in element) {\r\n element.srcObject = stream;\r\n } else if ('mozSrcObject' in element) {\r\n element.mozSrcObject = stream;\r\n } else {\r\n element.srcObject = stream;\r\n }\r\n }\r\n\r\n this.startDrawingFrames = function() {\r\n drawVideosToCanvas();\r\n };\r\n\r\n function drawVideosToCanvas() {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var videosLength = videos.length;\r\n\r\n var fullcanvas = false;\r\n var remaining = [];\r\n videos.forEach(function(video) {\r\n if (!video.stream) {\r\n video.stream = {};\r\n }\r\n\r\n if (video.stream.fullcanvas) {\r\n fullcanvas = video;\r\n } else {\r\n // todo: video.stream.active or video.stream.live to fix blank frames issues?\r\n remaining.push(video);\r\n }\r\n });\r\n\r\n if (fullcanvas) {\r\n canvas.width = fullcanvas.stream.width;\r\n canvas.height = fullcanvas.stream.height;\r\n } else if (remaining.length) {\r\n canvas.width = videosLength > 1 ? remaining[0].width * 2 : remaining[0].width;\r\n\r\n var height = 1;\r\n if (videosLength === 3 || videosLength === 4) {\r\n height = 2;\r\n }\r\n if (videosLength === 5 || videosLength === 6) {\r\n height = 3;\r\n }\r\n if (videosLength === 7 || videosLength === 8) {\r\n height = 4;\r\n }\r\n if (videosLength === 9 || videosLength === 10) {\r\n height = 5;\r\n }\r\n canvas.height = remaining[0].height * height;\r\n } else {\r\n canvas.width = self.width || 360;\r\n canvas.height = self.height || 240;\r\n }\r\n\r\n if (fullcanvas && fullcanvas instanceof HTMLVideoElement) {\r\n drawImage(fullcanvas);\r\n }\r\n\r\n remaining.forEach(function(video, idx) {\r\n drawImage(video, idx);\r\n });\r\n\r\n setTimeout(drawVideosToCanvas, self.frameInterval);\r\n }\r\n\r\n function drawImage(video, idx) {\r\n if (isStopDrawingFrames) {\r\n return;\r\n }\r\n\r\n var x = 0;\r\n var y = 0;\r\n var width = video.width;\r\n var height = video.height;\r\n\r\n if (idx === 1) {\r\n x = video.width;\r\n }\r\n\r\n if (idx === 2) {\r\n y = video.height;\r\n }\r\n\r\n if (idx === 3) {\r\n x = video.width;\r\n y = video.height;\r\n }\r\n\r\n if (idx === 4) {\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 5) {\r\n x = video.width;\r\n y = video.height * 2;\r\n }\r\n\r\n if (idx === 6) {\r\n y = video.height * 3;\r\n }\r\n\r\n if (idx === 7) {\r\n x = video.width;\r\n y = video.height * 3;\r\n }\r\n\r\n if (typeof video.stream.left !== 'undefined') {\r\n x = video.stream.left;\r\n }\r\n\r\n if (typeof video.stream.top !== 'undefined') {\r\n y = video.stream.top;\r\n }\r\n\r\n if (typeof video.stream.width !== 'undefined') {\r\n width = video.stream.width;\r\n }\r\n\r\n if (typeof video.stream.height !== 'undefined') {\r\n height = video.stream.height;\r\n }\r\n\r\n context.drawImage(video, x, y, width, height);\r\n\r\n if (typeof video.stream.onRender === 'function') {\r\n video.stream.onRender(context, x, y, width, height, idx);\r\n }\r\n }\r\n\r\n function getMixedStream() {\r\n isStopDrawingFrames = false;\r\n var mixedVideoStream = getMixedVideoStream();\r\n\r\n var mixedAudioStream = getMixedAudioStream();\r\n if (mixedAudioStream) {\r\n mixedAudioStream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).forEach(function(track) {\r\n mixedVideoStream.addTrack(track);\r\n });\r\n }\r\n\r\n var fullcanvas;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (stream.fullcanvas) {\r\n fullcanvas = true;\r\n }\r\n });\r\n\r\n // mixedVideoStream.prototype.appendStreams = appendStreams;\r\n // mixedVideoStream.prototype.resetVideoStreams = resetVideoStreams;\r\n // mixedVideoStream.prototype.clearRecordedData = clearRecordedData;\r\n\r\n return mixedVideoStream;\r\n }\r\n\r\n function getMixedVideoStream() {\r\n resetVideoStreams();\r\n\r\n var capturedStream;\r\n\r\n if ('captureStream' in canvas) {\r\n capturedStream = canvas.captureStream();\r\n } else if ('mozCaptureStream' in canvas) {\r\n capturedStream = canvas.mozCaptureStream();\r\n } else if (!self.disableLogs) {\r\n console.error('Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features');\r\n }\r\n\r\n var videoStream = new MediaStream();\r\n\r\n capturedStream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).forEach(function(track) {\r\n videoStream.addTrack(track);\r\n });\r\n\r\n canvas.stream = videoStream;\r\n\r\n return videoStream;\r\n }\r\n\r\n function getMixedAudioStream() {\r\n // via: @pehrsons\r\n if (!Storage.AudioContextConstructor) {\r\n Storage.AudioContextConstructor = new Storage.AudioContext();\r\n }\r\n\r\n self.audioContext = Storage.AudioContextConstructor;\r\n\r\n self.audioSources = [];\r\n\r\n if (self.useGainNode === true) {\r\n self.gainNode = self.audioContext.createGain();\r\n self.gainNode.connect(self.audioContext.destination);\r\n self.gainNode.gain.value = 0; // don't hear self\r\n }\r\n\r\n var audioTracksLength = 0;\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n return;\r\n }\r\n\r\n audioTracksLength++;\r\n\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n\r\n if (self.useGainNode === true) {\r\n audioSource.connect(self.gainNode);\r\n }\r\n\r\n self.audioSources.push(audioSource);\r\n });\r\n\r\n if (!audioTracksLength) {\r\n // because \"self.audioContext\" is not initialized\r\n // that's why we've to ignore rest of the code\r\n return;\r\n }\r\n\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n self.audioSources.forEach(function(audioSource) {\r\n audioSource.connect(self.audioDestination);\r\n });\r\n return self.audioDestination.stream;\r\n }\r\n\r\n function getVideo(stream) {\r\n var video = document.createElement('video');\r\n\r\n setSrcObject(stream, video);\r\n\r\n video.className = elementClass;\r\n\r\n video.muted = true;\r\n video.volume = 0;\r\n\r\n video.width = stream.width || self.width || 360;\r\n video.height = stream.height || self.height || 240;\r\n\r\n video.play();\r\n\r\n return video;\r\n }\r\n\r\n this.appendStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n streams.forEach(function(stream) {\r\n var newStream = new MediaStream();\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n\r\n newStream.addTrack(stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n })[0]);\r\n }\r\n\r\n if (stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n }).length) {\r\n var audioSource = self.audioContext.createMediaStreamSource(stream);\r\n self.audioDestination = self.audioContext.createMediaStreamDestination();\r\n audioSource.connect(self.audioDestination);\r\n\r\n newStream.addTrack(self.audioDestination.stream.getTracks().filter(function(t) {\r\n return t.kind === 'audio';\r\n })[0]);\r\n }\r\n\r\n arrayOfMediaStreams.push(newStream);\r\n });\r\n };\r\n\r\n this.releaseStreams = function() {\r\n videos = [];\r\n isStopDrawingFrames = true;\r\n\r\n if (self.gainNode) {\r\n self.gainNode.disconnect();\r\n self.gainNode = null;\r\n }\r\n\r\n if (self.audioSources.length) {\r\n self.audioSources.forEach(function(source) {\r\n source.disconnect();\r\n });\r\n self.audioSources = [];\r\n }\r\n\r\n if (self.audioDestination) {\r\n self.audioDestination.disconnect();\r\n self.audioDestination = null;\r\n }\r\n\r\n if (self.audioContext) {\r\n self.audioContext.close();\r\n }\r\n\r\n self.audioContext = null;\r\n\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n if (canvas.stream) {\r\n canvas.stream.stop();\r\n canvas.stream = null;\r\n }\r\n };\r\n\r\n this.resetVideoStreams = function(streams) {\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n resetVideoStreams(streams);\r\n };\r\n\r\n function resetVideoStreams(streams) {\r\n videos = [];\r\n streams = streams || arrayOfMediaStreams;\r\n\r\n // via: @adrian-ber\r\n streams.forEach(function(stream) {\r\n if (!stream.getTracks().filter(function(t) {\r\n return t.kind === 'video';\r\n }).length) {\r\n return;\r\n }\r\n\r\n var video = getVideo(stream);\r\n video.stream = stream;\r\n videos.push(video);\r\n });\r\n }\r\n\r\n // for debugging\r\n this.name = 'MultiStreamsMixer';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n this.getMixedStream = getMixedStream;\r\n\r\n}\r\n\r\nif (typeof RecordRTC === 'undefined') {\r\n if (typeof module !== 'undefined' /* && !!module.exports*/ ) {\r\n module.exports = MultiStreamsMixer;\r\n }\r\n\r\n if (typeof define === 'function' && define.amd) {\r\n define('MultiStreamsMixer', [], function() {\r\n return MultiStreamsMixer;\r\n });\r\n }\r\n}\n\r\n// ______________________\r\n// MultiStreamRecorder.js\r\n\r\n/*\r\n * Video conference recording, using captureStream API along with WebAudio and Canvas2D API.\r\n */\r\n\r\n/**\r\n * MultiStreamRecorder can record multiple videos in single container.\r\n * @summary Multi-videos recorder.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef MultiStreamRecorder\r\n * @class\r\n * @example\r\n * var options = {\r\n * mimeType: 'video/webm'\r\n * }\r\n * var recorder = new MultiStreamRecorder(ArrayOfMediaStreams, options);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n *\r\n * // or\r\n * var blob = recorder.blob;\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams.\r\n * @param {object} config - {disableLogs:true, frameInterval: 1, mimeType: \"video/webm\"}\r\n */\r\n\r\nfunction MultiStreamRecorder(arrayOfMediaStreams, options) {\r\n arrayOfMediaStreams = arrayOfMediaStreams || [];\r\n var self = this;\r\n\r\n var mixer;\r\n var mediaRecorder;\r\n\r\n options = options || {\r\n elementClass: 'multi-streams-mixer',\r\n mimeType: 'video/webm',\r\n video: {\r\n width: 360,\r\n height: 240\r\n }\r\n };\r\n\r\n if (!options.frameInterval) {\r\n options.frameInterval = 10;\r\n }\r\n\r\n if (!options.video) {\r\n options.video = {};\r\n }\r\n\r\n if (!options.video.width) {\r\n options.video.width = 360;\r\n }\r\n\r\n if (!options.video.height) {\r\n options.video.height = 240;\r\n }\r\n\r\n /**\r\n * This method records all MediaStreams.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n // github/muaz-khan/MultiStreamsMixer\r\n mixer = new MultiStreamsMixer(arrayOfMediaStreams, options.elementClass || 'multi-streams-mixer');\r\n\r\n if (getAllVideoTracks().length) {\r\n mixer.frameInterval = options.frameInterval || 10;\r\n mixer.width = options.video.width || 360;\r\n mixer.height = options.video.height || 240;\r\n mixer.startDrawingFrames();\r\n }\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n\r\n // record using MediaRecorder API\r\n mediaRecorder = new MediaStreamRecorder(mixer.getMixedStream(), options);\r\n mediaRecorder.record();\r\n };\r\n\r\n function getAllVideoTracks() {\r\n var tracks = [];\r\n arrayOfMediaStreams.forEach(function(stream) {\r\n getTracks(stream, 'video').forEach(function(track) {\r\n tracks.push(track);\r\n });\r\n });\r\n return tracks;\r\n }\r\n\r\n /**\r\n * This method stops recording MediaStream.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n if (!mediaRecorder) {\r\n return;\r\n }\r\n\r\n mediaRecorder.stop(function(blob) {\r\n self.blob = blob;\r\n\r\n callback(blob);\r\n\r\n self.clearRecordedData();\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.pause();\r\n }\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.resume();\r\n }\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n if (mediaRecorder) {\r\n mediaRecorder.clearRecordedData();\r\n mediaRecorder = null;\r\n }\r\n\r\n if (mixer) {\r\n mixer.releaseStreams();\r\n mixer = null;\r\n }\r\n };\r\n\r\n /**\r\n * Add extra media-streams to existing recordings.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.addStreams([newAudioStream, newVideoStream]);\r\n */\r\n this.addStreams = function(streams) {\r\n if (!streams) {\r\n throw 'First parameter is required.';\r\n }\r\n\r\n if (!(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n arrayOfMediaStreams.concat(streams);\r\n\r\n if (!mediaRecorder || !mixer) {\r\n return;\r\n }\r\n\r\n mixer.appendStreams(streams);\r\n\r\n if (options.previewStream && typeof options.previewStream === 'function') {\r\n options.previewStream(mixer.getMixedStream());\r\n }\r\n };\r\n\r\n /**\r\n * Reset videos during live recording. Replace old videos e.g. replace cameras with full-screen.\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @param {MediaStreams} mediaStreams - Array of MediaStreams\r\n * @example\r\n * recorder.resetVideoStreams([newVideo1, newVideo2]);\r\n */\r\n this.resetVideoStreams = function(streams) {\r\n if (!mixer) {\r\n return;\r\n }\r\n\r\n if (streams && !(streams instanceof Array)) {\r\n streams = [streams];\r\n }\r\n\r\n mixer.resetVideoStreams(streams);\r\n };\r\n\r\n /**\r\n * Returns MultiStreamsMixer\r\n * @method\r\n * @memberof MultiStreamRecorder\r\n * @example\r\n * let mixer = recorder.getMixer();\r\n * mixer.appendStreams([newStream]);\r\n */\r\n this.getMixer = function() {\r\n return mixer;\r\n };\r\n\r\n // for debugging\r\n this.name = 'MultiStreamRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.MultiStreamRecorder = MultiStreamRecorder;\r\n}\n\r\n// _____________________\r\n// RecordRTC.promises.js\r\n\r\n/**\r\n * RecordRTCPromisesHandler adds promises support in {@link RecordRTC}. Try a {@link https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/RecordRTCPromisesHandler.html|demo here}\r\n * @summary Promises for {@link RecordRTC}\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef RecordRTCPromisesHandler\r\n * @class\r\n * @example\r\n * var recorder = new RecordRTCPromisesHandler(mediaStream, options);\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n * // Note: You can access all RecordRTC API using \"recorder.recordRTC\" e.g. \r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n * recorder.recordRTC.setRecordingDuration(5000);\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - Single media-stream object, array of media-streams, html-canvas-element, etc.\r\n * @param {object} config - {type:\"video\", recorderType: MediaStreamRecorder, disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, etc.}\r\n * @throws Will throw an error if \"new\" keyword is not used to initiate \"RecordRTCPromisesHandler\". Also throws error if first argument \"MediaStream\" is missing.\r\n * @requires {@link RecordRTC}\r\n */\r\n\r\nfunction RecordRTCPromisesHandler(mediaStream, options) {\r\n if (!this) {\r\n throw 'Use \"new RecordRTCPromisesHandler()\"';\r\n }\r\n\r\n if (typeof mediaStream === 'undefined') {\r\n throw 'First argument \"MediaStream\" is required.';\r\n }\r\n\r\n var self = this;\r\n\r\n /**\r\n * @property {Blob} blob - Access/reach the native {@link RecordRTC} object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internal = recorder.recordRTC.getInternalRecorder();\r\n * alert(internal instanceof MediaStreamRecorder);\r\n * recorder.recordRTC.onStateChanged = function(state) {};\r\n */\r\n self.recordRTC = new RecordRTC(mediaStream, options);\r\n\r\n /**\r\n * This method records MediaStream.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.startRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.startRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.startRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method stops the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * var blob = recorder.getBlob();\r\n * }).catch(errorCB);\r\n */\r\n this.stopRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.stopRecording(function(url) {\r\n self.blob = self.recordRTC.getBlob();\r\n\r\n if (!self.blob || !self.blob.size) {\r\n reject('Empty blob.', self.blob);\r\n return;\r\n }\r\n\r\n resolve(url);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method pauses the recording. You can resume recording using \"resumeRecording\" method.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.pauseRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.pauseRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.pauseRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resumes the recording.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.resumeRecording()\r\n * .then(successCB)\r\n * .catch(errorCB);\r\n */\r\n this.resumeRecording = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.resumeRecording();\r\n resolve();\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns data-url for the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getDataURL().then(function(dataURL) {\r\n * window.open(dataURL);\r\n * }).catch(errorCB);;\r\n * }).catch(errorCB);\r\n */\r\n this.getDataURL = function(callback) {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n self.recordRTC.getDataURL(function(dataURL) {\r\n resolve(dataURL);\r\n });\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the recorded blob.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.stopRecording().then(function() {\r\n * recorder.getBlob().then(function(blob) {})\r\n * }).catch(errorCB);\r\n */\r\n this.getBlob = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getBlob());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method returns the internal recording object.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let internalRecorder = await recorder.getInternalRecorder();\r\n * if(internalRecorder instanceof MultiStreamRecorder) {\r\n * internalRecorder.addStreams([newAudioStream]);\r\n * internalRecorder.resetVideoStreams([screenStream]);\r\n * }\r\n * @returns {Object} \r\n */\r\n this.getInternalRecorder = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getInternalRecorder());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * This method resets the recorder. So that you can reuse single recorder instance many times.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.reset();\r\n * recorder.startRecording(); // record again\r\n */\r\n this.reset = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.reset());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Destroy RecordRTC instance. Clear all recorders and objects.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * recorder.destroy().then(successCB).catch(errorCB);\r\n */\r\n this.destroy = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.destroy());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Get recorder's readonly state.\r\n * @method\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * let state = await recorder.getState();\r\n * // or\r\n * recorder.getState().then(state => { console.log(state); })\r\n * @returns {String} Returns recording state.\r\n */\r\n this.getState = function() {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n resolve(self.recordRTC.getState());\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - Recorded data as \"Blob\" object.\r\n * @memberof RecordRTCPromisesHandler\r\n * @example\r\n * await recorder.stopRecording();\r\n * let blob = recorder.getBlob(); // or \"recorder.recordRTC.blob\"\r\n * invokeSaveAsDialog(blob);\r\n */\r\n this.blob = null;\r\n\r\n /**\r\n * RecordRTC version number\r\n * @property {String} version - Release version number.\r\n * @memberof RecordRTCPromisesHandler\r\n * @static\r\n * @readonly\r\n * @example\r\n * alert(recorder.version);\r\n */\r\n this.version = '5.6.2';\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.RecordRTCPromisesHandler = RecordRTCPromisesHandler;\r\n}\n\r\n// ______________________\r\n// WebAssemblyRecorder.js\r\n\r\n/**\r\n * WebAssemblyRecorder lets you create webm videos in JavaScript via WebAssembly. The library consumes raw RGBA32 buffers (4 bytes per pixel) and turns them into a webm video with the given framerate and quality. This makes it compatible out-of-the-box with ImageData from a CANVAS. With realtime mode you can also use webm-wasm for streaming webm videos.\r\n * @summary Video recording feature in Chrome, Firefox and maybe Edge.\r\n * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT}\r\n * @author {@link https://MuazKhan.com|Muaz Khan}\r\n * @typedef WebAssemblyRecorder\r\n * @class\r\n * @example\r\n * var recorder = new WebAssemblyRecorder(mediaStream);\r\n * recorder.record();\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code}\r\n * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API.\r\n * @param {object} config - {webAssemblyPath:'webm-wasm.wasm',workerPath: 'webm-worker.js', frameRate: 30, width: 1920, height: 1080, bitrate: 1024, realtime: true}\r\n */\r\nfunction WebAssemblyRecorder(stream, config) {\r\n // based on: github.com/GoogleChromeLabs/webm-wasm\r\n\r\n if (typeof ReadableStream === 'undefined' || typeof WritableStream === 'undefined') {\r\n // because it fixes readable/writable streams issues\r\n console.error('Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js');\r\n }\r\n\r\n config = config || {};\r\n\r\n config.width = config.width || 640;\r\n config.height = config.height || 480;\r\n config.frameRate = config.frameRate || 30;\r\n config.bitrate = config.bitrate || 1200;\r\n config.realtime = config.realtime || true;\r\n\r\n function createBufferURL(buffer, type) {\r\n return URL.createObjectURL(new Blob([buffer], {\r\n type: type || ''\r\n }));\r\n }\r\n\r\n var finished;\r\n\r\n function cameraStream() {\r\n return new ReadableStream({\r\n start: function(controller) {\r\n var cvs = document.createElement('canvas');\r\n var video = document.createElement('video');\r\n var first = true;\r\n video.srcObject = stream;\r\n video.muted = true;\r\n video.height = config.height;\r\n video.width = config.width;\r\n video.volume = 0;\r\n video.onplaying = function() {\r\n cvs.width = config.width;\r\n cvs.height = config.height;\r\n var ctx = cvs.getContext('2d');\r\n var frameTimeout = 1000 / config.frameRate;\r\n var cameraTimer = setInterval(function f() {\r\n if (finished) {\r\n clearInterval(cameraTimer);\r\n controller.close();\r\n }\r\n\r\n if (first) {\r\n first = false;\r\n if (config.onVideoProcessStarted) {\r\n config.onVideoProcessStarted();\r\n }\r\n }\r\n\r\n ctx.drawImage(video, 0, 0);\r\n if (controller._controlledReadableStream.state !== 'closed') {\r\n try {\r\n controller.enqueue(\r\n ctx.getImageData(0, 0, config.width, config.height)\r\n );\r\n } catch (e) {}\r\n }\r\n }, frameTimeout);\r\n };\r\n video.play();\r\n }\r\n });\r\n }\r\n\r\n var worker;\r\n\r\n function startRecording(stream, buffer) {\r\n if (!config.workerPath && !buffer) {\r\n finished = false;\r\n\r\n // is it safe to use @latest ?\r\n\r\n fetch(\r\n 'https://unpkg.com/webm-wasm@latest/dist/webm-worker.js'\r\n ).then(function(r) {\r\n r.arrayBuffer().then(function(buffer) {\r\n startRecording(stream, buffer);\r\n });\r\n });\r\n return;\r\n }\r\n\r\n if (!config.workerPath && buffer instanceof ArrayBuffer) {\r\n var blob = new Blob([buffer], {\r\n type: 'text/javascript'\r\n });\r\n config.workerPath = URL.createObjectURL(blob);\r\n }\r\n\r\n if (!config.workerPath) {\r\n console.error('workerPath parameter is missing.');\r\n }\r\n\r\n worker = new Worker(config.workerPath);\r\n\r\n worker.postMessage(config.webAssemblyPath || 'https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm');\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === 'READY') {\r\n worker.postMessage({\r\n width: config.width,\r\n height: config.height,\r\n bitrate: config.bitrate || 1200,\r\n timebaseDen: config.frameRate || 30,\r\n realtime: config.realtime\r\n });\r\n\r\n cameraStream().pipeTo(new WritableStream({\r\n write: function(image) {\r\n if (finished) {\r\n console.error('Got image, but recorder is finished!');\r\n return;\r\n }\r\n\r\n worker.postMessage(image.data.buffer, [image.data.buffer]);\r\n }\r\n }));\r\n } else if (!!event.data) {\r\n if (!isPaused) {\r\n arrayOfBuffers.push(event.data);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * This method records video.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.record();\r\n */\r\n this.record = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n startRecording(stream);\r\n\r\n if (typeof config.initCallback === 'function') {\r\n config.initCallback();\r\n }\r\n };\r\n\r\n var isPaused;\r\n\r\n /**\r\n * This method pauses the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.pause();\r\n */\r\n this.pause = function() {\r\n isPaused = true;\r\n };\r\n\r\n /**\r\n * This method resumes the recording process.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.resume();\r\n */\r\n this.resume = function() {\r\n isPaused = false;\r\n };\r\n\r\n function terminate(callback) {\r\n if (!worker) {\r\n if (callback) {\r\n callback();\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Wait for null event data to indicate that the encoding is complete\r\n worker.addEventListener('message', function(event) {\r\n if (event.data === null) {\r\n worker.terminate();\r\n worker = null;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n });\r\n\r\n worker.postMessage(null);\r\n }\r\n\r\n var arrayOfBuffers = [];\r\n\r\n /**\r\n * This method stops recording video.\r\n * @param {function} callback - Callback function, that is used to pass recorded blob back to the callee.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(blob) {\r\n * video.src = URL.createObjectURL(blob);\r\n * });\r\n */\r\n this.stop = function(callback) {\r\n finished = true;\r\n\r\n var recorder = this;\r\n\r\n terminate(function() {\r\n recorder.blob = new Blob(arrayOfBuffers, {\r\n type: 'video/webm'\r\n });\r\n\r\n callback(recorder.blob);\r\n });\r\n };\r\n\r\n // for debugging\r\n this.name = 'WebAssemblyRecorder';\r\n this.toString = function() {\r\n return this.name;\r\n };\r\n\r\n /**\r\n * This method resets currently recorded data.\r\n * @method\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.clearRecordedData();\r\n */\r\n this.clearRecordedData = function() {\r\n arrayOfBuffers = [];\r\n isPaused = false;\r\n this.blob = null;\r\n\r\n // todo: if recording-ON then STOP it first\r\n };\r\n\r\n /**\r\n * @property {Blob} blob - The recorded blob object.\r\n * @memberof WebAssemblyRecorder\r\n * @example\r\n * recorder.stop(function(){\r\n * var blob = recorder.blob;\r\n * });\r\n */\r\n this.blob = null;\r\n}\r\n\r\nif (typeof RecordRTC !== 'undefined') {\r\n RecordRTC.WebAssemblyRecorder = WebAssemblyRecorder;\r\n}\n","import {downloadRecord, now} from \"../utils\";\nimport saveAs from \"../utils/file-save\";\nimport RecordRTC from 'recordrtc';\nimport {EVENTS, FILE_SUFFIX} from \"../constant\";\nimport Emitter from \"../utils/emitter\";\n\nexport default class RecordRTCLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.fileName = '';\n this.fileType = player._opt.recordType || FILE_SUFFIX.webm;\n this.isRecording = false;\n this.recordingTimestamp = 0;\n this.recordingInterval = null;\n player.debug.log('Recorder', 'init');\n }\n\n destroy() {\n this._reset();\n this.player.debug.log('Recorder', 'destroy');\n }\n\n setFileName(fileName, fileType) {\n this.fileName = fileName;\n\n if (FILE_SUFFIX.mp4 === fileType || FILE_SUFFIX.webm === fileType) {\n this.fileType = fileType;\n }\n }\n\n get recording() {\n return this.isRecording;\n }\n\n get recordTime() {\n return this.recordingTimestamp;\n }\n\n startRecord() {\n const debug = this.player.debug;\n const options = {\n type: 'video',\n mimeType: 'video/webm;codecs=h264',\n onTimeStamp: (timestamp) => {\n debug.log('Recorder', 'record timestamp :' + timestamp);\n },\n disableLogs: !this.player._opt.debug\n }\n\n try {\n const stream = this.player.video.$videoElement.captureStream(25);\n if (this.player.audio && this.player.audio.mediaStreamAudioDestinationNode &&\n this.player.audio.mediaStreamAudioDestinationNode.stream &&\n !this.player.audio.isStateSuspended() &&\n this.player.audio.hasAudio && this.player._opt.hasAudio) {\n const audioStream = this.player.audio.mediaStreamAudioDestinationNode.stream;\n if (audioStream.getAudioTracks().length > 0) {\n const audioTrack = audioStream.getAudioTracks()[0];\n if (audioTrack && audioTrack.enabled) {\n stream.addTrack(audioTrack);\n }\n }\n }\n this.recorder = RecordRTC(stream, options);\n } catch (e) {\n debug.error('Recorder', 'startRecord error', e);\n this.emit(EVENTS.recordCreateError);\n }\n if (this.recorder) {\n this.isRecording = true;\n this.player.emit(EVENTS.recording, true);\n this.recorder.startRecording();\n debug.log('Recorder', 'start recording');\n this.player.emit(EVENTS.recordStart);\n this.recordingInterval = window.setInterval(() => {\n this.recordingTimestamp += 1;\n this.player.emit(EVENTS.recordingTimestamp, this.recordingTimestamp);\n }, 1000);\n }\n }\n\n stopRecordAndSave() {\n if (!this.recorder || !this.isRecording) {\n return;\n }\n this.recorder.stopRecording(() => {\n this.player.debug.log('Recorder', 'stop recording');\n this.player.emit(EVENTS.recordEnd)\n const fileName = (this.fileName || now()) + '.' + (this.fileType || FILE_SUFFIX.webm)\n saveAs(this.recorder.getBlob(), fileName)\n this._reset();\n this.player.emit(EVENTS.recording, false);\n })\n }\n\n _reset() {\n this.isRecording = false;\n this.recordingTimestamp = 0;\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n this.fileName = null;\n if (this.recordingInterval) {\n clearInterval(this.recordingInterval);\n }\n this.recordingInterval = null;\n }\n\n\n}\n","import RecordRTCLoader from \"./recordRTCLoader\";\n\nexport default class Recorder {\n constructor(player) {\n const Loader = Recorder.getLoaderFactory();\n return new Loader(player);\n }\n\n static getLoaderFactory() {\n return RecordRTCLoader;\n }\n}\n","import {EVENTS, EVENTS_ERROR, MEDIA_TYPE, WASM_ERROR, WORKER_CMD_TYPE, WORKER_SEND_TYPE} from \"../constant\";\nimport {isWebglRenderSupport, now} from \"../utils\";\n\nexport default class DecoderWorker {\n constructor(player) {\n this.player = player;\n this.decoderWorker = new Worker(player._opt.decoder)\n this._initDecoderWorker();\n player.debug.log('decoderWorker', 'init')\n }\n\n destroy() {\n this.decoderWorker.postMessage({cmd: WORKER_SEND_TYPE.close})\n this.decoderWorker.terminate();\n this.decoderWorker = null;\n this.player.debug.log(`decoderWorker`, 'destroy');\n }\n\n _initDecoderWorker() {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n this.decoderWorker.onmessage = (event) => {\n const msg = event.data;\n switch (msg.cmd) {\n case WORKER_CMD_TYPE.init:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.init);\n if (!this.player.loaded) {\n this.player.emit(EVENTS.load);\n }\n this.player.emit(EVENTS.decoderWorkerInit);\n this._initWork();\n break;\n case WORKER_CMD_TYPE.videoCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.videoCode, msg.code);\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n this.player.video.updateVideoInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.audioCode:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.audioCode, msg.code);\n this.player.audio && this.player.audio.updateAudioInfo({\n encTypeCode: msg.code\n })\n break;\n case WORKER_CMD_TYPE.initVideo:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initVideo, `width:${msg.w},height:${msg.h}`);\n this.player.video.updateVideoInfo({\n width: msg.w,\n height: msg.h\n })\n if (!this.player._opt.openWebglAlignment && !isWebglRenderSupport(msg.w)) {\n this.player.emit(EVENTS_ERROR.webglAlignmentError);\n return;\n }\n\n this.player.video.initCanvasViewSize();\n break;\n case WORKER_CMD_TYPE.initAudio:\n debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.initAudio, `channels:${msg.channels},sampleRate:${msg.sampleRate}`);\n if (this.player.audio) {\n this.player.audio.updateAudioInfo(msg);\n this.player.audio.initScriptNode(msg);\n }\n break;\n case WORKER_CMD_TYPE.render:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.render, `msg ts:${msg.ts}`);\n this.player.handleRender();\n this.player.video.render(msg);\n this.player.emit(EVENTS.timeUpdate, msg.ts)\n this.player.updateStats({fps: true, ts: msg.ts, buf: msg.delay})\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n break;\n case WORKER_CMD_TYPE.playAudio:\n // debug.log(`decoderWorker`, 'onmessage:', WORKER_CMD_TYPE.playAudio, `msg ts:${msg.ts}`);\n // 只有在 playing 的时候。\n if (this.player.playing && this.player.audio) {\n this.player.audio.play(msg.buffer, msg.ts);\n }\n break;\n case WORKER_CMD_TYPE.wasmError:\n if (msg.message) {\n if (msg.message.indexOf(WASM_ERROR.invalidNalUnitSize) !== -1) {\n this.player.emit(EVENTS.error, EVENTS_ERROR.wasmDecodeError);\n this.player.emit(EVENTS_ERROR.wasmDecodeError);\n }\n }\n break;\n default:\n this.player[msg.cmd] && this.player[msg.cmd](msg);\n }\n }\n }\n\n _initWork() {\n const opt = {\n debug: this.player._opt.debug,\n useOffscreen: this.player._opt.useOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\n videoBufferDelay: this.player._opt.videoBufferDelay,\n openWebglAlignment: this.player._opt.openWebglAlignment\n }\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.init,\n opt: JSON.stringify(opt),\n sampleRate: (this.player.audio && this.player.audio.audioContext.sampleRate) || 0\n })\n }\n\n decodeVideo(arrayBuffer, ts, isIFrame) {\n\n const options = {\n type: MEDIA_TYPE.video,\n ts: Math.max(ts, 0),\n isIFrame\n }\n // this.player.debug.log('decoderWorker', 'decodeVideo', options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n decodeAudio(arrayBuffer, ts) {\n if (this.player._opt.useWCS) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else if (this.player._opt.useMSE) {\n this._decodeAudioNoDelay(arrayBuffer, ts);\n } else {\n this._decodeAudio(arrayBuffer, ts);\n }\n }\n\n //\n _decodeAudio(arrayBuffer, ts) {\n const options = {\n type: MEDIA_TYPE.audio,\n ts: Math.max(ts, 0)\n }\n // this.player.debug.log('decoderWorker', 'decodeAudio',options);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.decode,\n buffer: arrayBuffer,\n options\n }, [arrayBuffer.buffer])\n }\n\n\n _decodeAudioNoDelay(arrayBuffer, ts) {\n // console.log('_decodeAudioNoDelay', arrayBuffer);\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.audioDecode,\n buffer: arrayBuffer,\n ts: Math.max(ts, 0)\n }, [arrayBuffer.buffer])\n }\n\n\n updateWorkConfig(config) {\n this.decoderWorker.postMessage({\n cmd: WORKER_SEND_TYPE.updateConfig,\n key: config.key,\n value: config.value\n })\n }\n\n}\n","import Emitter from \"../utils/emitter\";\nimport {MEDIA_TYPE} from \"../constant\";\n\nexport default class CommonLoader extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n\n this.stopId = null;\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.initInterval();\n }\n\n destroy() {\n if (this.stopId) {\n clearInterval(this.stopId);\n this.stopId = null;\n }\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.bufferList = [];\n this.dropping = false;\n this.off();\n this.player.debug.log('CommonDemux', 'destroy');\n }\n\n getDelay(timestamp) {\n if (!timestamp) {\n return -1\n }\n if (!this.firstTimestamp) {\n this.firstTimestamp = timestamp\n this.startTimestamp = Date.now()\n this.delay = -1;\n } else {\n if (timestamp) {\n const localTimestamp = (Date.now() - this.startTimestamp);\n const timeTimestamp = (timestamp - this.firstTimestamp);\n if (localTimestamp >= timeTimestamp) {\n this.delay = localTimestamp - timeTimestamp;\n } else {\n this.delay = timeTimestamp - localTimestamp;\n }\n }\n }\n return this.delay\n }\n\n resetDelay() {\n this.firstTimestamp = null;\n this.startTimestamp = null;\n this.delay = -1;\n this.dropping = false;\n }\n\n //\n initInterval() {\n this.player.debug.log('common dumex', `init Interval`);\n let _loop = () => {\n let data;\n const videoBuffer = this.player._opt.videoBuffer;\n const videoBufferDelay = this.player._opt.videoBufferDelay;\n if (this.bufferList.length) {\n if (this.dropping) {\n // this.player.debug.log('common dumex', `is dropping`);\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n while (!data.isIFrame && this.bufferList.length) {\n data = this.bufferList.shift();\n if (data.type === MEDIA_TYPE.audio && data.payload[1] === 0) {\n this._doDecoderDecode(data);\n }\n }\n // i frame\n if (data.isIFrame && this.getDelay(data.ts) <= Math.min(videoBuffer, 200)) {\n this.dropping = false;\n this._doDecoderDecode(data);\n }\n } else {\n data = this.bufferList[0];\n if (this.getDelay(data.ts) === -1) {\n // this.player.debug.log('common dumex', `delay is -1`);\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else if (this.delay > (videoBuffer + videoBufferDelay)) {\n // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`);\n this.resetDelay();\n this.dropping = true\n } else {\n data = this.bufferList[0]\n if (this.getDelay(data.ts) > videoBuffer) {\n // drop frame\n this.bufferList.shift()\n this._doDecoderDecode(data);\n } else {\n // this.player.debug.log('common dumex', `delay is ${this.delay}`);\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame, cts) {\n const player = this.player;\n let options = {\n ts: ts,\n cts: cts,\n type: type,\n isIFrame: false\n }\n // use offscreen\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else if (player._opt.useMSE) {\n // use mse\n if (type === MEDIA_TYPE.video) {\n options.isIFrame = isIFrame;\n }\n this.pushBuffer(payload, options)\n } else {\n //\n if (type === MEDIA_TYPE.video) {\n player.decoderWorker && player.decoderWorker.decodeVideo(payload, ts, isIFrame);\n } else if (type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(payload, ts);\n }\n }\n }\n }\n\n _doDecoderDecode(data) {\n const player = this.player;\n const {webcodecsDecoder, mseDecoder} = player;\n\n if (data.type === MEDIA_TYPE.audio) {\n if (player._opt.hasAudio) {\n player.decoderWorker && player.decoderWorker.decodeAudio(data.payload, data.ts)\n }\n } else if (data.type === MEDIA_TYPE.video) {\n if (player._opt.useWCS && !player._opt.useOffscreen) {\n webcodecsDecoder.decodeVideo(data.payload, data.ts, data.isIFrame);\n } else if (player._opt.useMSE) {\n mseDecoder.decodeVideo(data.payload, data.ts, data.isIFrame, data.cts);\n }\n }\n }\n\n pushBuffer(payload, options) {\n // 音频\n if (options.type === MEDIA_TYPE.audio) {\n this.bufferList.push({\n ts: options.ts,\n payload: payload,\n type: MEDIA_TYPE.audio,\n })\n } else if (options.type === MEDIA_TYPE.video) {\n this.bufferList.push({\n ts: options.ts,\n cts: options.cts,\n payload: payload,\n type: MEDIA_TYPE.video,\n isIFrame: options.isIFrame\n })\n }\n }\n\n close() {\n\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class FlvLoader extends CommonLoader {\n constructor(player) {\n super(player);\n this.input = this._inputFlv();\n this.flvDemux = this.dispatchFlvData(this.input);\n player.debug.log('FlvDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.input = null;\n this.flvDemux = null;\n this.player.debug.log('FlvDemux', 'destroy')\n }\n\n dispatch(data) {\n this.flvDemux(data);\n }\n\n * _inputFlv() {\n yield 9;\n const tmp = new ArrayBuffer(4)\n const tmp8 = new Uint8Array(tmp)\n const tmp32 = new Uint32Array(tmp)\n const player = this.player;\n\n while (true) {\n tmp8[3] = 0\n const t = yield 15\n const type = t[4]\n tmp8[0] = t[7]\n tmp8[1] = t[6]\n tmp8[2] = t[5]\n const length = tmp32[0]\n tmp8[0] = t[10]\n tmp8[1] = t[9]\n tmp8[2] = t[8]\n let ts = tmp32[0]\n if (ts === 0xFFFFFF) {\n tmp8[3] = t[11]\n ts = tmp32[0]\n }\n const payload = yield length\n switch (type) {\n case FLV_MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, MEDIA_TYPE.audio, ts)\n }\n }\n break\n case FLV_MEDIA_TYPE.video:\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (player._opt.hasVideo) {\n player.updateStats({\n vbps: payload.byteLength\n })\n const isIFrame = payload[0] >> 4 === 1;\n if (payload.byteLength > 0) {\n tmp32[0] = payload[4]\n tmp32[1] = payload[3]\n tmp32[2] = payload[2]\n tmp32[3] = 0\n let cts = tmp32[0]\n\n this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame, cts);\n }\n }\n break\n }\n }\n }\n\n dispatchFlvData(input) {\n let need = input.next()\n let buffer = null\n return (value) => {\n let data = new Uint8Array(value)\n if (buffer) {\n let combine = new Uint8Array(buffer.length + data.length)\n combine.set(buffer)\n combine.set(data, buffer.length)\n data = combine\n buffer = null\n }\n while (data.length >= need.value) {\n let remain = data.slice(need.value)\n need = input.next(data.slice(0, need.value))\n data = remain\n }\n if (data.length > 0) {\n buffer = data\n }\n }\n }\n\n close() {\n this.input && this.input.return(null)\n }\n\n\n}\n","import {FLV_MEDIA_TYPE, MEDIA_TYPE} from \"../constant\";\nimport CommonLoader from \"./commonLoader\";\nimport {now} from \"../utils\";\n\nexport default class M7sLoader extends CommonLoader {\n constructor(player) {\n super(player);\n player.debug.log('M7sDemux', 'init')\n }\n\n destroy() {\n super.destroy();\n this.player.debug.log('M7sDemux', 'destroy')\n this.player = null;\n }\n\n dispatch(data) {\n const player = this.player;\n const dv = new DataView(data)\n const type = dv.getUint8(0);\n const ts = dv.getUint32(1, false);\n switch (type) {\n case MEDIA_TYPE.audio:\n if (player._opt.hasAudio) {\n const payload = new Uint8Array(data, 5)\n player.updateStats({\n abps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts)\n }\n }\n break;\n case MEDIA_TYPE.video:\n if (player._opt.hasVideo) {\n if (!player._times.demuxStart) {\n player._times.demuxStart = now();\n }\n if (dv.byteLength > 5) {\n const payload = new Uint8Array(data, 5);\n const isIframe = dv.getUint8(5) >> 4 === 1;\n player.updateStats({\n vbps: payload.byteLength\n })\n if (payload.byteLength > 0) {\n this._doDecode(payload, type, ts, isIframe)\n }\n } else {\n this.player.debug.warn('M7sDemux', 'dispatch', 'dv byteLength is', dv.byteLength)\n }\n }\n break;\n }\n }\n\n\n}\n","import FlvLoader from \"./flvLoader\";\nimport M7sLoader from \"./m7sLoader\";\nimport {DEMUX_TYPE} from \"../constant\";\n\nexport default class Demux {\n constructor(player) {\n const Loader = Demux.getLoaderFactory(player._opt.demuxType);\n return new Loader(player);\n }\n\n static getLoaderFactory(type) {\n if (type === DEMUX_TYPE.m7s) {\n return M7sLoader;\n } else if (type === DEMUX_TYPE.flv) {\n return FlvLoader;\n }\n }\n}\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Exponential-Golomb buffer decoder\nclass ExpGolomb {\n\n constructor(uint8array) {\n this.TAG = 'ExpGolomb';\n\n this._buffer = uint8array;\n this._buffer_index = 0;\n this._total_bytes = uint8array.byteLength;\n this._total_bits = uint8array.byteLength * 8;\n this._current_word = 0;\n this._current_word_bits_left = 0;\n }\n\n destroy() {\n this._buffer = null;\n }\n\n _fillCurrentWord() {\n let buffer_bytes_left = this._total_bytes - this._buffer_index;\n if (buffer_bytes_left <= 0) {\n // throw new IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');\n }\n\n let bytes_read = Math.min(4, buffer_bytes_left);\n let word = new Uint8Array(4);\n word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));\n this._current_word = new DataView(word.buffer).getUint32(0, false);\n\n this._buffer_index += bytes_read;\n this._current_word_bits_left = bytes_read * 8;\n }\n\n readBits(bits) {\n if (bits > 32) {\n // throw new InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');\n }\n\n if (bits <= this._current_word_bits_left) {\n let result = this._current_word >>> (32 - bits);\n this._current_word <<= bits;\n this._current_word_bits_left -= bits;\n return result;\n }\n\n let result = this._current_word_bits_left ? this._current_word : 0;\n result = result >>> (32 - this._current_word_bits_left);\n let bits_need_left = bits - this._current_word_bits_left;\n\n this._fillCurrentWord();\n let bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);\n\n let result2 = this._current_word >>> (32 - bits_read_next);\n this._current_word <<= bits_read_next;\n this._current_word_bits_left -= bits_read_next;\n\n result = (result << bits_read_next) | result2;\n return result;\n }\n\n readBool() {\n return this.readBits(1) === 1;\n }\n\n readByte() {\n return this.readBits(8);\n }\n\n _skipLeadingZero() {\n let zero_count;\n for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {\n if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {\n this._current_word <<= zero_count;\n this._current_word_bits_left -= zero_count;\n return zero_count;\n }\n }\n this._fillCurrentWord();\n return zero_count + this._skipLeadingZero();\n }\n\n readUEG() { // unsigned exponential golomb\n let leading_zeros = this._skipLeadingZero();\n return this.readBits(leading_zeros + 1) - 1;\n }\n\n readSEG() { // signed exponential golomb\n let value = this.readUEG();\n if (value & 0x01) {\n return (value + 1) >>> 1;\n } else {\n return -1 * (value >>> 1);\n }\n }\n\n}\n\nexport default ExpGolomb;\n","/*\n * Copyright (C) 2016 Bilibili. All Rights Reserved.\n *\n * @author zheng qian \n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport ExpGolomb from './exp-golomb.js';\n\nclass SPSParser {\n\n static _ebsp2rbsp(uint8array) {\n let src = uint8array;\n let src_length = src.byteLength;\n let dst = new Uint8Array(src_length);\n let dst_idx = 0;\n\n for (let i = 0; i < src_length; i++) {\n if (i >= 2) {\n // Unescape: Skip 0x03 after 00 00\n if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {\n continue;\n }\n }\n dst[dst_idx] = src[i];\n dst_idx++;\n }\n\n return new Uint8Array(dst.buffer, 0, dst_idx);\n }\n\n // 解析 SPS\n // https://zhuanlan.zhihu.com/p/27896239\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n\n gb.readByte();\n // 标识当前H.264码流的profile。\n // 我们知道,H.264中定义了三种常用的档次profile: 基准档次:baseline profile;主要档次:main profile; 扩展档次:extended profile;\n\n let profile_idc = gb.readByte(); // profile_idc\n gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]\n // 标识当前码流的Level。编码的Level定义了某种条件下的最大视频分辨率、最大视频帧率等参数,码流所遵从的level由level_idc指定。\n let level_idc = gb.readByte(); // level_idc\n // 表示当前的序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。\n gb.readUEG(); // seq_parameter_set_id\n\n let profile_string = SPSParser.getProfileString(profile_idc);\n\n let level_string = SPSParser.getLevelString(level_idc);\n\n let chroma_format_idc = 1;\n let chroma_format = 420;\n let chroma_format_table = [0, 420, 422, 444];\n let bit_depth = 8;\n\n //\n if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||\n profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||\n profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||\n profile_idc === 138 || profile_idc === 144) {\n //\n chroma_format_idc = gb.readUEG();\n\n if (chroma_format_idc === 3) {\n gb.readBits(1); // separate_colour_plane_flag\n }\n if (chroma_format_idc <= 3) {\n chroma_format = chroma_format_table[chroma_format_idc];\n }\n\n bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8\n gb.readUEG(); // bit_depth_chroma_minus8\n gb.readBits(1); // qpprime_y_zero_transform_bypass_flag\n if (gb.readBool()) { // seq_scaling_matrix_present_flag\n let scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;\n for (let i = 0; i < scaling_list_count; i++) {\n if (gb.readBool()) { // seq_scaling_list_present_flag\n if (i < 6) {\n SPSParser._skipScalingList(gb, 16);\n } else {\n SPSParser._skipScalingList(gb, 64);\n }\n }\n }\n }\n }\n // 用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 +\n gb.readUEG(); // log2_max_frame_num_minus4\n // 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。\n let pic_order_cnt_type = gb.readUEG();\n if (pic_order_cnt_type === 0) {\n gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4\n } else if (pic_order_cnt_type === 1) {\n gb.readBits(1); // delta_pic_order_always_zero_flag\n gb.readSEG(); // offset_for_non_ref_pic\n gb.readSEG(); // offset_for_top_to_bottom_field\n let num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();\n for (let i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {\n gb.readSEG(); // offset_for_ref_frame\n }\n }\n // 用于表示参考帧的最大数目。\n let ref_frames = gb.readUEG(); // max_num_ref_frames\n // 标识位,说明frame_num中是否允许不连续的值。\n gb.readBits(1); // gaps_in_frame_num_value_allowed_flag\n // 用于计算图像的宽度。单位为宏块个数,因此图像的实际宽度为:\n let pic_width_in_mbs_minus1 = gb.readUEG();\n // 使用PicHeightInMapUnits来度量视频中一帧图像的高度。\n // PicHeightInMapUnits并非图像明确的以像素或宏块为单位的高度,而需要考虑该宏块是帧编码或场编码。PicHeightInMapUnits的计算方式为:\n let pic_height_in_map_units_minus1 = gb.readUEG();\n // 标识位,说明宏块的编码方式。当该标识位为0时,宏块可能为帧编码或场编码;\n // 该标识位为1时,所有宏块都采用帧编码。根据该标识位取值不同,PicHeightInMapUnits的含义也不同,\n // 为0时表示一场数据按宏块计算的高度,为1时表示一帧数据按宏块计算的高度。\n let frame_mbs_only_flag = gb.readBits(1);\n if (frame_mbs_only_flag === 0) {\n // 标识位,说明是否采用了宏块级的帧场自适应编码。当该标识位为0时,不存在帧编码和场编码之间的切换;当标识位为1时,宏块可能在帧编码和场编码模式之间进行选择。\n gb.readBits(1); // mb_adaptive_frame_field_flag\n }\n // 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算。\n gb.readBits(1); // direct_8x8_inference_flag\n\n let frame_crop_left_offset = 0;\n let frame_crop_right_offset = 0;\n let frame_crop_top_offset = 0;\n let frame_crop_bottom_offset = 0;\n\n let frame_cropping_flag = gb.readBool();\n if (frame_cropping_flag) {\n frame_crop_left_offset = gb.readUEG();\n frame_crop_right_offset = gb.readUEG();\n frame_crop_top_offset = gb.readUEG();\n frame_crop_bottom_offset = gb.readUEG();\n }\n\n let sar_width = 1, sar_height = 1;\n let fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;\n // 标识位,说明SPS中是否存在VUI信息。\n let vui_parameters_present_flag = gb.readBool();\n if (vui_parameters_present_flag) {\n if (gb.readBool()) { // aspect_ratio_info_present_flag\n let aspect_ratio_idc = gb.readByte();\n let sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];\n let sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];\n\n if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {\n sar_width = sar_w_table[aspect_ratio_idc - 1];\n sar_height = sar_h_table[aspect_ratio_idc - 1];\n } else if (aspect_ratio_idc === 255) {\n sar_width = gb.readByte() << 8 | gb.readByte();\n sar_height = gb.readByte() << 8 | gb.readByte();\n }\n }\n\n if (gb.readBool()) { // overscan_info_present_flag\n gb.readBool(); // overscan_appropriate_flag\n }\n if (gb.readBool()) { // video_signal_type_present_flag\n gb.readBits(4); // video_format & video_full_range_flag\n if (gb.readBool()) { // colour_description_present_flag\n gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients\n }\n }\n if (gb.readBool()) { // chroma_loc_info_present_flag\n gb.readUEG(); // chroma_sample_loc_type_top_field\n gb.readUEG(); // chroma_sample_loc_type_bottom_field\n }\n if (gb.readBool()) { // timing_info_present_flag\n let num_units_in_tick = gb.readBits(32);\n let time_scale = gb.readBits(32);\n fps_fixed = gb.readBool(); // fixed_frame_rate_flag\n\n fps_num = time_scale;\n fps_den = num_units_in_tick * 2;\n fps = fps_num / fps_den;\n }\n }\n\n let sarScale = 1;\n if (sar_width !== 1 || sar_height !== 1) {\n sarScale = sar_width / sar_height;\n }\n\n let crop_unit_x = 0, crop_unit_y = 0;\n if (chroma_format_idc === 0) {\n crop_unit_x = 1;\n crop_unit_y = 2 - frame_mbs_only_flag;\n } else {\n let sub_wc = (chroma_format_idc === 3) ? 1 : 2;\n let sub_hc = (chroma_format_idc === 1) ? 2 : 1;\n crop_unit_x = sub_wc;\n crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);\n }\n\n let codec_width = (pic_width_in_mbs_minus1 + 1) * 16;\n let codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);\n\n codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;\n codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;\n\n let present_width = Math.ceil(codec_width * sarScale);\n\n gb.destroy();\n gb = null;\n\n\n // 解析出来的SPS 内容。\n return {\n profile_string: profile_string, // baseline, high, high10, ...\n level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...\n bit_depth: bit_depth, // 8bit, 10bit, ...\n ref_frames: ref_frames,\n chroma_format: chroma_format, // 4:2:0, 4:2:2, ...\n chroma_format_string: SPSParser.getChromaFormatString(chroma_format),\n\n frame_rate: {\n fixed: fps_fixed,\n fps: fps,\n fps_den: fps_den,\n fps_num: fps_num\n },\n\n sar_ratio: {\n width: sar_width,\n height: sar_height\n },\n\n codec_size: {\n width: codec_width,\n height: codec_height\n },\n\n present_size: {\n width: present_width,\n height: codec_height\n }\n };\n }\n\n static _skipScalingList(gb, count) {\n let last_scale = 8, next_scale = 8;\n let delta_scale = 0;\n for (let i = 0; i < count; i++) {\n if (next_scale !== 0) {\n delta_scale = gb.readSEG();\n next_scale = (last_scale + delta_scale + 256) % 256;\n }\n last_scale = (next_scale === 0) ? last_scale : next_scale;\n }\n }\n\n // profile_idc = 66 → baseline profile;\n // profile_idc = 77 → main profile;\n // profile_idc = 88 → extended profile;\n // 在新版的标准中,还包括了High、High 10、High 4:2:2、High 4:4:4、High 10 Intra、High\n // 4:2:2 Intra、High 4:4:4 Intra、CAVLC 4:4:4 Intra\n static getProfileString(profile_idc) {\n switch (profile_idc) {\n case 66:\n return 'Baseline';\n case 77:\n return 'Main';\n case 88:\n return 'Extended';\n case 100:\n return 'High';\n case 110:\n return 'High10';\n case 122:\n return 'High422';\n case 244:\n return 'High444';\n default:\n return 'Unknown';\n }\n }\n\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n static getChromaFormatString(chroma) {\n switch (chroma) {\n case 420:\n return '4:2:0';\n case 422:\n return '4:2:2';\n case 444:\n return '4:4:4';\n default:\n return 'Unknown';\n }\n }\n\n}\n\nexport default SPSParser;","import SPSParser from './h264-sps-parser.js';\n\n//\nexport function parseAVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n const v = new DataView(arrayBuffer.buffer);\n let version = v.getUint8(0); // configurationVersion\n let avcProfile = v.getUint8(1); // avcProfileIndication\n let profileCompatibility = v.getUint8(2); // profile_compatibil\n let avcLevel = v.getUint8(3); // AVCLevelIndication\n\n if (version !== 1 || avcProfile === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');\n\n return meta;\n }\n\n const _naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne\n\n if (_naluLengthSize !== 3 && _naluLengthSize !== 4) { // holy shit!!!\n // this._onError(DemuxErrors.FORMAT_ERROR, `Flv: Strange NaluLengthSizeMinusOne: ${_naluLengthSize - 1}`);\n return meta;\n }\n let spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets\n\n if (spsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');\n return;\n } else if (spsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${spsCount}`);\n }\n\n let offset = 6;\n for (let i = 0; i < spsCount; i++) {\n let len = v.getUint16(offset, false); // sequenceParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n\n // Notice: Nalu without startcode header (00 00 00 01)\n let sps = new Uint8Array(arrayBuffer.buffer, offset, len);\n offset += len;\n // flv.js作者选择了自己来解析这个数据结构,也是迫不得已,因为JS环境下没有ffmpeg,解析这个结构主要是为了提取 sps和pps。虽然理论上sps允许有多个,但其实一般就一个。\n // packetTtype 为 1 表示 NALU,NALU= network abstract layer unit,这是H.264的概念,网络抽象层数据单元,其实简单理解就是一帧视频数据。\n // pps的信息没什么用,所以作者只实现了sps的分析器,说明作者下了很大功夫去学习264的标准,其中的Golomb解码还是挺复杂的,能解对不容易,我在PC和手机平台都是用ffmpeg去解析的。\n // SPS里面包括了视频分辨率,帧率,profile level等视频重要信息。\n let config = SPSParser.parseSPS(sps);\n if (i !== 0) {\n // ignore other sps's config\n continue;\n }\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n meta.presentWidth = config.present_size.width;\n meta.presentHeight = config.present_size.height;\n\n meta.profile = config.profile_string;\n meta.level = config.level_string;\n meta.bitDepth = config.bit_depth;\n meta.chromaFormat = config.chroma_format;\n meta.sarRatio = config.sar_ratio;\n meta.frameRate = config.frame_rate;\n\n if (config.frame_rate.fixed === false ||\n config.frame_rate.fps_num === 0 ||\n config.frame_rate.fps_den === 0) {\n meta.frameRate = {};\n }\n\n let fps_den = meta.frameRate.fps_den;\n let fps_num = meta.frameRate.fps_num;\n\n meta.refSampleDuration = meta.timescale * (fps_den / fps_num);\n\n let codecArray = sps.subarray(1, 4);\n\n let codecString = 'avc1.';\n for (let j = 0; j < 3; j++) {\n let h = codecArray[j].toString(16);\n if (h.length < 2) {\n h = '0' + h;\n }\n codecString += h;\n }\n // codec\n meta.codec = codecString;\n }\n\n let ppsCount = v.getUint8(offset); // numOfPictureParameterSets\n if (ppsCount === 0) {\n // this._onError(DemuxErrors.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');\n return meta;\n } else if (ppsCount > 1) {\n // Log.w(this.TAG, `Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${ppsCount}`);\n }\n\n offset++;\n for (let i = 0; i < ppsCount; i++) {\n let len = v.getUint16(offset, false); // pictureParameterSetLength\n offset += 2;\n\n if (len === 0) {\n continue;\n }\n let pps = new Uint8Array(arrayBuffer.buffer, offset, len);\n\n // pps is useless for extracting video information\n offset += len;\n }\n\n meta.videoType = 'avc';\n\n // meta.avcc = arrayBuffer;\n return meta;\n}\n","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE, WCS_ERROR} from \"../constant\";\nimport {parseAVCDecoderConfigurationRecord} from \"../utils/h264\";\n\n\nexport default class WebcodecsDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.hasInit = false;\n this.isDecodeFirstIIframe = false;\n this.isInitInfo = false;\n this.decoder = null;\n this.initDecoder();\n player.debug.log('Webcodecs', 'init')\n }\n\n destroy() {\n if (this.decoder) {\n if (this.decoder.state !== 'closed') {\n this.decoder.close();\n }\n this.decoder = null;\n }\n\n this.hasInit = false;\n this.isInitInfo = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('Webcodecs', 'destroy')\n }\n\n initDecoder() {\n const _this = this;\n this.decoder = new VideoDecoder({\n output(videoFrame) {\n _this.handleDecode(videoFrame)\n },\n error(error) {\n _this.handleError(error)\n }\n })\n }\n\n handleDecode(videoFrame) {\n if (!this.isInitInfo) {\n this.player.video.updateVideoInfo({\n width: videoFrame.codedWidth,\n height: videoFrame.codedHeight\n })\n this.player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n\n if (!this.player._times.videoStart) {\n this.player._times.videoStart = now();\n this.player.handlePlayToRenderTimes();\n }\n\n this.player.handleRender();\n this.player.video.render({\n videoFrame\n })\n\n this.player.updateStats({fps: true, ts: 0, buf: this.player.demux.delay})\n }\n\n handleError(error) {\n this.player.debug.error('Webcodecs', 'VideoDecoder handleError', error)\n }\n\n decodeVideo(payload, ts, isIframe) {\n // this.player.debug.log('Webcodecs decoder', 'decodeVideo', ts, isIframe);\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n this.player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n return;\n }\n if (!this.player._times.decodeStart) {\n this.player._times.decodeStart = now();\n }\n\n const config = formatVideoDecoderConfigure(payload.slice(5));\n this.decoder.configure(config);\n this.hasInit = true;\n }\n } else {\n\n // check width or height change\n if (isIframe && payload[1] === 0) {\n let data = payload.slice(5);\n const config = parseAVCDecoderConfigurationRecord(data)\n const videoInfo = this.player.video.videoInfo;\n if (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height) {\n this.player.debug.log('Webcodecs', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.player.emit(EVENTS_ERROR.webcodecsWidthOrHeightChange)\n return;\n }\n }\n\n\n // fix : Uncaught DOMException: Failed to execute 'decode' on 'VideoDecoder': A key frame is required after configure() or flush().\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n\n if (this.isDecodeFirstIIframe) {\n const chunk = new EncodedVideoChunk({\n data: payload.slice(5),\n timestamp: ts,\n type: isIframe ? ENCODED_VIDEO_TYPE.key : ENCODED_VIDEO_TYPE.delta\n })\n this.player.emit(EVENTS.timeUpdate, ts);\n try {\n this.decoder.decode(chunk);\n } catch (e) {\n this.player.debug.error('Webcodecs', 'VideoDecoder', e)\n if (e.toString().indexOf(WCS_ERROR.keyframeIsRequiredError) !== -1) {\n this.player.emit(EVENTS_ERROR.webcodecsDecodeError);\n\n }\n }\n } else {\n this.player.debug.warn('Webcodecs', 'VideoDecoder isDecodeFirstIIframe false')\n }\n }\n }\n}\n","const iconsMap = {\n play: '播放',\n pause: '暂停',\n audio: '',\n mute: '',\n screenshot: '截图',\n loading: '加载',\n fullscreen: '全屏',\n fullscreenExit: '退出全屏',\n record: '录制',\n recordStop: '停止录制',\n}\n\nexport default Object.keys(iconsMap).reduce((icons, key) => {\n icons[key] = `\n \n ${iconsMap[key] ? `${iconsMap[key]}` : ''}\n`;\n return icons;\n}, {});\n","import icons from './icons';\n\nexport default (player, control) => {\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n player.$container.classList.add('jessibuca-controls-show-auto-hide');\n }\n else {\n player.$container.classList.add('jessibuca-controls-show');\n }\n const options = player._opt;\n const operateBtns = options.operateBtns;\n\n\n player.$container.insertAdjacentHTML(\n 'beforeend',\n `\n ${options.background ? `
` : ''}\n
\n ${icons.loading}\n ${options.loadingText ? `
${options.loadingText}
` : ''}\n
\n ${options.hasControl && operateBtns.play ? `
` : ''}\n ${options.hasControl ? `\n
\n
\n
00:00:01
\n
${icons.recordStop}
\n
\n `:''}\n ${options.hasControl ? `\n
\n
\n
\n ${options.showBandwidth ? `
` : ''}\n
\n
\n ${operateBtns.audio ? `\n
\n ${icons.audio}\n ${icons.mute}\n
\n
\n
\n
\n
\n
\n
\n ` : ''}\n ${operateBtns.play ? `
${icons.play}
${icons.pause}
` : ''}\n ${operateBtns.screenshot ? `
${icons.screenshot}
` : ''}\n ${operateBtns.record ? `
${icons.record}
${icons.recordStop}
` : ''}\n ${operateBtns.fullscreen ? `
${icons.fullscreen}
${icons.fullscreenExit}
` : ''}\n
\n
\n
\n ` : ''}\n\n `\n )\n\n Object.defineProperty(control, '$poster', {\n value: player.$container.querySelector('.jessibuca-poster'),\n });\n\n Object.defineProperty(control, '$loading', {\n value: player.$container.querySelector('.jessibuca-loading'),\n });\n\n Object.defineProperty(control, '$play', {\n value: player.$container.querySelector('.jessibuca-play'),\n });\n\n Object.defineProperty(control, '$playBig', {\n value: player.$container.querySelector('.jessibuca-play-big'),\n });\n\n Object.defineProperty(control, '$recording', {\n value: player.$container.querySelector('.jessibuca-recording'),\n });\n Object.defineProperty(control, '$recordingTime', {\n value: player.$container.querySelector('.jessibuca-recording-time'),\n });\n\n Object.defineProperty(control, '$recordingStop', {\n value: player.$container.querySelector('.jessibuca-recording-stop'),\n });\n\n Object.defineProperty(control, '$pause', {\n value: player.$container.querySelector('.jessibuca-pause'),\n });\n\n Object.defineProperty(control, '$controls', {\n value: player.$container.querySelector('.jessibuca-controls'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n\n Object.defineProperty(control, '$volume', {\n value: player.$container.querySelector('.jessibuca-volume'),\n });\n\n Object.defineProperty(control, '$volumePanelWrap', {\n value: player.$container.querySelector('.jessibuca-volume-panel-wrap'),\n });\n\n Object.defineProperty(control, '$volumePanelText', {\n value: player.$container.querySelector('.jessibuca-volume-panel-text'),\n });\n\n Object.defineProperty(control, '$volumePanel', {\n value: player.$container.querySelector('.jessibuca-volume-panel'),\n });\n\n Object.defineProperty(control, '$volumeHandle', {\n value: player.$container.querySelector('.jessibuca-volume-panel-handle'),\n });\n\n Object.defineProperty(control, '$volumeOn', {\n value: player.$container.querySelector('.jessibuca-icon-audio'),\n });\n\n Object.defineProperty(control, '$volumeOff', {\n value: player.$container.querySelector('.jessibuca-icon-mute'),\n });\n\n\n Object.defineProperty(control, '$fullscreen', {\n value: player.$container.querySelector('.jessibuca-fullscreen'),\n });\n\n Object.defineProperty(control, '$fullscreenExit', {\n value: player.$container.querySelector('.jessibuca-fullscreen-exit'),\n });\n\n Object.defineProperty(control, '$record', {\n value: player.$container.querySelector('.jessibuca-record'),\n });\n Object.defineProperty(control, '$recordStop', {\n value: player.$container.querySelector('.jessibuca-record-stop'),\n });\n\n Object.defineProperty(control, '$screenshot', {\n value: player.$container.querySelector('.jessibuca-screenshot'),\n });\n\n Object.defineProperty(control, '$speed', {\n value: player.$container.querySelector('.jessibuca-speed'),\n });\n}\n","import {CONTROL_HEIGHT, EVENTS} from \"../constant\";\nimport {bpsSize, formatTimeTips, getStyle, isBoolean, isMobile, setStyle} from \"../utils\";\nimport screenfull from \"screenfull\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n } = player;\n\n const object = document.createElement('object');\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.type = 'text/html';\n object.data = 'about:blank';\n\n setStyle(object, {\n display: 'block',\n position: 'absolute',\n top: '0',\n left: '0',\n height: '100%',\n width: '100%',\n overflow: 'hidden',\n pointerEvents: 'none',\n zIndex: '-1',\n });\n\n let playerWidth = player.width;\n let playerHeight = player.height;\n\n proxy(object, 'load', () => {\n proxy(object.contentDocument.defaultView, 'resize', () => {\n if (player.width !== playerWidth || player.height !== playerHeight) {\n playerWidth = player.width;\n playerHeight = player.height;\n player.emit(EVENTS.resize);\n screenfullH5Control();\n }\n });\n });\n player.$container.appendChild(object);\n\n player.on(EVENTS.destroy, () => {\n player.$container.removeChild(object);\n })\n\n function setVolumeHandle(percentage) {\n if (percentage === 0) {\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'flex');\n setStyle(control.$volumeHandle, 'top', `${48}px`);\n } else {\n if (control.$volumeHandle && control.$volumePanel) {\n const panelHeight = getStyle(control.$volumePanel, 'height') || 60;\n const handleHeight = getStyle(control.$volumeHandle, 'height');\n const top = panelHeight - (panelHeight - handleHeight) * percentage - handleHeight;\n setStyle(control.$volumeHandle, 'top', `${top}px`);\n setStyle(control.$volumeOn, 'display', 'flex');\n setStyle(control.$volumeOff, 'display', 'none');\n }\n }\n control.$volumePanelText && (control.$volumePanelText.innerHTML = parseInt(percentage * 100))\n }\n\n player.on(EVENTS.volumechange, () => {\n setVolumeHandle(player.volume);\n });\n\n player.on(EVENTS.loading, (flag) => {\n setStyle(control.$loading, 'display', flag ? 'flex' : 'none');\n setStyle(control.$poster, 'display', 'none')\n\n if (flag) {\n setStyle(control.$playBig, 'display', 'none');\n }\n })\n\n const screenfullChange = (fullscreen) => {\n let isFullScreen = isBoolean(fullscreen) ? fullscreen : player.fullscreen\n setStyle(control.$fullscreenExit, 'display', isFullScreen ? 'flex' : 'none');\n setStyle(control.$fullscreen, 'display', isFullScreen ? 'none' : 'flex');\n // control.autoSize();\n };\n const screenfullH5Control = () => {\n if (isMobile() && control.$controls && player._opt.useWebFullScreen) {\n setTimeout(() => {\n if (player.fullscreen) {\n // console.log(player.width, player.height);\n let translateX = player.height / 2 - player.width + CONTROL_HEIGHT / 2;\n let translateY = player.height / 2 - CONTROL_HEIGHT / 2;\n\n control.$controls.style.transform = `translateX(${-translateX}px) translateY(-${translateY}px) rotate(-90deg)`\n } else {\n control.$controls.style.transform = `translateX(0) translateY(0) rotate(0)`\n }\n\n }, 10)\n }\n }\n\n try {\n\n screenfull.on('change', screenfullChange);\n player.events.destroys.push(() => {\n screenfull.off('change', screenfullChange);\n });\n } catch (error) {\n //\n }\n\n //\n player.on(EVENTS.webFullscreen, (value) => {\n screenfullChange(value);\n screenfullH5Control();\n\n })\n\n\n player.on(EVENTS.recording, () => {\n setStyle(control.$record, 'display', player.recording ? 'none' : 'flex');\n setStyle(control.$recordStop, 'display', player.recording ? 'flex' : 'none');\n setStyle(control.$recording, 'display', player.recording ? 'flex' : 'none')\n })\n\n //\n player.on(EVENTS.recordingTimestamp, (timestamp) => {\n // console.log(timestamp);\n control.$recordingTime && (control.$recordingTime.innerHTML = formatTimeTips(timestamp))\n })\n\n player.on(EVENTS.playing, (flag) => {\n setStyle(control.$play, 'display', flag ? 'none' : 'flex');\n setStyle(control.$playBig, 'display', flag ? 'none' : 'block');\n setStyle(control.$pause, 'display', flag ? 'flex' : 'none');\n setStyle(control.$screenshot, 'display', flag ? 'flex' : 'none');\n setStyle(control.$record, 'display', flag ? 'flex' : 'none');\n setStyle(control.$qualityMenu, 'display', flag ? 'flex' : 'none');\n setStyle(control.$volume, 'display', flag ? 'flex' : 'none');\n // setStyle(control.$fullscreen, 'display', flag ? 'flex' : 'none');\n screenfullChange();\n // 不在播放\n if (!flag) {\n control.$speed && (control.$speed.innerHTML = bpsSize(''));\n }\n })\n\n\n player.on(EVENTS.kBps, (rate) => {\n const bps = bpsSize(rate);\n control.$speed && (control.$speed.innerHTML = bps);\n })\n}\n","export default (player, control) => {\n\n Object.defineProperty(control, 'controlsRect', {\n get: () => {\n return control.$controls.getBoundingClientRect();\n },\n });\n\n}\n","import {clamp, isMobile, setStyle} from \"../utils\";\n\nexport default (player, control) => {\n const {\n events: {proxy},\n debug\n } = player;\n\n function volumeChangeFromEvent(event) {\n const {bottom: panelBottom, height: panelHeight} = control.$volumePanel.getBoundingClientRect();\n const {height: handleHeight} = control.$volumeHandle.getBoundingClientRect();\n\n let moveLen = event.y;\n\n // if (isMobile() && player.fullscreen) {\n // moveLen = event.x;\n // }\n\n const percentage =\n clamp(panelBottom - moveLen - handleHeight / 2, 0, panelHeight - handleHeight / 2) / (panelHeight - handleHeight);\n return percentage;\n }\n\n //\n proxy(window, ['click', 'contextmenu'], event => {\n if (event.composedPath().indexOf(player.$container) > -1) {\n control.isFocus = true;\n } else {\n control.isFocus = false;\n }\n });\n\n //\n proxy(window, 'orientationchange', () => {\n setTimeout(() => {\n player.resize();\n }, 300);\n });\n\n\n proxy(control.$controls, 'click', (e) => {\n e.stopPropagation();\n })\n\n proxy(control.$pause, 'click', (e) => {\n player.pause();\n })\n // 监听 play 方法\n proxy(control.$play, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\n player.resumeAudioAfterPause()\n })\n\n proxy(control.$volume, 'mouseover', () => {\n control.$volumePanelWrap.classList.add('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volume, 'mouseout', () => {\n control.$volumePanelWrap.classList.remove('jessibuca-volume-panel-wrap-show');\n })\n\n proxy(control.$volumeOn, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'none');\n setStyle(control.$volumeOff, 'display', 'block');\n const lastVolume = player.volume;\n player.volume = 0;\n player._lastVolume = lastVolume;\n })\n\n proxy(control.$volumeOff, 'click', (e) => {\n e.stopPropagation();\n setStyle(control.$volumeOn, 'display', 'block');\n setStyle(control.$volumeOff, 'display', 'none');\n player.volume = player.lastVolume || 0.5;\n })\n\n proxy(control.$screenshot, 'click', (e) => {\n e.stopPropagation();\n player.video.screenshot();\n })\n\n proxy(control.$volumePanel, 'click', event => {\n event.stopPropagation();\n player.volume = volumeChangeFromEvent(event);\n });\n\n proxy(control.$volumeHandle, 'mousedown', () => {\n control.isVolumeDroging = true;\n });\n\n proxy(control.$volumeHandle, 'mousemove', event => {\n if (control.isVolumeDroging) {\n player.volume = volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (control.isVolumeDroging) {\n control.isVolumeDroging = false;\n }\n });\n\n proxy(control.$record, 'click', (e) => {\n e.stopPropagation();\n player.recording = true;\n })\n\n proxy(control.$recordStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$recordingStop, 'click', (e) => {\n e.stopPropagation();\n player.recording = false;\n })\n\n proxy(control.$fullscreen, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = true;\n })\n\n proxy(control.$fullscreenExit, 'click', (e) => {\n e.stopPropagation();\n player.fullscreen = false;\n })\n\n if (player._opt.hasControl && player._opt.controlAutoHide) {\n //\n proxy(player.$container, 'mouseover', () => {\n if (!player.fullscreen) {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n })\n\n proxy(player.$container, 'mousemove', () => {\n if (player.$container && control.$controls) {\n if (!player.fullscreen) {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n } else {\n if (control.$controls.style.display === 'none') {\n setStyle(control.$controls, 'display', 'block');\n startDelayControlHidden();\n }\n }\n }\n })\n\n proxy(player.$container, 'mouseout', () => {\n stopDelayControlHidden();\n setStyle(control.$controls, 'display', 'none');\n })\n let delayHiddenTimeout = null;\n const startDelayControlHidden = () => {\n stopDelayControlHidden();\n delayHiddenTimeout = setTimeout(() => {\n setStyle(control.$controls, 'display', 'none');\n }, 5 * 1000)\n }\n\n const stopDelayControlHidden = () => {\n if (delayHiddenTimeout) {\n clearTimeout(delayHiddenTimeout);\n delayHiddenTimeout = null;\n }\n }\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// todo: 待定\nimport {HOT_KEY} from \"../constant\";\n\nexport default (player, control) => {\n const {\n events: {proxy}\n } = player;\n\n const keys = {};\n\n function addHotkey(key, event) {\n if (keys[key]) {\n keys[key].push(event);\n } else {\n keys[key] = [event];\n }\n }\n\n //\n addHotkey(HOT_KEY.esc, () => {\n if (player.fullscreen) {\n player.fullscreen = false;\n }\n })\n\n //\n addHotkey(HOT_KEY.arrowUp, () => {\n player.volume += 0.05;\n })\n\n //\n addHotkey(HOT_KEY.arrowDown, () => {\n player.volume -= 0.05;\n })\n\n proxy(window, 'keydown', event => {\n if (control.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {\n const events = keys[event.keyCode];\n if (events) {\n event.preventDefault();\n events.forEach(fn => fn());\n }\n }\n }\n });\n}\n","import template from \"./template\";\nimport observer from './observer';\nimport property from './property';\nimport events from './events';\nimport './style.scss'\nimport hotkey from \"./hotkey\";\n\nexport default class Control {\n constructor(player) {\n this.player = player;\n template(player, this);\n property(player, this);\n observer(player, this);\n events(player, this);\n if (player._opt.hotKey) {\n hotkey(player, this);\n }\n this.player.debug.log('Control', 'init');\n }\n\n destroy() {\n if (this.$poster) {\n this.player.$container.removeChild(this.$poster);\n }\n if (this.$loading) {\n this.player.$container.removeChild(this.$loading);\n }\n if (this.$controls) {\n this.player.$container.removeChild(this.$controls);\n }\n\n if(this.$recording){\n this.player.$container.removeChild(this.$recording);\n }\n\n if(this.$playBig){\n this.player.$container.removeChild(this.$playBig);\n }\n\n this.player.debug.log('control', 'destroy');\n }\n\n autoSize() {\n const player = this.player;\n player.$container.style.padding = '0 0';\n const playerWidth = player.width;\n const playerHeight = player.height;\n const playerRatio = playerWidth / playerHeight;\n const canvasWidth = player.video.$videoElement.width;\n const canvasHeight = player.video.$videoElement.height;\n const canvasRatio = canvasWidth / canvasHeight;\n if (playerRatio > canvasRatio) {\n const padding = (playerWidth - playerHeight * canvasRatio) / 2;\n player.$container.style.padding = `0 ${padding}px`;\n } else {\n const padding = (playerHeight - playerWidth / canvasRatio) / 2;\n player.$container.style.padding = `${padding}px 0`;\n }\n }\n\n\n}\n","import {getTarget} from \"../utils\";\n\nexport default (player) => {\n\n const {\n _opt,\n debug,\n events: {proxy},\n } = player;\n\n\n if (_opt.supportDblclickFullscreen) {\n proxy(player.$container, 'dblclick', (e) => {\n const target = getTarget(e);\n const nodeName = target.nodeName.toLowerCase();\n if (nodeName === 'canvas' || nodeName === 'video') {\n player.fullscreen = !player.fullscreen;\n }\n })\n }\n\n\n //\n proxy(document, 'visibilitychange', () => {\n if (_opt.hiddenAutoPause) {\n debug.log('visibilitychange', document.visibilityState, player._isPlayingBeforePageHidden)\n\n if (\"visible\" === document.visibilityState) {\n if (player._isPlayingBeforePageHidden) {\n player.play();\n }\n } else {\n player._isPlayingBeforePageHidden = player.playing;\n // hidden\n if (player.playing) {\n player.pause();\n }\n }\n }\n })\n\n proxy(window, 'fullscreenchange', () => {\n //\n if (player.keepScreenOn !== null && \"visible\" === document.visibilityState) {\n player.enableWakeLock();\n }\n })\n}\n","class MP4 {\n\n static init() {\n MP4.types = {\n avc1: [],\n avcC: [],\n hvc1: [],\n hvcC: [],\n btrt: [],\n dinf: [],\n dref: [],\n esds: [],\n ftyp: [],\n hdlr: [],\n mdat: [],\n mdhd: [],\n mdia: [],\n mfhd: [],\n minf: [],\n moof: [],\n moov: [],\n mp4a: [],\n mvex: [],\n mvhd: [],\n sdtp: [],\n stbl: [],\n stco: [],\n stsc: [],\n stsd: [],\n stsz: [],\n stts: [],\n tfdt: [],\n tfhd: [],\n traf: [],\n trak: [],\n trun: [],\n trex: [],\n tkhd: [],\n vmhd: [],\n smhd: []\n };\n\n for (let name in MP4.types) {\n if (MP4.types.hasOwnProperty(name)) {\n MP4.types[name] = [\n name.charCodeAt(0),\n name.charCodeAt(1),\n name.charCodeAt(2),\n name.charCodeAt(3)\n ];\n }\n }\n\n let constants = MP4.constants = {};\n\n constants.FTYP = new Uint8Array([\n 0x69, 0x73, 0x6F, 0x6D, // major_brand: isom\n 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01\n 0x69, 0x73, 0x6F, 0x6D, // isom\n 0x61, 0x76, 0x63, 0x31 // avc1\n ]);\n\n constants.STSD_PREFIX = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01 // entry_count\n ]);\n\n constants.STTS = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // entry_count\n ]);\n\n constants.STSC = constants.STCO = constants.STTS;\n\n constants.STSZ = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // sample_size\n 0x00, 0x00, 0x00, 0x00 // sample_count\n ]);\n\n constants.HDLR_VIDEO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x56, 0x69, 0x64, 0x65,\n 0x6F, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler\n ]);\n\n constants.HDLR_AUDIO = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // pre_defined\n 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'\n 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x53, 0x6F, 0x75, 0x6E,\n 0x64, 0x48, 0x61, 0x6E,\n 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler\n ]);\n\n constants.DREF = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x01, // entry_count\n 0x00, 0x00, 0x00, 0x0C, // entry_size\n 0x75, 0x72, 0x6C, 0x20, // type 'url '\n 0x00, 0x00, 0x00, 0x01 // version(0) + flags\n ]);\n\n // Sound media header\n constants.SMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)\n ]);\n\n // video media header\n constants.VMHD = new Uint8Array([\n 0x00, 0x00, 0x00, 0x01, // version(0) + flags\n 0x00, 0x00, // graphicsmode: 2 bytes\n 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes\n 0x00, 0x00\n ]);\n }\n\n // Generate a box\n static box(type) {\n let size = 8;\n let result = null;\n let datas = Array.prototype.slice.call(arguments, 1);\n let arrayCount = datas.length;\n\n for (let i = 0; i < arrayCount; i++) {\n size += datas[i].byteLength;\n }\n\n result = new Uint8Array(size);\n result[0] = (size >>> 24) & 0xFF; // size\n result[1] = (size >>> 16) & 0xFF;\n result[2] = (size >>> 8) & 0xFF;\n result[3] = (size) & 0xFF;\n\n result.set(type, 4); // type\n\n let offset = 8;\n for (let i = 0; i < arrayCount; i++) { // data body\n result.set(datas[i], offset);\n offset += datas[i].byteLength;\n }\n\n return result;\n }\n\n // emit ftyp & moov\n static generateInitSegment(meta) {\n let ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);\n let moov = MP4.moov(meta);\n\n let result = new Uint8Array(ftyp.byteLength + moov.byteLength);\n result.set(ftyp, 0);\n result.set(moov, ftyp.byteLength);\n return result;\n }\n\n // Movie metadata box\n static moov(meta) {\n let mvhd = MP4.mvhd(meta.timescale, meta.duration);\n let trak = MP4.trak(meta);\n let mvex = MP4.mvex(meta);\n return MP4.box(MP4.types.moov, mvhd, trak, mvex);\n }\n\n // Movie header box\n static mvhd(timescale, duration) {\n return MP4.box(MP4.types.mvhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0\n 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----\n 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID\n ]));\n }\n\n // Track box\n static trak(meta) {\n return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));\n }\n\n // Track header box\n static tkhd(meta) {\n let trackId = meta.id, duration = meta.duration;\n let width = meta.presentWidth, height = meta.presentHeight;\n\n return MP4.box(MP4.types.tkhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x07, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (trackId >>> 24) & 0xFF, // track_ID: 4 bytes\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)\n 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)\n 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x01, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00,\n 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----\n (width >>> 8) & 0xFF, // width and height\n (width) & 0xFF,\n 0x00, 0x00,\n (height >>> 8) & 0xFF,\n (height) & 0xFF,\n 0x00, 0x00\n ]));\n }\n\n static mdia(meta) {\n return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta))\n }\n\n // Media header box\n static mdhd(meta) {\n let timescale = meta.timescale;\n let duration = meta.duration;\n return MP4.box(MP4.types.mdhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n 0x00, 0x00, 0x00, 0x00, // creation_time\n 0x00, 0x00, 0x00, 0x00, // modification_time\n (timescale >>> 24) & 0xFF, // timescale: 4 bytes\n (timescale >>> 16) & 0xFF,\n (timescale >>> 8) & 0xFF,\n (timescale) & 0xFF,\n (duration >>> 24) & 0xFF, // duration: 4 bytes\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n 0x55, 0xC4, // language: und (undetermined)\n 0x00, 0x00 // pre_defined = 0\n ]));\n }\n\n // Media handler reference box\n static hdlr(meta) {\n let data = null;\n if (meta.type === 'audio') {\n data = MP4.constants.HDLR_AUDIO;\n } else {\n data = MP4.constants.HDLR_VIDEO;\n }\n return MP4.box(MP4.types.hdlr, data);\n }\n\n // Media infomation box\n static minf(meta) {\n let xmhd = null;\n if (meta.type === 'audio') {\n xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);\n } else {\n xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);\n }\n return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));\n }\n\n // Data infomation box\n static dinf() {\n let result = MP4.box(MP4.types.dinf,\n MP4.box(MP4.types.dref, MP4.constants.DREF)\n );\n return result;\n }\n\n // Sample table box\n static stbl(meta) {\n let result = MP4.box(MP4.types.stbl, // type: stbl\n MP4.stsd(meta), // Sample Description Table\n MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample\n MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk\n MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size\n MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset\n );\n return result;\n }\n\n // Sample description box\n static stsd(meta) {\n if (meta.type === 'audio') {\n // else: aac -> mp4a\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));\n } else {\n if (meta.videoType === 'avc') {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));\n } else {\n //\n return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.hvc1(meta))\n }\n }\n }\n\n static mp4a(meta) {\n let channelCount = meta.channelCount;\n let sampleRate = meta.audioSampleRate;\n\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)\n 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes\n 0x00, 0x00, 0x00, 0x00,\n 0x00, channelCount, // channelCount(2)\n 0x00, 0x10, // sampleSize(2)\n 0x00, 0x00, 0x00, 0x00, // reserved(4)\n (sampleRate >>> 8) & 0xFF, // Audio sample rate\n (sampleRate) & 0xFF,\n 0x00, 0x00\n ]);\n\n return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));\n }\n\n static esds(meta) {\n let config = meta.config || [];\n let configSize = config.length;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version 0 + flags\n\n 0x03, // descriptor_type\n 0x17 + configSize, // length3\n 0x00, 0x01, // es_id\n 0x00, // stream_priority\n\n 0x04, // descriptor_type\n 0x0F + configSize, // length\n 0x40, // codec: mpeg4_audio\n 0x15, // stream_type: Audio\n 0x00, 0x00, 0x00, // buffer_size\n 0x00, 0x00, 0x00, 0x00, // maxBitrate\n 0x00, 0x00, 0x00, 0x00, // avgBitrate\n\n 0x05 // descriptor_type\n ].concat([\n configSize\n ]).concat(\n config\n ).concat([\n 0x06, 0x01, 0x02 // GASpecificConfig\n ]));\n return MP4.box(MP4.types.esds, data);\n }\n\n // avc\n static avc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255]\n );\n return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc))\n }\n\n // hvc\n static hvc1(meta) {\n let avcc = meta.avcc;\n const width = meta.codecWidth;\n const height = meta.codecHeight;\n let data = new Uint8Array([\n 0, 0, 0, 0,\n 0, 0, 0, 1,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n width >>> 8 & 255,\n width & 255,\n height >>> 8 & 255,\n height & 255,\n 0, 72, 0, 0,\n 0, 72, 0, 0,\n 0, 0, 0, 0,\n 0, 1,\n 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0, 0,\n 0, 0, 0,\n 0, 24,\n 255, 255\n ]);\n return MP4.box(MP4.types.hvc1, data, MP4.box(MP4.types.hvcC, avcc))\n }\n\n // Movie Extends box\n static mvex(meta) {\n return MP4.box(MP4.types.mvex, MP4.trex(meta))\n }\n\n // Track Extends box\n static trex(meta) {\n let trackId = meta.id;\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) + flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF,\n 0x00, 0x00, 0x00, 0x01, // default_sample_description_index\n 0x00, 0x00, 0x00, 0x00, // default_sample_duration\n 0x00, 0x00, 0x00, 0x00, // default_sample_size\n 0x00, 0x01, 0x00, 0x01 // default_sample_flags\n ]);\n return MP4.box(MP4.types.trex, data);\n }\n\n // Movie fragment box\n static moof(track, baseMediaDecodeTime) {\n return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime))\n }\n //\n static mfhd(sequenceNumber) {\n let data = new Uint8Array([\n 0x00, 0x00, 0x00, 0x00,\n (sequenceNumber >>> 24) & 0xFF, // sequence_number: int32\n (sequenceNumber >>> 16) & 0xFF,\n (sequenceNumber >>> 8) & 0xFF,\n (sequenceNumber) & 0xFF\n ]);\n return MP4.box(MP4.types.mfhd, data);\n }\n\n // Track fragment box\n static traf(track, baseMediaDecodeTime) {\n let trackId = track.id;\n\n // Track fragment header box\n let tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (trackId >>> 24) & 0xFF, // track_ID\n (trackId >>> 16) & 0xFF,\n (trackId >>> 8) & 0xFF,\n (trackId) & 0xFF\n ]));\n // Track Fragment Decode Time\n let tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([\n 0x00, 0x00, 0x00, 0x00, // version(0) & flags\n (baseMediaDecodeTime >>> 24) & 0xFF, // baseMediaDecodeTime: int32\n (baseMediaDecodeTime >>> 16) & 0xFF,\n (baseMediaDecodeTime >>> 8) & 0xFF,\n (baseMediaDecodeTime) & 0xFF\n ]));\n let sdtp = MP4.sdtp(track);\n let trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);\n\n return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);\n }\n\n // Sample Dependency Type box\n static sdtp(track) {\n let data = new Uint8Array(4 + 1);\n let flags = track.flags;\n data[4] = flags.isLeading << 6\n | flags.dependsOn << 4\n | flags.isDependedOn << 2\n | flags.hasRedundancy;\n return MP4.box(MP4.types.sdtp, data);\n }\n // trun\n static trun(track, offset) {\n let dataSize = 12 + 16;\n let data = new Uint8Array(dataSize);\n offset += 8 + dataSize;\n\n data.set([\n 0x00, 0x00, 0x0F, 0x01, // version(0) & flags\n 0x00, 0x00, 0x00, 0x01, // sample_count\n (offset >>> 24) & 0xFF, // data_offset\n (offset >>> 16) & 0xFF,\n (offset >>> 8) & 0xFF,\n (offset) & 0xFF\n ], 0);\n\n let duration = track.duration;\n let size = track.size;\n let flags = track.flags;\n let cts = track.cts;\n\n data.set([\n (duration >>> 24) & 0xFF, // sample_duration\n (duration >>> 16) & 0xFF,\n (duration >>> 8) & 0xFF,\n (duration) & 0xFF,\n (size >>> 24) & 0xFF, // sample_size\n (size >>> 16) & 0xFF,\n (size >>> 8) & 0xFF,\n (size) & 0xFF,\n (flags.isLeading << 2) | flags.dependsOn, // sample_flags\n (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,\n 0x00, 0x00, // sample_degradation_priority\n (cts >>> 24) & 0xFF, // sample_composition_time_offset\n (cts >>> 16) & 0xFF,\n (cts >>> 8) & 0xFF,\n (cts) & 0xFF\n ], 12);\n\n return MP4.box(MP4.types.trun, data);\n }\n // mdat\n static mdat(data) {\n return MP4.box(MP4.types.mdat, data)\n }\n}\n\nMP4.init();\n\nexport default MP4;\n","import Emitter from \"../utils/emitter\";\nimport {EVENTS, EVENTS_ERROR, FRAG_DURATION, MEDIA_SOURCE_STATE, MP4_CODECS, VIDEO_ENC_CODE} from \"../constant\";\nimport MP4 from \"../remux/fmp4-generator\";\nimport {parseAVCDecoderConfigurationRecord,} from \"../utils/h264\";\nimport {now} from \"../utils\";\n\nexport default class MseDecoder extends Emitter {\n constructor(player) {\n super();\n this.player = player;\n this.isAvc = true;\n this.mediaSource = new window.MediaSource();\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.cacheTrack = {};\n this.timeInit = false;\n this.sequenceNumber = 0;\n this.mediaSourceOpen = false;\n this.dropping = false;\n this.firstRenderTime = null;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.player.video.$videoElement.src = window.URL.createObjectURL(this.mediaSource);\n const {\n debug,\n events: {proxy},\n } = player;\n\n\n proxy(this.mediaSource, 'sourceopen', () => {\n this.mediaSourceOpen = true;\n this.player.emit(EVENTS.mseSourceOpen)\n })\n\n proxy(this.mediaSource, 'sourceclose', () => {\n this.player.emit(EVENTS.mseSourceClose);\n })\n\n player.debug.log('MediaSource', 'init')\n }\n\n destroy() {\n this.stop();\n this.mediaSource = null;\n this.mediaSourceOpen = false;\n this.sourceBuffer = null;\n this.hasInit = false;\n this.isInitInfo = false;\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n this.mediaSourceAppendBufferError = false;\n this.mediaSourceAppendBufferFull = false;\n this.isDecodeFirstIIframe = false;\n this.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return this.mediaSource && this.mediaSource.readyState\n }\n\n get isStateOpen() {\n return this.state === MEDIA_SOURCE_STATE.open;\n }\n\n get isStateClosed() {\n return this.state === MEDIA_SOURCE_STATE.closed;\n }\n\n get isStateEnded() {\n return this.state === MEDIA_SOURCE_STATE.ended;\n }\n\n get duration() {\n return this.mediaSource && this.mediaSource.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe, cts) {\n const player = this.player;\n\n if (!player) {\n return;\n }\n\n if (!this.hasInit) {\n if (isIframe && payload[1] === 0) {\n const videoCodec = (payload[0] & 0x0F);\n player.video.updateVideoInfo({\n encTypeCode: videoCodec\n })\n\n // 如果解码出来的是\n if (videoCodec === VIDEO_ENC_CODE.h265) {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n return;\n }\n if (!player._times.decodeStart) {\n player._times.decodeStart = now();\n }\n\n this._decodeConfigurationRecord(payload, ts, isIframe, videoCodec)\n this.hasInit = true;\n }\n } else {\n if (isIframe && payload[1] === 0) {\n let config = parseAVCDecoderConfigurationRecord(payload.slice(5))\n const videoInfo = this.player.video.videoInfo;\n if ((videoInfo && videoInfo.width && videoInfo.height) && (config && config.codecWidth && config.codecHeight) && (config.codecWidth !== videoInfo.width || config.codecHeight !== videoInfo.height)) {\n this.player.debug.warn('MediaSource', `width or height is update, width ${videoInfo.width}-> ${config.codecWidth}, height ${videoInfo.height}-> ${config.codecHeight}`)\n this.isInitInfo = false;\n this.player.video.init = false;\n }\n }\n\n if (!this.isDecodeFirstIIframe && isIframe) {\n this.isDecodeFirstIIframe = true;\n }\n if (this.isDecodeFirstIIframe) {\n if (this.firstRenderTime === null) {\n this.firstRenderTime = ts;\n }\n const dts = ts - this.firstRenderTime;\n\n this._decodeVideo(payload, dts, isIframe, cts);\n } else {\n this.player.debug.warn('MediaSource', 'decodeVideo isDecodeFirstIIframe false')\n }\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n config = parseAVCDecoderConfigurationRecord(data)\n\n const metaData = {\n id: 1, // video tag data\n type: 'video',\n timescale: 1000,\n duration: 0,\n avcc: data,\n codecWidth: config.codecWidth,\n codecHeight: config.codecHeight,\n videoType: config.videoType\n }\n // ftyp\n const metaBox = MP4.generateInitSegment(metaData);\n this.isAvc = true;\n this.appendBuffer(metaBox.buffer);\n this.sequenceNumber = 0;\n this.cacheTrack = null;\n this.timeInit = false;\n }\n\n //\n _decodeVideo(payload, dts, isIframe, cts) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n const videoBufferDelay = player._opt.videoBufferDelay;\n if ($video.buffered.length > 1) {\n this.removeBuffer($video.buffered.start(0), $video.buffered.end(0));\n this.timeInit = false;\n }\n if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) {\n this.dropping = false;\n this.cacheTrack = {};\n } else if (this.cacheTrack && dts >= this.cacheTrack.dts) {\n // 需要额外加8个size\n let mdatBytes = 8 + this.cacheTrack.size;\n let mdatbox = new Uint8Array(mdatBytes);\n mdatbox[0] = mdatBytes >>> 24 & 255;\n mdatbox[1] = mdatBytes >>> 16 & 255;\n mdatbox[2] = mdatBytes >>> 8 & 255;\n mdatbox[3] = mdatBytes & 255;\n mdatbox.set(MP4.types.mdat, 4);\n mdatbox.set(this.cacheTrack.data, 8);\n\n this.cacheTrack.duration = dts - this.cacheTrack.dts;\n // moof\n let moofbox = MP4.moof(this.cacheTrack, this.cacheTrack.dts);\n let result = new Uint8Array(moofbox.byteLength + mdatbox.byteLength);\n result.set(moofbox, 0);\n result.set(mdatbox, moofbox.byteLength);\n // appendBuffer\n this.appendBuffer(result.buffer)\n player.handleRender();\n player.updateStats({fps: true, ts: dts, buf: (player.demux && player.demux.delay) || 0})\n if (!player._times.videoStart) {\n player._times.videoStart = now();\n player.handlePlayToRenderTimes()\n }\n } else {\n player.debug.log('MediaSource', 'timeInit set false , cacheTrack = {}');\n this.timeInit = false;\n this.cacheTrack = {};\n }\n if (!this.cacheTrack) {\n this.cacheTrack = {};\n }\n this.cacheTrack.id = 1;\n this.cacheTrack.sequenceNumber = ++this.sequenceNumber;\n this.cacheTrack.size = bytes;\n this.cacheTrack.dts = dts;\n this.cacheTrack.cts = cts;\n this.cacheTrack.isKeyframe = isIframe;\n this.cacheTrack.data = arrayBuffer;\n //\n this.cacheTrack.flags = {\n isLeading: 0,\n dependsOn: isIframe ? 2 : 1,\n isDependedOn: isIframe ? 1 : 0,\n hasRedundancy: 0,\n isNonSync: isIframe ? 0 : 1\n }\n\n //\n if (!this.timeInit && $video.buffered.length === 1) {\n player.debug.log('MediaSource', 'timeInit set true');\n this.timeInit = true;\n $video.currentTime = $video.buffered.end(0);\n }\n\n if (!this.isInitInfo && $video.videoWidth > 0 && $video.videoHeight > 0) {\n player.debug.log('MediaSource', `updateVideoInfo: ${$video.videoWidth},${$video.videoHeight}`);\n player.video.updateVideoInfo({\n width: $video.videoWidth,\n height: $video.videoHeight\n })\n player.video.initCanvasViewSize();\n this.isInitInfo = true;\n }\n }\n\n appendBuffer(buffer) {\n const {\n debug,\n events: {proxy},\n } = this.player;\n\n if (this.sourceBuffer === null) {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(MP4_CODECS.avc);\n proxy(this.sourceBuffer, 'error', (error) => {\n this.player.emit(EVENTS.mseSourceBufferError, error);\n // this.dropSourceBuffer(false)\n })\n }\n\n if (this.mediaSourceAppendBufferError) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferError is true`);\n return;\n }\n\n if (this.mediaSourceAppendBufferFull) {\n debug.error('MediaSource', `this.mediaSourceAppendBufferFull is true`);\n return;\n }\n\n\n if (this.sourceBuffer.updating === false && this.isStateOpen) {\n try {\n this.sourceBuffer.appendBuffer(buffer);\n } catch (e) {\n debug.warn('MediaSource', 'this.sourceBuffer.appendBuffer()', e.code, e);\n if (e.code === 22) {\n // QuotaExceededError\n // The SourceBuffer is full, and cannot free space to append additional buffers\n this.stop();\n this.mediaSourceAppendBufferFull = true;\n this.emit(EVENTS_ERROR.mediaSourceFull)\n } else if (e.code === 11) {\n // Failed to execute 'appendBuffer' on 'SourceBuffer': The HTMLMediaElement.error attribute is not null.\n this.stop();\n this.mediaSourceAppendBufferError = true;\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError);\n } else {\n debug.error('MediaSource', 'appendBuffer error', e)\n this.player.emit(EVENTS.mseSourceBufferError, e);\n }\n }\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emit(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emit(EVENTS_ERROR.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(true);\n }\n }\n }\n\n stop() {\n this.abortSourceBuffer();\n this.removeSourceBuffer();\n this.endOfStream();\n }\n\n dropSourceBuffer(isDropping) {\n const $video = this.player.video.$videoElement;\n this.dropping = isDropping;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\n this.player.debug.warn('MediaSource', 'dropSourceBuffer', `$video.buffered.end(0) is ${$video.buffered.end(0)} - $video.currentTime ${$video.currentTime}`);\n $video.currentTime = $video.buffered.end(0);\n }\n }\n }\n\n\n removeBuffer(start, end) {\n\n if (this.isStateOpen && this.sourceBuffer.updating === false) {\n try {\n this.sourceBuffer.remove(start, end)\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeBuffer() error', e);\n }\n } else {\n this.player.debug.warn('MediaSource', 'removeBuffer() this.isStateOpen is', this.isStateOpen, 'this.sourceBuffer.updating', this.sourceBuffer.updating);\n }\n }\n\n endOfStream() {\n // fix: MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error\n const $videoElement = this.player.video && this.player.video.$videoElement;\n if (this.isStateOpen && $videoElement && $videoElement.readyState >= 1) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n this.player.debug.warn('MediaSource', 'endOfStream() error', e);\n }\n }\n }\n\n abortSourceBuffer() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n this.sourceBuffer = null;\n }\n }\n }\n\n removeSourceBuffer() {\n if (!this.isStateClosed) {\n if (this.mediaSource && this.sourceBuffer) {\n try {\n this.mediaSource.removeSourceBuffer(this.sourceBuffer);\n } catch (e) {\n this.player.debug.warn('MediaSource', 'removeSourceBuffer() error', e);\n }\n }\n }\n }\n\n\n}\n","// tks: https://github.com/richtr/NoSleep.js\n\nconst WEBM = \"data:video/webm;base64,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\";\nconst MP4 = \"data:video/mp4;base64,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\";\n\n\n// Detect iOS browsers < version 10\nconst\n oldIOS = () =>\n typeof navigator !== \"undefined\" &&\n parseFloat(\n (\n \"\" +\n (/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(\n navigator.userAgent\n ) || [0, \"\"])[1]\n )\n .replace(\"undefined\", \"3_2\")\n .replace(\"_\", \".\")\n .replace(\"_\", \"\")\n ) < 10 &&\n !window.MSStream;\n\n// Detect native Wake Lock API support\nconst nativeWakeLock = () => \"wakeLock\" in navigator;\n\nexport default class NoSleep {\n constructor(player) {\n this.player = player;\n this.enabled = false;\n if (nativeWakeLock()) {\n this._wakeLock = null;\n const handleVisibilityChange = () => {\n if (this._wakeLock !== null && document.visibilityState === \"visible\") {\n this.enable();\n }\n };\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n document.addEventListener(\"fullscreenchange\", handleVisibilityChange);\n } else if (oldIOS()) {\n this.noSleepTimer = null;\n } else {\n // Set up no sleep video element\n this.noSleepVideo = document.createElement(\"video\");\n\n this.noSleepVideo.setAttribute(\"title\", \"No Sleep\");\n this.noSleepVideo.setAttribute(\"playsinline\", \"\");\n\n this._addSourceToVideo(this.noSleepVideo, \"webm\", WEBM);\n this._addSourceToVideo(this.noSleepVideo, \"mp4\", MP4);\n\n this.noSleepVideo.addEventListener(\"loadedmetadata\", () => {\n if (this.noSleepVideo.duration <= 1) {\n // webm source\n this.noSleepVideo.setAttribute(\"loop\", \"\");\n } else {\n // mp4 source\n this.noSleepVideo.addEventListener(\"timeupdate\", () => {\n if (this.noSleepVideo.currentTime > 0.5) {\n this.noSleepVideo.currentTime = Math.random();\n }\n });\n }\n });\n }\n }\n\n _addSourceToVideo(element, type, dataURI) {\n var source = document.createElement(\"source\");\n source.src = dataURI;\n source.type = `video/${type}`;\n element.appendChild(source);\n }\n\n get isEnabled() {\n return this.enabled;\n }\n\n enable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n return navigator.wakeLock\n .request(\"screen\")\n .then((wakeLock) => {\n this._wakeLock = wakeLock;\n this.enabled = true;\n debug.log('wakeLock', 'Wake Lock active.')\n this._wakeLock.addEventListener(\"release\", () => {\n // ToDo: Potentially emit an event for the page to observe since\n // Wake Lock releases happen when page visibility changes.\n // (https://web.dev/wakelock/#wake-lock-lifecycle)\n debug.log('wakeLock', 'Wake Lock released.')\n });\n })\n .catch((err) => {\n this.enabled = false;\n debug.error('wakeLock', `${err.name}, ${err.message}`)\n throw err;\n });\n } else if (oldIOS()) {\n this.disable();\n this.noSleepTimer = window.setInterval(() => {\n if (!document.hidden) {\n window.location.href = window.location.href.split(\"#\")[0];\n window.setTimeout(window.stop, 0);\n }\n }, 15000);\n this.enabled = true;\n return Promise.resolve();\n } else {\n let playPromise = this.noSleepVideo.play();\n return playPromise\n .then((res) => {\n this.enabled = true;\n return res;\n })\n .catch((err) => {\n this.enabled = false;\n throw err;\n });\n }\n }\n\n disable() {\n const debug = this.player.debug;\n if (nativeWakeLock()) {\n if (this._wakeLock) {\n this._wakeLock.release();\n }\n this._wakeLock = null;\n } else if (oldIOS()) {\n if (this.noSleepTimer) {\n debug.warn('wakeLock', 'NoSleep now disabled for older iOS devices.')\n\n window.clearInterval(this.noSleepTimer);\n this.noSleepTimer = null;\n }\n } else {\n this.noSleepVideo.pause();\n }\n this.enabled = false;\n }\n}\n","import {DEFAULT_PLAYER_OPTIONS, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport Debug from \"../utils/debug\";\nimport Events from \"../utils/events\";\nimport property from './property';\nimport events from './events';\nimport {\n fpsStatus,\n initPlayTimes,\n isEmpty,\n isFullScreen, isMobile,\n isNotEmpty,\n now, supportMediaStreamTrack,\n supportMSE,\n supportOffscreenV2,\n supportWCS\n} from \"../utils\";\nimport Video from \"../video\";\nimport Audio from \"../audio\";\nimport Stream from \"../stream\";\nimport Recorder from \"../recorder\";\nimport DecoderWorker from \"../worker/index\";\nimport Emitter from \"../utils/emitter\";\nimport Demux from \"../demux\";\nimport WebcodecsDecoder from \"../decoder/webcodecs\";\nimport Control from \"../control\";\nimport './style.scss'\nimport observer from \"./observer\";\nimport MseDecoder from \"../decoder/mediaSource\";\nimport NoSleep from \"../utils/noSleep\";\n\nexport default class Player extends Emitter {\n constructor(container, options) {\n super()\n this.$container = container;\n this._opt = Object.assign({}, DEFAULT_PLAYER_OPTIONS, options)\n this.debug = new Debug(this);\n\n //\n if (this._opt.useWCS) {\n this._opt.useWCS = supportWCS();\n }\n\n //\n if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\n }\n\n //\n if (this._opt.wcsUseVideoRender) {\n this._opt.wcsUseVideoRender = supportMediaStreamTrack()\n }\n\n // 如果使用mse则强制不允许 webcodecs\n if (this._opt.useMSE) {\n if (this._opt.useWCS) {\n this.debug.log('Player', 'useWCS set true->false')\n }\n\n if (!this._opt.forceNoOffscreen) {\n this.debug.log('Player', 'forceNoOffscreen set false->true')\n }\n\n this._opt.useWCS = false;\n this._opt.forceNoOffscreen = true;\n }\n\n if (!this._opt.forceNoOffscreen) {\n if (!supportOffscreenV2()) {\n this._opt.forceNoOffscreen = true;\n this._opt.useOffscreen = false;\n } else {\n this._opt.useOffscreen = true;\n }\n }\n\n if (!this._opt.hasAudio) {\n this._opt.operateBtns.audio = false\n }\n\n this._opt.hasControl = this._hasControl();\n //\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n\n //\n this._checkHeartTimeout = null;\n this._checkLoadingTimeout = null;\n this._checkStatsInterval = null;\n\n //\n this._startBpsTime = null;\n this._isPlayingBeforePageHidden = false;\n this._stats = {\n buf: 0, // 当前缓冲区时长,单位毫秒,\n fps: 0, // 当前视频帧率\n abps: 0, // 当前音频码率,单位bit\n vbps: 0, // 当前视频码率,单位bit\n ts: 0 // 当前视频帧pts,单位毫秒\n }\n\n // 各个步骤的时间统计\n this._times = initPlayTimes();\n\n //\n this._videoTimestamp = 0;\n this._audioTimestamp = 0;\n\n property(this);\n\n this.events = new Events(this);\n this.video = new Video(this);\n\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n this.recorder = new Recorder(this);\n\n if (!this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n } else {\n this.loaded = true;\n }\n\n this.stream = null;\n this.demux = null;\n this._lastVolume = null;\n\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n this.loaded = true\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n this.loaded = true\n }\n\n //\n this.control = new Control(this);\n\n if (isMobile()) {\n this.keepScreenOn = new NoSleep(this);\n }\n\n events(this);\n observer(this);\n\n if (this._opt.useWCS) {\n this.debug.log('Player', 'use WCS')\n }\n\n if (this._opt.useMSE) {\n this.debug.log('Player', 'use MSE')\n }\n\n if (this._opt.useOffscreen) {\n this.debug.log('Player', 'use offscreen')\n }\n\n this.debug.log('Player options', this._opt);\n }\n\n\n destroy() {\n this._loading = false;\n this._playing = false;\n this._hasLoaded = false;\n this._lastVolume = null;\n this._times = initPlayTimes();\n\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n if (this.video) {\n this.video.destroy();\n this.video = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.recorder) {\n this.recorder.destroy();\n this.recorder = null;\n }\n\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n //\n this.releaseWakeLock();\n this.keepScreenOn = null;\n // reset stats\n this.resetStats();\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n\n // 其他没法解耦的,通过 destroy 方式\n this.emit('destroy');\n // 接触所有绑定事件\n this.off();\n\n this.debug.log('play', 'destroy end');\n }\n\n set fullscreen(value) {\n if (isMobile() && this._opt.useWebFullScreen) {\n this.emit(EVENTS.webFullscreen, value);\n setTimeout(() => {\n this.updateOption({\n rotate: value ? 270 : 0,\n })\n this.resize();\n }, 10)\n } else {\n this.emit(EVENTS.fullscreen, value);\n }\n }\n\n get fullscreen() {\n return isFullScreen() || this.webFullscreen;\n }\n\n set webFullscreen(value) {\n this.emit(EVENTS.webFullscreen, value);\n }\n\n get webFullscreen() {\n return this.$container.classList.contains('jessibuca-fullscreen-web')\n }\n\n set loaded(value) {\n this._hasLoaded = value;\n }\n\n get loaded() {\n return this._hasLoaded;\n }\n\n //\n set playing(value) {\n\n if (value) {\n // 将loading 设置为 false\n this.loading = false;\n }\n\n if (this.playing !== value) {\n this._playing = value;\n this.emit(EVENTS.playing, value);\n this.emit(EVENTS.volumechange, this.volume);\n\n if (value) {\n this.emit(EVENTS.play);\n } else {\n this.emit(EVENTS.pause);\n }\n }\n }\n\n get playing() {\n return this._playing;\n }\n\n get volume() {\n return (this.audio && this.audio.volume) || 0;\n }\n\n set volume(value) {\n if (value !== this.volume) {\n this.audio && this.audio.setVolume(value);\n this._lastVolume = value;\n }\n }\n\n get lastVolume() {\n return this._lastVolume\n }\n\n set loading(value) {\n if (this.loading !== value) {\n this._loading = value;\n this.emit(EVENTS.loading, this._loading);\n }\n }\n\n get loading() {\n return this._loading;\n }\n\n set recording(value) {\n if (value) {\n if (this.playing) {\n this.recorder && this.recorder.startRecord();\n }\n } else {\n this.recorder && this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder ? this.recorder.recording : false;\n }\n\n set audioTimestamp(value) {\n if (value === null) {\n return;\n }\n this._audioTimestamp = value;\n }\n\n //\n get audioTimestamp() {\n return this._audioTimestamp;\n }\n\n //\n set videoTimestamp(value) {\n if (value === null) {\n return;\n }\n this._videoTimestamp = value;\n // just for wasm\n if (!this._opt.useWCS && !this._opt.useMSE) {\n if (this.audioTimestamp && this.videoTimestamp) {\n this.audio && this.audio.emit(EVENTS.videoSyncAudio, {\n audioTimestamp: this.audioTimestamp,\n videoTimestamp: this.videoTimestamp,\n diff: this.audioTimestamp - this.videoTimestamp\n })\n }\n }\n }\n\n //\n get videoTimestamp() {\n return this._videoTimestamp;\n }\n\n get isDebug() {\n return this._opt.debug === true;\n }\n\n\n /**\n *\n * @param options\n */\n updateOption(options) {\n this._opt = Object.assign({}, this._opt, options)\n }\n\n /**\n *\n * @returns {Promise}\n */\n init() {\n return new Promise((resolve, reject) => {\n if (!this.stream) {\n this.stream = new Stream(this);\n }\n\n if (!this.audio) {\n if (this._opt.hasAudio) {\n this.audio = new Audio(this);\n }\n }\n if (!this.demux) {\n this.demux = new Demux(this);\n }\n\n if (this._opt.useWCS) {\n if (!this.webcodecsDecoder) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n }\n\n if (this._opt.useMSE) {\n if (!this.mseDecoder) {\n this.mseDecoder = new MseDecoder(this);\n }\n }\n\n if (!this.decoderWorker && !this._onlyMseOrWcsVideo()) {\n this.decoderWorker = new DecoderWorker(this);\n\n this.once(EVENTS.decoderWorkerInit, () => {\n resolve()\n })\n } else {\n resolve()\n }\n\n })\n }\n\n\n /**\n *\n * @param url\n * @returns {Promise}\n */\n play(url, options) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n return reject();\n }\n\n this.loading = true;\n this.playing = false;\n this._times.playInitStart = now();\n if (!url) {\n url = this._opt.url;\n }\n this._opt.url = url;\n\n this.clearCheckHeartTimeout();\n\n this.init().then(() => {\n this._times.playStart = now();\n //\n if (this._opt.isNotMute) {\n this.mute(false);\n }\n\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.emit(EVENTS_ERROR.webcodecsH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.webcodecsH265NotSupport);\n }\n })\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.emit(EVENTS_ERROR.mediaSourceH265NotSupport)\n if (!this._opt.autoWasm) {\n this.emit(EVENTS.error, EVENTS_ERROR.mediaSourceH265NotSupport);\n }\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.emit(EVENTS_ERROR.mediaSourceFull)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferError)\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.emit(EVENTS_ERROR.mediaSourceBufferListLarge);\n })\n\n this.mseDecoder.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.emit(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout);\n })\n }\n\n this.enableWakeLock();\n\n this.stream.fetchStream(url, options);\n\n //\n this.checkLoadingTimeout();\n // fetch error\n this.stream.once(EVENTS_ERROR.fetchError, (error) => {\n reject(error)\n })\n\n // ws\n this.stream.once(EVENTS_ERROR.websocketError, (error) => {\n reject(error)\n })\n\n // stream end\n this.stream.once(EVENTS.streamEnd, () => {\n reject();\n })\n // hls\n this.stream.once(EVENTS_ERROR.hlsError, (error) => {\n reject(error)\n })\n // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\n this.checkStatsInterval();\n })\n\n }).catch((e) => {\n reject(e)\n })\n })\n }\n\n /**\n *\n */\n close() {\n return new Promise((resolve, reject) => {\n this._close().then(() => {\n this.video && this.video.clearView();\n resolve()\n })\n })\n }\n\n resumeAudioAfterPause() {\n if (this.lastVolume) {\n this.volume = this.lastVolume;\n }\n }\n\n _close() {\n return new Promise((resolve, reject) => {\n //\n if (this.stream) {\n this.stream.destroy();\n this.stream = null;\n }\n\n if (this.demux) {\n this.demux.destroy();\n this.demux = null;\n }\n\n //\n if (this.decoderWorker) {\n this.decoderWorker.destroy();\n this.decoderWorker = null;\n }\n\n if (this.webcodecsDecoder) {\n this.webcodecsDecoder.destroy();\n this.webcodecsDecoder = null;\n }\n\n if (this.mseDecoder) {\n this.mseDecoder.destroy();\n this.mseDecoder = null;\n }\n\n if (this.audio) {\n this.audio.destroy();\n this.audio = null;\n }\n this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.clearStatsInterval();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n\n if (this.video) {\n this.video.resetInit();\n this.video.pause(true);\n }\n // release lock\n this.releaseWakeLock();\n // reset stats\n this.resetStats();\n //\n this._audioTimestamp = 0;\n this._videoTimestamp = 0;\n //\n this._times = initPlayTimes();\n //\n setTimeout(() => {\n resolve()\n }, 0)\n })\n }\n\n /**\n *\n * @param flag {boolean} 是否清除画面\n * @returns {Promise}\n */\n pause(flag = false) {\n if (flag) {\n return this.close();\n } else {\n return this._close();\n }\n }\n\n /**\n *\n * @param flag\n */\n mute(flag) {\n this.audio && this.audio.mute(flag)\n }\n\n /**\n *\n */\n resize() {\n this.video.resize();\n }\n\n /**\n *\n * @param fileName\n * @param fileType\n */\n startRecord(fileName, fileType) {\n if (this.recording) {\n return;\n }\n\n this.recorder.setFileName(fileName, fileType);\n this.recording = true;\n }\n\n /**\n *\n */\n stopRecordAndSave() {\n if (this.recording) {\n this.recording = false;\n }\n }\n\n _hasControl() {\n let result = false;\n\n let hasBtnShow = false;\n Object.keys(this._opt.operateBtns).forEach((key) => {\n if (this._opt.operateBtns[key]) {\n hasBtnShow = true;\n }\n });\n\n if (this._opt.showBandwidth || this._opt.text || hasBtnShow) {\n result = true;\n }\n\n return result;\n }\n\n _onlyMseOrWcsVideo() {\n return this._opt.hasAudio === false && (this._opt.useMSE || (this._opt.useWCS && !this._opt.useOffscreen))\n }\n\n checkHeart() {\n this.clearCheckHeartTimeout();\n this.checkHeartTimeout();\n }\n\n // 心跳检查,如果渲染间隔暂停了多少时间之后,就会抛出异常\n checkHeartTimeout() {\n this._checkHeartTimeout = setTimeout(() => {\n if (this.playing) {\n // check again\n if (this._stats.fps !== 0) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }\n\n }, this._opt.heartTimeout * 1000)\n }\n\n checkStatsInterval() {\n this._checkStatsInterval = setInterval(() => {\n this.updateStats();\n }, 1000)\n }\n\n //\n clearCheckHeartTimeout() {\n if (this._checkHeartTimeout) {\n clearTimeout(this._checkHeartTimeout);\n this._checkHeartTimeout = null;\n }\n }\n\n // loading 等待时间\n checkLoadingTimeout() {\n this._checkLoadingTimeout = setTimeout(() => {\n // check again\n if (this.playing) {\n return;\n }\n this.pause().then(() => {\n this.emit(EVENTS.timeout, EVENTS.loadingTimeout);\n this.emit(EVENTS.loadingTimeout);\n });\n }, this._opt.loadingTimeout * 1000)\n }\n\n clearCheckLoadingTimeout() {\n if (this._checkLoadingTimeout) {\n clearTimeout(this._checkLoadingTimeout);\n this._checkLoadingTimeout = null;\n }\n }\n\n clearStatsInterval() {\n if (this._checkStatsInterval) {\n clearInterval(this._checkStatsInterval);\n this._checkStatsInterval = null;\n }\n }\n\n handleRender() {\n if (this.loading) {\n this.emit(EVENTS.start);\n this.loading = false;\n this.clearCheckLoadingTimeout();\n }\n if (!this.playing) {\n this.playing = true;\n }\n this.checkHeart();\n }\n\n\n //\n updateStats(options) {\n options = options || {};\n\n if (!this._startBpsTime) {\n this._startBpsTime = now();\n }\n\n if (isNotEmpty(options.ts)) {\n this._stats.ts = options.ts;\n }\n\n if (isNotEmpty(options.buf)) {\n this._stats.buf = options.buf;\n }\n\n if (options.fps) {\n this._stats.fps += 1;\n }\n if (options.abps) {\n this._stats.abps += options.abps;\n }\n if (options.vbps) {\n this._stats.vbps += options.vbps;\n }\n\n const _nowTime = now();\n const timestamp = _nowTime - this._startBpsTime;\n\n if (timestamp < 1 * 1000) {\n return;\n }\n\n this.emit(EVENTS.stats, this._stats);\n this.emit(EVENTS.performance, fpsStatus(this._stats.fps));\n this._stats.fps = 0;\n this._stats.abps = 0;\n this._stats.vbps = 0;\n this._startBpsTime = _nowTime;\n }\n\n resetStats() {\n this._startBpsTime = null;\n this._stats = {\n buf: 0, //ms\n fps: 0,\n abps: 0,\n vbps: 0,\n ts: 0\n }\n }\n\n enableWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n this.keepScreenOn && this.keepScreenOn.disable();\n }\n }\n\n handlePlayToRenderTimes() {\n const _times = this._times;\n _times.playTimestamp = _times.playStart - _times.playInitStart;\n _times.streamTimestamp = _times.streamStart - _times.playStart;\n _times.streamResponseTimestamp = _times.streamResponse - _times.streamStart;\n _times.demuxTimestamp = _times.demuxStart - _times.streamResponse;\n _times.decodeTimestamp = _times.decodeStart - _times.demuxStart;\n _times.videoTimestamp = _times.videoStart - _times.decodeStart;\n _times.allTimestamp = _times.videoStart - _times.playInitStart;\n this.emit(EVENTS.playToRenderTimes, _times);\n }\n\n getOption() {\n return this._opt;\n }\n}\n","import Player from './player';\nimport Events from \"./utils/events\";\nimport {DEMUX_TYPE, EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS, PLAYER_PLAY_PROTOCOL, SCALE_MODE_TYPE} from \"./constant\";\nimport {isEmpty, isMobile, isNotEmpty, supportWCS, uuid16} from \"./utils\";\nimport Emitter from \"./utils/emitter\";\n\n\nclass Jessibuca extends Emitter {\n static ERROR = EVENTS_ERROR\n\n static TIMEOUT = {\n loadingTimeout: EVENTS.loadingTimeout,\n delayTimeout: EVENTS.delayTimeout,\n }\n\n constructor(options) {\n super()\n let _opt = options;\n let $container = options.container;\n if (typeof options.container === 'string') {\n $container = document.querySelector(options.container);\n }\n if (!$container) {\n throw new Error('Jessibuca need container option');\n return;\n }\n // check container node name\n if ($container.nodeName === 'CANVAS' || $container.nodeName === 'VIDEO') {\n throw new Error(`Jessibuca container type can not be ${$container.nodeName} type`);\n return;\n }\n\n if (_opt.videoBuffer >= _opt.heartTimeout) {\n throw new Error(`Jessibuca videoBuffer ${_opt.videoBuffer}s must be less than heartTimeout ${_opt.heartTimeout}s`);\n return;\n }\n\n\n $container.classList.add('jessibuca-container');\n\n delete _opt.container;\n\n // 禁用离屏渲染\n _opt.forceNoOffscreen = true;\n\n // 移动端不支持自动关闭控制栏\n if (isMobile()) {\n _opt.controlAutoHide = false;\n }\n\n // s -> ms\n if (isNotEmpty(_opt.videoBuffer)) {\n _opt.videoBuffer = Number(_opt.videoBuffer) * 1000\n }\n\n // setting\n if (isNotEmpty(_opt.timeout)) {\n if (isEmpty(_opt.loadingTimeout)) {\n _opt.loadingTimeout = _opt.timeout;\n }\n\n if (isEmpty(_opt.heartTimeout)) {\n _opt.heartTimeout = _opt.timeout\n }\n }\n\n this._opt = _opt;\n this.$container = $container;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.events = new Events(this);\n this._initPlayer($container, _opt);\n }\n\n /**\n *\n */\n destroy() {\n if (this.events) {\n this.events.destroy();\n this.events = null;\n }\n\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n this.$container = null;\n this._opt = null;\n this._loadingTimeoutReplayTimes = 0;\n this._heartTimeoutReplayTimes = 0;\n this.off();\n }\n\n _initPlayer($container, options) {\n this.player = new Player($container, options);\n this.player.debug.log('jessibuca', '_initPlayer', this.player.getOption())\n this._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n this._opt = Object.assign(this._opt, options);\n this._opt.url = '';// reset url\n this._initPlayer(this.$container, this._opt);\n }\n\n _bindEvents() {\n // 对外的事件\n Object.keys(JESSIBUCA_EVENTS).forEach((key) => {\n this.player.on(JESSIBUCA_EVENTS[key], (value) => {\n this.emit(key, value)\n })\n })\n }\n\n /**\n * 是否开启控制台调试打印\n * @param value {Boolean}\n */\n setDebug(value) {\n this.player.updateOption({\n debug: !!value\n })\n }\n\n /**\n *\n */\n mute() {\n this.player.mute(true);\n }\n\n /**\n *\n */\n cancelMute() {\n this.player.mute(false);\n }\n\n /**\n *\n * @param value {number}\n */\n setVolume(value) {\n this.player.volume = value;\n }\n\n /**\n *\n */\n audioResume() {\n this.player.audio && this.player.audio.audioEnabled(true);\n }\n\n /**\n * 设置超时时长, 单位秒 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件\n * @param value {number}\n */\n setTimeout(time) {\n time = Number(time);\n this.player.updateOption({\n timeout: time,\n loadingTimeout: time,\n heartTimeout: time\n })\n }\n\n /**\n *\n * @param type {number}: 0,1,2\n */\n setScaleMode(type) {\n type = Number(type);\n let options = {\n isFullResize: false,\n isResize: false\n }\n switch (type) {\n case SCALE_MODE_TYPE.full:\n options.isFullResize = false;\n options.isResize = false;\n break;\n case SCALE_MODE_TYPE.auto:\n options.isFullResize = false;\n options.isResize = true;\n break;\n case SCALE_MODE_TYPE.fullAuto:\n options.isFullResize = true;\n options.isResize = true;\n break;\n }\n\n this.player.updateOption(options);\n this.resize();\n }\n\n /**\n *\n * @returns {Promise}\n */\n pause() {\n return this.player.pause();\n }\n\n /**\n *\n */\n close() {\n // clear url\n this._opt.url = '';\n this._opt.playOptions = {};\n return this.player.close();\n }\n\n\n /**\n *\n */\n clearView() {\n this.player.video.clearView()\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n */\n play(url, options = {}) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject('play url is empty')\n return;\n }\n\n if (url) {\n // url 相等的时候。\n if (this._opt.url) {\n // 存在相同的 url\n if (url === this._opt.url) {\n // 正在播放\n if (this.player.playing) {\n resolve();\n } else {\n // pause -> play\n this.clearView();\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'pause -> play and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'this._opt.url is null and pause error', e)\n reject(e);\n })\n }\n } else {\n this._play(url, options).then(() => {\n resolve()\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'this._play error', e)\n reject(e)\n });\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url, this._opt.playOptions).then(() => {\n resolve();\n // 恢复下之前的音量\n this.player.resumeAudioAfterPause();\n }).catch((e) => {\n this.player.debug.warn('jessibuca', 'url is null and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @param options {object}\n * @returns {Promise}\n * @private\n */\n _play(url, options = {}) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\n this._opt.playOptions = options;\n // 新的url\n const isHttp = url.indexOf(\"http\") === 0;\n //\n const protocol = isHttp ? PLAYER_PLAY_PROTOCOL.fetch : PLAYER_PLAY_PROTOCOL.websocket\n //\n const demuxType = (isHttp || url.indexOf(\".flv\") !== -1 || this._opt.isFlv) ? DEMUX_TYPE.flv : DEMUX_TYPE.m7s;\n\n this.player.updateOption({\n protocol,\n demuxType\n })\n\n this.player.once(EVENTS_ERROR.webglAlignmentError, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'webglAlignmentError')\n this._resetPlayer({openWebglAlignment: true})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'webglAlignmentError and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'webglAlignmentError and play error')\n });\n });\n })\n\n\n this.player.once(EVENTS_ERROR.mediaSourceH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play')\n this._resetPlayer({useMSE: false})\n this.play(url, options).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play error')\n });\n }\n });\n })\n\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n // media source full error\n this.player.once(EVENTS_ERROR.mediaSourceFull, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source full');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source full and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source full and reset player and play error')\n });\n })\n })\n // media source append buffer error\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferError, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source append buffer error');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source append buffer error and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source append buffer error and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceBufferListLarge, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source buffer list large');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source buffer list large and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source buffer list large and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mediaSourceAppendBufferEndTimeout, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'media source append buffer end timeout');\n this._resetPlayer()\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'media source append buffer end timeout and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'media source append buffer end timeout and reset player and play error')\n });\n })\n })\n\n this.player.once(EVENTS_ERROR.mseSourceBufferError, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'mseSourceBufferError close success')\n })\n })\n\n //\n this.player.once(EVENTS_ERROR.webcodecsH265NotSupport, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsWidthOrHeightChange, () => {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play')\n this._resetPlayer({useWCS: true})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'webcodecs Width Or Height Change reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'webcodecs Width Or Height Change reset player and play error')\n });\n });\n })\n // webcodecs\n this.player.once(EVENTS_ERROR.webcodecsDecodeError, () => {\n this.pause().then(() => {\n if (this.player._opt.autoWasm) {\n this.player.debug.log('Jessibuca', 'webcodecs decode error reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'webcodecs decode error reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'webcodecs decode error reset player and play error')\n });\n }\n });\n })\n // wasm。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.pause().then(() => {\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url, options).then(() => {\n // resolve();\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play success')\n }).catch(() => {\n // reject();\n this.player.debug.warn('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n }\n })\n\n\n // 监听 delay timeout\n this.player.on(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay && (this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes || this.player._opt.heartTimeoutReplayTimes === -1)) {\n this.player.debug.log('Jessibuca', `delay timeout replay time is ${this._heartTimeoutReplayTimes}`)\n this._heartTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.on(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay && (this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes || this.player._opt.loadingTimeoutReplayTimes === -1)) {\n this.player.debug.log('Jessibuca', `loading timeout replay time is ${this._loadingTimeoutReplayTimes}`)\n this._loadingTimeoutReplayTimes += 1;\n this.play(url, options).then(() => {\n // resolve();\n this._loadingTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n\n if (this.hasLoaded()) {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.player.debug.warn('Jessibuca', 'hasLoaded and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url, options).then(() => {\n resolve();\n }).catch((e) => {\n this.player.debug.warn('Jessibuca', 'decoderWorkerInit and play error', e)\n this.player.pause().then(() => {\n reject(e);\n })\n })\n })\n }\n })\n }\n\n\n /**\n *\n */\n resize() {\n this.player.resize();\n }\n\n /**\n *\n * @param time {number} s\n */\n setBufferTime(time) {\n time = Number(time)\n // s -> ms\n this.player.updateOption({\n videoBuffer: time * 1000\n })\n // update worker config\n this.player.decoderWorker && this.player.decoderWorker.updateWorkConfig({\n key: 'videoBuffer',\n value: time * 1000\n })\n }\n\n /**\n *\n * @param deg {number}\n */\n setRotate(deg) {\n deg = parseInt(deg, 10)\n const list = [0, 90, 180, 270];\n if (this._opt.rotate === deg || list.indexOf(deg) === -1) {\n return;\n }\n this.player.updateOption({\n rotate: deg\n })\n this.resize();\n }\n\n /**\n *\n * @returns {boolean}\n */\n hasLoaded() {\n return this.player.loaded;\n }\n\n /**\n *\n */\n setKeepScreenOn() {\n this.player.updateOption({\n keepScreenOn: true\n })\n }\n\n /**\n *\n * @param flag {Boolean}\n */\n setFullscreen(flag) {\n const fullscreen = !!flag;\n if (this.player.fullscreen !== fullscreen) {\n this.player.fullscreen = fullscreen;\n }\n }\n\n /**\n *\n * @param filename {string}\n * @param format {string}\n * @param quality {number}\n * @param type {string} download,base64,blob\n */\n screenshot(filename, format, quality, type) {\n\n if (!this.player.video) {\n return ''\n }\n\n return this.player.video.screenshot(filename, format, quality, type)\n }\n\n /**\n *\n * @param fileName {string}\n * @param fileType {string}\n * @returns {Promise}\n */\n startRecord(fileName, fileType) {\n return new Promise((resolve, reject) => {\n if (this.player.playing) {\n this.player.startRecord(fileName, fileType)\n resolve();\n } else {\n reject();\n }\n })\n }\n\n stopRecordAndSave() {\n if (this.player.recording) {\n this.player.stopRecordAndSave();\n }\n }\n\n /**\n *\n * @returns {Boolean}\n */\n isPlaying() {\n return this.player ? this.player.playing : false;\n }\n\n /**\n * 是否静音状态\n * @returns {Boolean}\n */\n isMute() {\n return this.player.audio ? this.player.audio.isMute : true;\n }\n\n /**\n * 是否在录制视频\n * @returns {*}\n */\n isRecording() {\n return this.player.recorder.recording;\n }\n\n\n}\n\n\nwindow.Jessibuca = Jessibuca;\n\nexport default Jessibuca;\n"],"names":["PLAYER_PLAY_PROTOCOL","websocket","fetch","webrtc","DEMUX_TYPE","flv","m7s","FILE_SUFFIX","mp4","webm","DEFAULT_PLAYER_OPTIONS","videoBuffer","videoBufferDelay","isResize","isFullResize","isFlv","debug","hotKey","loadingTimeout","heartTimeout","timeout","loadingTimeoutReplay","heartTimeoutReplay","loadingTimeoutReplayTimes","heartTimeoutReplayTimes","supportDblclickFullscreen","showBandwidth","keepScreenOn","isNotMute","hasAudio","hasVideo","operateBtns","fullscreen","screenshot","play","audio","record","controlAutoHide","hasControl","loadingText","background","decoder","url","rotate","forceNoOffscreen","hiddenAutoPause","protocol","demuxType","useWCS","wcsUseVideoRender","useMSE","useOffscreen","autoWasm","wasmDecodeErrorReplay","openWebglAlignment","wasmDecodeAudioSyncVideo","recordType","useWebFullScreen","WORKER_CMD_TYPE","init","initVideo","render","playAudio","initAudio","kBps","decode","audioCode","videoCode","wasmError","WASM_ERROR","invalidNalUnitSize","MEDIA_TYPE","video","FLV_MEDIA_TYPE","WORKER_SEND_TYPE","audioDecode","videoDecode","close","updateConfig","EVENTS","webFullscreen","decoderWorkerInit","playing","pause","mute","load","loading","videoInfo","timeUpdate","audioInfo","log","error","delayTimeout","stats","performance","recording","recordingTimestamp","recordStart","recordEnd","recordCreateError","buffer","videoFrame","start","metadata","resize","streamEnd","streamSuccess","streamMessage","streamError","volumechange","destroy","mseSourceOpen","mseSourceClose","mseSourceBufferError","mseSourceBufferBusy","mseSourceBufferFull","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","webcodecsDecodeError","webcodecsWidthOrHeightChange","mediaSourceH265NotSupport","mediaSourceFull","mediaSourceAppendBufferError","mediaSourceBufferListLarge","mediaSourceAppendBufferEndTimeout","wasmDecodeError","webglAlignmentError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","CANVAS_RENDER_TYPE","webcodecs","webgl","offscreen","ENCODED_VIDEO_TYPE","key","delta","MP4_CODECS","avc","hev","MEDIA_SOURCE_STATE","ended","closed","AUDIO_SYNC_VIDEO_DIFF","HOT_KEY","esc","arrowUp","arrowDown","WCS_ERROR","keyframeIsRequiredError","FETCH_ERROR","abortError1","abortError2","abort","Debug","constructor","master","name","_opt","args","console","warn","Events","destroys","proxy","bind","target","callback","option","Array","isArray","map","item","addEventListener","removeEventListener","push","forEach","event","player","Object","defineProperty","get","clientRect","$container","getBoundingClientRect","width","Math","max","clientWidth","height","clientHeight","rect","noop","supportOffscreen","$canvas","transferControlToOffscreen","supportOffscreenV2","OffscreenCanvas","createContextGL","gl","validContextNames","nameIndex","length","contextName","contextOptions","preserveDrawingBuffer","getContext","e","getParameter","dataURLToFile","dataURL","arr","split","bstr","atob","type","replace","n","u8arr","Uint8Array","charCodeAt","File","now","Date","getTime","WebAssembly","instantiate","module","Module","of","Instance","clamp","num","a","b","min","setStyle","element","value","keys","style","getStyle","numberType","getComputedStyle","getPropertyValue","parseFloat","getNowTime","calculationRate","totalSize","lastTime","size","thisTime","diffTime","isMobile","test","window","navigator","userAgent","toLowerCase","supportWCS","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","toString","codec","description","isFullScreen","screenfull","isFullscreen","bpsSize","parseInt","isNaN","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","document","createElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","supportMediaStreamTrack","MediaStreamTrackGenerator","isEmpty","undefined","isBoolean","isNotEmpty","initPlayTimes","playInitStart","playStart","streamStart","streamResponse","demuxStart","decodeStart","videoStart","playTimestamp","streamTimestamp","streamResponseTimestamp","demuxTimestamp","decodeTimestamp","videoTimestamp","allTimestamp","formatTimeTips","time","hour","floor","sec","round","getTarget","srcElement","isWebglRenderSupport","getBrowser","UserAgent","browserInfo","browserArray","IE","ActiveXObject","Chrome","indexOf","Firefox","Opera","Safari","Edge","QQBrowser","WeixinBrowser","i","versions","match","mt","mimeTypes","version","closeVideoFrame","screenfullChange","emit","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","includes","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","evts","liveEvents","len","vertexShaderScript","join","fragmentShaderScript","pixelStorei","UNPACK_ALIGNMENT","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","FRAGMENT_SHADER","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","useProgram","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","vertexPosRef","getAttribLocation","enableVertexAttribArray","vertexAttribPointer","FLOAT","texturePosBuffer","texturePosRef","_initTexture","index","textureRef","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","uniform1i","getUniformLocation","yTextureRef","uTextureRef","vTextureRef","w","y","u","v","viewport","activeTexture","TEXTURE0","texImage2D","LUMINANCE","UNSIGNED_BYTE","TEXTURE1","TEXTURE2","drawArrays","TRIANGLE_STRIP","deleteProgram","deleteBuffer","deleteTexture","CommonLoader","resetInit","encType","encTypeCode","removeChild","$videoElement","updateVideoInfo","clearView","_global","global","this","bom","opts","autoBom","Blob","String","fromCharCode","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","status","click","node","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","HTMLAnchorElement","prototype","URL","webkitURL","createElementNS","rel","href","origin","location","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","popup","title","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","CanvasVideoLoader","position","top","left","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","_initContextGl","createWebGL","_initContext2D","_supportOffscreen","_bindOffscreen","initCanvasViewSize","msg","ts","transferFromImageBitmap","output","drawImage","filename","format","quality","formatType","png","jpeg","webp","encoderOptions","Number","toDataURL","file","imageBitMap","clear","COLOR_BUFFER_BIT","clearRect","resizeWidth","resizeHeight","wScale","hScale","scale","transform","VideoLoader","muted","_delayPlay","trackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","canvasContext","fixChromeVideoFlashBug","_play","timeStamp","isPlaying","currentTime","src","removeAttribute","stop","browser","backdropFilter","translateZ","readyState","_getVideoReadyState","isNow","$video","canvas","videoWidth","videoHeight","write","objectFill","objectFit","paused","Video","Loader","getLoaderFactory","opt","AudioContextLoader","bufferList","scriptNode","hasInitScriptNode","audioContextChannel","audioContext","AudioContext","webkitAudioContext","gainNode","createGain","source","createBufferSource","connect","destination","noteOn","audioBufferSourceNode","mediaStreamAudioDestinationNode","createMediaStreamDestination","audioEnabled","gain","audioSyncVideoOption","diff","channels","sampleRate","options","closeAudio","onaudioprocess","updateAudioInfo","isMute","isStateSuspended","volume","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","setValueAtTime","disconnect","state","resume","suspend","isStateRunning","Audio","FetchLoader","abortController","AbortController","streamRate","rate","fetchStream","demux","_times","fetchOptions","assign","signal","headers","res","getReader","fetchNext","read","done","byteLength","dispatch","errorString","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","RecordRTCLoader","fileName","fileType","isRecording","recordingInterval","_reset","setFileName","recordTime","startRecord","mimeType","onTimeStamp","timestamp","disableLogs","stream","captureStream","audioStream","getAudioTracks","audioTrack","enabled","addTrack","recorder","RecordRTC","startRecording","setInterval","stopRecordAndSave","stopRecording","getBlob","clearInterval","Recorder","DecoderWorker","decoderWorker","Worker","_initDecoderWorker","postMessage","cmd","terminate","onmessage","_initWork","code","handleRender","updateStats","buf","delay","handlePlayToRenderTimes","JSON","stringify","decodeVideo","arrayBuffer","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","payload","_doDecoderDecode","_doDecode","cts","pushBuffer","webcodecsDecoder","mseDecoder","FlvLoader","input","_inputFlv","flvDemux","dispatchFlvData","tmp","ArrayBuffer","tmp8","tmp32","Uint32Array","t","abps","vbps","need","next","combine","set","remain","return","M7sLoader","dv","DataView","getUint8","getUint32","isIframe","Demux","ExpGolomb","uint8array","TAG","_buffer","_buffer_index","_total_bytes","_total_bits","_current_word","_current_word_bits_left","_fillCurrentWord","buffer_bytes_left","bytes_read","word","readBits","bits","bits_need_left","bits_read_next","result2","readBool","readByte","_skipLeadingZero","zero_count","readUEG","leading_zeros","readSEG","SPSParser","_ebsp2rbsp","src_length","dst","dst_idx","parseSPS","rbsp","gb","profile_idc","level_idc","profile_string","getProfileString","level_string","getLevelString","chroma_format_idc","chroma_format","chroma_format_table","bit_depth","scaling_list_count","_skipScalingList","pic_order_cnt_type","num_ref_frames_in_pic_order_cnt_cycle","ref_frames","pic_width_in_mbs_minus1","pic_height_in_map_units_minus1","frame_mbs_only_flag","frame_crop_left_offset","frame_crop_right_offset","frame_crop_top_offset","frame_crop_bottom_offset","frame_cropping_flag","sar_width","sar_height","fps_fixed","fps_num","fps_den","vui_parameters_present_flag","aspect_ratio_idc","sar_w_table","sar_h_table","num_units_in_tick","time_scale","sarScale","crop_unit_x","crop_unit_y","sub_wc","sub_hc","codec_width","codec_height","present_width","ceil","chroma_format_string","getChromaFormatString","frame_rate","fixed","sar_ratio","codec_size","present_size","count","last_scale","next_scale","delta_scale","chroma","parseAVCDecoderConfigurationRecord","meta","avcProfile","_naluLengthSize","spsCount","offset","getUint16","sps","codecWidth","codecHeight","presentWidth","presentHeight","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","timescale","ppsCount","videoType","WebcodecsDecoder","hasInit","isDecodeFirstIIframe","isInitInfo","initDecoder","_this","VideoDecoder","handleDecode","handleError","codedWidth","codedHeight","videoCodec","configure","chunk","EncodedVideoChunk","iconsMap","fullscreenExit","recordStop","reduce","icons","control","insertAdjacentHTML","querySelector","object","setAttribute","display","overflow","pointerEvents","zIndex","playerWidth","playerHeight","contentDocument","defaultView","screenfullH5Control","setVolumeHandle","percentage","$volumeOn","$volumeOff","$volumeHandle","$volumePanel","panelHeight","handleHeight","$volumePanelText","innerHTML","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$qualityMenu","$volume","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","resumeAudioAfterPause","$volumePanelWrap","lastVolume","_lastVolume","isVolumeDroging","$recordingStop","startDelayControlHidden","stopDelayControlHidden","delayHiddenTimeout","clearTimeout","addHotkey","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","preventDefault","Control","template","property","observer","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","nodeName","visibilityState","_isPlayingBeforePageHidden","enableWakeLock","MP4","types","avc1","hvc1","hvcC","btrt","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","sdtp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trun","trex","tkhd","vmhd","smhd","hasOwnProperty","constants","FTYP","STSD_PREFIX","STTS","STSC","STCO","STSZ","HDLR_VIDEO","HDLR_AUDIO","DREF","SMHD","VMHD","box","datas","call","arguments","arrayCount","generateInitSegment","duration","trackId","id","xmhd","channelCount","audioSampleRate","configSize","concat","avcc","track","baseMediaDecodeTime","sequenceNumber","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","isNonSync","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","firstRenderTime","mediaSourceAppendBufferFull","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","dts","_decodeVideo","metaData","metaBox","appendBuffer","bytes","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","abortSourceBuffer","removeSourceBuffer","endOfStream","dropSourceBuffer","isDropping","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","random","dataURI","isEnabled","wakeLock","err","disable","hidden","Promise","resolve","playPromise","release","Player","container","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_checkStatsInterval","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","clearStatsInterval","releaseWakeLock","resetStats","updateOption","contains","isDebug","reject","checkLoadingTimeout","hlsError","checkStatsInterval","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","_nowTime","getOption","Jessibuca","Error","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_initPlayer","_bindEvents","_resetPlayer","setDebug","cancelMute","audioResume","setScaleMode","playOptions","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen"],"mappings":"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"} \ No newline at end of file diff --git a/dist/jessibuca.js b/dist/jessibuca.js index fb34ae14..29e837ca 100644 --- a/dist/jessibuca.js +++ b/dist/jessibuca.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var i,o=t((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),r=(i=o)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!0,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1},u="init",h="initVideo",p="render",m="playAudio",g="initAudio",f="audioCode",b="videoCode",y="wasmError",v="Invalid NAL unit size",w=1,S=2,E=8,B=9,C="init",R="decode",k="audioDecode",T="close",I="updateConfig",x={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},D={load:x.load,timeUpdate:x.timeUpdate,videoInfo:x.videoInfo,audioInfo:x.audioInfo,error:x.error,kBps:x.kBps,log:x.log,start:x.start,timeout:x.timeout,loadingTimeout:x.loadingTimeout,delayTimeout:x.delayTimeout,fullscreen:"fullscreen",webFullscreen:x.webFullscreen,play:x.play,pause:x.pause,mute:x.mute,stats:x.stats,performance:x.performance,recordingTimestamp:x.recordingTimestamp,recordStart:x.recordStart,recordEnd:x.recordEnd,playToRenderTimes:x.playToRenderTimes},j={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:x.mseSourceBufferFull,mseSourceBufferError:x.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},L="notConnect",F="open",O="close",V="error",M={download:"download",base64:"base64",blob:"blob"},U={7:"H264(AVC)",12:"H265(HEVC)"},Q=12,W={10:"AAC",7:"ALAW",8:"MULAW"},J=38,P=0,G=1,N=2,z="webcodecs",H="webgl",Y="offscreen",X="key",q="delta",Z='video/mp4; codecs="avc1.64002A"',K="ended",_="open",$="closed",ee=1e3,te=27,ie=38,oe=40,re="A key frame is required after configure() or flush()",se="The user aborted a request",ae="AbortError",ne="AbortError";class Ae{constructor(e){this.log=function(t){if(e._opt.debug){for(var i=arguments.length,o=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?t-1:0),o=1;o3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,o)));e.addEventListener(t,i,o);const r=()=>e.removeEventListener(t,i,o);return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var ce=t((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,o=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],o=0,r=i.length,s={};o0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),o=t[0].replace("data:","").replace(";base64","");let r=i.length,s=new Uint8Array(r);for(;r--;)s[r]=i.charCodeAt(r);return new File([s],"file",{type:o})}function he(){return(new Date).getTime()}function pe(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function me(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{me(e,i,t[i])})),e.style[t]=i,e}function ge(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const o=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(o):o}function fe(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function be(e){let t=0,i=fe();return o=>{t+=o;const r=fe(),s=r-i;s>=1e3&&(e(t/s*1e3),i=r,t=0)}}function ye(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ve(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function we(e){return null==e}function Se(e){return!we(e)}function Ee(e){const t=e||window.event;return t.target||t.srcElement}ce.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class Be{on(e,t,i){const o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const o=this;function r(){o.off(e,r);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const o=i[e],r=[];if(o&&t)for(let e=0,i=o.length;e=200&&t.status<=299}function Ie(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var xe=Re.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),De="object"!=typeof window||window!==Re?function(){}:"download"in HTMLAnchorElement.prototype&&!xe?function(e,t,i){var o=Re.URL||Re.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Te(r.href)?ke(e,t,i):Ie(r,r.target="_blank"):Ie(r)):(r.href=o.createObjectURL(e),setTimeout((function(){o.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Ie(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Te(e))ke(e,t,i);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){Ie(o)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return ke(e,t,i);var r="application/octet-stream"===e.type,s=/constructor/i.test(Re.HTMLElement)||Re.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&s||xe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},n.readAsDataURL(e)}else{var A=Re.URL||Re.webkitURL,d=A.createObjectURL(e);o?o.location=d:location.href=d,o=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class je extends Ce{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let o=0;for(;!t&&o{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),o=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(r));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,o),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,r),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var o=e.createTexture();return e.bindTexture(e.TEXTURE_2D,o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),o}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,o,r,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=z,this._initContext2D()):this._supportOffscreen()?(this.renderType=Y,this._bindOffscreen()):(this.renderType=H,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case Y:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case H:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case z:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,o){e=e||he(),o=o||M.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(r[t]||r.png,s);if(o===M.base64)return a;{const t=ue(a);if(o===M.blob)return t;o===M.download&&De(t,e)}}clearView(){switch(this.renderType){case Y:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case H:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case z:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;e.hasControl&&!e.controlAutoHide&&(ye()&&this.player.fullscreen&&e.useWebFullScreen?t-=J:i-=J);let o=this.$videoElement.width,r=this.$videoElement.height;const s=e.rotate;let a=(t-o)/2,n=(i-r)/2;270!==s&&90!==s||(o=this.$videoElement.height,r=this.$videoElement.width);const A=t/o,d=i/r;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class Le extends Ce{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const o=this.player._opt;o.useWCS&&o.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:r}=this.player.events;r(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&this._play()})),r(this.$videoElement,"waiting",(()=>{this.player.emit(x.videoWaiting)})),r(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(x.timeUpdate,t),this.isPlaying()||this.$videoElement.play()})),this.player.debug.log("Video","init")}destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let o in i)if(i[o]){let i="";if("IE"===o)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===o){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(o="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===o?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===o?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===o?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===o?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===o&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=o,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,o){e=e||he(),o=o||M.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(r[t]||r.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,o===M.base64)return A;{const t=ue(A);if(o===M.blob)return t;o===M.download&&De(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,o=i.rotate;i.hasControl&&!i.controlAutoHide&&(ye()&&this.player.fullscreen&&i.useWebFullScreen?e-=J:t-=J),this.$videoElement.width=e,this.$videoElement.height=t,270!==o&&90!==o||(this.$videoElement.width=t,this.$videoElement.height=e);let r=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+o+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class Fe{constructor(e){return new(Fe.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?Le:je}}class Oe extends Be{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(x.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}destroy(){this.closeAudio(),this.resetInit(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=le,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=W[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(x.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ee)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let o=0;o20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}}class Ve{constructor(e){return new(Ve.getLoaderFactory())(e)}static getLoaderFactory(){return Oe}}class Me extends Be{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=be((t=>{e.emit(x.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=he();const o=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,o).then((e=>{const t=e.body.getReader();this.emit(x.streamSuccess);const o=()=>{t.read().then((e=>{let{done:t,value:r}=e;t?i.close():(this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),o())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(se)&&-1===t.indexOf(ae)&&e.name!==ne&&(this.abort(),this.emit(j.fetchError,e),this.player.emit(x.error,j.fetchError))}))};o()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(j.fetchError,e),this.player.emit(x.error,j.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ue extends Be{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=L,this.wsUrl=null,this.streamRate=be((t=>{e.emit(x.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=L,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:o}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(x.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=F})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(x.streamEnd),this.socketStatus=O})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(j.websocketError,e),this.player.emit(x.error,j.websocketError),this.socketStatus=V,o.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=he(),this.wsUrl=e,this._createWebSocket()}}class Qe{constructor(e){return new(Qe.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?Me:e===s?Ue:void 0}}var We=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new o(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var o=new r(e,t);(h=new o(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var o=h.blob;if(!o){if(!i)throw"Recording failed.";h.blob=o=i}if(o&&!t.disableLogs&&console.log(o.type,"->",b(o.size)),e){var r;try{r=l.createObjectURL(o)}catch(e){}"function"==typeof e.call?e.call(s,r):e(r)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var o=i?i.blob:(h||{}).blob;if(!o)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var r=new FileReader;r.readAsDataURL(o),r.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(o)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new o(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,o=0;o-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),m=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),g=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);g&&!m&&-1!==navigator.userAgent.indexOf("CriOS")&&(g=!1,m=!0);var f=window.MediaStream;function b(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function y(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var o=t.split(".");t=o[0],i=o[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=r,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),i.invokeSaveAsDialog=y,i.getTracks=w,i.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,o=new EBML.Decoder,r=EBML.tools,s=new FileReader;s.onload=function(e){o.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(m||h)&&(e=i.indexOf("Chrome"),o=i.substring(e+7)),-1!==(t=o.indexOf(";"))&&(o=o.substring(0,t)),-1!==(t=o.indexOf(" "))&&(o=o.substring(0,t)),r=parseInt(""+o,10),isNaN(r)&&(o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function C(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var o;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(o=new f).addTrack(w(e,"audio")[0]):o=new f(w(e,"audio")),e=o;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=m?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function A(){s=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var o=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",o),r&&(r=null),m&&!B()&&(o="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&o.mimeType&&(MediaRecorder.isTypeSupported(o.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType),o.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,o),t.mimeType=o.mimeType}catch(t){r=new MediaRecorder(e)}o.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(o.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",o.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(A),A()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function o(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(o,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var o,r=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,o=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var o=Math.round(e.length*(t/i)),r=[],s=Number((e.length-1)/(o-1));r[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,r.leftchannel=s,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=b,r.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){o&&(o.onaudioprocess=null,o.disconnect(),o=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;o.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),o.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,r.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?o.connect(p.createMediaStreamDestination()):o.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,r.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var o=new Blob([i],{type:"audio/wav"});t.ondataavailable(o),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var o,r,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)o=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";o=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(s=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in o?e=o.captureStream(25):"mozCaptureStream"in o?e=o.mozCaptureStream(25):"webkitCaptureStream"in o&&(e=o.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var o=h.frames.length;h.frames.forEach((function(e,i){var r=o-i;t.disableLogs||console.log(r+"/"+o+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,o);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var o=this;i&&r?r.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),o.blob=i,o.blob.forEach&&(o.blob=new Blob([],{type:"video/webm"})),e&&e(o.blob),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(o=document.createElement("canvas"),r=o.getContext("2d"),o.width=e.width,o.height=e.height,r.drawImage(e,0,0),o),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var o,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof C&&r.pause()},this.resume=function(){d=!1,r instanceof C?r.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function o(e,t,i,o,r){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=o&&o>=0&&o<=1?o:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var o,r,s,a=function(){!v&&s-o<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);o=0,r=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function o(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*s[0].width:s[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),r.height=s[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!o){var i=0,r=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,r,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var o=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=h(t);r.stream=t,i.push(r),o.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),o.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(o)}))},this.releaseStreams=function(){i=[],o=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),p(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){o=!1;var t=function(){var e;p(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function L(e,t){e=e||[];var i,o,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new j(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){w(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(o=new C(i.getMixedStream(),t)).record()},this.stop=function(e){o&&o.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){o&&o.pause()},this.resume=function(){o&&o.resume()},this.clearRecordedData=function(){o&&(o.clearRecordedData(),o=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),o&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,o,r;function s(){return new ReadableStream({start:function(o){var r=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),o.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==o._controlledReadableStream.state)try{o.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(o=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),o.addEventListener("message",(function(e){"READY"===e.data?(o.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),s().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):o.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){o?(o.addEventListener("message",(function(t){null===t.data&&(o.terminate(),o=null,e&&e())})),o.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}i.DiskStorage=x,i.GifRecorder=D,i.MultiStreamRecorder=L,i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var o=this;o.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{o.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{o.recordRTC.stopRecording((function(i){o.blob=o.recordRTC.getBlob(),o.blob&&o.blob.size?e(i):t("Empty blob.",o.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{o.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{o.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{o.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(o.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(o.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(o.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(o.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(o.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},i.WebAssemblyRecorder=F}));class Je extends Be{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=We(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(x.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(x.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(x.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(x.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(x.recordEnd);const e=(this.fileName||he())+"."+(this.fileType||c);De(this.recorder.getBlob(),e),this._reset(),this.player.emit(x.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class Pe{constructor(e){return new(Pe.getLoaderFactory())(e)}static getLoaderFactory(){return Je}}class Ge{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:T}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case u:e.log("decoderWorker","onmessage:",u),this.player.loaded||this.player.emit(x.load),this.player.emit(x.decoderWorkerInit),this._initWork();break;case b:e.log("decoderWorker","onmessage:",b,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=he()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case f:e.log("decoderWorker","onmessage:",f,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case h:if(e.log("decoderWorker","onmessage:",h,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(j.webglAlignmentError);this.player.video.initCanvasViewSize();break;case g:e.log("decoderWorker","onmessage:",g,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case p:this.player.handleRender(),this.player.video.render(i),this.player.emit(x.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=he(),this.player.handlePlayToRenderTimes());break;case m:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case y:i.message&&-1!==i.message.indexOf(v)&&(this.player.emit(x.error,j.wasmDecodeError),this.player.emit(j.wasmDecodeError));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:C,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const o={type:S,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:R,buffer:e,options:o},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:w,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:R,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:k,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:I,key:e.key,value:e.value})}}class Ne extends Be{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===w&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===w&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,o,r){const s=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===S&&(a.isIFrame=o),this.pushBuffer(e,a)):t===S?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,o):t===w&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===w?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===S&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===w?this.bufferList.push({ts:t.ts,payload:e,type:w}):t.type===S&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:S,isIFrame:t.isIFrame})}close(){}}class ze extends Ne{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),o=this.player;for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(r){case E:o._opt.hasAudio&&(o.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,w,a));break;case B:if(o._times.demuxStart||(o._times.demuxStart=he()),o._opt.hasVideo){o.updateStats({vbps:n.byteLength});const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,S,a,e,t)}}}}}dispatchFlvData(e){let t=e.next(),i=null;return o=>{let r=new Uint8Array(o);if(i){let e=new Uint8Array(i.length+r.length);e.set(i),e.set(r,i.length),r=e,i=null}for(;r.length>=t.value;){let i=r.slice(t.value);t=e.next(r.slice(0,t.value)),r=i}r.length>0&&(i=r)}}close(){this.input&&this.input.return(null)}}class He extends Ne{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),r=i.getUint32(1,!1);switch(o){case w:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,o,r)}break;case S:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=he()),i.byteLength>5){const s=new Uint8Array(e,5),a=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),s.byteLength>0&&this._doDecode(s,o,r,a)}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class Ye{constructor(e){return new(Ye.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?He:e===n?ze:void 0}}class Xe{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let o=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-o;return this._current_word<<=o,this._current_word_bits_left-=o,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class qe{static _ebsp2rbsp(e){let t=e,i=t.byteLength,o=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(o[r]=t[e],r++);return new Uint8Array(o.buffer,0,r)}static parseSPS(e){let t=qe._ebsp2rbsp(e),i=new Xe(t);i.readByte();let o=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=qe.getProfileString(o),a=qe.getLevelString(r),n=1,A=420,d=[0,420,422,444],c=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=o[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:qe.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,o=8,r=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(j.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?X:q});this.player.emit(x.timeUpdate,t);try{this.decoder.decode(o)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),-1!==e.toString().indexOf(re)&&this.player.emit(j.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Q)return void this.emit(j.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=he());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let o=t[e].toString(16);o.length<2&&(o="0"+o),i+=o}return{codec:i,description:e}}(e.slice(5));this.decoder.configure(i),this.hasInit=!0}}}const _e={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var $e=Object.keys(_e).reduce(((e,t)=>(e[t]=`\n \n ${_e[t]?`${_e[t]}`:""}\n`,e)),{}),et=(e,t)=>{const{events:{proxy:i}}=e,o=document.createElement("object");o.setAttribute("aria-hidden","true"),o.setAttribute("tabindex",-1),o.type="text/html",o.data="about:blank",me(o,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,s=e.height;i(o,"load",(()=>{i(o.contentDocument.defaultView,"resize",(()=>{e.width===r&&e.height===s||(r=e.width,s=e.height,e.emit(x.resize),n())}))})),e.$container.appendChild(o),e.on(x.destroy,(()=>{e.$container.removeChild(o)})),e.on(x.volumechange,(()=>{!function(e){if(0===e)me(t.$volumeOn,"display","none"),me(t.$volumeOff,"display","flex"),me(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=ge(t.$volumePanel,"height")||60,o=ge(t.$volumeHandle,"height"),r=i-(i-o)*e-o;me(t.$volumeHandle,"top",`${r}px`),me(t.$volumeOn,"display","flex"),me(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(x.loading,(e=>{me(t.$loading,"display",e?"flex":"none"),me(t.$poster,"display","none"),e&&me(t.$playBig,"display","none")}));const a=i=>{let o=!0===(r=i)||!1===r?i:e.fullscreen;var r;me(t.$fullscreenExit,"display",o?"flex":"none"),me(t.$fullscreen,"display",o?"none":"flex")},n=()=>{ye()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,o=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${o}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{ce.on("change",a),e.events.destroys.push((()=>{ce.off("change",a)}))}catch(e){}e.on(x.webFullscreen,(e=>{a(e),n()})),e.on(x.recording,(()=>{me(t.$record,"display",e.recording?"none":"flex"),me(t.$recordStop,"display",e.recording?"flex":"none"),me(t.$recording,"display",e.recording?"flex":"none")})),e.on(x.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=function(e){var t;if(e>-1){var i=Math.floor(e/3600),o=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",o<10&&(t+="0"),t+=o+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}(e))})),e.on(x.playing,(e=>{me(t.$play,"display",e?"none":"flex"),me(t.$playBig,"display",e?"none":"block"),me(t.$pause,"display",e?"flex":"none"),me(t.$screenshot,"display",e?"flex":"none"),me(t.$record,"display",e?"flex":"none"),me(t.$qualityMenu,"display",e?"flex":"none"),me(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ve(""))})),e.on(x.kBps,(e=>{const i=ve(e);t.$speed&&(t.$speed.innerHTML=i)}))};function tt(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}tt('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;transition:width .5s ease-in}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class it{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,o=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${$e.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&o.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${$e.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${o.audio?`\n
\n ${$e.audio}\n ${$e.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${o.play?`
${$e.play}
${$e.pause}
`:""}\n ${o.screenshot?`
${$e.screenshot}
`:""}\n ${o.record?`
${$e.record}
${$e.recordStop}
`:""}\n ${o.fullscreen?`
${$e.fullscreen}
${$e.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),et(e,this),((e,t)=>{const{events:{proxy:i},debug:o}=e;function r(e){const{bottom:i,height:o}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return pe(i-e.y-r/2,0,o-r/2)/(o-r)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),me(t.$volumeOn,"display","none"),me(t.$volumeOff,"display","block");const o=e.volume;e.volume=0,e._lastVolume=o})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),me(t.$volumeOn,"display","block"),me(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=r(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=r(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(me(t.$controls,"display","block"),r())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(me(t.$controls,"display","block"),r()))})),i(e.$container,"mouseout",(()=>{s(),me(t.$controls,"display","none")}));let o=null;const r=()=>{s(),o=setTimeout((()=>{me(t.$controls,"display","none")}),5e3)},s=()=>{o&&(clearTimeout(o),o=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,o={};function r(e,t){o[e]?o[e].push(t):o[e]=[t]}r(te,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(ie,(()=>{e.volume+=.05})),r(oe,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=o[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){this.$poster&&this.player.$container.removeChild(this.$poster),this.$loading&&this.player.$container.removeChild(this.$loading),this.$controls&&this.player.$container.removeChild(this.$controls),this.$recording&&this.player.$container.removeChild(this.$recording),this.$playBig&&this.player.$container.removeChild(this.$playBig),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,o=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(o>r){const o=(t-i*r)/2;e.$container.style.padding=`0 ${o}px`}else{const o=(i-t/r)/2;e.$container.style.padding=`${o}px 0`}}}tt(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class ot{static init(){ot.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in ot.types)ot.types.hasOwnProperty(e)&&(ot.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ot.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,o=Array.prototype.slice.call(arguments,1),r=o.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return ot.box(ot.types.trak,ot.tkhd(e),ot.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,r=e.presentHeight;return ot.box(ot.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,o>>>8&255,255&o,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return ot.box(ot.types.mdia,ot.mdhd(e),ot.hdlr(e),ot.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return ot.box(ot.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?ot.constants.HDLR_AUDIO:ot.constants.HDLR_VIDEO,ot.box(ot.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ot.box(ot.types.smhd,ot.constants.SMHD):ot.box(ot.types.vmhd,ot.constants.VMHD),ot.box(ot.types.minf,t,ot.dinf(),ot.stbl(e))}static dinf(){return ot.box(ot.types.dinf,ot.box(ot.types.dref,ot.constants.DREF))}static stbl(e){return ot.box(ot.types.stbl,ot.stsd(e),ot.box(ot.types.stts,ot.constants.STTS),ot.box(ot.types.stsc,ot.constants.STSC),ot.box(ot.types.stsz,ot.constants.STSZ),ot.box(ot.types.stco,ot.constants.STCO))}static stsd(e){return"audio"===e.type?ot.box(ot.types.stsd,ot.constants.STSD_PREFIX,ot.mp4a(e)):"avc"===e.videoType?ot.box(ot.types.stsd,ot.constants.STSD_PREFIX,ot.avc1(e)):ot.box(ot.types.stsd,ot.constants.STSD_PREFIX,ot.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return ot.box(ot.types.mp4a,o,ot.esds(e))}static esds(e){let t=e.config||[],i=t.length,o=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return ot.box(ot.types.esds,o)}static avc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ot.box(ot.types.avc1,r,ot.box(ot.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ot.box(ot.types.hvc1,r,ot.box(ot.types.hvcC,t))}static mvex(e){return ot.box(ot.types.mvex,ot.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return ot.box(ot.types.trex,i)}static moof(e,t){return ot.box(ot.types.moof,ot.mfhd(e.sequenceNumber),ot.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return ot.box(ot.types.mfhd,t)}static traf(e,t){let i=e.id,o=ot.box(ot.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=ot.box(ot.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=ot.sdtp(e),a=ot.trun(e,s.byteLength+16+16+8+16+8+8);return ot.box(ot.types.traf,o,r,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,ot.box(ot.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let o=e.duration,r=e.size,s=e.flags,a=e.cts;return i.set([o>>>24&255,o>>>16&255,o>>>8&255,255&o,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),ot.box(ot.types.trun,i)}static mdat(e){return ot.box(ot.types.mdat,e)}}ot.init();class rt extends Be{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(x.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(x.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===_}get isStateClosed(){return this.state===$}get isStateEnded(){return this.state===K}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,o){const r=this.player;if(r)if(this.hasInit){if(i&&0===e[1]){let t=Ze(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const r=t-this.firstRenderTime;this._decodeVideo(e,r,i,o)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const o=15&e[0];if(r.video.updateVideoInfo({encTypeCode:o}),o===Q)return void this.emit(j.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=he()),this._decodeConfigurationRecord(e,t,i,o),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,o){let r=e.slice(5),s={};s=Ze(r);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=ot.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,o){const r=this.player;let s=e.slice(5),a=s.byteLength;const n=r.video.$videoElement,A=r._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(ot.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let o=ot.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(o.byteLength+i.byteLength);s.set(o,0),s.set(i,o.byteLength),this.appendBuffer(s.buffer),r.handleRender(),r.updateStats({fps:!0,ts:t,buf:r.demux&&r.demux.delay||0}),r._times.videoStart||(r._times.videoStart=he(),r.handlePlayToRenderTimes())}else r.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=o,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(r.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(r.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),r.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),r.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(Z),i(this.sourceBuffer,"error",(e=>{this.player.emit(x.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(j.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(j.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(x.mseSourceBufferError,e))}else this.isStateClosed?this.player.emit(j.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(j.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(x.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}}const st=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,at=()=>"wakeLock"in navigator;class nt{constructor(e){if(this.player=e,this.enabled=!1,at()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else st()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var o=document.createElement("source");o.src=i,o.type=`video/${t}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(at())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(st())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;at()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):st()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class At extends Be{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},l,t),this.debug=new Ae(this),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(Z)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new de(this),this.video=new Fe(this),this._opt.hasAudio&&(this.audio=new Ve(this)),this.recorder=new Pe(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new Ge(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new Ke(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new rt(this),this.loaded=!0),this.control=new it(this),ye()&&(this.keepScreenOn=new nt(this)),(e=>{try{const t=t=>{Ee(t)===e.$container&&(e.emit(D.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};ce.on("change",t),e.events.destroys.push((()=>{ce.off("change",t)}))}catch(e){}if(e.on(x.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(x.play,(()=>{e.loading=!1})),e.on(x.fullscreen,(t=>{if(t)try{ce.request(e.$container).then((()=>{})).catch((t=>{ye()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ye()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{ce.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),ye()&&e.on(x.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(D.fullscreen,e.fullscreen)})),e.on(x.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[x.timeUpdate];Object.keys(x).forEach((i=>{e.on(x[i],(o=>{t.includes(i)||e.debug.log("player events",x[i],o)}))})),Object.keys(j).forEach((t=>{e.on(j[t],(i=>{e.debug.log("player event error",j[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(t=>{const i=Ee(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),o(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),o(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen"),this.debug.log("Player options",this._opt)}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){ye()&&this._opt.useWebFullScreen?(this.emit(x.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(x.fullscreen,e)}get fullscreen(){return ce.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(x.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(x.playing,e),this.emit(x.volumechange,this.volume),e?this.emit(x.play):this.emit(x.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(x.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(x.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Qe(this)),this.audio||this._opt.hasAudio&&(this.audio=new Ve(this)),this.demux||(this.demux=new Ye(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new Ke(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new rt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new Ge(this),this.once(x.decoderWorkerInit,(()=>{e()})))}))}play(e,t){return new Promise(((i,o)=>{if(!e&&!this._opt.url)return o();this.loading=!0,this.playing=!1,this._times.playInitStart=he(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=he(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(j.webcodecsH265NotSupport,(()=>{this.emit(j.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(x.error,j.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(j.mediaSourceH265NotSupport,(()=>{this.emit(j.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(x.error,j.mediaSourceH265NotSupport)})),this.mseDecoder.once(j.mediaSourceFull,(()=>{this.emit(j.mediaSourceFull)})),this.mseDecoder.once(j.mediaSourceAppendBufferError,(()=>{this.emit(j.mediaSourceAppendBufferError)})),this.mseDecoder.once(j.mediaSourceBufferListLarge,(()=>{this.emit(j.mediaSourceBufferListLarge)})),this.mseDecoder.once(j.mediaSourceAppendBufferEndTimeout,(()=>{this.emit(j.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(j.fetchError,(e=>{o(e)})),this.stream.once(j.websocketError,(e=>{o(e)})),this.stream.once(x.streamEnd,(()=>{o()})),this.stream.once(j.hlsError,(e=>{o(e)})),this.stream.once(x.streamSuccess,(()=>{i(),this._times.streamResponse=he(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{o(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(x.timeout,x.delayTimeout),this.emit(x.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(x.timeout,x.loadingTimeout),this.emit(x.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(x.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=he()),Se(e.ts)&&(this._stats.ts=e.ts),Se(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=he();t-this._startBpsTime<1e3||(this.emit(x.stats,this._stats),this.emit(x.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(x.playToRenderTimes,e)}getOption(){return this._opt}}class dt extends Be{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);i.classList.add("jessibuca-container"),delete t.container,t.forceNoOffscreen=!0,ye()&&(t.controlAutoHide=!1),Se(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),Se(t.timeout)&&(we(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),we(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new de(this),this._initPlayer(i,t)}destroy(){this.events&&(this.events.destroy(),this.events=null),this.player&&(this.player.destroy(),this.player=null),this.$container=null,this._opt=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.off()}_initPlayer(e,t){this.player=new At(e,t),this.player.debug.log("jessibuca","_initPlayer",this.player.getOption()),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(D).forEach((e=>{this.player.on(D[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case P:t.isFullResize=!1,t.isResize=!1;break;case G:t.isFullResize=!1,t.isResize=!0;break;case N:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._opt.url="",this._opt.playOptions={},this.player.close()}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,o)=>{if(!e&&!this._opt.url)return this.emit(x.error,j.playError),void o("play url is empty");e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.player.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{o(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("jessibuca","this._play error",e),o(e)}))})).catch((e=>{this.player.debug.warn("jessibuca","this._opt.url is null and pause error",e),o(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("jessibuca","this._play error",e),o(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.player.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{o(e)}))}))}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,o)=>{this._opt.url=e,this._opt.playOptions=t;const r=0===e.indexOf("http"),d=r?a:s,c=r||-1!==e.indexOf(".flv")||this._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(j.webglAlignmentError,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.player.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(j.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")})))}))})),this.player.once(j.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(j.mediaSourceFull,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(j.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(j.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(j.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(j.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","mseSourceBufferError close success")}))})),this.player.once(j.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(j.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(j.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","webcodecs decode error reset player and play error")})))}))})),this.player.once(j.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.pause().then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))}))})),this.player.on(x.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(x.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("Jessibuca","hasLoaded and play error",e),this.player.pause().then((()=>{o(e)}))})):this.player.once(x.decoderWorkerInit,(()=>{this.player.play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player.pause().then((()=>{o(e)}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,o){return this.player.video?this.player.video.screenshot(e,t,i,o):""}startRecord(e,t){return new Promise(((i,o)=>{this.player.playing?(this.player.startRecord(e,t),i()):o()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}}return r(dt,"ERROR",j),r(dt,"TIMEOUT",{loadingTimeout:x.loadingTimeout,delayTimeout:x.delayTimeout}),window.Jessibuca=dt,dt})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var i,o=t((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),r=(i=o)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!0,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1},u="init",h="initVideo",p="render",m="playAudio",g="initAudio",f="audioCode",b="videoCode",y="wasmError",v="Invalid NAL unit size",w=1,S=2,E=8,B=9,C="init",R="decode",k="audioDecode",T="close",I="updateConfig",x={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},D={load:x.load,timeUpdate:x.timeUpdate,videoInfo:x.videoInfo,audioInfo:x.audioInfo,error:x.error,kBps:x.kBps,log:x.log,start:x.start,timeout:x.timeout,loadingTimeout:x.loadingTimeout,delayTimeout:x.delayTimeout,fullscreen:"fullscreen",webFullscreen:x.webFullscreen,play:x.play,pause:x.pause,mute:x.mute,stats:x.stats,performance:x.performance,recordingTimestamp:x.recordingTimestamp,recordStart:x.recordStart,recordEnd:x.recordEnd,playToRenderTimes:x.playToRenderTimes},j={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:x.mseSourceBufferFull,mseSourceBufferError:x.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},L="notConnect",F="open",O="close",V="error",M={download:"download",base64:"base64",blob:"blob"},U={7:"H264(AVC)",12:"H265(HEVC)"},Q=12,W={10:"AAC",7:"ALAW",8:"MULAW"},J=38,P=0,G=1,N=2,z="webcodecs",H="webgl",Y="offscreen",X="key",q="delta",Z='video/mp4; codecs="avc1.64002A"',K="ended",_="open",$="closed",ee=1e3,te=27,ie=38,oe=40,re="A key frame is required after configure() or flush()",se="The user aborted a request",ae="AbortError",ne="AbortError";class Ae{constructor(e){this.log=function(t){if(e._opt.debug){for(var i=arguments.length,o=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?t-1:0),o=1;o3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,o)));e.addEventListener(t,i,o);const r=()=>e.removeEventListener(t,i,o);return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var ce=t((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,o=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],o=0,r=i.length,s={};o0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),o=t[0].replace("data:","").replace(";base64","");let r=i.length,s=new Uint8Array(r);for(;r--;)s[r]=i.charCodeAt(r);return new File([s],"file",{type:o})}function he(){return(new Date).getTime()}function pe(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function me(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{me(e,i,t[i])})),e.style[t]=i,e}function ge(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const o=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(o):o}function fe(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function be(e){let t=0,i=fe();return o=>{t+=o;const r=fe(),s=r-i;s>=1e3&&(e(t/s*1e3),i=r,t=0)}}function ye(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ve(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function we(e){return null==e}function Se(e){return!we(e)}function Ee(e){const t=e||window.event;return t.target||t.srcElement}ce.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class Be{on(e,t,i){const o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const o=this;function r(){o.off(e,r);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const o=i[e],r=[];if(o&&t)for(let e=0,i=o.length;e=200&&t.status<=299}function Ie(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var xe=Re.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),De="object"!=typeof window||window!==Re?function(){}:"download"in HTMLAnchorElement.prototype&&!xe?function(e,t,i){var o=Re.URL||Re.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Te(r.href)?ke(e,t,i):Ie(r,r.target="_blank"):Ie(r)):(r.href=o.createObjectURL(e),setTimeout((function(){o.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Ie(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Te(e))ke(e,t,i);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){Ie(o)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,o){if((o=o||open("","_blank"))&&(o.document.title=o.document.body.innerText="downloading..."),"string"==typeof e)return ke(e,t,i);var r="application/octet-stream"===e.type,s=/constructor/i.test(Re.HTMLElement)||Re.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&s||xe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),o?o.location.href=e:location=e,o=null},n.readAsDataURL(e)}else{var A=Re.URL||Re.webkitURL,d=A.createObjectURL(e);o?o.location=d:location.href=d,o=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class je extends Ce{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let o=0;for(;!t&&o{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),o=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var r=e.createShader(e.VERTEX_SHADER);e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(r));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,o),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,r),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var o=e.createTexture();return e.bindTexture(e.TEXTURE_2D,o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),o}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,o,r,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=z,this._initContext2D()):this._supportOffscreen()?(this.renderType=Y,this._bindOffscreen()):(this.renderType=H,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case Y:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case H:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case z:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,o){e=e||he(),o=o||M.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement.toDataURL(r[t]||r.png,s);if(o===M.base64)return a;{const t=ue(a);if(o===M.blob)return t;o===M.download&&De(t,e)}}clearView(){switch(this.renderType){case Y:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case H:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case z:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;e.hasControl&&!e.controlAutoHide&&(ye()&&this.player.fullscreen&&e.useWebFullScreen?t-=J:i-=J);let o=this.$videoElement.width,r=this.$videoElement.height;const s=e.rotate;let a=(t-o)/2,n=(i-r)/2;270!==s&&90!==s||(o=this.$videoElement.height,r=this.$videoElement.width);const A=t/o,d=i/r;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class Le extends Ce{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const o=this.player._opt;o.useWCS&&o.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:r}=this.player.events;r(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video",`canplay and _delayPlay is ${this._delayPlay}`),this._delayPlay&&this._play()})),r(this.$videoElement,"waiting",(()=>{this.player.emit(x.videoWaiting)})),r(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(x.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let o in i)if(i[o]){let i="";if("IE"===o)i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2];else if("Chrome"===o){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(o="360");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===o?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===o?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===o?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===o?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===o&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=o,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,o){e=e||he(),o=o||M.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const a=this.$videoElement;let n=this.$canvasElement;n.width=a.videoWidth,n.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,n.width,n.height);const A=n.toDataURL(r[t]||r.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,o===M.base64)return A;{const t=ue(A);if(o===M.blob)return t;o===M.download&&De(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,o=i.rotate;i.hasControl&&!i.controlAutoHide&&(ye()&&this.player.fullscreen&&i.useWebFullScreen?e-=J:t-=J),this.$videoElement.width=e,this.$videoElement.height=t,270!==o&&90!==o||(this.$videoElement.width=t,this.$videoElement.height=e);let r=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+o+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class Fe{constructor(e){return new(Fe.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?Le:je}}class Oe extends Be{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(x.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}destroy(){this.closeAudio(),this.resetInit(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=le,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=W[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(x.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ee)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let o=0;o20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}}class Ve{constructor(e){return new(Ve.getLoaderFactory())(e)}static getLoaderFactory(){return Oe}}class Me extends Be{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=be((t=>{e.emit(x.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=he();const o=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,o).then((e=>{const t=e.body.getReader();this.emit(x.streamSuccess);const o=()=>{t.read().then((e=>{let{done:t,value:r}=e;t?i.close():(this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),o())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(se)&&-1===t.indexOf(ae)&&e.name!==ne&&(this.abort(),this.emit(j.fetchError,e),this.player.emit(x.error,j.fetchError))}))};o()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(j.fetchError,e),this.player.emit(x.error,j.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ue extends Be{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=L,this.wsUrl=null,this.streamRate=be((t=>{e.emit(x.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=L,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:o}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(x.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=F})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(x.streamEnd),this.socketStatus=O})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(j.websocketError,e),this.player.emit(x.error,j.websocketError),this.socketStatus=V,o.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=he(),this.wsUrl=e,this._createWebSocket()}}class Qe{constructor(e){return new(Qe.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?Me:e===s?Ue:void 0}}var We=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new o(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var o=new r(e,t);(h=new o(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var o=h.blob;if(!o){if(!i)throw"Recording failed.";h.blob=o=i}if(o&&!t.disableLogs&&console.log(o.type,"->",b(o.size)),e){var r;try{r=l.createObjectURL(o)}catch(e){}"function"==typeof e.call?e.call(s,r):e(r)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var o=i?i.blob:(h||{}).blob;if(!o)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var r=new FileReader;r.readAsDataURL(o),r.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(o)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new o(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,o=0;o-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),m=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),g=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);g&&!m&&-1!==navigator.userAgent.indexOf("CriOS")&&(g=!1,m=!0);var f=window.MediaStream;function b(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function y(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var o=t.split(".");t=o[0],i=o[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=r,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.href)}function v(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),i.invokeSaveAsDialog=y,i.getTracks=w,i.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,o=new EBML.Decoder,r=EBML.tools,s=new FileReader;s.onload=function(e){o.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(m||h)&&(e=i.indexOf("Chrome"),o=i.substring(e+7)),-1!==(t=o.indexOf(";"))&&(o=o.substring(0,t)),-1!==(t=o.indexOf(" "))&&(o=o.substring(0,t)),r=parseInt(""+o,10),isNaN(r)&&(o=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function C(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var o;if(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(o=new f).addTrack(w(e,"audio")[0]):o=new f(w(e,"audio")),e=o;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=m?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function A(){s=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var o=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",o),r&&(r=null),m&&!B()&&(o="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&o.mimeType&&(MediaRecorder.isTypeSupported(o.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType),o.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,o),t.mimeType=o.mimeType}catch(t){r=new MediaRecorder(e)}o.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(o.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",o.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(A),A()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function o(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(o,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var o,r=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,o=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var o=Math.round(e.length*(t/i)),r=[],s=Number((e.length-1)/(o-1));r[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,r.leftchannel=s,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=b,r.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){o&&(o.onaudioprocess=null,o.disconnect(),o=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;o.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),o.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,r.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?o.connect(p.createMediaStreamDestination()):o.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,r.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var o=new Blob([i],{type:"audio/wav"});t.ondataavailable(o),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var o,r,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)o=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";o=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(s=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in o?e=o.captureStream(25):"mozCaptureStream"in o?e=o.mozCaptureStream(25):"webkitCaptureStream"in o&&(e=o.webkitCaptureStream(25));try{var a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var o=h.frames.length;h.frames.forEach((function(e,i){var r=o-i;t.disableLogs||console.log(r+"/"+o+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,o);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var o=this;i&&r?r.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),o.blob=i,o.blob.forEach&&(o.blob=new Blob([],{type:"video/webm"})),e&&e(o.blob),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(o=document.createElement("canvas"),r=o.getContext("2d"),o.width=e.width,o.height=e.height,r.drawImage(e,0,0),o),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var o,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof C&&r.pause()},this.resume=function(){d=!1,r instanceof C?r.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function o(e,t,i,o,r){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=o&&o>=0&&o<=1?o:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var o,r,s,a=function(){!v&&s-o<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);o=0,r=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function o(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*s[0].width:s[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),r.height=s[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!o){var i=0,r=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,r,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var o=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=h(t);r.stream=t,i.push(r),o.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),o.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(o)}))},this.releaseStreams=function(){i=[],o=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),p(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){o=!1;var t=function(){var e;p(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function L(e,t){e=e||[];var i,o,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new j(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){w(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(o=new C(i.getMixedStream(),t)).record()},this.stop=function(e){o&&o.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){o&&o.pause()},this.resume=function(){o&&o.resume()},this.clearRecordedData=function(){o&&(o.clearRecordedData(),o=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),o&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function F(e,t){var i,o,r;function s(){return new ReadableStream({start:function(o){var r=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),o.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==o._controlledReadableStream.state)try{o.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(o=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),o.addEventListener("message",(function(e){"READY"===e.data?(o.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),s().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):o.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){o?(o.addEventListener("message",(function(t){null===t.data&&(o.terminate(),o=null,e&&e())})),o.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}i.DiskStorage=x,i.GifRecorder=D,i.MultiStreamRecorder=L,i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var o=this;o.recordRTC=new i(e,t),this.startRecording=function(){return new Promise((function(e,t){try{o.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{o.recordRTC.stopRecording((function(i){o.blob=o.recordRTC.getBlob(),o.blob&&o.blob.size?e(i):t("Empty blob.",o.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{o.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{o.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{o.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(o.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(o.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(o.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(o.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(o.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},i.WebAssemblyRecorder=F}));class Je extends Be{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=We(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(x.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(x.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(x.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(x.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(x.recordEnd);const e=(this.fileName||he())+"."+(this.fileType||c);De(this.recorder.getBlob(),e),this._reset(),this.player.emit(x.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class Pe{constructor(e){return new(Pe.getLoaderFactory())(e)}static getLoaderFactory(){return Je}}class Ge{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:T}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case u:e.log("decoderWorker","onmessage:",u),this.player.loaded||this.player.emit(x.load),this.player.emit(x.decoderWorkerInit),this._initWork();break;case b:e.log("decoderWorker","onmessage:",b,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=he()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case f:e.log("decoderWorker","onmessage:",f,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case h:if(e.log("decoderWorker","onmessage:",h,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(j.webglAlignmentError);this.player.video.initCanvasViewSize();break;case g:e.log("decoderWorker","onmessage:",g,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case p:this.player.handleRender(),this.player.video.render(i),this.player.emit(x.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=he(),this.player.handlePlayToRenderTimes());break;case m:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case y:i.message&&-1!==i.message.indexOf(v)&&(this.player.emit(x.error,j.wasmDecodeError),this.player.emit(j.wasmDecodeError));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:C,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const o={type:S,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:R,buffer:e,options:o},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:w,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:R,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:k,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:I,key:e.key,value:e.value})}}class Ne extends Be{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===w&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===w&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,o,r){const s=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===S&&(a.isIFrame=o),this.pushBuffer(e,a)):t===S?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,o):t===w&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===w?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===S&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===w?this.bufferList.push({ts:t.ts,payload:e,type:w}):t.type===S&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:S,isIFrame:t.isIFrame})}close(){}}class ze extends Ne{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),o=this.player;for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(r){case E:o._opt.hasAudio&&(o.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,w,a));break;case B:if(o._times.demuxStart||(o._times.demuxStart=he()),o._opt.hasVideo){o.updateStats({vbps:n.byteLength});const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,S,a,e,t)}}}}}dispatchFlvData(e){let t=e.next(),i=null;return o=>{let r=new Uint8Array(o);if(i){let e=new Uint8Array(i.length+r.length);e.set(i),e.set(r,i.length),r=e,i=null}for(;r.length>=t.value;){let i=r.slice(t.value);t=e.next(r.slice(0,t.value)),r=i}r.length>0&&(i=r)}}close(){this.input&&this.input.return(null)}}class He extends Ne{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),r=i.getUint32(1,!1);switch(o){case w:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,o,r)}break;case S:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=he()),i.byteLength>5){const s=new Uint8Array(e,5),a=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),s.byteLength>0&&this._doDecode(s,o,r,a)}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class Ye{constructor(e){return new(Ye.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?He:e===n?ze:void 0}}class Xe{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){if(e<=this._current_word_bits_left){let t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}let t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let o=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-o;return this._current_word<<=o,this._current_word_bits_left-=o,t=t<>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}class qe{static _ebsp2rbsp(e){let t=e,i=t.byteLength,o=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(o[r]=t[e],r++);return new Uint8Array(o.buffer,0,r)}static parseSPS(e){let t=qe._ebsp2rbsp(e),i=new Xe(t);i.readByte();let o=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=qe.getProfileString(o),a=qe.getLevelString(r),n=1,A=420,d=[0,420,422,444],c=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=o[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){let e=i.readBits(32),t=i.readBits(32);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:qe.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,o=8,r=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(j.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?X:q});this.player.emit(x.timeUpdate,t);try{this.decoder.decode(o)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),-1!==e.toString().indexOf(re)&&this.player.emit(j.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Q)return void this.emit(j.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=he());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let o=t[e].toString(16);o.length<2&&(o="0"+o),i+=o}return{codec:i,description:e}}(e.slice(5));this.decoder.configure(i),this.hasInit=!0}}}const _e={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var $e=Object.keys(_e).reduce(((e,t)=>(e[t]=`\n \n ${_e[t]?`${_e[t]}`:""}\n`,e)),{}),et=(e,t)=>{const{events:{proxy:i}}=e,o=document.createElement("object");o.setAttribute("aria-hidden","true"),o.setAttribute("tabindex",-1),o.type="text/html",o.data="about:blank",me(o,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,s=e.height;i(o,"load",(()=>{i(o.contentDocument.defaultView,"resize",(()=>{e.width===r&&e.height===s||(r=e.width,s=e.height,e.emit(x.resize),n())}))})),e.$container.appendChild(o),e.on(x.destroy,(()=>{e.$container.removeChild(o)})),e.on(x.volumechange,(()=>{!function(e){if(0===e)me(t.$volumeOn,"display","none"),me(t.$volumeOff,"display","flex"),me(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=ge(t.$volumePanel,"height")||60,o=ge(t.$volumeHandle,"height"),r=i-(i-o)*e-o;me(t.$volumeHandle,"top",`${r}px`),me(t.$volumeOn,"display","flex"),me(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(x.loading,(e=>{me(t.$loading,"display",e?"flex":"none"),me(t.$poster,"display","none"),e&&me(t.$playBig,"display","none")}));const a=i=>{let o=!0===(r=i)||!1===r?i:e.fullscreen;var r;me(t.$fullscreenExit,"display",o?"flex":"none"),me(t.$fullscreen,"display",o?"none":"flex")},n=()=>{ye()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,o=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${o}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{ce.on("change",a),e.events.destroys.push((()=>{ce.off("change",a)}))}catch(e){}e.on(x.webFullscreen,(e=>{a(e),n()})),e.on(x.recording,(()=>{me(t.$record,"display",e.recording?"none":"flex"),me(t.$recordStop,"display",e.recording?"flex":"none"),me(t.$recording,"display",e.recording?"flex":"none")})),e.on(x.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=function(e){var t;if(e>-1){var i=Math.floor(e/3600),o=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",o<10&&(t+="0"),t+=o+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}(e))})),e.on(x.playing,(e=>{me(t.$play,"display",e?"none":"flex"),me(t.$playBig,"display",e?"none":"block"),me(t.$pause,"display",e?"flex":"none"),me(t.$screenshot,"display",e?"flex":"none"),me(t.$record,"display",e?"flex":"none"),me(t.$qualityMenu,"display",e?"flex":"none"),me(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ve(""))})),e.on(x.kBps,(e=>{const i=ve(e);t.$speed&&(t.$speed.innerHTML=i)}))};function tt(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&o.firstChild?o.insertBefore(r,o.firstChild):o.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}tt('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;transition:width .5s ease-in}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class it{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,o=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${$e.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&o.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${$e.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${o.audio?`\n
\n ${$e.audio}\n ${$e.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${o.play?`
${$e.play}
${$e.pause}
`:""}\n ${o.screenshot?`
${$e.screenshot}
`:""}\n ${o.record?`
${$e.record}
${$e.recordStop}
`:""}\n ${o.fullscreen?`
${$e.fullscreen}
${$e.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),et(e,this),((e,t)=>{const{events:{proxy:i},debug:o}=e;function r(e){const{bottom:i,height:o}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return pe(i-e.y-r/2,0,o-r/2)/(o-r)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),me(t.$volumeOn,"display","none"),me(t.$volumeOff,"display","block");const o=e.volume;e.volume=0,e._lastVolume=o})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),me(t.$volumeOn,"display","block"),me(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=r(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=r(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(me(t.$controls,"display","block"),r())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(me(t.$controls,"display","block"),r()))})),i(e.$container,"mouseout",(()=>{s(),me(t.$controls,"display","none")}));let o=null;const r=()=>{s(),o=setTimeout((()=>{me(t.$controls,"display","none")}),5e3)},s=()=>{o&&(clearTimeout(o),o=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,o={};function r(e,t){o[e]?o[e].push(t):o[e]=[t]}r(te,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(ie,(()=>{e.volume+=.05})),r(oe,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=o[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){this.$poster&&this.player.$container.removeChild(this.$poster),this.$loading&&this.player.$container.removeChild(this.$loading),this.$controls&&this.player.$container.removeChild(this.$controls),this.$recording&&this.player.$container.removeChild(this.$recording),this.$playBig&&this.player.$container.removeChild(this.$playBig),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,o=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(o>r){const o=(t-i*r)/2;e.$container.style.padding=`0 ${o}px`}else{const o=(i-t/r)/2;e.$container.style.padding=`${o}px 0`}}}tt(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class ot{static init(){ot.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};for(let e in ot.types)ot.types.hasOwnProperty(e)&&(ot.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ot.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,o=Array.prototype.slice.call(arguments,1),r=o.length;for(let e=0;e>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);let s=8;for(let e=0;e>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return ot.box(ot.types.trak,ot.tkhd(e),ot.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,r=e.presentHeight;return ot.box(ot.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,o>>>8&255,255&o,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return ot.box(ot.types.mdia,ot.mdhd(e),ot.hdlr(e),ot.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return ot.box(ot.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?ot.constants.HDLR_AUDIO:ot.constants.HDLR_VIDEO,ot.box(ot.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ot.box(ot.types.smhd,ot.constants.SMHD):ot.box(ot.types.vmhd,ot.constants.VMHD),ot.box(ot.types.minf,t,ot.dinf(),ot.stbl(e))}static dinf(){return ot.box(ot.types.dinf,ot.box(ot.types.dref,ot.constants.DREF))}static stbl(e){return ot.box(ot.types.stbl,ot.stsd(e),ot.box(ot.types.stts,ot.constants.STTS),ot.box(ot.types.stsc,ot.constants.STSC),ot.box(ot.types.stsz,ot.constants.STSZ),ot.box(ot.types.stco,ot.constants.STCO))}static stsd(e){return"audio"===e.type?ot.box(ot.types.stsd,ot.constants.STSD_PREFIX,ot.mp4a(e)):"avc"===e.videoType?ot.box(ot.types.stsd,ot.constants.STSD_PREFIX,ot.avc1(e)):ot.box(ot.types.stsd,ot.constants.STSD_PREFIX,ot.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,o=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return ot.box(ot.types.mp4a,o,ot.esds(e))}static esds(e){let t=e.config||[],i=t.length,o=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return ot.box(ot.types.esds,o)}static avc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ot.box(ot.types.avc1,r,ot.box(ot.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return ot.box(ot.types.hvc1,r,ot.box(ot.types.hvcC,t))}static mvex(e){return ot.box(ot.types.mvex,ot.trex(e))}static trex(e){let t=e.id,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return ot.box(ot.types.trex,i)}static moof(e,t){return ot.box(ot.types.moof,ot.mfhd(e.sequenceNumber),ot.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e]);return ot.box(ot.types.mfhd,t)}static traf(e,t){let i=e.id,o=ot.box(ot.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=ot.box(ot.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=ot.sdtp(e),a=ot.trun(e,s.byteLength+16+16+8+16+8+8);return ot.box(ot.types.traf,o,r,a,s)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,ot.box(ot.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let o=e.duration,r=e.size,s=e.flags,a=e.cts;return i.set([o>>>24&255,o>>>16&255,o>>>8&255,255&o,r>>>24&255,r>>>16&255,r>>>8&255,255&r,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),ot.box(ot.types.trun,i)}static mdat(e){return ot.box(ot.types.mdat,e)}}ot.init();class rt extends Be{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(x.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(x.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===_}get isStateClosed(){return this.state===$}get isStateEnded(){return this.state===K}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,o){const r=this.player;if(r)if(this.hasInit){if(i&&0===e[1]){let t=Ze(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const r=t-this.firstRenderTime;this._decodeVideo(e,r,i,o)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const o=15&e[0];if(r.video.updateVideoInfo({encTypeCode:o}),o===Q)return void this.emit(j.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=he()),this._decodeConfigurationRecord(e,t,i,o),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,o){let r=e.slice(5),s={};s=Ze(r);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=ot.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,o){const r=this.player;let s=e.slice(5),a=s.byteLength;const n=r.video.$videoElement,A=r._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(ot.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let o=ot.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(o.byteLength+i.byteLength);s.set(o,0),s.set(i,o.byteLength),this.appendBuffer(s.buffer),r.handleRender(),r.updateStats({fps:!0,ts:t,buf:r.demux&&r.demux.delay||0}),r._times.videoStart||(r._times.videoStart=he(),r.handlePlayToRenderTimes())}else r.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=o,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(r.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(r.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),r.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),r.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(Z),i(this.sourceBuffer,"error",(e=>{this.player.emit(x.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(j.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(j.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(x.mseSourceBufferError,e))}else this.isStateClosed?this.player.emit(j.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(j.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(x.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}}const st=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,at=()=>"wakeLock"in navigator;class nt{constructor(e){if(this.player=e,this.enabled=!1,at()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else st()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var o=document.createElement("source");o.src=i,o.type=`video/${t}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(at())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(st())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;at()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):st()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class At extends Be{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},l,t),this.debug=new Ae(this),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(Z)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new de(this),this.video=new Fe(this),this._opt.hasAudio&&(this.audio=new Ve(this)),this.recorder=new Pe(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new Ge(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new Ke(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new rt(this),this.loaded=!0),this.control=new it(this),ye()&&(this.keepScreenOn=new nt(this)),(e=>{try{const t=t=>{Ee(t)===e.$container&&(e.emit(D.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};ce.on("change",t),e.events.destroys.push((()=>{ce.off("change",t)}))}catch(e){}if(e.on(x.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(x.play,(()=>{e.loading=!1})),e.on(x.fullscreen,(t=>{if(t)try{ce.request(e.$container).then((()=>{})).catch((t=>{ye()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ye()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{ce.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),ye()&&e.on(x.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(D.fullscreen,e.fullscreen)})),e.on(x.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[x.timeUpdate];Object.keys(x).forEach((i=>{e.on(x[i],(o=>{t.includes(i)||e.debug.log("player events",x[i],o)}))})),Object.keys(j).forEach((t=>{e.on(j[t],(i=>{e.debug.log("player event error",j[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(t=>{const i=Ee(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),o(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),o(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen"),this.debug.log("Player options",this._opt)}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){ye()&&this._opt.useWebFullScreen?(this.emit(x.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(x.fullscreen,e)}get fullscreen(){return ce.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(x.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(x.playing,e),this.emit(x.volumechange,this.volume),e?this.emit(x.play):this.emit(x.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(x.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(x.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Qe(this)),this.audio||this._opt.hasAudio&&(this.audio=new Ve(this)),this.demux||(this.demux=new Ye(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new Ke(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new rt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new Ge(this),this.once(x.decoderWorkerInit,(()=>{e()})))}))}play(e,t){return new Promise(((i,o)=>{if(!e&&!this._opt.url)return o();this.loading=!0,this.playing=!1,this._times.playInitStart=he(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=he(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(j.webcodecsH265NotSupport,(()=>{this.emit(j.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(x.error,j.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(j.mediaSourceH265NotSupport,(()=>{this.emit(j.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(x.error,j.mediaSourceH265NotSupport)})),this.mseDecoder.once(j.mediaSourceFull,(()=>{this.emit(j.mediaSourceFull)})),this.mseDecoder.once(j.mediaSourceAppendBufferError,(()=>{this.emit(j.mediaSourceAppendBufferError)})),this.mseDecoder.once(j.mediaSourceBufferListLarge,(()=>{this.emit(j.mediaSourceBufferListLarge)})),this.mseDecoder.once(j.mediaSourceAppendBufferEndTimeout,(()=>{this.emit(j.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(j.fetchError,(e=>{o(e)})),this.stream.once(j.websocketError,(e=>{o(e)})),this.stream.once(x.streamEnd,(()=>{o()})),this.stream.once(j.hlsError,(e=>{o(e)})),this.stream.once(x.streamSuccess,(()=>{i(),this._times.streamResponse=he(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{o(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(x.timeout,x.delayTimeout),this.emit(x.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(x.timeout,x.loadingTimeout),this.emit(x.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(x.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=he()),Se(e.ts)&&(this._stats.ts=e.ts),Se(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=he();t-this._startBpsTime<1e3||(this.emit(x.stats,this._stats),this.emit(x.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(x.playToRenderTimes,e)}getOption(){return this._opt}}class dt extends Be{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);i.classList.add("jessibuca-container"),delete t.container,t.forceNoOffscreen=!0,ye()&&(t.controlAutoHide=!1),Se(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),Se(t.timeout)&&(we(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),we(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new de(this),this._initPlayer(i,t)}destroy(){this.events&&(this.events.destroy(),this.events=null),this.player&&(this.player.destroy(),this.player=null),this.$container=null,this._opt=null,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.off()}_initPlayer(e,t){this.player=new At(e,t),this.player.debug.log("jessibuca","_initPlayer",this.player.getOption()),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(D).forEach((e=>{this.player.on(D[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case P:t.isFullResize=!1,t.isResize=!1;break;case G:t.isFullResize=!1,t.isResize=!0;break;case N:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._opt.url="",this._opt.playOptions={},this.player.close()}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,o)=>{if(!e&&!this._opt.url)return this.emit(x.error,j.playError),void o("play url is empty");e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.player.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{o(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("jessibuca","this._play error",e),o(e)}))})).catch((e=>{this.player.debug.warn("jessibuca","this._opt.url is null and pause error",e),o(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("jessibuca","this._play error",e),o(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.player.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{o(e)}))}))}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,o)=>{this._opt.url=e,this._opt.playOptions=t;const r=0===e.indexOf("http"),d=r?a:s,c=r||-1!==e.indexOf(".flv")||this._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(j.webglAlignmentError,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.player.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(j.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")})))}))})),this.player.once(j.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(j.mediaSourceFull,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(j.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(j.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(j.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e).then((()=>{this.player.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(j.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","mseSourceBufferError close success")}))})),this.player.once(j.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(j.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.player.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(j.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","webcodecs decode error reset player and play error")})))}))})),this.player.once(j.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.pause().then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((()=>{this.player.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))}))})),this.player.on(x.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(x.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("Jessibuca","hasLoaded and play error",e),this.player.pause().then((()=>{o(e)}))})):this.player.once(x.decoderWorkerInit,(()=>{this.player.play(e,t).then((()=>{i()})).catch((e=>{this.player.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player.pause().then((()=>{o(e)}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,o){return this.player.video?this.player.video.screenshot(e,t,i,o):""}startRecord(e,t){return new Promise(((i,o)=>{this.player.playing?(this.player.startRecord(e,t),i()):o()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}}return r(dt,"ERROR",j),r(dt,"TIMEOUT",{loadingTimeout:x.loadingTimeout,delayTimeout:x.delayTimeout}),window.Jessibuca=dt,dt})); diff --git a/src/video/videoLoader.js b/src/video/videoLoader.js index 3e857c4c..aebc0cfb 100644 --- a/src/video/videoLoader.js +++ b/src/video/videoLoader.js @@ -36,7 +36,7 @@ export default class VideoLoader extends CommonLoader { const {proxy} = this.player.events; proxy(this.$videoElement, 'canplay', () => { - this.player.debug.log('Video', 'canplay'); + this.player.debug.log('Video', `canplay and _delayPlay is ${this._delayPlay}`); if (this._delayPlay) { this._play(); } @@ -51,7 +51,8 @@ export default class VideoLoader extends CommonLoader { const timeStamp = parseInt(event.timeStamp, 10); this.player.emit(EVENTS.timeUpdate, timeStamp) // check is pause; - if (!this.isPlaying()) { + if (!this.isPlaying() && this.init) { + this.player.debug.log('Video', `timeupdate and this.isPlaying is false and retry play`); this.$videoElement.play(); } })