diff --git a/demo/public/decoder.js b/demo/public/decoder.js index 29c1c6d8..2a24c58a 100644 --- a/demo/public/decoder.js +++ b/demo/public/decoder.js @@ -7456,6 +7456,8 @@ const DEFAULT_PLAYER_OPTIONS = { videoBuffer: 1000, //1000ms == 1 second + videoBufferDelay: 1000, + // 1000ms isResize: true, isFullResize: false, // @@ -7665,7 +7667,8 @@ forceNoOffscreen: DEFAULT_PLAYER_OPTIONS.forceNoOffscreen, useWCS: DEFAULT_PLAYER_OPTIONS.useWCS, videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer, - openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment + openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment, + videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay }, useOffscreen: function () { return !decoder$1.opt.forceNoOffscreen && typeof OffscreenCanvas != 'undefined'; @@ -7801,7 +7804,14 @@ this.delay = -1; } else { if (timestamp) { - this.delay = Date.now() - this.startTimestamp - (timestamp - this.firstTimestamp); + const localTimestamp = Date.now() - this.startTimestamp; + const timeTimestamp = timestamp - this.firstTimestamp; + + if (localTimestamp >= timeTimestamp) { + this.delay = localTimestamp - timeTimestamp; + } else { + this.delay = timeTimestamp - localTimestamp; + } } } @@ -7853,12 +7863,12 @@ var data = buffer[0]; if (this.getDelay(data.ts) === -1) { - decoder$1.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1'); + // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1'); buffer.shift(); _doDecode(data); - } else if (this.delay > decoder$1.opt.videoBuffer + 1000) { - decoder$1.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`); + } else if (this.delay > decoder$1.opt.videoBuffer + decoder$1.opt.videoBufferDelay) { + // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`); this.resetDelay(); this.dropping = true; } else { @@ -7866,7 +7876,7 @@ data = buffer[0]; if (this.getDelay(data.ts) > decoder$1.opt.videoBuffer) { - // 丢帧。。。 + // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`); buffer.shift(); _doDecode(data); diff --git a/demo/public/decoder.js.map b/demo/public/decoder.js.map index 8b0f9ff3..49969449 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","../../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\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms == 1 second\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: false, // loading timeout replay\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,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n wcsUseVideoRender: false,\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 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 mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\n\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 aLink.href = URL.createObjectURL(content);\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(content);\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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '') {\n return \"0 KB/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 createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\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.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n aLink.dispatchEvent(evt);\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","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 } 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 forceNoOffscreen: DEFAULT_PLAYER_OPTIONS.forceNoOffscreen,\n useWCS: DEFAULT_PLAYER_OPTIONS.useWCS,\n videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer,\n openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment\n },\n useOffscreen: function () {\n return !decoder.opt.forceNoOffscreen && 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 this.webglObj.render(w, h, Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize)));\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 var yuv = [Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize))];\n var outputArray = yuv.map(buffer => Uint8Array.from(buffer));\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 if (timestamp) {\n this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp);\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 + 1000) {\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 // 丢帧。。。\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();\n 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};\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","DEFAULT_PLAYER_OPTIONS","videoBuffer","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","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","yuv","getDelay","firstTimestamp","startTimestamp","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","../../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\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: false, // loading timeout replay\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,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n wcsUseVideoRender: false,\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 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 mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\n","import {MP4_CODECS, FILE_SUFFIX} from \"../constant\";\n\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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || 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\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","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} 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 forceNoOffscreen: DEFAULT_PLAYER_OPTIONS.forceNoOffscreen,\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.forceNoOffscreen && 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 this.webglObj.render(w, h, Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize)));\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 var yuv = [Module.HEAPU8.subarray(y, y + size), Module.HEAPU8.subarray(u, u + qsize), Module.HEAPU8.subarray(v, v + (qsize))];\n var outputArray = yuv.map(buffer => Uint8Array.from(buffer));\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();\n 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};\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","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","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","yuv","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/jessibuca.js b/demo/public/jessibuca.js index dd9fe68a..7727e6cc 100644 --- a/demo/public/jessibuca.js +++ b/demo/public/jessibuca.js @@ -49,6 +49,8 @@ const DEFAULT_PLAYER_OPTIONS = { videoBuffer: 1000, //1000ms == 1 second + videoBufferDelay: 1000, + // 1000ms isResize: true, isFullResize: false, // @@ -621,10 +623,11 @@ function downloadImg(content, fileName) { const aLink = document.createElement("a"); aLink.download = fileName; - aLink.href = URL.createObjectURL(content); + const href = URL.createObjectURL(content); + aLink.href = href; aLink.click(); setTimeout(() => { - URL.revokeObjectURL(content); + URL.revokeObjectURL(href); }, isIOS() ? 1000 : 0); } function now() { @@ -734,12 +737,12 @@ } function bpsSize(value) { if (null == value || value === '') { - return "0 KB/S"; + return "0kb/s"; } let size = parseFloat(value); size = size.toFixed(2); - return size + 'KB/S'; + return size + 'kb/s'; } function fpsStatus(fps) { let result = 0; @@ -756,7 +759,7 @@ const $canvasElement = document.createElement("canvas"); $canvasElement.width = width; $canvasElement.height = height; - return createImageBitmap($canvasElement, 0, 0, width, height); + return window.createImageBitmap($canvasElement, 0, 0, width, height); } function supportMSE() { return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc); @@ -8437,6 +8440,7 @@ forceNoOffscreen: this.player._opt.forceNoOffscreen, useWCS: this.player._opt.useWCS, videoBuffer: this.player._opt.videoBuffer, + videoBufferDelay: this.player._opt.videoBufferDelay, openWebglAlignment: this.player._opt.openWebglAlignment }; this.decoderWorker.postMessage({ @@ -8541,7 +8545,14 @@ this.delay = -1; } else { if (timestamp) { - this.delay = Date.now() - this.startTimestamp - (timestamp - this.firstTimestamp); + const localTimestamp = Date.now() - this.startTimestamp; + const timeTimestamp = timestamp - this.firstTimestamp; + + if (localTimestamp >= timeTimestamp) { + this.delay = localTimestamp - timeTimestamp; + } else { + this.delay = timeTimestamp - localTimestamp; + } } } @@ -8562,6 +8573,7 @@ let _loop = () => { let data; const videoBuffer = this.player._opt.videoBuffer; + const videoBufferDelay = this.player._opt.videoBufferDelay; if (this.bufferList.length) { if (this.dropping) { @@ -8594,7 +8606,7 @@ this.bufferList.shift(); this._doDecoderDecode(data); - } else if (this.delay > videoBuffer + 1000) { + } else if (this.delay > videoBuffer + videoBufferDelay) { // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`); this.resetDelay(); this.dropping = true; @@ -10870,13 +10882,14 @@ let dts = ts; // player.debug.log('MediaSource', '_decodeVideo', ts); const $video = player.video.$videoElement; + const videoBufferDelay = player._opt.videoBufferDelay; if ($video.buffered.length > 1) { this.removeBuffer($video.buffered.start(0), $video.buffered.end(0)); this.timeInit = false; } - if (this.dropping && dts - this.cacheTrack.dts > 1000) { + if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) { this.dropping = false; this.cacheTrack = {}; } else if (this.cacheTrack && dts > this.cacheTrack.dts) { diff --git a/demo/public/jessibuca.js.map b/demo/public/jessibuca.js.map index ac98368a..5b18e99b 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/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/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/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/utils/h265-sps-parser.js","../../src/utils/h265.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\n\n// default player options\nexport const DEFAULT_PLAYER_OPTIONS = {\n videoBuffer: 1000, //1000ms == 1 second\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: false, // loading timeout replay\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,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n wcsUseVideoRender: false,\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 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 mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\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 if (master._opt.debug) {\n console.error(`Jessibuca: [${name}]`, ...args);\n }\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\";\n\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 aLink.href = URL.createObjectURL(content);\n aLink.click();\n setTimeout(() => {\n URL.revokeObjectURL(content);\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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || value === '') {\n return \"0 KB/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 createImageBitmap($canvasElement, 0, 0, width, height);\n}\n\n\nexport function supportMSE() {\n return window.MediaSource && window.MediaSource.isTypeSupported(MP4_CODECS.avc);\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.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n aLink.dispatchEvent(evt);\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","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = () => {\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 player.webFullscreen = true;\n });\n\n } catch (e) {\n player.webFullscreen = true;\n }\n } else {\n try {\n screenfull.exit().then(() => {\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\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\n //\n player.on(EVENTS.resize, () => {\n 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 //\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","import Emitter from \"../utils/emitter\";\nimport {\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\";\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 if (this.contextGl) {\n this.contextGl = null;\n }\n\n if (this.context2D) {\n this.context2D = null;\n }\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.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n\n this.player.$container.removeChild(this.$videoElement);\n this.init = false;\n this.off();\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 this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\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 const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\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) {\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, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n $videoElement.muted = true;\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n player.$container.appendChild($videoElement);\n this.$videoElement = $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\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', 'canplay');\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 })\n\n this.player.debug.log('Video', 'init');\n }\n\n destroy() {\n this.player.$container.removeChild(this.$videoElement);\n if (this.$videoElement) {\n this.$videoElement.src = ''\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n this.trackGenerator = null;\n }\n\n\n this.init = false;\n this.off();\n this.player.debug.log('Video', 'destroy');\n }\n\n play() {\n // this.$videoElement.autoplay = true;\n this.$videoElement.play();\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 = document.createElement('canvas');\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n const context = canvas.getContext('2d');\n context.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(SCREENSHOT_TYPE[format] || SCREENSHOT_TYPE.png, encoderOptions);\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\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) {\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","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\n destroy() {\n this.closeAudio();\n this.audioContext.close();\n this.audioContext = null;\n this.gainNode = null;\n this.init = false;\n this.hasAudio = false;\n this.playing = false;\n\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.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\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) {\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\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, 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 fetchStream(url) {\n const {demux} = this.player;\n this.player._times.streamStart = now();\n fetch(url, {signal: this.abortController.signal}).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 // 这边会报用户 aborted a request 错误。\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n this.abort();\n })\n }\n fetchNext();\n }).catch((e) => {\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 fetchStream(url) {\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} from \"../utils\";\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 = 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', 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 downloadRecord(this.recorder.getBlob(), this.fileName, this.fileType);\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 {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 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 forceNoOffscreen: this.player._opt.forceNoOffscreen,\n useWCS: this.player._opt.useWCS,\n videoBuffer: this.player._opt.videoBuffer,\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 && !this.player._opt.useOffscreen) {\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 }\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 this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp)\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 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) {\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 + 1000) {\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 while (this.bufferList.length) {\n data = this.bufferList[0]\n\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 break;\n }\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame) {\n const player = this.player;\n let options = {\n ts: ts,\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);\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 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 this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame);\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 }\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 }\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","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE} from \"../constant\";\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 this.decoder.close();\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 // release resource\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close()\n } else {\n videoFrame.destroy()\n }\n }, 100)\n }\n\n handleError(error) {\n this.player.debug.log('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 // 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.decoder.decode(chunk);\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) {\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 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.$fullscreen, 'display', flag ? 'flex' : 'none');\n\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 })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\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 player.lastVolume = player.volume;\n player.volume = 0;\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 }\n })\n\n proxy(player.$container, 'mouseout', () => {\n setStyle(control.$controls, 'display', 'none');\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 observer(player, this);\n property(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.$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","export 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', () => {\n player.fullscreen = !player.fullscreen;\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","/*\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;\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;\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;\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 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\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n let profile_string = '';\n let level_string = '';\n let bit_depth = '';\n let ref_frames = '';\n let chroma_format = '';\n let fps_fixed = '';\n let fps = '';\n let fps_den = '';\n let fps_num = '';\n let sar_width = '';\n let sar_height = '';\n let codec_width = '';\n let codec_height = '';\n let present_width = '';\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: '',\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\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n}\n\nexport default SPSParser\n","import {H265_NAL_TYPE} from \"../constant\";\nimport SPSParser from \"./h265-sps-parser\";\n\nexport function parseHEVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n meta.videoType = 'hevc'\n let offset = 28 - 5;\n //\n const vpsTag = arrayBuffer[offset];\n\n if (vpsTag !== H265_NAL_TYPE.vps) {\n return meta;\n }\n\n offset += 2;\n offset += 1;\n const vpsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const vpsData = arrayBuffer.slice(offset, (offset + vpsLength));\n console.log(Uint8Array.from(vpsData));\n offset += vpsLength;\n\n const spsTag = arrayBuffer[offset]\n if (spsTag !== H265_NAL_TYPE.sps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const spsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n\n offset += 2;\n const spsData = arrayBuffer.slice(offset, (offset + spsLength))\n console.log(Uint8Array.from(spsData));\n\n offset += spsLength;\n\n const ppsTag = arrayBuffer[offset];\n\n if (ppsTag !== H265_NAL_TYPE.pps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const ppsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const ppsData = arrayBuffer.slice(offset, (offset + ppsLength))\n console.log(Uint8Array.from(ppsData));\n\n let sps = Uint8Array.from(spsData);\n let config = SPSParser.parseSPS(sps);\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n\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\n return meta;\n}\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 {parseHEVCDecoderConfigurationRecord} from \"../utils/h265\";\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.bufferList = [];\n this.dropping = 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.bufferList = [];\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.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return 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.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe) {\n const player = this.player;\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 this._decodeVideo(payload, ts, isIframe);\n }\n }\n\n _doDecode() {\n const bufferItem = this.bufferList.shift();\n if (bufferItem) {\n this._decodeVideo(bufferItem.payload, bufferItem.ts, bufferItem.isIframe);\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n if (videoCodec === VIDEO_ENC_CODE.h264) {\n config = parseAVCDecoderConfigurationRecord(data)\n } else if (videoCodec === VIDEO_ENC_CODE.h265) {\n config = parseHEVCDecoderConfigurationRecord(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, ts, isIframe) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n let cts = 0;\n let dts = ts;\n // player.debug.log('MediaSource', '_decodeVideo', ts);\n const $video = player.video.$videoElement;\n\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 > 1000) {\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: ts, buf: player.demux.delay})\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\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.sourceBuffer.updating === false && this.isStateOpen) {\n this.sourceBuffer.appendBuffer(buffer);\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(false);\n }\n }\n }\n\n stop() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n }\n }\n this.endOfStream();\n }\n\n dropSourceBuffer(flag) {\n const video = this.player.video;\n const $video = video.$videoElement;\n this.dropping = flag;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\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 console.error(e)\n }\n }\n }\n\n endOfStream() {\n if (this.isStateOpen) {\n this.mediaSource.endOfStream();\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,\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 if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\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 } else if (this._opt.useWCS) {\n\n }\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\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\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n }\n\n //\n this.control = new Control(this);\n\n this.keepScreenOn = new NoSleep(this);\n\n\n events(this);\n observer(this);\n\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\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 //\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()) {\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\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 this.audio && this.audio.setVolume(value);\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.startRecord();\n }\n } else {\n this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder && this.recorder.recording;\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\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.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) {\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\n this.enableWakeLock();\n\n this.stream.fetchStream(url);\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 // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\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.clearView();\n resolve()\n })\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 this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n // release audio buffer\n this.audio && this.audio.pause();\n this.video && this.video.pause();\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) {\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 this.pause(false).then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }, this._opt.heartTimeout * 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 this.pause(false).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 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.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n 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","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, 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\n $container.classList.add('jessibuca-container');\n\n delete _opt.container;\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._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n const _options = Object.assign(this._opt, options);\n this._initPlayer(this.$container, _options);\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 isDebug: !!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 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 * @returns {Promise}\n */\n play(url) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject();\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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n return this._play(url);\n }).catch(() => {\n reject();\n })\n }\n } else {\n return this._play(url);\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @returns {Promise}\n * @private\n */\n _play(url) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\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.mediaSourceH265NotSupport, () => {\n this.close().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).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.close().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.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n\n // 解码报错。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.close().then(() => {\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).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.log('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n }\n })\n\n // 监听 delay timeout\n this.player.once(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay && this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes) {\n this._heartTimeoutReplayTimes += 1;\n this.play(url).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.once(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay && this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes) {\n this._loadingTimeoutReplayTimes += 1;\n this.play(url).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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\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, 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 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.playing;\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","DEFAULT_PLAYER_OPTIONS","videoBuffer","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","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","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","mediaSourceH265NotSupport","wasmDecodeError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","H265_NAL_TYPE","vps","sps","pps","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","FILE_SUFFIX","mp4","webm","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","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","downloadImg","content","fileName","aLink","document","createElement","href","URL","createObjectURL","click","setTimeout","revokeObjectURL","isIOS","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","downloadRecord","suffix","window","isMobile","test","navigator","userAgent","toLowerCase","UA","supportWCS","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","toString","codec","description","isFullScreen","mozIsFullScreen","webkitIsFullScreen","bpsSize","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","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","screenfullChange","emit","screenfull","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","includes","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","i","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","updateVideoInfo","encTypeCode","encType","clearView","CanvasVideoLoader","position","top","left","$videoElement","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","removeChild","_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","trackGenerator","MediaStreamTrackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","src","$video","canvas","videoWidth","videoHeight","context","write","objectFill","objectFit","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","isPlaying","isMute","isStateSuspended","volume","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","isNaN","setValueAtTime","currentTime","disconnect","state","resume","suspend","isStateRunning","Audio","FetchLoader","abortController","AbortController","streamRate","rate","abort","fetchStream","demux","_times","signal","res","reader","body","getReader","fetchNext","read","done","byteLength","dispatch","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","global","RecordRTCLoader","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","indexOf","JSON","stringify","decodeVideo","arrayBuffer","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","resetDelay","_loop","payload","_doDecoderDecode","_doDecode","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","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","parseInt","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","$volume","$volumePanelWrap","lastVolume","isVolumeDroging","$recordingStop","addHotkey","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","preventDefault","Control","template","observer","property","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","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","prototype","call","arguments","arrayCount","offset","generateInitSegment","meta","timescale","duration","trackId","id","presentWidth","presentHeight","xmhd","videoType","channelCount","audioSampleRate","configSize","concat","avcc","codecWidth","codecHeight","track","baseMediaDecodeTime","sequenceNumber","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","cts","isNonSync","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","version","avcProfile","_naluLengthSize","spsCount","getUint16","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","ppsCount","parseHEVCDecoderConfigurationRecord","vpsTag","vpsLength","vpsData","from","spsTag","spsLength","spsData","ppsTag","ppsLength","ppsData","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","stop","readyState","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","_decodeVideo","metaData","metaBox","appendBuffer","bytes","dts","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","endOfStream","dropSourceBuffer","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","random","dataURI","isEnabled","wakeLock","err","disable","hidden","location","Promise","resolve","playPromise","release","Player","container","assign","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","releaseWakeLock","resetStats","updateOption","contains","reject","checkLoadingTimeout","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","clearTimeout","_nowTime","Jessibuca","Error","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_initPlayer","_bindEvents","_resetPlayer","_options","setDebug","isDebug","cancelMute","audioResume","setScaleMode","_play","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/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/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/utils/exp-golomb.js","../../src/utils/h264-sps-parser.js","../../src/utils/h264.js","../../src/utils/h265-sps-parser.js","../../src/utils/h265.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\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: false, // loading timeout replay\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,\n showBandwidth: false, //\n keepScreenOn: false,\n isNotMute: false,\n hasAudio: true,\n hasVideo: true,\n operateBtns: {\n fullscreen: false,\n screenshot: false,\n play: false,\n audio: false,\n record: false,\n },\n controlAutoHide: false,\n hasControl: false,\n loadingText: '',\n background: '',\n decoder: 'decoder.js',\n url: '',//\n rotate: 0,\n // text: '',\n forceNoOffscreen: true, // 默认是不采用\n hiddenAutoPause: false,\n protocol: PLAYER_PLAY_PROTOCOL.fetch,\n demuxType: DEMUX_TYPE.flv, //\n useWCS: false, //\n wcsUseVideoRender: false,\n useMSE: false, //\n useOffscreen: false, //\n autoWasm: true, // 自动降级到 wasm 模式\n wasmDecodeErrorReplay: true, // 解码失败重新播放。\n openWebglAlignment: false,// https://github.com/langhuihui/jessibuca/issues/152\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 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 mediaSourceH265NotSupport: 'mediaSourceH265NotSupport',\n wasmDecodeError: 'wasmDecodeError'\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 FILE_SUFFIX = {\n mp4: 'mp4',\n webm: 'webm'\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}\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 if (master._opt.debug) {\n console.error(`Jessibuca: [${name}]`, ...args);\n }\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\";\n\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 document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen;\n}\n\nexport function bpsSize(value) {\n if (null == value || 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\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","import {EVENTS, EVENTS_ERROR, JESSIBUCA_EVENTS} from \"../constant\";\nimport screenfull from \"screenfull\";\nimport {setStyle} from \"../utils\";\n\nexport default (player) => {\n\n\n try {\n const screenfullChange = () => {\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 player.webFullscreen = true;\n });\n\n } catch (e) {\n player.webFullscreen = true;\n }\n } else {\n try {\n screenfull.exit().then(() => {\n }).catch(() => {\n player.webFullscreen = false;\n\n });\n } catch (e) {\n player.webFullscreen = false;\n }\n }\n })\n\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\n //\n player.on(EVENTS.resize, () => {\n 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 //\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","import Emitter from \"../utils/emitter\";\nimport {\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\";\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 if (this.contextGl) {\n this.contextGl = null;\n }\n\n if (this.context2D) {\n this.context2D = null;\n }\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.videoInfo = {\n width: '',\n height: '',\n encType: '',\n encTypeCode: ''\n }\n\n this.player.$container.removeChild(this.$videoElement);\n this.init = false;\n this.off();\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 this.context2D.drawImage(msg.videoFrame, 0, 0, this.$videoElement.width, this.$videoElement.height);\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 const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\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) {\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, isMobile, now} from \"../utils\";\nimport CommonLoader from \"./commonLoader\";\n\nexport default class VideoLoader extends CommonLoader {\n constructor(player) {\n super();\n this.player = player;\n const $videoElement = document.createElement('video');\n $videoElement.muted = true;\n $videoElement.style.position = \"absolute\";\n $videoElement.style.top = 0;\n $videoElement.style.left = 0;\n player.$container.appendChild($videoElement);\n this.$videoElement = $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\n this.resize();\n\n const {proxy} = this.player.events;\n\n proxy(this.$videoElement, 'canplay', () => {\n this.player.debug.log('Video', 'canplay');\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 })\n\n this.player.debug.log('Video', 'init');\n }\n\n destroy() {\n this.player.$container.removeChild(this.$videoElement);\n if (this.$videoElement) {\n this.$videoElement.src = ''\n this.$videoElement = null;\n }\n if (this.trackGenerator) {\n this.trackGenerator = null;\n }\n if (this.vwriter) {\n this.trackGenerator = null;\n }\n\n\n this.init = false;\n this.off();\n this.player.debug.log('Video', 'destroy');\n }\n\n play() {\n // this.$videoElement.autoplay = true;\n this.$videoElement.play();\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 = document.createElement('canvas');\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n const context = canvas.getContext('2d');\n context.drawImage($video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL(SCREENSHOT_TYPE[format] || SCREENSHOT_TYPE.png, encoderOptions);\n const file = dataURLToFile(dataURL)\n if (type === SCREENSHOT_TYPE.base64) {\n return dataURL;\n } else if (type === SCREENSHOT_TYPE.blob) {\n return file;\n } else if (type === SCREENSHOT_TYPE.download) {\n downloadImg(file, filename);\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) {\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","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\n destroy() {\n this.closeAudio();\n this.audioContext.close();\n this.audioContext = null;\n this.gainNode = null;\n this.init = false;\n this.hasAudio = false;\n this.playing = false;\n\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.audioInfo = {\n encType: '',\n channels: '',\n sampleRate: ''\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) {\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\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, 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 fetchStream(url) {\n const {demux} = this.player;\n this.player._times.streamStart = now();\n fetch(url, {signal: this.abortController.signal}).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 // 这边会报用户 aborted a request 错误。\n this.emit(EVENTS_ERROR.fetchError, e);\n this.player.emit(EVENTS.error, EVENTS_ERROR.fetchError);\n this.abort();\n })\n }\n fetchNext();\n }).catch((e) => {\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 fetchStream(url) {\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} from \"../utils\";\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 = 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', 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 downloadRecord(this.recorder.getBlob(), this.fileName, this.fileType);\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 {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 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 forceNoOffscreen: this.player._opt.forceNoOffscreen,\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 && !this.player._opt.useOffscreen) {\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 }\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) {\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 while (this.bufferList.length) {\n data = this.bufferList[0]\n\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 break;\n }\n }\n }\n }\n }\n }\n _loop();\n this.stopId = setInterval(_loop, 10)\n }\n\n _doDecode(payload, type, ts, isIFrame) {\n const player = this.player;\n let options = {\n ts: ts,\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);\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 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 this._doDecode(payload, MEDIA_TYPE.video, ts, isIFrame);\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 }\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 }\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","import {formatVideoDecoderConfigure, noop, now} from \"../utils\";\nimport Emitter from \"../utils/emitter\";\nimport {ENCODED_VIDEO_TYPE, EVENTS, EVENTS_ERROR, VIDEO_ENC_CODE} from \"../constant\";\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 this.decoder.close();\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 // release resource\n setTimeout(function () {\n if (videoFrame.close) {\n videoFrame.close()\n } else {\n videoFrame.destroy()\n }\n }, 100)\n }\n\n handleError(error) {\n this.player.debug.log('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 // 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.decoder.decode(chunk);\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) {\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 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.$fullscreen, 'display', flag ? 'flex' : 'none');\n\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 })\n\n // 监听 play 方法\n proxy(control.$playBig, 'click', (e) => {\n player.play();\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 player.lastVolume = player.volume;\n player.volume = 0;\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 }\n })\n\n proxy(player.$container, 'mouseout', () => {\n setStyle(control.$controls, 'display', 'none');\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 observer(player, this);\n property(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.$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","export 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', () => {\n player.fullscreen = !player.fullscreen;\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","/*\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;\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;\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;\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 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\n static parseSPS(uint8array) {\n let rbsp = SPSParser._ebsp2rbsp(uint8array);\n let gb = new ExpGolomb(rbsp);\n let profile_string = '';\n let level_string = '';\n let bit_depth = '';\n let ref_frames = '';\n let chroma_format = '';\n let fps_fixed = '';\n let fps = '';\n let fps_den = '';\n let fps_num = '';\n let sar_width = '';\n let sar_height = '';\n let codec_width = '';\n let codec_height = '';\n let present_width = '';\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: '',\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\n static getLevelString(level_idc) {\n return (level_idc / 10).toFixed(1);\n }\n\n}\n\nexport default SPSParser\n","import {H265_NAL_TYPE} from \"../constant\";\nimport SPSParser from \"./h265-sps-parser\";\n\nexport function parseHEVCDecoderConfigurationRecord(arrayBuffer) {\n const meta = {}\n meta.videoType = 'hevc'\n let offset = 28 - 5;\n //\n const vpsTag = arrayBuffer[offset];\n\n if (vpsTag !== H265_NAL_TYPE.vps) {\n return meta;\n }\n\n offset += 2;\n offset += 1;\n const vpsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const vpsData = arrayBuffer.slice(offset, (offset + vpsLength));\n console.log(Uint8Array.from(vpsData));\n offset += vpsLength;\n\n const spsTag = arrayBuffer[offset]\n if (spsTag !== H265_NAL_TYPE.sps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const spsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n\n offset += 2;\n const spsData = arrayBuffer.slice(offset, (offset + spsLength))\n console.log(Uint8Array.from(spsData));\n\n offset += spsLength;\n\n const ppsTag = arrayBuffer[offset];\n\n if (ppsTag !== H265_NAL_TYPE.pps) {\n return meta;\n }\n offset += 2;\n offset += 1;\n const ppsLength = arrayBuffer[offset + 1] | (arrayBuffer[offset] << 8);\n offset += 2;\n const ppsData = arrayBuffer.slice(offset, (offset + ppsLength))\n console.log(Uint8Array.from(ppsData));\n\n let sps = Uint8Array.from(spsData);\n let config = SPSParser.parseSPS(sps);\n\n meta.codecWidth = config.codec_size.width;\n meta.codecHeight = config.codec_size.height;\n\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\n return meta;\n}\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 {parseHEVCDecoderConfigurationRecord} from \"../utils/h265\";\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.bufferList = [];\n this.dropping = 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.bufferList = [];\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.off();\n this.player.debug.log('MediaSource', 'destroy')\n }\n\n get state() {\n return 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.duration\n }\n\n set duration(duration) {\n this.mediaSource.duration = duration\n }\n\n decodeVideo(payload, ts, isIframe) {\n const player = this.player;\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 this._decodeVideo(payload, ts, isIframe);\n }\n }\n\n _doDecode() {\n const bufferItem = this.bufferList.shift();\n if (bufferItem) {\n this._decodeVideo(bufferItem.payload, bufferItem.ts, bufferItem.isIframe);\n }\n }\n\n\n _decodeConfigurationRecord(payload, ts, isIframe, videoCodec) {\n let data = payload.slice(5);\n let config = {};\n\n if (videoCodec === VIDEO_ENC_CODE.h264) {\n config = parseAVCDecoderConfigurationRecord(data)\n } else if (videoCodec === VIDEO_ENC_CODE.h265) {\n config = parseHEVCDecoderConfigurationRecord(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, ts, isIframe) {\n const player = this.player;\n let arrayBuffer = payload.slice(5);\n let bytes = arrayBuffer.byteLength;\n let cts = 0;\n let dts = ts;\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: ts, buf: player.demux.delay})\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\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.sourceBuffer.updating === false && this.isStateOpen) {\n this.sourceBuffer.appendBuffer(buffer);\n return;\n }\n\n if (this.isStateClosed) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is not attached to video or mediaSource is closed')\n } else if (this.isStateEnded) {\n this.player.emit(EVENTS.mseSourceBufferError, 'mediaSource is closed')\n } else {\n if (this.sourceBuffer.updating === true) {\n this.player.emit(EVENTS.mseSourceBufferBusy);\n // this.dropSourceBuffer(false);\n }\n }\n }\n\n stop() {\n if (this.isStateOpen) {\n if (this.sourceBuffer) {\n this.sourceBuffer.abort();\n }\n }\n this.endOfStream();\n }\n\n dropSourceBuffer(flag) {\n const video = this.player.video;\n const $video = video.$videoElement;\n this.dropping = flag;\n if ($video.buffered.length > 0) {\n if ($video.buffered.end(0) - $video.currentTime > 1) {\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 console.error(e)\n }\n }\n }\n\n endOfStream() {\n if (this.isStateOpen) {\n this.mediaSource.endOfStream();\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,\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 if (this._opt.useMSE) {\n this._opt.useMSE = supportMSE();\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 } else if (this._opt.useWCS) {\n\n }\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\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\n if (this._opt.useWCS) {\n this.webcodecsDecoder = new WebcodecsDecoder(this)\n }\n\n if (this._opt.useMSE) {\n this.mseDecoder = new MseDecoder(this);\n }\n\n //\n this.control = new Control(this);\n\n this.keepScreenOn = new NoSleep(this);\n\n\n events(this);\n observer(this);\n\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\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 //\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()) {\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\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 this.audio && this.audio.setVolume(value);\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.startRecord();\n }\n } else {\n this.recorder.stopRecordAndSave();\n }\n }\n\n get recording() {\n return this.recorder && this.recorder.recording;\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\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.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) {\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\n this.enableWakeLock();\n\n this.stream.fetchStream(url);\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 // success\n this.stream.once(EVENTS.streamSuccess, () => {\n resolve();\n this._times.streamResponse = now();\n //\n this.video.play();\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.clearView();\n resolve()\n })\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 this.clearCheckHeartTimeout();\n this.clearCheckLoadingTimeout();\n this.playing = false;\n this.loading = false;\n this.recording = false;\n // release audio buffer\n this.audio && this.audio.pause();\n this.video && this.video.pause();\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) {\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 this.pause(false).then(() => {\n this.emit(EVENTS.timeout, EVENTS.delayTimeout);\n this.emit(EVENTS.delayTimeout);\n });\n }, this._opt.heartTimeout * 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 this.pause(false).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 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.enable();\n }\n }\n\n releaseWakeLock() {\n if (this._opt.keepScreenOn) {\n 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","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, 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\n $container.classList.add('jessibuca-container');\n\n delete _opt.container;\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._bindEvents();\n }\n\n _resetPlayer(options = {}) {\n this.player.destroy();\n this.player = null;\n const _options = Object.assign(this._opt, options);\n this._initPlayer(this.$container, _options);\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 isDebug: !!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 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 * @returns {Promise}\n */\n play(url) {\n return new Promise((resolve, reject) => {\n if (!url && !this._opt.url) {\n this.emit(EVENTS.error, EVENTS_ERROR.playError)\n reject();\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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n } else {\n // url 发生改变了\n this.player.pause().then(() => {\n // 清除 画面\n this.clearView();\n return this._play(url);\n }).catch(() => {\n reject();\n })\n }\n } else {\n return this._play(url);\n }\n } else {\n // url 不存在的时候\n // 就是从 play -> pause -> play\n this.player.play(this._opt.url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n }\n })\n }\n\n /**\n *\n * @param url {string}\n * @returns {Promise}\n * @private\n */\n _play(url) {\n return new Promise((resolve, reject) => {\n this._opt.url = url;\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.mediaSourceH265NotSupport, () => {\n this.close().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).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.close().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.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play error')\n });\n }\n });\n })\n\n // 解码报错。\n this.player.once(EVENTS_ERROR.wasmDecodeError, () => {\n if (this.player._opt.wasmDecodeErrorReplay) {\n this.close().then(() => {\n this.player.debug.log('Jessibuca', 'wasm decode error and reset player and play')\n this._resetPlayer({useWCS: false})\n this.play(url).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.log('Jessibuca', 'wasm decode error and reset player and play error')\n });\n })\n }\n })\n\n // 监听 delay timeout\n this.player.once(EVENTS.delayTimeout, () => {\n if (this.player._opt.heartTimeoutReplay && this._heartTimeoutReplayTimes < this.player._opt.heartTimeoutReplayTimes) {\n this._heartTimeoutReplayTimes += 1;\n this.play(url).then(() => {\n // resolve();\n this._heartTimeoutReplayTimes = 0;\n }).catch(() => {\n // reject();\n });\n }\n })\n\n // 监听 loading timeout\n this.player.once(EVENTS.loadingTimeout, () => {\n if (this.player._opt.loadingTimeoutReplay && this._loadingTimeoutReplayTimes < this.player._opt.loadingTimeoutReplayTimes) {\n this._loadingTimeoutReplayTimes += 1;\n this.play(url).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).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\n })\n })\n } else {\n this.player.once(EVENTS.decoderWorkerInit, () => {\n this.player.play(url).then(() => {\n resolve();\n }).catch(() => {\n this.player.pause().then(() => {\n reject();\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, 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 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.playing;\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","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","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","videoWaiting","videoTimeUpdate","videoSyncAudio","playToRenderTimes","JESSIBUCA_EVENTS","EVENTS_ERROR","playError","fetchError","websocketError","webcodecsH265NotSupport","mediaSourceH265NotSupport","wasmDecodeError","WEBSOCKET_STATUS","notConnect","open","SCREENSHOT_TYPE","download","base64","blob","VIDEO_ENC_TYPE","VIDEO_ENC_CODE","h264","h265","AUDIO_ENC_TYPE","H265_NAL_TYPE","vps","sps","pps","CONTROL_HEIGHT","SCALE_MODE_TYPE","full","auto","fullAuto","FILE_SUFFIX","mp4","webm","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","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","downloadImg","content","fileName","aLink","document","createElement","href","URL","createObjectURL","click","setTimeout","revokeObjectURL","isIOS","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","downloadRecord","suffix","window","isMobile","test","navigator","userAgent","toLowerCase","UA","supportWCS","formatVideoDecoderConfigure","avcC","codecArray","subarray","codecString","j","h","toString","codec","description","isFullScreen","mozIsFullScreen","webkitIsFullScreen","bpsSize","toFixed","fpsStatus","fps","result","createEmptyImageBitmap","$canvasElement","createImageBitmap","supportMSE","MediaSource","isTypeSupported","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","screenfullChange","emit","screenfull","on","events","off","loaded","request","then","catch","exit","classList","add","remove","ignoreList","includes","Emitter","fn","ctx","once","self","listener","apply","_","evtArr","slice","data","i","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","updateVideoInfo","encTypeCode","encType","clearView","CanvasVideoLoader","position","top","left","$videoElement","appendChild","context2D","contextGl","contextGlRender","contextGlDestroy","bitmaprenderer","renderType","_initCanvasRender","removeChild","_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","trackGenerator","MediaStreamTrackGenerator","kind","srcObject","MediaStream","vwriter","writable","getWriter","src","$video","canvas","videoWidth","videoHeight","context","write","objectFill","objectFit","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","isPlaying","isMute","isStateSuspended","volume","bufferSize","initScriptNode","createScriptProcessor","audioProcessingEvent","outputBuffer","bufferItem","shift","audioTimestamp","channel","nowBuffering","getChannelData","flag","setVolume","isNaN","setValueAtTime","currentTime","disconnect","state","resume","suspend","isStateRunning","Audio","FetchLoader","abortController","AbortController","streamRate","rate","abort","fetchStream","demux","_times","signal","res","reader","body","getReader","fetchNext","read","done","byteLength","dispatch","WebsocketLoader","socket","socketStatus","wsUrl","_createWebSocket","WebSocket","binaryType","_handleMessage","message","Stream","global","RecordRTCLoader","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","indexOf","JSON","stringify","decodeVideo","arrayBuffer","isIFrame","decodeAudio","_decodeAudioNoDelay","_decodeAudio","updateWorkConfig","config","stopId","firstTimestamp","startTimestamp","dropping","initInterval","getDelay","localTimestamp","timeTimestamp","resetDelay","_loop","payload","_doDecoderDecode","_doDecode","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","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","parseInt","$loading","$poster","$playBig","$fullscreenExit","$fullscreen","$controls","translateX","translateY","$record","$recordStop","$recording","$recordingTime","$play","$pause","$screenshot","$speed","bps","volumeChangeFromEvent","bottom","panelBottom","moveLen","composedPath","isFocus","stopPropagation","$volume","$volumePanelWrap","lastVolume","isVolumeDroging","$recordingStop","addHotkey","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","preventDefault","Control","template","observer","property","hotkey","autoSize","padding","playerRatio","canvasWidth","canvasHeight","canvasRatio","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","prototype","call","arguments","arrayCount","offset","generateInitSegment","meta","timescale","duration","trackId","id","presentWidth","presentHeight","xmhd","videoType","channelCount","audioSampleRate","configSize","concat","avcc","codecWidth","codecHeight","track","baseMediaDecodeTime","sequenceNumber","flags","isLeading","dependsOn","isDependedOn","hasRedundancy","dataSize","cts","isNonSync","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","version","avcProfile","_naluLengthSize","spsCount","getUint16","profile","level","bitDepth","chromaFormat","sarRatio","frameRate","refSampleDuration","ppsCount","parseHEVCDecoderConfigurationRecord","vpsTag","vpsLength","vpsData","from","spsTag","spsLength","spsData","ppsTag","ppsLength","ppsData","MseDecoder","isAvc","mediaSource","sourceBuffer","cacheTrack","timeInit","mediaSourceOpen","stop","readyState","isStateOpen","isStateClosed","isStateEnded","_decodeConfigurationRecord","_decodeVideo","metaData","metaBox","appendBuffer","bytes","dts","buffered","removeBuffer","end","mdatBytes","mdatbox","moofbox","isKeyframe","addSourceBuffer","updating","endOfStream","dropSourceBuffer","WEBM","oldIOS","exec","MSStream","nativeWakeLock","NoSleep","_wakeLock","handleVisibilityChange","enable","noSleepTimer","noSleepVideo","_addSourceToVideo","random","dataURI","isEnabled","wakeLock","err","disable","hidden","location","Promise","resolve","playPromise","release","Player","container","assign","_hasControl","_loading","_playing","_hasLoaded","_checkHeartTimeout","_checkLoadingTimeout","_startBpsTime","_stats","_videoTimestamp","_audioTimestamp","_onlyMseOrWcsVideo","clearCheckHeartTimeout","clearCheckLoadingTimeout","releaseWakeLock","resetStats","updateOption","contains","reject","checkLoadingTimeout","_close","hasBtnShow","text","checkHeart","checkHeartTimeout","clearTimeout","_nowTime","Jessibuca","Error","_loadingTimeoutReplayTimes","_heartTimeoutReplayTimes","_initPlayer","_bindEvents","_resetPlayer","_options","setDebug","isDebug","cancelMute","audioResume","setScaleMode","_play","isHttp","hasLoaded","setBufferTime","setRotate","deg","list","setKeepScreenOn","setFullscreen"],"mappings":"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"} \ No newline at end of file diff --git a/demo/public/ws-demo.html b/demo/public/ws-demo.html index 0fc365c4..2e3130d9 100644 --- a/demo/public/ws-demo.html +++ b/demo/public/ws-demo.html @@ -136,7 +136,7 @@ }, forceNoOffscreen: forceNoOffscreen, isNotMute: false, - heartTimeout: 100 + heartTimeout: 100, },); jessibuca.onLog = msg => console.error(msg); @@ -145,9 +145,9 @@ jessibuca.onPlay = () => console.log('onPlay'); jessibuca.onFullscreen = msg => console.log('onFullscreen', msg); jessibuca.onMute = msg => console.log('onMute', msg); - jessibuca.on('stats', (stats) => { - console.log('stats', stats); - }) + // jessibuca.on('stats', (stats) => { + // console.log('stats', stats); + // }) $player.style.display = 'inline-block'; $pause.style.display = 'none'; $destroy.style.display = 'none'; diff --git a/dist/decoder.js b/dist/decoder.js index 37769fc1..ac489549 100644 --- a/dist/decoder.js +++ b/dist/decoder.js @@ -1 +1 @@ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),a=n(r),i=n(t);var s=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r=void 0!==r?r:{},t=(r={print:function(e){console.log("Jessibuca: [worker]:",e)},printErr:function(e){console.warn("Jessibuca: [worker]:",e),postMessage({cmd:"wasmError",message:e})}},Object.assign({},r)),n="./this.program",s="object"==typeof window,l="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!s&&!u&&!l;if(r.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 d,f,p,m,h,g,v="";if(u){if("object"!=typeof process)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?)");v=l?o.default.dirname(v)+"/":__dirname+"/",g=()=>{h||(m=a.default,h=o.default)},d=function(e,r){return g(),e=h.normalize(e),m.readFileSync(e,r?void 0:"utf8")},p=e=>{var r=d(e,!0);return r.buffer||(r=new Uint8Array(r)),D(r.buffer),r},f=(e,r,t)=>{g(),e=h.normalize(e),m.readFile(e,(function(e,n){e?t(e):r(n.buffer)}))},process.argv.length>1&&(n=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=r,process.on("uncaughtException",(function(e){if(!(e instanceof St))throw e})),process.on("unhandledRejection",(function(e){throw e})),r.inspect=function(){return"[Emscripten Module object]"}}else if(c){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)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?)");"undefined"!=typeof read&&(d=function(e){return read(e)}),p=function(e){let r;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(r=read(e,"binary"),D("object"==typeof r),r)},f=function(e,r,t){setTimeout((()=>r(p(e))),0)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!s&&!l)throw new Error("environment detection error");if(l?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)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?)");d=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},l&&(p=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),f=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var y,E,w,b=r.print||console.log.bind(console),_=r.printErr||console.warn.bind(console);function T(e){T.shown||(T.shown={}),T.shown[e]||(T.shown[e]=1,_(e))}function k(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge("Module."+e+" has been replaced with plain "+t+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function S(e,r){var t="'"+e+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";return r&&(t+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),t}function C(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge(S(e,t))}})}function P(e,t){Object.getOwnPropertyDescriptor(r,e)||(r[e]=()=>ge(S(e,t)))}Object.assign(r,t),t=null,y="fetchSettings",Object.getOwnPropertyDescriptor(r,y)&&ge("`Module."+y+"` was supplied but `"+y+"` not included in INCOMING_MODULE_JS_API"),r.arguments,k("arguments","arguments_"),r.thisProgram&&(n=r.thisProgram),k("thisProgram","thisProgram"),r.quit,k("quit","quit_"),D(void 0===r.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.read,"Module.read option was removed (modify read_ in JS)"),D(void 0===r.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),D(void 0===r.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),D(void 0===r.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),D(void 0===r.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),k("read","read_"),k("readAsync","readAsync"),k("readBinary","readBinary"),k("setWindowTitle","setWindowTitle"),D(!c,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."),r.wasmBinary&&(E=r.wasmBinary),k("wasmBinary","wasmBinary"),r.noExitRuntime,k("noExitRuntime","noExitRuntime"),"object"!=typeof WebAssembly&&ge("no native wasm support detected");var A=!1;function D(e,r){e||ge("Assertion failed"+(r?": "+r:""))}var O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&O)return O.decode(e.subarray(r,o));for(var a="";r>10,56320|1023&u)}}else a+=String.fromCharCode((31&i)<<6|s)}else a+=String.fromCharCode(i)}return a}function M(e,r){return e?F(U,e,r):""}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;s>1114111&&T("Invalid Unicode code point 0x"+s.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)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function N(e,r,t){return D("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),R(e,U,r,t)}function I(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var L,x,U,B,$,j,W,z,H,G="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function V(e,r){D(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&$[n];)++n;if((t=n<<1)-e>32&&G)return G.decode(U.subarray(e,t));for(var a="",i=0;!(i>=r/2);++i){var s=B[e+2*i>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Y(e,r,t){if(D(r%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),D("number"==typeof t,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,a=0;a>1]=i,r+=2}return B[r>>1]=0,r-n}function X(e){return 2*e.length}function q(e,r){D(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var t=0,n="";!(t>=r/4);){var o=j[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var a=o-65536;n+=String.fromCharCode(55296|a>>10,56320|1023&a)}else n+=String.fromCharCode(o)}return n}function K(e,r,t){if(D(r%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),D("number"==typeof t,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,a=0;a=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a);if(j[r>>2]=i,(r+=4)+4>o)break}return j[r>>2]=0,r-n}function J(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}function Q(e){var r=I(e)+1,t=gt(r);return t&&R(e,x,t,r),t}function Z(e){L=e,r.HEAP8=x=new Int8Array(e),r.HEAP16=B=new Int16Array(e),r.HEAP32=j=new Int32Array(e),r.HEAPU8=U=new Uint8Array(e),r.HEAPU16=$=new Uint16Array(e),r.HEAPU32=W=new Uint32Array(e),r.HEAPF32=z=new Float32Array(e),r.HEAPF64=H=new Float64Array(e)}var ee=5242880;r.TOTAL_STACK&&D(ee===r.TOTAL_STACK,"the stack size can no longer be determined at runtime");var re,te=r.INITIAL_MEMORY||67108864;function ne(){var e=kt();D(0==(3&e)),j[e>>2]=34821223,j[e+4>>2]=2310721022,j[0]=1668509029}function oe(){if(!A){var e=kt(),r=W[e>>2],t=W[e+4>>2];34821223==r&&2310721022==t||ge("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+t.toString(16)+" 0x"+r.toString(16)),1668509029!==j[0]&&ge("Runtime error: The application has corrupted its heap memory area (address zero)!")}}k("INITIAL_MEMORY","INITIAL_MEMORY"),D(te>=ee,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+te+"! (TOTAL_STACK="+"5242880)"),D("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),D(!r.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),D(67108864==te,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var ae=[],ie=[],se=[],le=!1;D(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),D(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),D(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),D(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 ue=0,ce=null,de=null,fe={};function pe(e){for(var r=e;;){if(!fe[e])return e;e=r+Math.random()}}function me(e){ue++,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(D(!fe[e]),fe[e]=1,null===ce&&"undefined"!=typeof setInterval&&(ce=setInterval((function(){if(A)return clearInterval(ce),void(ce=null);var e=!1;for(var r in fe)e||(e=!0,_("still waiting on run dependencies:")),_("dependency: "+r);e&&_("(end of list)")}),1e4))):_("warning: run dependency added without ID")}function he(e){if(ue--,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(D(fe[e]),delete fe[e]):_("warning: run dependency removed without ID"),0==ue&&(null!==ce&&(clearInterval(ce),ce=null),de)){var t=de;de=null,t()}}function ge(e){throw r.onAbort&&r.onAbort(e),_(e="Aborted("+e+")"),A=!0,new WebAssembly.RuntimeError(e)}var ve,ye,Ee;function we(e){return e.startsWith("data:application/octet-stream;base64,")}function be(e){return e.startsWith("file://")}function _e(e,t){return function(){var n=e,o=t;return t||(o=r.asm),D(le,"native function `"+n+"` called before runtime initialization"),o[e]||D(o[e],"exported native function `"+n+"` not found"),o[e].apply(null,arguments)}}function Te(e){try{if(e==ve&&E)return new Uint8Array(E);if(p)return p(e);throw"both async and sync fetching of the wasm failed"}catch(e){ge(e)}}function ke(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Ce(n)():Ce(n)(t.arg):n(void 0===t.arg?null:t.arg)}else t(r)}}function Se(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var r,t=(r=e,T("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),r);return e===t?e:t+" ["+e+"]"}))}function Ce(e){return re.get(e)}function Pe(){var e=new Error;if(!e.stack){try{throw new Error}catch(r){e=r}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}we(ve="decoder.wasm")||(ve=function(e){return r.locateFile?r.locateFile(e,v):v+e}(ve));var Ae={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Ae.isAbs(e),t="/"===e.substr(-1);return(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Ae.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Ae.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ae.normalize(e.join("/"))},join2:(e,r)=>Ae.normalize(e+"/"+r)};var De={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:Ie.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Ae.isAbs(n)}return(r?"/":"")+(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=De.resolve(e).substr(1),r=De.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=pt(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(b(F(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(b(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(_(F(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(_(F(e.output,0)),e.output=[])}}};function Fe(e){e=function(e,r){return D(r,"alignment argument is required"),Math.ceil(e/r)*r}(e,65536);var r=bt(65536,e);return r?(function(e,r){U.fill(0,e,e+r)}(r,e),r):0}var Me={ops_table:null,mount:function(e){return Me.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(Ie.isBlkdev(t)||Ie.isFIFO(t))throw new Ie.ErrnoError(63);Me.ops_table||(Me.ops_table={dir:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,lookup:Me.node_ops.lookup,mknod:Me.node_ops.mknod,rename:Me.node_ops.rename,unlink:Me.node_ops.unlink,rmdir:Me.node_ops.rmdir,readdir:Me.node_ops.readdir,symlink:Me.node_ops.symlink},stream:{llseek:Me.stream_ops.llseek}},file:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:{llseek:Me.stream_ops.llseek,read:Me.stream_ops.read,write:Me.stream_ops.write,allocate:Me.stream_ops.allocate,mmap:Me.stream_ops.mmap,msync:Me.stream_ops.msync}},link:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,readlink:Me.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:Ie.chrdev_stream_ops}});var o=Ie.createNode(e,r,t,n);return Ie.isDir(o.mode)?(o.node_ops=Me.ops_table.dir.node,o.stream_ops=Me.ops_table.dir.stream,o.contents={}):Ie.isFile(o.mode)?(o.node_ops=Me.ops_table.file.node,o.stream_ops=Me.ops_table.file.stream,o.usedBytes=0,o.contents=null):Ie.isLink(o.mode)?(o.node_ops=Me.ops_table.link.node,o.stream_ops=Me.ops_table.link.stream):Ie.isChrdev(o.mode)&&(o.node_ops=Me.ops_table.chrdev.node,o.stream_ops=Me.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ie.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ie.isDir(e.mode)?r.size=4096:Ie.isFile(e.mode)?r.size=e.usedBytes:Ie.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&Me.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ie.genericErrors[44]},mknod:function(e,r,t,n){return Me.createNode(e,r,t,n)},rename:function(e,r,t){if(Ie.isDir(e.mode)){var n;try{n=Ie.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ie.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ie.lookupNode(e,r);for(var n in t.contents)throw new Ie.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=Me.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ie.isLink(e.mode))throw new Ie.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(D(i>=0),i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||n+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=De.resolve(Ie.cwd(),e)))return{path:"",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new Ie.ErrnoError(32);for(var n=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!1),o=Ie.root,a="/",i=0;i40)throw new Ie.ErrnoError(32)}}return{path:a,node:o}},getPath:e=>{for(var r;;){if(Ie.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%Ie.nameTable.length},hashAddNode:e=>{var r=Ie.hashName(e.parent.id,e.name);e.name_next=Ie.nameTable[r],Ie.nameTable[r]=e},hashRemoveNode:e=>{var r=Ie.hashName(e.parent.id,e.name);if(Ie.nameTable[r]===e)Ie.nameTable[r]=e.name_next;else for(var t=Ie.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=Ie.mayLookup(e);if(t)throw new Ie.ErrnoError(t,e);for(var n=Ie.hashName(e.id,r),o=Ie.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return Ie.lookup(e,r)},createNode:(e,r,t,n)=>{D("object"==typeof e);var o=new Ie.FSNode(e,r,t,n);return Ie.hashAddNode(o),o},destroyNode:e=>{Ie.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=Ie.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>Ie.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var r=Ie.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{Ie.lookupNode(e,r);return 20}catch(e){}return Ie.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=Ie.lookupNode(e,r)}catch(e){return e.errno}var o=Ie.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ie.isDir(n.mode))return 54;if(Ie.isRoot(n)||Ie.getPath(n)===Ie.cwd())return 10}else if(Ie.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?Ie.isLink(e.mode)?32:Ie.isDir(e.mode)&&("r"!==Ie.flagsToPermissionString(r)||512&r)?31:Ie.nodePermissions(e,Ie.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ie.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!Ie.streams[t])return t;throw new Ie.ErrnoError(33)},getStream:e=>Ie.streams[e],createStream:(e,r,t)=>{Ie.FSStream||(Ie.FSStream=function(){this.shared={}},Ie.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new Ie.FSStream,e);var n=Ie.nextfd(r,t);return e.fd=n,Ie.streams[n]=e,e},closeStream:e=>{Ie.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=Ie.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Ie.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{Ie.devices[e]={stream_ops:r}},getDevice:e=>Ie.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),Ie.syncFSRequests++,Ie.syncFSRequests>1&&_("warning: "+Ie.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ie.getMounts(Ie.root.mount),n=0;function o(e){return D(Ie.syncFSRequests>0),Ie.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)}))},mount:(e,r,t)=>{if("string"==typeof e)throw e;var n,o="/"===t,a=!t;if(o&&Ie.root)throw new Ie.ErrnoError(10);if(!o&&!a){var i=Ie.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,Ie.isMountpoint(n))throw new Ie.ErrnoError(10);if(!Ie.isDir(n.mode))throw new Ie.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},l=e.mount(s);return l.mount=s,s.root=l,o?Ie.root=l:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),l},unmount:e=>{var r=Ie.lookupPath(e,{follow_mount:!1});if(!Ie.isMountpoint(r.node))throw new Ie.ErrnoError(28);var t=r.node,n=t.mounted,o=Ie.getMounts(n);Object.keys(Ie.nameTable).forEach((e=>{for(var r=Ie.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ie.destroyNode(r),r=t}})),t.mounted=null;var a=t.mount.mounts.indexOf(n);D(-1!==a),t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=Ie.lookupPath(e,{parent:!0}).node,o=Ae.basename(e);if(!o||"."===o||".."===o)throw new Ie.ErrnoError(28);var a=Ie.mayCreate(n,o);if(a)throw new Ie.ErrnoError(a);if(!n.node_ops.mknod)throw new Ie.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=void 0!==r?r:438,r&=4095,r|=32768,Ie.mknod(e,r,0)),mkdir:(e,r)=>(r=void 0!==r?r:511,r&=1023,r|=16384,Ie.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,Ie.mknod(e,r,t)),symlink:(e,r)=>{if(!De.resolve(e))throw new Ie.ErrnoError(44);var t=Ie.lookupPath(r,{parent:!0}).node;if(!t)throw new Ie.ErrnoError(44);var n=Ae.basename(r),o=Ie.mayCreate(t,n);if(o)throw new Ie.ErrnoError(o);if(!t.node_ops.symlink)throw new Ie.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o=Ae.dirname(e),a=Ae.dirname(r),i=Ae.basename(e),s=Ae.basename(r);if(t=Ie.lookupPath(e,{parent:!0}).node,n=Ie.lookupPath(r,{parent:!0}).node,!t||!n)throw new Ie.ErrnoError(44);if(t.mount!==n.mount)throw new Ie.ErrnoError(75);var l,u=Ie.lookupNode(t,i),c=De.relative(e,a);if("."!==c.charAt(0))throw new Ie.ErrnoError(28);if("."!==(c=De.relative(r,o)).charAt(0))throw new Ie.ErrnoError(55);try{l=Ie.lookupNode(n,s)}catch(e){}if(u!==l){var d=Ie.isDir(u.mode),f=Ie.mayDelete(t,i,d);if(f)throw new Ie.ErrnoError(f);if(f=l?Ie.mayDelete(n,s,d):Ie.mayCreate(n,s))throw new Ie.ErrnoError(f);if(!t.node_ops.rename)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(u)||l&&Ie.isMountpoint(l))throw new Ie.ErrnoError(10);if(n!==t&&(f=Ie.nodePermissions(t,"w")))throw new Ie.ErrnoError(f);Ie.hashRemoveNode(u);try{t.node_ops.rename(u,n,s)}catch(e){throw e}finally{Ie.hashAddNode(u)}}},rmdir:e=>{var r=Ie.lookupPath(e,{parent:!0}).node,t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!0);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.rmdir)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.rmdir(r,t),Ie.destroyNode(n)},readdir:e=>{var r=Ie.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new Ie.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=Ie.lookupPath(e,{parent:!0}).node;if(!r)throw new Ie.ErrnoError(44);var t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!1);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.unlink)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.unlink(r,t),Ie.destroyNode(n)},readlink:e=>{var r=Ie.lookupPath(e).node;if(!r)throw new Ie.ErrnoError(44);if(!r.node_ops.readlink)throw new Ie.ErrnoError(28);return De.resolve(Ie.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=Ie.lookupPath(e,{follow:!r}).node;if(!t)throw new Ie.ErrnoError(44);if(!t.node_ops.getattr)throw new Ie.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>Ie.stat(e,!0),chmod:(e,r,t)=>{var n;"string"==typeof e?n=Ie.lookupPath(e,{follow:!t}).node:n=e;if(!n.node_ops.setattr)throw new Ie.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{Ie.chmod(e,r,!0)},fchmod:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);Ie.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;"string"==typeof e?o=Ie.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new Ie.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{Ie.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=Ie.getStream(e);if(!n)throw new Ie.ErrnoError(8);Ie.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new Ie.ErrnoError(28);var t;"string"==typeof e?t=Ie.lookupPath(e,{follow:!0}).node:t=e;if(!t.node_ops.setattr)throw new Ie.ErrnoError(63);if(Ie.isDir(t.mode))throw new Ie.ErrnoError(31);if(!Ie.isFile(t.mode))throw new Ie.ErrnoError(28);var n=Ie.nodePermissions(t,"w");if(n)throw new Ie.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);if(0==(2097155&t.flags))throw new Ie.ErrnoError(28);Ie.truncate(t.node,r)},utime:(e,r,t)=>{var n=Ie.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n,o,a)=>{if(""===e)throw new Ie.ErrnoError(44);var i;if(n=void 0===n?438:n,n=64&(t="string"==typeof t?Ie.modeStringToFlags(t):t)?4095&n|32768:0,"object"==typeof e)i=e;else{e=Ae.normalize(e);try{i=Ie.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Ie.ErrnoError(20)}else i=Ie.mknod(e,n,0),s=!0;if(!i)throw new Ie.ErrnoError(44);if(Ie.isChrdev(i.mode)&&(t&=-513),65536&t&&!Ie.isDir(i.mode))throw new Ie.ErrnoError(54);if(!s){var l=Ie.mayOpen(i,t);if(l)throw new Ie.ErrnoError(l)}512&t&&Ie.truncate(i,0),t&=-131713;var u=Ie.createStream({node:i,path:Ie.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1},o,a);return u.stream_ops.open&&u.stream_ops.open(u),!r.logReadFiles||1&t||(Ie.readFiles||(Ie.readFiles={}),e in Ie.readFiles||(Ie.readFiles[e]=1)),u},close:e=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Ie.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Ie.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new Ie.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(1==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.read)throw new Ie.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.write)throw new Ie.ErrnoError(28);e.seekable&&1024&e.flags&&Ie.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(r<0||t<=0)throw new Ie.ErrnoError(28);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(!Ie.isFile(e.node.mode)&&!Ie.isDir(e.node.mode))throw new Ie.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ie.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o,a)=>{if(0!=(2&o)&&0==(2&a)&&2!=(2097155&e.flags))throw new Ie.ErrnoError(2);if(1==(2097155&e.flags))throw new Ie.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ie.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o,a)},msync:(e,r,t,n,o)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new Ie.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ie.open(e,r.flags),o=Ie.stat(e),a=o.size,i=new Uint8Array(a);return Ie.read(n,i,0,a,0),"utf8"===r.encoding?t=F(i,0):"binary"===r.encoding&&(t=i),Ie.close(n),t},writeFile:function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t.flags=t.flags||577;var n=Ie.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(I(r)+1),a=R(r,o,0,o.length);Ie.write(n,o,0,a,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ie.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ie.close(n)},cwd:()=>Ie.currentPath,chdir:e=>{var r=Ie.lookupPath(e,{follow:!0});if(null===r.node)throw new Ie.ErrnoError(44);if(!Ie.isDir(r.node.mode))throw new Ie.ErrnoError(54);var t=Ie.nodePermissions(r.node,"x");if(t)throw new Ie.ErrnoError(t);Ie.currentPath=r.path},createDefaultDirectories:()=>{Ie.mkdir("/tmp"),Ie.mkdir("/home"),Ie.mkdir("/home/web_user")},createDefaultDevices:()=>{Ie.mkdir("/dev"),Ie.registerDevice(Ie.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),Ie.mkdev("/dev/null",Ie.makedev(1,3)),Oe.register(Ie.makedev(5,0),Oe.default_tty_ops),Oe.register(Ie.makedev(6,0),Oe.default_tty1_ops),Ie.mkdev("/dev/tty",Ie.makedev(5,0)),Ie.mkdev("/dev/tty1",Ie.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(u)try{var r=i.default;return function(){return r.randomBytes(1)[0]}}catch(e){}return function(){ge("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 } };")}}();Ie.createDevice("/dev","random",e),Ie.createDevice("/dev","urandom",e),Ie.mkdir("/dev/shm"),Ie.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Ie.mkdir("/proc");var e=Ie.mkdir("/proc/self");Ie.mkdir("/proc/self/fd"),Ie.mount({mount:()=>{var r=Ie.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=+r,n=Ie.getStream(t);if(!n)throw new Ie.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?Ie.createDevice("/dev","stdin",r.stdin):Ie.symlink("/dev/tty","/dev/stdin"),r.stdout?Ie.createDevice("/dev","stdout",null,r.stdout):Ie.symlink("/dev/tty","/dev/stdout"),r.stderr?Ie.createDevice("/dev","stderr",null,r.stderr):Ie.symlink("/dev/tty1","/dev/stderr");var e=Ie.open("/dev/stdin",0),t=Ie.open("/dev/stdout",1),n=Ie.open("/dev/stderr",1);D(0===e.fd,"invalid handle for stdin ("+e.fd+")"),D(1===t.fd,"invalid handle for stdout ("+t.fd+")"),D(2===n.fd,"invalid handle for stderr ("+n.fd+")")},ensureErrnoError:()=>{Ie.ErrnoError||(Ie.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){for(var r in this.errno=e,Ne)if(Ne[r]===e){this.code=r;break}},this.setErrno(e),this.message=Re[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=Se(this.stack))},Ie.ErrnoError.prototype=new Error,Ie.ErrnoError.prototype.constructor=Ie.ErrnoError,[44].forEach((e=>{Ie.genericErrors[e]=new Ie.ErrnoError(e),Ie.genericErrors[e].stack=""})))},staticInit:()=>{Ie.ensureErrnoError(),Ie.nameTable=new Array(4096),Ie.mount(Me,{},"/"),Ie.createDefaultDirectories(),Ie.createDefaultDevices(),Ie.createSpecialDirectories(),Ie.filesystems={MEMFS:Me}},init:(e,t,n)=>{D(!Ie.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)"),Ie.init.initialized=!0,Ie.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,Ie.createStandardStreams()},quit:()=>{Ie.init.initialized=!1,wt();for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=Ie.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{e=(n=Ie.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Ie.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=Ae.basename(e),n=Ie.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:Ie.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Ae.join2(e,a);try{Ie.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),i=Ie.getMode(n,o);return Ie.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:Ie.getPath(e),i=r?Ae.join2(e,r):e);var s=Ie.getMode(n,o),l=Ie.create(i,s);if(t){if("string"==typeof t){for(var u=new Array(t.length),c=0,d=t.length;c{var o=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),a=Ie.getMode(!!t,!!n);Ie.createDevice.major||(Ie.createDevice.major=64);var i=Ie.makedev(Ie.createDevice.major++,0);return Ie.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i=0,s=0;s{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)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.");if(!d)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=pt(d(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Ie.ErrnoError(29)}},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,a=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,i=1048576;o||(i=n);var s=this;s.setDataGetter((e=>{var r=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):pt(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&n||(i=n=1,n=this.getter(0).length,i=n,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:i}}else s={isDevice:!1,url:t};var u=Ie.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var r=u.stream_ops[e];c[e]=function(){return Ie.forceLoadFile(u),r.apply(null,arguments)}})),c.read=(e,r,t,n,o)=>{Ie.forceLoadFile(u);var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(D(i>=0),a.slice)for(var s=0;s{var c=r?De.resolve(Ae.join2(e,r)):e,d=pe("cp "+c);function p(t){function f(t){u&&u(),s||Ie.createDataFile(e,r,t,n,o,l),a&&a(),he(d)}Browser.handledByPreloadPlugin(t,c,f,(()=>{i&&i(),he(d)}))||f(t)}me(d),"string"==typeof t?function(e,r,t,n){var o=n?"":pe("al "+e);f(e,(function(t){D(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),o&&he(o)}),(function(r){if(!t)throw'Loading data file "'+e+'" failed.';t()})),o&&me(o)}(t,(e=>p(e)),i):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{b("creating db"),o.result.createObjectStore(Ie.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([Ie.DB_STORE_NAME],"readwrite"),a=n.objectStore(Ie.DB_STORE_NAME),i=0,s=0,l=e.length;function u(){0==s?r():t()}e.forEach((e=>{var r=a.put(Ie.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==l&&u()},r.onerror=()=>{s++,i+s==l&&u()}})),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([Ie.DB_STORE_NAME],"readonly")}catch(e){return void t(e)}var i=a.objectStore(Ie.DB_STORE_NAME),s=0,l=0,u=e.length;function c(){0==l?r():t()}e.forEach((e=>{var r=i.get(e);r.onsuccess=()=>{Ie.analyzePath(e).exists&&Ie.unlink(e),Ie.createDataFile(Ae.dirname(e),Ae.basename(e),r.result,!0,!0,!0),++s+l==u&&c()},r.onerror=()=>{l++,s+l==u&&c()}})),a.onerror=t},o.onerror=t},absolutePath:()=>{ge("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{ge("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{ge("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{ge("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{ge("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{ge("FS.standardizePath has been removed; use PATH.normalize instead")}},Le={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Ae.isAbs(r))return r;var n;if(-100===e)n=Ie.cwd();else{var o=Ie.getStream(e);if(!o)throw new Ie.ErrnoError(8);n=o.path}if(0==r.length){if(!t)throw new Ie.ErrnoError(44);return n}return Ae.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Ae.normalize(r)!==Ae.normalize(Ie.getPath(e.node)))return-54;throw e}return j[t>>2]=n.dev,j[t+4>>2]=0,j[t+8>>2]=n.ino,j[t+12>>2]=n.mode,j[t+16>>2]=n.nlink,j[t+20>>2]=n.uid,j[t+24>>2]=n.gid,j[t+28>>2]=n.rdev,j[t+32>>2]=0,Ee=[n.size>>>0,(ye=n.size,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],j[t+40>>2]=Ee[0],j[t+44>>2]=Ee[1],j[t+48>>2]=4096,j[t+52>>2]=n.blocks,j[t+56>>2]=n.atime.getTime()/1e3|0,j[t+60>>2]=0,j[t+64>>2]=n.mtime.getTime()/1e3|0,j[t+68>>2]=0,j[t+72>>2]=n.ctime.getTime()/1e3|0,j[t+76>>2]=0,Ee=[n.ino>>>0,(ye=n.ino,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],j[t+80>>2]=Ee[0],j[t+84>>2]=Ee[1],0},doMsync:function(e,r,t,n,o){var a=U.slice(e,e+t);Ie.msync(r,a,o,t,n)},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ie.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=Ie.readlink(e),o=Math.min(t,I(n)),a=x[r+o];return N(n,r,t+1),x[r+o]=a,o},doAccess:function(e,r){if(-8&r)return-28;var t=Ie.lookupPath(e,{follow:!0}).node;if(!t)return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&Ie.nodePermissions(t,n)?-2:0},doReadv:function(e,r,t,n){for(var o=0,a=0;a>2],s=j[r+4>>2];r+=8;var l=Ie.read(e,x,i,s,n);if(l<0)return-1;if(o+=l,l>2],s=j[r+4>>2];r+=8;var l=Ie.write(e,x,i,s,n);if(l<0)return-1;o+=l}return o},varargs:void 0,get:function(){return D(null!=Le.varargs),Le.varargs+=4,j[Le.varargs-4>>2]},getStr:function(e){return M(e)},getStreamFromFD:function(e){var r=Ie.getStream(e);if(!r)throw new Ie.ErrnoError(8);return r}};function xe(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Ue=void 0;function Be(e){for(var r="",t=e;U[t];)r+=Ue[U[t++]];return r}var $e={},je={},We={};function ze(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=48&&r<=57?"_"+e:e}function He(e,r){return e=ze(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function Ge(e,r){var t=He(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Ve=void 0;function Ye(e){throw new Ve(e)}var Xe=void 0;function qe(e){throw new Xe(e)}function Ke(e,r,t){function n(r){var n=t(r);n.length!==e.length&&qe("Mismatched type converter count");for(var o=0;o{je.hasOwnProperty(e)?o[r]=je[e]:(a.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{o[r]=je[e],++i===a.length&&n(o)})))})),0===a.length&&n(o)}function Je(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||Ye('type "'+n+'" must have a positive integer typeid pointer'),je.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;Ye("Cannot register type '"+n+"' twice")}if(je[e]=r,delete We[e],$e.hasOwnProperty(e)){var o=$e[e];delete $e[e],o.forEach((e=>e()))}}function Qe(e){if(!(this instanceof wr))return!1;if(!(e instanceof wr))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o}function Ze(e){Ye(e.$$.ptrType.registeredClass.name+" instance already deleted")}var er=!1;function rr(e){}function tr(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function nr(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=nr(e,r,t.baseClass);return null===n?null:t.downcast(n)}var or={};function ar(){return Object.keys(dr).length}function ir(){var e=[];for(var r in dr)dr.hasOwnProperty(r)&&e.push(dr[r]);return e}var sr=[];function lr(){for(;sr.length;){var e=sr.pop();e.$$.deleteScheduled=!1,e.delete()}}var ur=void 0;function cr(e){ur=e,sr.length&&ur&&ur(lr)}var dr={};function fr(e,r){return r=function(e,r){for(void 0===r&&Ye("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),dr[r]}function pr(e,r){return r.ptrType&&r.ptr||qe("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&qe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},hr(Object.create(e,{$$:{value:r}}))}function mr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=fr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?pr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):pr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a,i=this.registeredClass.getActualType(r),s=or[i];if(!s)return o.call(this);a=this.isConst?s.constPointerType:s.pointerType;var l=nr(r,this.registeredClass,a.registeredClass);return null===l?o.call(this):this.isSmartPointer?pr(a.registeredClass.instancePrototype,{ptrType:a,ptr:l,smartPtrType:this,smartPtr:e}):pr(a.registeredClass.instancePrototype,{ptrType:a,ptr:l})}function hr(e){return"undefined"==typeof FinalizationRegistry?(hr=e=>e,e):(er=new FinalizationRegistry((e=>{console.warn(e.leakWarning.stack.replace(/^Error: /,"")),tr(e.$$)})),hr=e=>{var r=e.$$;if(!!r.smartPtr){var t={$$:r},n=r.ptrType.registeredClass;t.leakWarning=new Error("Embind found a leaked C++ instance "+n.name+" <0x"+r.ptr.toString(16)+">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated"),"captureStackTrace"in Error&&Error.captureStackTrace(t.leakWarning,mr),er.register(e,t,e)}return e},rr=e=>er.unregister(e),hr(e))}function gr(){if(this.$$.ptr||Ze(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,r=hr(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r}function vr(){this.$$.ptr||Ze(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),rr(this),tr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function yr(){return!this.$$.ptr}function Er(){return this.$$.ptr||Ze(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),sr.push(this),1===sr.length&&ur&&ur(lr),this.$$.deleteScheduled=!0,this}function wr(){}function br(e,r,t){if(void 0===e[r].overloadTable){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||Ye("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function _r(e,r,t,n,o,a,i,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=a,this.upcast=i,this.downcast=s,this.pureVirtualFunctions=[]}function Tr(e,r,t){for(;r!==t;)r.upcast||Ye("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function kr(e,r){if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),0;r.$$||Ye('Cannot pass "'+Xr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return Tr(r.$$.ptr,t,this.registeredClass)}function Sr(e,r){var t;if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,t),t):0;r.$$||Ye('Cannot pass "'+Xr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=Tr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&Ye("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:Ye("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,Yr.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,t)}break;default:Ye("Unsupporting sharing policy")}return t}function Cr(e,r){if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),0;r.$$||Ye('Cannot pass "'+Xr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return Tr(r.$$.ptr,t,this.registeredClass)}function Pr(e){return this.fromWireType(W[e>>2])}function Ar(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Dr(e){this.rawDestructor&&this.rawDestructor(e)}function Or(e){null!==e&&e.delete()}function Fr(e,r,t,n,o,a,i,s,l,u,c){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=i,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=u,this.rawDestructor=c,o||void 0!==r.baseClass?this.toWireType=Sr:n?(this.toWireType=kr,this.destructorFunction=null):(this.toWireType=Cr,this.destructorFunction=null)}function Mr(e,t,n){return e.includes("j")?function(e,t,n){D("dynCall_"+e in r,"bad function pointer type - no table for sig '"+e+"'"),n&&n.length?D(n.length===e.substring(1).replace(/j/g,"--").length):D(1==e.length);var o=r["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)}(e,t,n):(D(Ce(t),"missing table entry in dynCall: "+t),Ce(t).apply(null,n))}function Rr(e,r){var t=(e=Be(e)).includes("j")?function(e,r){D(e.includes("j"),"getDynCaller should only be called with i64 sigs");var t=[];return function(){return t.length=0,Object.assign(t,arguments),Mr(e,r,t)}}(e,r):Ce(r);return"function"!=typeof t&&Ye("unknown function pointer with signature "+e+": "+r),t}var Nr=void 0;function Ir(e){var r=Et(e),t=Be(r);return ht(r),t}function Lr(e,r){var t=[],n={};throw r.forEach((function e(r){n[r]||je[r]||(We[r]?We[r].forEach(e):(t.push(r),n[r]=!0))})),new Nr(e+": "+t.map(Ir).join([", "]))}function xr(e,r){for(var t=[],n=0;n>2)+n]);return t}function Ur(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function Br(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=He(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function $r(e,r,t,n,o){var a=r.length;a<2&&Ye("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var i=null!==r[1]&&null!==t,s=!1,l=1;l0?", ":"")+d),f+=(u?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",s)f+="runDestructors(destructors);\n";else for(l=i?1:2;l4&&0==--zr[e].refcount&&(zr[e]=void 0,Wr.push(e))}function Gr(){for(var e=0,r=5;r(e||Ye("Cannot use deleted val. handle = "+e),zr[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=Wr.length?Wr.pop():zr.length;return zr[r]={refcount:1,value:e},r}}};function Xr(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}function qr(e,r){switch(r){case 2:return function(e){return this.fromWireType(z[e>>2])};case 3:return function(e){return this.fromWireType(H[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Kr(e,r,t){switch(r){case 0:return t?function(e){return x[e]}:function(e){return U[e]};case 1:return t?function(e){return B[e>>1]}:function(e){return $[e>>1]};case 2:return t?function(e){return j[e>>2]}:function(e){return W[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Jr(e,r){var t=je[e];return void 0===t&&Ye(r+" has unknown type "+Ir(e)),t}var Qr={};var Zr=[];var et=[];function rt(e,r){return D(r===(0|r)),(e>>>0)+4294967296*r}function tt(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function nt(e,r){return e>=0?e:r<=32?2*Math.abs(1<>3]),n+=8):"i64"==e?(r=[j[n>>2],j[n+4>>2]],n+=8):(D(0==(3&n)),e="i32",r=j[n>>2],n+=4),r}for(var a,i,s,l,u,c,d=[];;){var f=t;if(0===(a=x[t>>0]))break;if(i=x[t+1>>0],37==a){var p=!1,m=!1,h=!1,g=!1,v=!1;e:for(;;){switch(i){case 43:p=!0;break;case 45:m=!0;break;case 35:h=!0;break;case 48:if(g)break e;g=!0;break;case 32:v=!0;break;default:break e}t++,i=x[t+1>>0]}var y=0;if(42==i)y=o("i32"),t++,i=x[t+1>>0];else for(;i>=48&&i<=57;)y=10*y+(i-48),t++,i=x[t+1>>0];var E,w=!1,b=-1;if(46==i){if(b=0,w=!0,t++,42==(i=x[t+1>>0]))b=o("i32"),t++;else for(;;){var _=x[t+1>>0];if(_<48||_>57)break;b=10*b+(_-48),t++}i=x[t+1>>0]}switch(b<0&&(b=6,w=!1),String.fromCharCode(i)){case"h":104==x[t+2>>0]?(t++,E=1):E=2;break;case"l":108==x[t+2>>0]?(t++,E=8):E=4;break;case"L":case"q":case"j":E=8;break;case"z":case"t":case"I":E=4;break;default:E=null}switch(E&&t++,i=x[t+1>>0],String.fromCharCode(i)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var T=100==i||105==i;if(s=o("i"+8*(E=E||4)),8==E&&(s=117==i?(u=s[0],c=s[1],(u>>>0)+4294967296*(c>>>0)):rt(s[0],s[1])),E<=4)s=(T?tt:nt)(s&Math.pow(256,E)-1,8*E);var k=Math.abs(s),S="";if(100==i||105==i)A=tt(s,8*E).toString(10);else if(117==i)A=nt(s,8*E).toString(10),s=Math.abs(s);else if(111==i)A=(h?"0":"")+k.toString(8);else if(120==i||88==i){if(S=h&&0!=s?"0x":"",s<0){s=-s,A=(k-1).toString(16);for(var C=[],P=0;P=0&&(p?S="+"+S:v&&(S=" "+S)),"-"==A.charAt(0)&&(S="-"+S,A=A.substr(1));S.length+A.lengthM&&M>=-4?(i=(103==i?"f":"F").charCodeAt(0),b-=M+1):(i=(103==i?"e":"E").charCodeAt(0),b--),F=Math.min(b,20)}101==i||69==i?(A=s.toExponential(F),/[eE][-+]\d$/.test(A)&&(A=A.slice(0,-1)+"0"+A.slice(-1))):102!=i&&70!=i||(A=s.toFixed(F),0===s&&((l=s)<0||0===l&&1/l==-1/0)&&(A="-"+A));var R=A.split("e");if(O&&!h)for(;R[0].length>1&&R[0].includes(".")&&("0"==R[0].slice(-1)||"."==R[0].slice(-1));)R[0]=R[0].slice(0,-1);else for(h&&-1==A.indexOf(".")&&(R[0]+=".");b>F++;)R[0]+="0";A=R[0]+(R.length>1?"e"+R[1]:""),69==i&&(A=A.toUpperCase()),s>=0&&(p?A="+"+A:v&&(A=" "+A))}else A=(s<0?"-":"")+"inf",g=!1;for(;A.length>0]);else d=d.concat(pt("(null)".substr(0,I),!0));if(m)for(;I0;)d.push(32);m||d.push(o("i8"));break;case"n":var L=o("i32*");j[L>>2]=d.length;break;case"%":d.push(a);break;default:for(P=f;P>0])}t+=2}else d.push(a),t+=1}return d}function at(e){if(!e||!e.callee||!e.callee.name)return[null,"",""];e.callee.toString();var r=e.callee.name,t="(",n=!0;for(var o in e){var a=e[o];n||(t+=", "),n=!1,t+="number"==typeof a||"string"==typeof a?a:"("+typeof a+")"}t+=")";var i=e.callee.caller;return n&&(t=""),[e=i?i.arguments:[],r,t]}function it(e,r){24&e&&(r=r.replace(/\s+$/,""),r+=(r.length>0?"\n":"")+function(e){var r=Pe(),t=r.lastIndexOf("_emscripten_log"),n=r.lastIndexOf("_emscripten_get_callstack"),o=r.indexOf("\n",Math.max(t,n))+1;r=r.slice(o),32&e&&T("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(T('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.'),e^=8,e|=16);var a=null;if(128&e)for(a=at(arguments);a[1].includes("_emscripten_");)a=at(a[0]);var i=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),l=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),u=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in i){var d=i[c],f="",p="",m=0,h=0,g=u.exec(d);if(g&&5==g.length)f=g[1],p=g[2],m=g[3],h=g[4];else{if((g=s.exec(d))||(g=l.exec(d)),!(g&&g.length>=4)){r+=d+"\n";continue}f=g[1],p=g[2],m=g[3],h=0|g[4]}var v=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:m,column:h});(v=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+f+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!v)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(v?" = "+f:" at "+f)+" ("+p+":"+m+":"+h+")\n"),128&e&&a[0]&&(a[1]==f&&a[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+a[1]+a[2]+"\n"),a=at(a[0]))}return r.replace(/\s+$/,"")}(e)),1&e?4&e?console.error(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):console.log(r):6&e?_(r):b(r)}function st(e){try{return w.grow(e-L.byteLength+65535>>>16),Z(w.buffer),1}catch(r){_("emscripten_realloc_buffer: Attempted to grow heap from "+L.byteLength+" bytes to "+e+" bytes, but got error: "+r)}}var lt={};function ut(){if(!ut.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:n||"./this.program"};for(var r in lt)void 0===lt[r]?delete e[r]:e[r]=lt[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ut.strings=t}return ut.strings}var ct=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ie.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},dt=365,ft=146;function pt(e,r,t){var n=t>0?t:I(e)+1,o=new Array(n),a=R(e,o,0,o.length);return r&&(o.length=a),o}Object.defineProperties(ct.prototype,{read:{get:function(){return(this.mode&dt)===dt},set:function(e){e?this.mode|=dt:this.mode&=-366}},write:{get:function(){return(this.mode&ft)===ft},set:function(e){e?this.mode|=ft:this.mode&=-147}},isFolder:{get:function(){return Ie.isDir(this.mode)}},isDevice:{get:function(){return Ie.isChrdev(this.mode)}}}),Ie.FSNode=ct,Ie.staticInit(),Ne={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},function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);Ue=e}(),Ve=r.BindingError=Ge(Error,"BindingError"),Xe=r.InternalError=Ge(Error,"InternalError"),wr.prototype.isAliasOf=Qe,wr.prototype.clone=gr,wr.prototype.delete=vr,wr.prototype.isDeleted=yr,wr.prototype.deleteLater=Er,r.getInheritedInstanceCount=ar,r.getLiveInheritedInstances=ir,r.flushPendingDeletes=lr,r.setDelayFunction=cr,Fr.prototype.getPointee=Ar,Fr.prototype.destructor=Dr,Fr.prototype.argPackAdvance=8,Fr.prototype.readValueFromPointer=Pr,Fr.prototype.deleteObject=Or,Fr.prototype.fromWireType=mr,Nr=r.UnboundTypeError=Ge(Error,"UnboundTypeError"),r.count_emval_handles=Gr,r.get_first_emval=Vr;var mt={__syscall_fcntl64:function(e,r,t){Le.varargs=t;try{var n=Le.getStreamFromFD(e);switch(r){case 0:return(o=Le.get())<0?-28:Ie.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=Le.get();return n.flags|=o,0;case 5:o=Le.get();return B[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return a=28,j[yt()>>2]=a,-1}}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}var a},__syscall_openat:function(e,r,t,n){Le.varargs=n;try{r=Le.getStr(r),r=Le.calculateAt(e,r);var o=n?Le.get():0;return Ie.open(r,t,o).fd}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}},_embind_register_bigint:function(e,r,t,n,o){},_embind_register_bool:function(e,r,t,n,o){var a=xe(t);Je(e,{name:r=Be(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=x;else if(2===t)n=B;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=j}return this.fromWireType(n[e>>a])},destructorFunction:null})},_embind_register_class:function(e,t,n,o,a,i,s,l,u,c,d,f,p){d=Be(d),i=Rr(a,i),l&&(l=Rr(s,l)),c&&(c=Rr(u,c)),p=Rr(f,p);var m=ze(d);!function(e,t,n){r.hasOwnProperty(e)?((void 0===n||void 0!==r[e].overloadTable&&void 0!==r[e].overloadTable[n])&&Ye("Cannot register public name '"+e+"' twice"),br(r,e,e),r.hasOwnProperty(n)&&Ye("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),r[e].overloadTable[n]=t):(r[e]=t,void 0!==n&&(r[e].numArguments=n))}(m,(function(){Lr("Cannot construct "+d+" due to unbound types",[o])})),Ke([e,t,n],o?[o]:[],(function(t){var n,a;t=t[0],a=o?(n=t.registeredClass).instancePrototype:wr.prototype;var s=He(m,(function(){if(Object.getPrototypeOf(this)!==u)throw new Ve("Use 'new' to construct "+d);if(void 0===f.constructor_body)throw new Ve(d+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ve("Tried to invoke ctor of "+d+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),u=Object.create(a,{constructor:{value:s}});s.prototype=u;var f=new _r(d,s,u,p,n,i,l,c),h=new Fr(d,f,!0,!1,!1),g=new Fr(d+"*",f,!1,!1,!1),v=new Fr(d+" const*",f,!1,!0,!1);return or[e]={pointerType:g,constPointerType:v},function(e,t,n){r.hasOwnProperty(e)||qe("Replacing nonexistant public symbol"),void 0!==r[e].overloadTable&&void 0!==n?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)}(m,s),[h,g,v]}))},_embind_register_class_constructor:function(e,r,t,n,o,a){D(r>0);var i=xr(r,t);o=Rr(n,o),Ke([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Ve("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=()=>{Lr("Cannot construct "+e.name+" due to unbound types",i)},Ke([],i,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=$r(t,n,null,o,a),[]})),[]}))},_embind_register_class_function:function(e,r,t,n,o,a,i,s){var l=xr(t,n);r=Be(r),a=Rr(o,a),Ke([],[e],(function(e){var n=(e=e[0]).name+"."+r;function o(){Lr("Cannot call "+n+" due to unbound types",l)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var u=e.registeredClass.instancePrototype,c=u[r];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===t-2?(o.argCount=t-2,o.className=e.name,u[r]=o):(br(u,r,n),u[r].overloadTable[t-2]=o),Ke([],l,(function(o){var s=$r(n,o,e,a,i);return void 0===u[r].overloadTable?(s.argCount=t-2,u[r]=s):u[r].overloadTable[t-2]=s,[]})),[]}))},_embind_register_class_property:function(e,r,t,n,o,a,i,s,l,u){r=Be(r),o=Rr(n,o),Ke([],[e],(function(e){var n=(e=e[0]).name+"."+r,c={get:function(){Lr("Cannot access "+n+" due to unbound types",[t,i])},enumerable:!0,configurable:!0};return c.set=l?()=>{Lr("Cannot access "+n+" due to unbound types",[t,i])}:e=>{Ye(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,c),Ke([],l?[t,i]:[t],(function(t){var i=t[0],c={get:function(){var r=jr(this,e,n+" getter");return i.fromWireType(o(a,r))},enumerable:!0};if(l){l=Rr(s,l);var d=t[1];c.set=function(r){var t=jr(this,e,n+" setter"),o=[];l(u,t,d.toWireType(o,r)),Ur(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,c),[]})),[]}))},_embind_register_emval:function(e,r){Je(e,{name:r=Be(r),fromWireType:function(e){var r=Yr.toValue(e);return Hr(e),r},toWireType:function(e,r){return Yr.toHandle(r)},argPackAdvance:8,readValueFromPointer:Pr,destructorFunction:null})},_embind_register_float:function(e,r,t){var n=xe(t);Je(e,{name:r=Be(r),fromWireType:function(e){return e},toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Xr(r)+'" to '+this.name);return r},argPackAdvance:8,readValueFromPointer:qr(r,n),destructorFunction:null})},_embind_register_integer:function(e,r,t,n,o){r=Be(r),-1===o&&(o=4294967295);var a=xe(t),i=e=>e;if(0===n){var s=32-8*t;i=e=>e<>>s}var l=r.includes("unsigned"),u=(e,t)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError('Cannot convert "'+Xr(e)+'" to '+t);if(eo)throw new TypeError('Passing a number "'+Xr(e)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!")};Je(e,{name:r,fromWireType:i,toWireType:l?function(e,r){return u(r,this.name),r>>>0}:function(e,r){return u(r,this.name),r},argPackAdvance:8,readValueFromPointer:Kr(r,a,0!==n),destructorFunction:null})},_embind_register_memory_view:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=W,t=r[e>>=2],o=r[e+1];return new n(L,o,t)}Je(e,{name:t=Be(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},_embind_register_std_string:function(e,r){var t="std::string"===(r=Be(r));Je(e,{name:r,fromWireType:function(e){var r,n=W[e>>2];if(t)for(var o=e+4,a=0;a<=n;++a){var i=e+4+a;if(a==n||0==U[i]){var s=M(o,i-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=i+1}}else{var l=new Array(n);for(a=0;aI(r):()=>r.length)(),a=gt(4+o+1);if(W[a>>2]=o,t&&n)N(r,a+4,o+1);else if(n)for(var i=0;i255&&(ht(a),Ye("String has UTF-16 code units that do not fit in 8 bits")),U[a+4+i]=s}else for(i=0;i$,s=1):4===r&&(n=q,o=K,i=J,a=()=>W,s=2),Je(e,{name:t,fromWireType:function(e){for(var t,o=W[e>>2],i=a(),l=e+4,u=0;u<=o;++u){var c=e+4+u*r;if(u==o||0==i[c>>s]){var d=n(l,c-l);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),l=c+r}}return ht(e),t},toWireType:function(e,n){"string"!=typeof n&&Ye("Cannot pass non-string to C++ string type "+t);var a=i(n),l=gt(4+a+r);return W[l>>2]=a>>s,o(n,l+4,a+r),null!==e&&e.push(ht,l),l},argPackAdvance:8,readValueFromPointer:Pr,destructorFunction:function(e){ht(e)}})},_embind_register_void:function(e,r){Je(e,{isVoid:!0,name:r=Be(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},_emscripten_date_now:function(){return Date.now()},_emval_as:function(e,r,t){e=Yr.toValue(e),r=Jr(r,"emval::as");var n=[],o=Yr.toHandle(n);return j[t>>2]=o,r.toWireType(n,e)},_emval_call_void_method:function(e,r,t,n){var o,a;(e=Zr[e])(r=Yr.toValue(r),t=void 0===(a=Qr[o=t])?Be(o):a,null,n)},_emval_decref:Hr,_emval_get_method_caller:function(e,r){var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",a=et[o];if(void 0!==a)return a;for(var i=["retType"],s=[n],l="",u=0;u4&&(zr[e].refcount+=1)},_emval_run_destructors:function(e){Ur(Yr.toValue(e)),Hr(e)},_emval_take_value:function(e,r){var t=(e=Jr(e,"_emval_take_value")).readValueFromPointer(r);return Yr.toHandle(t)},_gmtime_js:function(e,r){var t=new Date(1e3*j[e>>2]);j[r>>2]=t.getUTCSeconds(),j[r+4>>2]=t.getUTCMinutes(),j[r+8>>2]=t.getUTCHours(),j[r+12>>2]=t.getUTCDate(),j[r+16>>2]=t.getUTCMonth(),j[r+20>>2]=t.getUTCFullYear()-1900,j[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;j[r+28>>2]=o},_localtime_js:function(e,r){var t=new Date(1e3*j[e>>2]);j[r>>2]=t.getSeconds(),j[r+4>>2]=t.getMinutes(),j[r+8>>2]=t.getHours(),j[r+12>>2]=t.getDate(),j[r+16>>2]=t.getMonth(),j[r+20>>2]=t.getFullYear()-1900,j[r+24>>2]=t.getDay();var n=new Date(t.getFullYear(),0,1),o=(t.getTime()-n.getTime())/864e5|0;j[r+28>>2]=o,j[r+36>>2]=-60*t.getTimezoneOffset();var a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=n.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));j[r+32>>2]=s},_mktime_js:function(e){var r=new Date(j[e+20>>2]+1900,j[e+16>>2],j[e+12>>2],j[e+8>>2],j[e+4>>2],j[e>>2],0),t=j[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)j[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var l=Math.max(i,a),u=t>0?s:l;r.setTime(r.getTime()+6e4*(u-n))}j[e+24>>2]=r.getDay();var c=(r.getTime()-o.getTime())/864e5|0;return j[e+28>>2]=c,j[e>>2]=r.getSeconds(),j[e+4>>2]=r.getMinutes(),j[e+8>>2]=r.getHours(),j[e+12>>2]=r.getDate(),j[e+16>>2]=r.getMonth(),r.getTime()/1e3|0},_tzset_js:function e(r,t,n){e.called||(e.called=!0,function(e,r,t){var n=(new Date).getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset(),l=Math.max(i,s);function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}j[e>>2]=60*l,j[r>>2]=Number(i!=s);var c=u(o),d=u(a),f=Q(c),p=Q(d);s>2]=f,j[t+4>>2]=p):(j[t>>2]=p,j[t+4>>2]=f)}(r,t,n))},abort:function(){ge("native code called abort()")},emscripten_log:function(e,r,t){it(e,F(ot(r,t),0))},emscripten_resize_heap:function(e){var r=U.length;D((e>>>=0)>r);var t,n,o=2147483648;if(e>o)return _("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var s=Math.min(o,(t=Math.max(e,i))+((n=65536)-t%n)%n);if(st(s))return!0}return _("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return ut().forEach((function(n,o){var a=r+t;j[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(x[r>>0]=0)}(n,a),t+=n.length+1})),0},environ_sizes_get:function(e,r){var t=ut();j[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),j[r>>2]=n,0},fd_close:function(e){try{var r=Le.getStreamFromFD(e);return Ie.close(r),0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=Le.getStreamFromFD(e),n=t.tty?2:Ie.isDir(t.mode)?3:Ie.isLink(t.mode)?7:4;return x[r>>0]=n,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),a=Le.doReadv(o,r,t);return j[n>>2]=a,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_seek:function(e,r,t,n,o){try{var a=Le.getStreamFromFD(e),i=4294967296*t+(r>>>0),s=9007199254740992;return i<=-s||i>=s?-61:(Ie.llseek(a,i,n),Ee=[a.position>>>0,(ye=a.position,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],j[o>>2]=Ee[0],j[o+4>>2]=Ee[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0)}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),a=Le.doWritev(o,r,t);return j[n>>2]=a,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},setTempRet0:function(e){}};!function(){var e={env:mt,wasi_snapshot_preview1:mt};function t(e,t){var n,o=e.exports;r.asm=o,D(w=r.asm.memory,"memory not found in wasm exports"),Z(w.buffer),D(re=r.asm.__indirect_function_table,"table not found in wasm exports"),n=r.asm.__wasm_call_ctors,ie.unshift(n),he("wasm-instantiate")}me("wasm-instantiate");var n=r;function o(e){D(r===n,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),n=null,t(e.instance)}function a(r){return function(){if(!E&&(s||l)){if("function"==typeof fetch&&!be(ve))return fetch(ve,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ve+"'";return e.arrayBuffer()})).catch((function(){return Te(ve)}));if(f)return new Promise((function(e,r){f(ve,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return Te(ve)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then((function(e){return e})).then(r,(function(e){_("failed to asynchronously prepare wasm: "+e),be(ve)&&_("warning: Loading from a file URI ("+ve+") 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"),ge(e)}))}if(r.instantiateWasm)try{return r.instantiateWasm(e,t)}catch(e){return _("Module.instantiateWasm callback failed with error: "+e),!1}E||"function"!=typeof WebAssembly.instantiateStreaming||we(ve)||be(ve)||"function"!=typeof fetch?a(o):fetch(ve,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(o,(function(e){return _("wasm streaming compile failed: "+e),_("falling back to ArrayBuffer instantiation"),a(o)}))}))}(),r.___wasm_call_ctors=_e("__wasm_call_ctors");var ht=r._free=_e("free"),gt=r._malloc=_e("malloc"),vt=r._strlen=_e("strlen"),yt=r.___errno_location=_e("__errno_location"),Et=r.___getTypeName=_e("__getTypeName");r.___embind_register_native_and_builtin_types=_e("__embind_register_native_and_builtin_types");var wt=r.___stdio_exit=_e("__stdio_exit"),bt=r._emscripten_builtin_memalign=_e("emscripten_builtin_memalign"),_t=r._emscripten_stack_init=function(){return(_t=r._emscripten_stack_init=r.asm.emscripten_stack_init).apply(null,arguments)};r._emscripten_stack_get_free=function(){return(r._emscripten_stack_get_free=r.asm.emscripten_stack_get_free).apply(null,arguments)},r._emscripten_stack_get_base=function(){return(r._emscripten_stack_get_base=r.asm.emscripten_stack_get_base).apply(null,arguments)};var Tt,kt=r._emscripten_stack_get_end=function(){return(kt=r._emscripten_stack_get_end=r.asm.emscripten_stack_get_end).apply(null,arguments)};function St(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ct(e){function t(){Tt||(Tt=!0,r.calledRun=!0,A||(oe(),D(!le),le=!0,r.noFSInit||Ie.init.initialized||Ie.init(),Ie.ignorePermissions=!1,ke(ie),r.onRuntimeInitialized&&r.onRuntimeInitialized(),D(!r._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(oe(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),se.unshift(e);var e;ke(se)}()))}ue>0||(_t(),ne(),function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)e=r.preRun.shift(),ae.unshift(e);var e;ke(ae)}(),ue>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),t()}),1)):t(),oe()))}if(r.stackSave=_e("stackSave"),r.stackRestore=_e("stackRestore"),r.stackAlloc=_e("stackAlloc"),r.dynCall_ijiii=_e("dynCall_ijiii"),r.dynCall_viiijj=_e("dynCall_viiijj"),r.dynCall_jij=_e("dynCall_jij"),r.dynCall_jii=_e("dynCall_jii"),r.dynCall_jiji=_e("dynCall_jiji"),r._ff_h264_cabac_tables=112940,P("intArrayFromString",!1),P("intArrayToString",!1),P("ccall",!1),P("cwrap",!1),P("setValue",!1),P("getValue",!1),P("allocate",!1),P("UTF8ArrayToString",!1),P("UTF8ToString",!1),P("stringToUTF8Array",!1),P("stringToUTF8",!1),P("lengthBytesUTF8",!1),P("stackTrace",!1),P("addOnPreRun",!1),P("addOnInit",!1),P("addOnPreMain",!1),P("addOnExit",!1),P("addOnPostRun",!1),P("writeStringToMemory",!1),P("writeArrayToMemory",!1),P("writeAsciiToMemory",!1),P("addRunDependency",!0),P("removeRunDependency",!0),P("FS_createFolder",!1),P("FS_createPath",!0),P("FS_createDataFile",!0),P("FS_createPreloadedFile",!0),P("FS_createLazyFile",!0),P("FS_createLink",!1),P("FS_createDevice",!0),P("FS_unlink",!0),P("getLEB",!1),P("getFunctionTables",!1),P("alignFunctionTables",!1),P("registerFunctions",!1),P("addFunction",!1),P("removeFunction",!1),P("prettyPrint",!1),P("dynCall",!1),P("getCompilerSetting",!1),P("print",!1),P("printErr",!1),P("getTempRet0",!1),P("setTempRet0",!1),P("callMain",!1),P("abort",!1),P("keepRuntimeAlive",!1),P("ptrToString",!1),P("zeroMemory",!1),P("stringToNewUTF8",!1),P("emscripten_realloc_buffer",!1),P("ENV",!1),P("ERRNO_CODES",!1),P("ERRNO_MESSAGES",!1),P("setErrNo",!1),P("inetPton4",!1),P("inetNtop4",!1),P("inetPton6",!1),P("inetNtop6",!1),P("readSockaddr",!1),P("writeSockaddr",!1),P("DNS",!1),P("getHostByName",!1),P("Protocols",!1),P("Sockets",!1),P("getRandomDevice",!1),P("traverseStack",!1),P("UNWIND_CACHE",!1),P("convertPCtoSourceLocation",!1),P("readAsmConstArgsArray",!1),P("readAsmConstArgs",!1),P("mainThreadEM_ASM",!1),P("jstoi_q",!1),P("jstoi_s",!1),P("getExecutableName",!1),P("listenOnce",!1),P("autoResumeAudioContext",!1),P("dynCallLegacy",!1),P("getDynCaller",!1),P("dynCall",!1),P("setWasmTableEntry",!1),P("getWasmTableEntry",!1),P("handleException",!1),P("runtimeKeepalivePush",!1),P("runtimeKeepalivePop",!1),P("callUserCallback",!1),P("maybeExit",!1),P("safeSetTimeout",!1),P("asmjsMangle",!1),P("asyncLoad",!1),P("alignMemory",!1),P("mmapAlloc",!1),P("reallyNegative",!1),P("unSign",!1),P("reSign",!1),P("formatString",!1),P("PATH",!1),P("PATH_FS",!1),P("SYSCALLS",!1),P("getSocketFromFD",!1),P("getSocketAddress",!1),P("JSEvents",!1),P("registerKeyEventCallback",!1),P("specialHTMLTargets",!1),P("maybeCStringToJsString",!1),P("findEventTarget",!1),P("findCanvasEventTarget",!1),P("getBoundingClientRect",!1),P("fillMouseEventData",!1),P("registerMouseEventCallback",!1),P("registerWheelEventCallback",!1),P("registerUiEventCallback",!1),P("registerFocusEventCallback",!1),P("fillDeviceOrientationEventData",!1),P("registerDeviceOrientationEventCallback",!1),P("fillDeviceMotionEventData",!1),P("registerDeviceMotionEventCallback",!1),P("screenOrientation",!1),P("fillOrientationChangeEventData",!1),P("registerOrientationChangeEventCallback",!1),P("fillFullscreenChangeEventData",!1),P("registerFullscreenChangeEventCallback",!1),P("registerRestoreOldStyle",!1),P("hideEverythingExceptGivenElement",!1),P("restoreHiddenElements",!1),P("setLetterbox",!1),P("currentFullscreenStrategy",!1),P("restoreOldWindowedStyle",!1),P("softFullscreenResizeWebGLRenderTarget",!1),P("doRequestFullscreen",!1),P("fillPointerlockChangeEventData",!1),P("registerPointerlockChangeEventCallback",!1),P("registerPointerlockErrorEventCallback",!1),P("requestPointerLock",!1),P("fillVisibilityChangeEventData",!1),P("registerVisibilityChangeEventCallback",!1),P("registerTouchEventCallback",!1),P("fillGamepadEventData",!1),P("registerGamepadEventCallback",!1),P("registerBeforeUnloadEventCallback",!1),P("fillBatteryEventData",!1),P("battery",!1),P("registerBatteryEventCallback",!1),P("setCanvasElementSize",!1),P("getCanvasElementSize",!1),P("demangle",!1),P("demangleAll",!1),P("jsStackTrace",!1),P("stackTrace",!1),P("getEnvStrings",!1),P("checkWasiClock",!1),P("writeI53ToI64",!1),P("writeI53ToI64Clamped",!1),P("writeI53ToI64Signaling",!1),P("writeI53ToU64Clamped",!1),P("writeI53ToU64Signaling",!1),P("readI53FromI64",!1),P("readI53FromU64",!1),P("convertI32PairToI53",!1),P("convertU32PairToI53",!1),P("dlopenMissingError",!1),P("setImmediateWrapped",!1),P("clearImmediateWrapped",!1),P("polyfillSetImmediate",!1),P("uncaughtExceptionCount",!1),P("exceptionLast",!1),P("exceptionCaught",!1),P("ExceptionInfo",!1),P("exception_addRef",!1),P("exception_decRef",!1),P("Browser",!1),P("setMainLoop",!1),P("wget",!1),P("FS",!1),P("MEMFS",!1),P("TTY",!1),P("PIPEFS",!1),P("SOCKFS",!1),P("_setNetworkCallback",!1),P("tempFixedLengthArray",!1),P("miniTempWebGLFloatBuffers",!1),P("heapObjectForWebGLType",!1),P("heapAccessShiftForWebGLHeap",!1),P("GL",!1),P("emscriptenWebGLGet",!1),P("computeUnpackAlignedImageSize",!1),P("emscriptenWebGLGetTexPixelData",!1),P("emscriptenWebGLGetUniform",!1),P("webglGetUniformLocation",!1),P("webglPrepareUniformLocationsBeforeFirstUse",!1),P("webglGetLeftBracePos",!1),P("emscriptenWebGLGetVertexAttrib",!1),P("writeGLArray",!1),P("AL",!1),P("SDL_unicode",!1),P("SDL_ttfContext",!1),P("SDL_audio",!1),P("SDL",!1),P("SDL_gfx",!1),P("GLUT",!1),P("EGL",!1),P("GLFW_Window",!1),P("GLFW",!1),P("GLEW",!1),P("IDBStore",!1),P("runAndAbortIfError",!1),P("InternalError",!1),P("BindingError",!1),P("UnboundTypeError",!1),P("PureVirtualError",!1),P("init_embind",!1),P("throwInternalError",!1),P("throwBindingError",!1),P("throwUnboundTypeError",!1),P("ensureOverloadTable",!1),P("exposePublicSymbol",!1),P("replacePublicSymbol",!1),P("extendError",!1),P("createNamedFunction",!1),P("registeredInstances",!1),P("getBasestPointer",!1),P("registerInheritedInstance",!1),P("unregisterInheritedInstance",!1),P("getInheritedInstance",!1),P("getInheritedInstanceCount",!1),P("getLiveInheritedInstances",!1),P("registeredTypes",!1),P("awaitingDependencies",!1),P("typeDependencies",!1),P("registeredPointers",!1),P("registerType",!1),P("whenDependentTypesAreResolved",!1),P("embind_charCodes",!1),P("embind_init_charCodes",!1),P("readLatin1String",!1),P("getTypeName",!1),P("heap32VectorToArray",!1),P("requireRegisteredType",!1),P("getShiftFromSize",!1),P("integerReadValueFromPointer",!1),P("enumReadValueFromPointer",!1),P("floatReadValueFromPointer",!1),P("simpleReadValueFromPointer",!1),P("runDestructors",!1),P("new_",!1),P("craftInvokerFunction",!1),P("embind__requireFunction",!1),P("tupleRegistrations",!1),P("structRegistrations",!1),P("genericPointerToWireType",!1),P("constNoSmartPtrRawPointerToWireType",!1),P("nonConstNoSmartPtrRawPointerToWireType",!1),P("init_RegisteredPointer",!1),P("RegisteredPointer",!1),P("RegisteredPointer_getPointee",!1),P("RegisteredPointer_destructor",!1),P("RegisteredPointer_deleteObject",!1),P("RegisteredPointer_fromWireType",!1),P("runDestructor",!1),P("releaseClassHandle",!1),P("finalizationRegistry",!1),P("detachFinalizer_deps",!1),P("detachFinalizer",!1),P("attachFinalizer",!1),P("makeClassHandle",!1),P("init_ClassHandle",!1),P("ClassHandle",!1),P("ClassHandle_isAliasOf",!1),P("throwInstanceAlreadyDeleted",!1),P("ClassHandle_clone",!1),P("ClassHandle_delete",!1),P("deletionQueue",!1),P("ClassHandle_isDeleted",!1),P("ClassHandle_deleteLater",!1),P("flushPendingDeletes",!1),P("delayFunction",!1),P("setDelayFunction",!1),P("RegisteredClass",!1),P("shallowCopyInternalPointer",!1),P("downcastPointer",!1),P("upcastPointer",!1),P("validateThis",!1),P("char_0",!1),P("char_9",!1),P("makeLegalFunctionName",!1),P("emval_handle_array",!1),P("emval_free_list",!1),P("emval_symbols",!1),P("init_emval",!1),P("count_emval_handles",!1),P("get_first_emval",!1),P("getStringOrSymbol",!1),P("Emval",!1),P("emval_newers",!1),P("craftEmvalAllocator",!1),P("emval_get_global",!1),P("emval_methodCallers",!1),P("emval_registeredMethods",!1),P("warnOnce",!1),P("stackSave",!1),P("stackRestore",!1),P("stackAlloc",!1),P("AsciiToString",!1),P("stringToAscii",!1),P("UTF16ToString",!1),P("stringToUTF16",!1),P("lengthBytesUTF16",!1),P("UTF32ToString",!1),P("stringToUTF32",!1),P("lengthBytesUTF32",!1),P("allocateUTF8",!1),P("allocateUTF8OnStack",!1),r.writeStackCookie=ne,r.checkStackCookie=oe,C("ALLOC_NORMAL",!1),C("ALLOC_STACK",!1),de=function e(){Tt||Ct(),Tt||(de=e)},r.run=Ct,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();Ct(),e.exports=r}));const l=1e3,u=!1,c=!0,d=!1,f=!1,p="initVideo",m="render",h="playAudio",g="initAudio",v="audioCode",y="videoCode",E=1,w=2,b="init",_="decode",T="audioDecode",k="videoDecode",S="close",C="updateConfig",P="key",A="delta";(()=>{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){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),s.postRun=function(){var e=[],r=[],t={};"VideoEncoder"in self&&(t={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){t.isEmitInfo||(n.opt.debug&&console.log("Jessibuca: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:p,w:e.codedWidth,h:e.codedHeight}),t.isEmitInfo=!0,t.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),t.offscreenCanvasCtx=t.offscreenCanvas.getContext("2d")),t.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let r=t.offscreenCanvas.transferToImageBitmap();postMessage({cmd:m,buffer:r,delay:n.delay,ts:0},[r]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,r){const o=e[0]>>4==1;if(t.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:r,type:o?P:A});t.decoder.decode(n)}else if(o&&0===e[1]){const r=15&e[0];n.setVideoCodec(r);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));t.decoder.configure(o),t.hasInit=!0}},reset(){t.hasInit=!1,t.isEmitInfo=!1,t.offscreenCanvas=null,t.offscreenCanvasCtx=null}});var n={opt:{debug:u,forceNoOffscreen:c,useWCS:d,videoBuffer:l,openWebglAlignment:f},useOffscreen:function(){return!n.opt.forceNoOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,t){postMessage({cmd:g,sampleRate:t,channels:e});var n=[],o=0;this.playAudioPlanar=function(t,a,i){for(var l=a,u=[],c=0,d=0;d<2;d++){var f=s.HEAPU32[(t>>2)+d]>>2;u[d]=s.HEAPF32.subarray(f,f+l)}if(o){if(!(l>=(a=1024-o)))return o+=l,r[0]=Float32Array.of(...r[0],...u[0]),void(2==e&&(r[1]=Float32Array.of(...r[1],...u[1])));n[0]=Float32Array.of(...r[0],...u[0].subarray(0,a)),2==e&&(n[1]=Float32Array.of(...r[1],...u[1].subarray(0,a))),postMessage({cmd:h,buffer:n,ts:i},n.map((e=>e.buffer))),c=a,l-=a}for(o=l;o>=1024;o-=1024)n[0]=u[0].slice(c,c+=1024),2==e&&(n[1]=u[1].slice(c-1024,c)),postMessage({cmd:h,buffer:n,ts:i},n.map((e=>e.buffer)));o&&(r[0]=u[0].slice(c),2==e&&(r[1]=u[1].slice(c)))}},setVideoCodec:function(e){postMessage({cmd:y,code:e})},setAudioCodec:function(e){postMessage({cmd:v,code:e})},setVideoSize:function(e,r){postMessage({cmd:p,w:e,h:r});var t=e*r,o=t>>2;n.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=((e,r)=>{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),n=["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");r&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var a=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(a,n),e.compileShader(a),e.getShaderParameter(a,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(a));var i=e.createProgram();e.attachShader(i,o),e.attachShader(i,a),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(i)),e.useProgram(i);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var l=e.getAttribLocation(i,"vertexPos");e.enableVertexAttribArray(l),e.vertexAttribPointer(l,2,e.FLOAT,!1,0,0);var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(i,"texturePos");function d(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),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(i,r),t),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var f=d("ySampler",0),p=d("uSampler",1),m=d("vSampler",2);return{render:function(r,t,n,o,a){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,f),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,m),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,a),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(i),e.deleteBuffer(s),e.deleteBuffer(u),e.deleteTexture(f),e.deleteTexture(p),e.deleteBuffer(m)}catch(e){}}}})(this.offscreenCanvasGL,n.opt.openWebglAlignment),this.draw=function(n,a,i,l){this.webglObj.render(e,r,s.HEAPU8.subarray(a,a+t),s.HEAPU8.subarray(i,i+o),s.HEAPU8.subarray(l,l+o));let u=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:m,buffer:u,delay:this.delay,ts:n},[u])}):this.draw=function(e,r,n,a){var i=[s.HEAPU8.subarray(r,r+t),s.HEAPU8.subarray(n,n+o),s.HEAPU8.subarray(a,a+o)].map((e=>Uint8Array.from(e)));postMessage({cmd:m,output:i,delay:this.delay,ts:e},i.map((e=>e.buffer)))}},getDelay:function(e){return e?(this.firstTimestamp?e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)):(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1),this.delay):-1},resetDelay:function(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1},init:function(){n.opt.debug&&console.log("Jessibuca: [worker] init");const r=e=>{n.opt.useWCS&&n.useOffscreen()&&e.type===w&&t.decode?t.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for((t=e.shift()).type===E&&0===t.payload[1]&&r(t);!t.isIFrame&&e.length;)(t=e.shift()).type===E&&0===t.payload[1]&&r(t);t.isIFrame&&(this.dropping=!1,r(t))}else{var t=e[0];if(-1===this.getDelay(t.ts))n.opt.debug&&console.log("Jessibuca: [worker]: common dumex delay is -1"),e.shift(),r(t);else if(this.delay>n.opt.videoBuffer+1e3)n.opt.debug&&console.log("Jessibuca: [worker]:",`delay is ${this.delay}, set dropping is true`),this.resetDelay(),this.dropping=!0;else for(;e.length&&(t=e[0],this.getDelay(t.ts)>n.opt.videoBuffer);)e.shift(),r(t)}}),10)},close:function(){n.opt.debug&&console.log("Jessibuca: [worker]: close"),clearInterval(this.stopId),this.stopId=null,o.clear(),a.clear(),t.reset&&t.reset(),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],r=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===E?e.push({ts:t.ts,payload:r,decoder:o,type:E}):t.type===w&&e.push({ts:t.ts,payload:r,decoder:a,type:w,isIFrame:t.isIFrame})}},o=new s.AudioDecoder(n),a=new s.VideoDecoder(n);postMessage({cmd:b}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case b:try{n.opt=Object.assign(n.opt,JSON.parse(r.opt))}catch(e){}o.sample_rate=r.sampleRate,n.init();break;case _:n.pushBuffer(r.buffer,r.options);break;case T:o.decode(r.buffer,r.ts);break;case k:a.decode(r.buffer,r.ts);break;case S:n.close();break;case C:n.opt[r.key]=r.value}}}})); +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),a=n(r),i=n(t);var s=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r=void 0!==r?r:{},t=(r={print:function(e){console.log("Jessibuca: [worker]:",e)},printErr:function(e){console.warn("Jessibuca: [worker]:",e),postMessage({cmd:"wasmError",message:e})}},Object.assign({},r)),n="./this.program",s="object"==typeof window,l="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!s&&!u&&!l;if(r.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 d,f,p,m,h,g,v="";if(u){if("object"!=typeof process)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?)");v=l?o.default.dirname(v)+"/":__dirname+"/",g=()=>{h||(m=a.default,h=o.default)},d=function(e,r){return g(),e=h.normalize(e),m.readFileSync(e,r?void 0:"utf8")},p=e=>{var r=d(e,!0);return r.buffer||(r=new Uint8Array(r)),D(r.buffer),r},f=(e,r,t)=>{g(),e=h.normalize(e),m.readFile(e,(function(e,n){e?t(e):r(n.buffer)}))},process.argv.length>1&&(n=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=r,process.on("uncaughtException",(function(e){if(!(e instanceof St))throw e})),process.on("unhandledRejection",(function(e){throw e})),r.inspect=function(){return"[Emscripten Module object]"}}else if(c){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)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?)");"undefined"!=typeof read&&(d=function(e){return read(e)}),p=function(e){let r;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(r=read(e,"binary"),D("object"==typeof r),r)},f=function(e,r,t){setTimeout((()=>r(p(e))),0)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!s&&!l)throw new Error("environment detection error");if(l?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),v=0!==v.indexOf("blob:")?v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)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?)");d=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},l&&(p=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),f=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}}var y,E,w,b=r.print||console.log.bind(console),_=r.printErr||console.warn.bind(console);function T(e){T.shown||(T.shown={}),T.shown[e]||(T.shown[e]=1,_(e))}function k(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge("Module."+e+" has been replaced with plain "+t+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function S(e,r){var t="'"+e+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";return r&&(t+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),t}function C(e,t){Object.getOwnPropertyDescriptor(r,e)||Object.defineProperty(r,e,{configurable:!0,get:function(){ge(S(e,t))}})}function P(e,t){Object.getOwnPropertyDescriptor(r,e)||(r[e]=()=>ge(S(e,t)))}Object.assign(r,t),t=null,y="fetchSettings",Object.getOwnPropertyDescriptor(r,y)&&ge("`Module."+y+"` was supplied but `"+y+"` not included in INCOMING_MODULE_JS_API"),r.arguments,k("arguments","arguments_"),r.thisProgram&&(n=r.thisProgram),k("thisProgram","thisProgram"),r.quit,k("quit","quit_"),D(void 0===r.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),D(void 0===r.read,"Module.read option was removed (modify read_ in JS)"),D(void 0===r.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),D(void 0===r.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),D(void 0===r.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),D(void 0===r.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),k("read","read_"),k("readAsync","readAsync"),k("readBinary","readBinary"),k("setWindowTitle","setWindowTitle"),D(!c,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."),r.wasmBinary&&(E=r.wasmBinary),k("wasmBinary","wasmBinary"),r.noExitRuntime,k("noExitRuntime","noExitRuntime"),"object"!=typeof WebAssembly&&ge("no native wasm support detected");var A=!1;function D(e,r){e||ge("Assertion failed"+(r?": "+r:""))}var O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.buffer&&O)return O.decode(e.subarray(r,o));for(var a="";r>10,56320|1023&u)}}else a+=String.fromCharCode((31&i)<<6|s)}else a+=String.fromCharCode(i)}return a}function M(e,r){return e?F(U,e,r):""}function R(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;s>1114111&&T("Invalid Unicode code point 0x"+s.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)."),r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function N(e,r,t){return D("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),R(e,U,r,t)}function I(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var L,x,U,B,j,$,W,z,H,G="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function V(e,r){D(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&j[n];)++n;if((t=n<<1)-e>32&&G)return G.decode(U.subarray(e,t));for(var a="",i=0;!(i>=r/2);++i){var s=B[e+2*i>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function Y(e,r,t){if(D(r%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),D("number"==typeof t,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,a=0;a>1]=i,r+=2}return B[r>>1]=0,r-n}function X(e){return 2*e.length}function q(e,r){D(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var t=0,n="";!(t>=r/4);){var o=$[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var a=o-65536;n+=String.fromCharCode(55296|a>>10,56320|1023&a)}else n+=String.fromCharCode(o)}return n}function K(e,r,t){if(D(r%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),D("number"==typeof t,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,a=0;a=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a);if($[r>>2]=i,(r+=4)+4>o)break}return $[r>>2]=0,r-n}function J(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}function Q(e){var r=I(e)+1,t=gt(r);return t&&R(e,x,t,r),t}function Z(e){L=e,r.HEAP8=x=new Int8Array(e),r.HEAP16=B=new Int16Array(e),r.HEAP32=$=new Int32Array(e),r.HEAPU8=U=new Uint8Array(e),r.HEAPU16=j=new Uint16Array(e),r.HEAPU32=W=new Uint32Array(e),r.HEAPF32=z=new Float32Array(e),r.HEAPF64=H=new Float64Array(e)}var ee=5242880;r.TOTAL_STACK&&D(ee===r.TOTAL_STACK,"the stack size can no longer be determined at runtime");var re,te=r.INITIAL_MEMORY||67108864;function ne(){var e=kt();D(0==(3&e)),$[e>>2]=34821223,$[e+4>>2]=2310721022,$[0]=1668509029}function oe(){if(!A){var e=kt(),r=W[e>>2],t=W[e+4>>2];34821223==r&&2310721022==t||ge("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+t.toString(16)+" 0x"+r.toString(16)),1668509029!==$[0]&&ge("Runtime error: The application has corrupted its heap memory area (address zero)!")}}k("INITIAL_MEMORY","INITIAL_MEMORY"),D(te>=ee,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+te+"! (TOTAL_STACK="+"5242880)"),D("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),D(!r.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),D(67108864==te,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var ae=[],ie=[],se=[],le=!1;D(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),D(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),D(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),D(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 ue=0,ce=null,de=null,fe={};function pe(e){for(var r=e;;){if(!fe[e])return e;e=r+Math.random()}}function me(e){ue++,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(D(!fe[e]),fe[e]=1,null===ce&&"undefined"!=typeof setInterval&&(ce=setInterval((function(){if(A)return clearInterval(ce),void(ce=null);var e=!1;for(var r in fe)e||(e=!0,_("still waiting on run dependencies:")),_("dependency: "+r);e&&_("(end of list)")}),1e4))):_("warning: run dependency added without ID")}function he(e){if(ue--,r.monitorRunDependencies&&r.monitorRunDependencies(ue),e?(D(fe[e]),delete fe[e]):_("warning: run dependency removed without ID"),0==ue&&(null!==ce&&(clearInterval(ce),ce=null),de)){var t=de;de=null,t()}}function ge(e){throw r.onAbort&&r.onAbort(e),_(e="Aborted("+e+")"),A=!0,new WebAssembly.RuntimeError(e)}var ve,ye,Ee;function we(e){return e.startsWith("data:application/octet-stream;base64,")}function be(e){return e.startsWith("file://")}function _e(e,t){return function(){var n=e,o=t;return t||(o=r.asm),D(le,"native function `"+n+"` called before runtime initialization"),o[e]||D(o[e],"exported native function `"+n+"` not found"),o[e].apply(null,arguments)}}function Te(e){try{if(e==ve&&E)return new Uint8Array(E);if(p)return p(e);throw"both async and sync fetching of the wasm failed"}catch(e){ge(e)}}function ke(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Ce(n)():Ce(n)(t.arg):n(void 0===t.arg?null:t.arg)}else t(r)}}function Se(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var r,t=(r=e,T("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),r);return e===t?e:t+" ["+e+"]"}))}function Ce(e){return re.get(e)}function Pe(){var e=new Error;if(!e.stack){try{throw new Error}catch(r){e=r}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}we(ve="decoder.wasm")||(ve=function(e){return r.locateFile?r.locateFile(e,v):v+e}(ve));var Ae={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=Ae.isAbs(e),t="/"===e.substr(-1);return(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=Ae.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:e=>{if("/"===e)return"/";var r=(e=(e=Ae.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ae.normalize(e.join("/"))},join2:(e,r)=>Ae.normalize(e+"/"+r)};var De={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:Ie.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r=Ae.isAbs(n)}return(r?"/":"")+(e=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!r).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=De.resolve(e).substr(1),r=De.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=pt(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(b(F(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(b(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(_(F(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(_(F(e.output,0)),e.output=[])}}};function Fe(e){e=function(e,r){return D(r,"alignment argument is required"),Math.ceil(e/r)*r}(e,65536);var r=bt(65536,e);return r?(function(e,r){U.fill(0,e,e+r)}(r,e),r):0}var Me={ops_table:null,mount:function(e){return Me.createNode(null,"/",16895,0)},createNode:function(e,r,t,n){if(Ie.isBlkdev(t)||Ie.isFIFO(t))throw new Ie.ErrnoError(63);Me.ops_table||(Me.ops_table={dir:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,lookup:Me.node_ops.lookup,mknod:Me.node_ops.mknod,rename:Me.node_ops.rename,unlink:Me.node_ops.unlink,rmdir:Me.node_ops.rmdir,readdir:Me.node_ops.readdir,symlink:Me.node_ops.symlink},stream:{llseek:Me.stream_ops.llseek}},file:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:{llseek:Me.stream_ops.llseek,read:Me.stream_ops.read,write:Me.stream_ops.write,allocate:Me.stream_ops.allocate,mmap:Me.stream_ops.mmap,msync:Me.stream_ops.msync}},link:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,readlink:Me.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:Ie.chrdev_stream_ops}});var o=Ie.createNode(e,r,t,n);return Ie.isDir(o.mode)?(o.node_ops=Me.ops_table.dir.node,o.stream_ops=Me.ops_table.dir.stream,o.contents={}):Ie.isFile(o.mode)?(o.node_ops=Me.ops_table.file.node,o.stream_ops=Me.ops_table.file.stream,o.usedBytes=0,o.contents=null):Ie.isLink(o.mode)?(o.node_ops=Me.ops_table.link.node,o.stream_ops=Me.ops_table.link.stream):Ie.isChrdev(o.mode)&&(o.node_ops=Me.ops_table.chrdev.node,o.stream_ops=Me.ops_table.chrdev.stream),o.timestamp=Date.now(),e&&(e.contents[r]=o,e.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,r){var t=e.contents?e.contents.length:0;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=Ie.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,Ie.isDir(e.mode)?r.size=4096:Ie.isFile(e.mode)?r.size=e.usedBytes:Ie.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&Me.resizeFileStorage(e,r.size)},lookup:function(e,r){throw Ie.genericErrors[44]},mknod:function(e,r,t,n){return Me.createNode(e,r,t,n)},rename:function(e,r,t){if(Ie.isDir(e.mode)){var n;try{n=Ie.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new Ie.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=Ie.lookupNode(e,r);for(var n in t.contents)throw new Ie.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=Me.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!Ie.isLink(e.mode))throw new Ie.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(D(i>=0),i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||n+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=De.resolve(Ie.cwd(),e)))return{path:"",node:null};var t={follow_mount:!0,recurse_count:0};if(r=Object.assign(t,r),r.recurse_count>8)throw new Ie.ErrnoError(32);for(var n=Ae.normalizeArray(e.split("/").filter((e=>!!e)),!1),o=Ie.root,a="/",i=0;i40)throw new Ie.ErrnoError(32)}}return{path:a,node:o}},getPath:e=>{for(var r;;){if(Ie.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:(e,r)=>{for(var t=0,n=0;n>>0)%Ie.nameTable.length},hashAddNode:e=>{var r=Ie.hashName(e.parent.id,e.name);e.name_next=Ie.nameTable[r],Ie.nameTable[r]=e},hashRemoveNode:e=>{var r=Ie.hashName(e.parent.id,e.name);if(Ie.nameTable[r]===e)Ie.nameTable[r]=e.name_next;else for(var t=Ie.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:(e,r)=>{var t=Ie.mayLookup(e);if(t)throw new Ie.ErrnoError(t,e);for(var n=Ie.hashName(e.id,r),o=Ie.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return Ie.lookup(e,r)},createNode:(e,r,t,n)=>{D("object"==typeof e);var o=new Ie.FSNode(e,r,t,n);return Ie.hashAddNode(o),o},destroyNode:e=>{Ie.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var r=Ie.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:e=>{var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>Ie.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var r=Ie.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:(e,r)=>{try{Ie.lookupNode(e,r);return 20}catch(e){}return Ie.nodePermissions(e,"wx")},mayDelete:(e,r,t)=>{var n;try{n=Ie.lookupNode(e,r)}catch(e){return e.errno}var o=Ie.nodePermissions(e,"wx");if(o)return o;if(t){if(!Ie.isDir(n.mode))return 54;if(Ie.isRoot(n)||Ie.getPath(n)===Ie.cwd())return 10}else if(Ie.isDir(n.mode))return 31;return 0},mayOpen:(e,r)=>e?Ie.isLink(e.mode)?32:Ie.isDir(e.mode)&&("r"!==Ie.flagsToPermissionString(r)||512&r)?31:Ie.nodePermissions(e,Ie.flagsToPermissionString(r)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ie.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!Ie.streams[t])return t;throw new Ie.ErrnoError(33)},getStream:e=>Ie.streams[e],createStream:(e,r,t)=>{Ie.FSStream||(Ie.FSStream=function(){this.shared={}},Ie.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get function(){return this.shared.position},set:function(e){this.shared.position=e}}}),e=Object.assign(new Ie.FSStream,e);var n=Ie.nextfd(r,t);return e.fd=n,Ie.streams[n]=e,e},closeStream:e=>{Ie.streams[e]=null},chrdev_stream_ops:{open:e=>{var r=Ie.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Ie.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice:(e,r)=>{Ie.devices[e]={stream_ops:r}},getDevice:e=>Ie.devices[e],getMounts:e=>{for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:(e,r)=>{"function"==typeof e&&(r=e,e=!1),Ie.syncFSRequests++,Ie.syncFSRequests>1&&_("warning: "+Ie.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=Ie.getMounts(Ie.root.mount),n=0;function o(e){return D(Ie.syncFSRequests>0),Ie.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((r=>{if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)}))},mount:(e,r,t)=>{if("string"==typeof e)throw e;var n,o="/"===t,a=!t;if(o&&Ie.root)throw new Ie.ErrnoError(10);if(!o&&!a){var i=Ie.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,Ie.isMountpoint(n))throw new Ie.ErrnoError(10);if(!Ie.isDir(n.mode))throw new Ie.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},l=e.mount(s);return l.mount=s,s.root=l,o?Ie.root=l:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),l},unmount:e=>{var r=Ie.lookupPath(e,{follow_mount:!1});if(!Ie.isMountpoint(r.node))throw new Ie.ErrnoError(28);var t=r.node,n=t.mounted,o=Ie.getMounts(n);Object.keys(Ie.nameTable).forEach((e=>{for(var r=Ie.nameTable[e];r;){var t=r.name_next;o.includes(r.mount)&&Ie.destroyNode(r),r=t}})),t.mounted=null;var a=t.mount.mounts.indexOf(n);D(-1!==a),t.mount.mounts.splice(a,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod:(e,r,t)=>{var n=Ie.lookupPath(e,{parent:!0}).node,o=Ae.basename(e);if(!o||"."===o||".."===o)throw new Ie.ErrnoError(28);var a=Ie.mayCreate(n,o);if(a)throw new Ie.ErrnoError(a);if(!n.node_ops.mknod)throw new Ie.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:(e,r)=>(r=void 0!==r?r:438,r&=4095,r|=32768,Ie.mknod(e,r,0)),mkdir:(e,r)=>(r=void 0!==r?r:511,r&=1023,r|=16384,Ie.mknod(e,r,0)),mkdirTree:(e,r)=>{for(var t=e.split("/"),n="",o=0;o(void 0===t&&(t=r,r=438),r|=8192,Ie.mknod(e,r,t)),symlink:(e,r)=>{if(!De.resolve(e))throw new Ie.ErrnoError(44);var t=Ie.lookupPath(r,{parent:!0}).node;if(!t)throw new Ie.ErrnoError(44);var n=Ae.basename(r),o=Ie.mayCreate(t,n);if(o)throw new Ie.ErrnoError(o);if(!t.node_ops.symlink)throw new Ie.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename:(e,r)=>{var t,n,o=Ae.dirname(e),a=Ae.dirname(r),i=Ae.basename(e),s=Ae.basename(r);if(t=Ie.lookupPath(e,{parent:!0}).node,n=Ie.lookupPath(r,{parent:!0}).node,!t||!n)throw new Ie.ErrnoError(44);if(t.mount!==n.mount)throw new Ie.ErrnoError(75);var l,u=Ie.lookupNode(t,i),c=De.relative(e,a);if("."!==c.charAt(0))throw new Ie.ErrnoError(28);if("."!==(c=De.relative(r,o)).charAt(0))throw new Ie.ErrnoError(55);try{l=Ie.lookupNode(n,s)}catch(e){}if(u!==l){var d=Ie.isDir(u.mode),f=Ie.mayDelete(t,i,d);if(f)throw new Ie.ErrnoError(f);if(f=l?Ie.mayDelete(n,s,d):Ie.mayCreate(n,s))throw new Ie.ErrnoError(f);if(!t.node_ops.rename)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(u)||l&&Ie.isMountpoint(l))throw new Ie.ErrnoError(10);if(n!==t&&(f=Ie.nodePermissions(t,"w")))throw new Ie.ErrnoError(f);Ie.hashRemoveNode(u);try{t.node_ops.rename(u,n,s)}catch(e){throw e}finally{Ie.hashAddNode(u)}}},rmdir:e=>{var r=Ie.lookupPath(e,{parent:!0}).node,t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!0);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.rmdir)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.rmdir(r,t),Ie.destroyNode(n)},readdir:e=>{var r=Ie.lookupPath(e,{follow:!0}).node;if(!r.node_ops.readdir)throw new Ie.ErrnoError(54);return r.node_ops.readdir(r)},unlink:e=>{var r=Ie.lookupPath(e,{parent:!0}).node;if(!r)throw new Ie.ErrnoError(44);var t=Ae.basename(e),n=Ie.lookupNode(r,t),o=Ie.mayDelete(r,t,!1);if(o)throw new Ie.ErrnoError(o);if(!r.node_ops.unlink)throw new Ie.ErrnoError(63);if(Ie.isMountpoint(n))throw new Ie.ErrnoError(10);r.node_ops.unlink(r,t),Ie.destroyNode(n)},readlink:e=>{var r=Ie.lookupPath(e).node;if(!r)throw new Ie.ErrnoError(44);if(!r.node_ops.readlink)throw new Ie.ErrnoError(28);return De.resolve(Ie.getPath(r.parent),r.node_ops.readlink(r))},stat:(e,r)=>{var t=Ie.lookupPath(e,{follow:!r}).node;if(!t)throw new Ie.ErrnoError(44);if(!t.node_ops.getattr)throw new Ie.ErrnoError(63);return t.node_ops.getattr(t)},lstat:e=>Ie.stat(e,!0),chmod:(e,r,t)=>{var n;"string"==typeof e?n=Ie.lookupPath(e,{follow:!t}).node:n=e;if(!n.node_ops.setattr)throw new Ie.ErrnoError(63);n.node_ops.setattr(n,{mode:4095&r|-4096&n.mode,timestamp:Date.now()})},lchmod:(e,r)=>{Ie.chmod(e,r,!0)},fchmod:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);Ie.chmod(t.node,r)},chown:(e,r,t,n)=>{var o;"string"==typeof e?o=Ie.lookupPath(e,{follow:!n}).node:o=e;if(!o.node_ops.setattr)throw new Ie.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown:(e,r,t)=>{Ie.chown(e,r,t,!0)},fchown:(e,r,t)=>{var n=Ie.getStream(e);if(!n)throw new Ie.ErrnoError(8);Ie.chown(n.node,r,t)},truncate:(e,r)=>{if(r<0)throw new Ie.ErrnoError(28);var t;"string"==typeof e?t=Ie.lookupPath(e,{follow:!0}).node:t=e;if(!t.node_ops.setattr)throw new Ie.ErrnoError(63);if(Ie.isDir(t.mode))throw new Ie.ErrnoError(31);if(!Ie.isFile(t.mode))throw new Ie.ErrnoError(28);var n=Ie.nodePermissions(t,"w");if(n)throw new Ie.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:(e,r)=>{var t=Ie.getStream(e);if(!t)throw new Ie.ErrnoError(8);if(0==(2097155&t.flags))throw new Ie.ErrnoError(28);Ie.truncate(t.node,r)},utime:(e,r,t)=>{var n=Ie.lookupPath(e,{follow:!0}).node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:(e,t,n,o,a)=>{if(""===e)throw new Ie.ErrnoError(44);var i;if(n=void 0===n?438:n,n=64&(t="string"==typeof t?Ie.modeStringToFlags(t):t)?4095&n|32768:0,"object"==typeof e)i=e;else{e=Ae.normalize(e);try{i=Ie.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Ie.ErrnoError(20)}else i=Ie.mknod(e,n,0),s=!0;if(!i)throw new Ie.ErrnoError(44);if(Ie.isChrdev(i.mode)&&(t&=-513),65536&t&&!Ie.isDir(i.mode))throw new Ie.ErrnoError(54);if(!s){var l=Ie.mayOpen(i,t);if(l)throw new Ie.ErrnoError(l)}512&t&&Ie.truncate(i,0),t&=-131713;var u=Ie.createStream({node:i,path:Ie.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1},o,a);return u.stream_ops.open&&u.stream_ops.open(u),!r.logReadFiles||1&t||(Ie.readFiles||(Ie.readFiles={}),e in Ie.readFiles||(Ie.readFiles[e]=1)),u},close:e=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Ie.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Ie.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new Ie.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read:(e,r,t,n,o)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(1==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.read)throw new Ie.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var i=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=i),i},write:(e,r,t,n,o,a)=>{if(n<0||o<0)throw new Ie.ErrnoError(28);if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(Ie.isDir(e.node.mode))throw new Ie.ErrnoError(31);if(!e.stream_ops.write)throw new Ie.ErrnoError(28);e.seekable&&1024&e.flags&&Ie.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new Ie.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=s),s},allocate:(e,r,t)=>{if(Ie.isClosed(e))throw new Ie.ErrnoError(8);if(r<0||t<=0)throw new Ie.ErrnoError(28);if(0==(2097155&e.flags))throw new Ie.ErrnoError(8);if(!Ie.isFile(e.node.mode)&&!Ie.isDir(e.node.mode))throw new Ie.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ie.ErrnoError(138);e.stream_ops.allocate(e,r,t)},mmap:(e,r,t,n,o,a)=>{if(0!=(2&o)&&0==(2&a)&&2!=(2097155&e.flags))throw new Ie.ErrnoError(2);if(1==(2097155&e.flags))throw new Ie.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ie.ErrnoError(43);return e.stream_ops.mmap(e,r,t,n,o,a)},msync:(e,r,t,n,o)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,munmap:e=>0,ioctl:(e,r,t)=>{if(!e.stream_ops.ioctl)throw new Ie.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile:function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding)throw new Error('Invalid encoding type "'+r.encoding+'"');var t,n=Ie.open(e,r.flags),o=Ie.stat(e),a=o.size,i=new Uint8Array(a);return Ie.read(n,i,0,a,0),"utf8"===r.encoding?t=F(i,0):"binary"===r.encoding&&(t=i),Ie.close(n),t},writeFile:function(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};t.flags=t.flags||577;var n=Ie.open(e,t.flags,t.mode);if("string"==typeof r){var o=new Uint8Array(I(r)+1),a=R(r,o,0,o.length);Ie.write(n,o,0,a,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error("Unsupported data type");Ie.write(n,r,0,r.byteLength,void 0,t.canOwn)}Ie.close(n)},cwd:()=>Ie.currentPath,chdir:e=>{var r=Ie.lookupPath(e,{follow:!0});if(null===r.node)throw new Ie.ErrnoError(44);if(!Ie.isDir(r.node.mode))throw new Ie.ErrnoError(54);var t=Ie.nodePermissions(r.node,"x");if(t)throw new Ie.ErrnoError(t);Ie.currentPath=r.path},createDefaultDirectories:()=>{Ie.mkdir("/tmp"),Ie.mkdir("/home"),Ie.mkdir("/home/web_user")},createDefaultDevices:()=>{Ie.mkdir("/dev"),Ie.registerDevice(Ie.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n}),Ie.mkdev("/dev/null",Ie.makedev(1,3)),Oe.register(Ie.makedev(5,0),Oe.default_tty_ops),Oe.register(Ie.makedev(6,0),Oe.default_tty1_ops),Ie.mkdev("/dev/tty",Ie.makedev(5,0)),Ie.mkdev("/dev/tty1",Ie.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(u)try{var r=i.default;return function(){return r.randomBytes(1)[0]}}catch(e){}return function(){ge("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 } };")}}();Ie.createDevice("/dev","random",e),Ie.createDevice("/dev","urandom",e),Ie.mkdir("/dev/shm"),Ie.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Ie.mkdir("/proc");var e=Ie.mkdir("/proc/self");Ie.mkdir("/proc/self/fd"),Ie.mount({mount:()=>{var r=Ie.createNode(e,"fd",16895,73);return r.node_ops={lookup:(e,r)=>{var t=+r,n=Ie.getStream(t);if(!n)throw new Ie.ErrnoError(8);var o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path}};return o.parent=o,o}},r}},{},"/proc/self/fd")},createStandardStreams:()=>{r.stdin?Ie.createDevice("/dev","stdin",r.stdin):Ie.symlink("/dev/tty","/dev/stdin"),r.stdout?Ie.createDevice("/dev","stdout",null,r.stdout):Ie.symlink("/dev/tty","/dev/stdout"),r.stderr?Ie.createDevice("/dev","stderr",null,r.stderr):Ie.symlink("/dev/tty1","/dev/stderr");var e=Ie.open("/dev/stdin",0),t=Ie.open("/dev/stdout",1),n=Ie.open("/dev/stderr",1);D(0===e.fd,"invalid handle for stdin ("+e.fd+")"),D(1===t.fd,"invalid handle for stdout ("+t.fd+")"),D(2===n.fd,"invalid handle for stderr ("+n.fd+")")},ensureErrnoError:()=>{Ie.ErrnoError||(Ie.ErrnoError=function(e,r){this.node=r,this.setErrno=function(e){for(var r in this.errno=e,Ne)if(Ne[r]===e){this.code=r;break}},this.setErrno(e),this.message=Re[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=Se(this.stack))},Ie.ErrnoError.prototype=new Error,Ie.ErrnoError.prototype.constructor=Ie.ErrnoError,[44].forEach((e=>{Ie.genericErrors[e]=new Ie.ErrnoError(e),Ie.genericErrors[e].stack=""})))},staticInit:()=>{Ie.ensureErrnoError(),Ie.nameTable=new Array(4096),Ie.mount(Me,{},"/"),Ie.createDefaultDirectories(),Ie.createDefaultDevices(),Ie.createSpecialDirectories(),Ie.filesystems={MEMFS:Me}},init:(e,t,n)=>{D(!Ie.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)"),Ie.init.initialized=!0,Ie.ensureErrnoError(),r.stdin=e||r.stdin,r.stdout=t||r.stdout,r.stderr=n||r.stderr,Ie.createStandardStreams()},quit:()=>{Ie.init.initialized=!1,wt();for(var e=0;e{var t=0;return e&&(t|=365),r&&(t|=146),t},findObject:(e,r)=>{var t=Ie.analyzePath(e,r);return t.exists?t.object:null},analyzePath:(e,r)=>{try{e=(n=Ie.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=Ie.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=Ae.basename(e),n=Ie.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath:(e,r,t,n)=>{e="string"==typeof e?e:Ie.getPath(e);for(var o=r.split("/").reverse();o.length;){var a=o.pop();if(a){var i=Ae.join2(e,a);try{Ie.mkdir(i)}catch(e){}e=i}}return i},createFile:(e,r,t,n,o)=>{var a=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),i=Ie.getMode(n,o);return Ie.create(a,i)},createDataFile:(e,r,t,n,o,a)=>{var i=r;e&&(e="string"==typeof e?e:Ie.getPath(e),i=r?Ae.join2(e,r):e);var s=Ie.getMode(n,o),l=Ie.create(i,s);if(t){if("string"==typeof t){for(var u=new Array(t.length),c=0,d=t.length;c{var o=Ae.join2("string"==typeof e?e:Ie.getPath(e),r),a=Ie.getMode(!!t,!!n);Ie.createDevice.major||(Ie.createDevice.major=64);var i=Ie.makedev(Ie.createDevice.major++,0);return Ie.registerDevice(i,{open:e=>{e.seekable=!1},close:e=>{n&&n.buffer&&n.buffer.length&&n(10)},read:(e,r,n,o,a)=>{for(var i=0,s=0;s{for(var i=0;i{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)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.");if(!d)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=pt(d(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Ie.ErrnoError(29)}},createLazyFile:(e,r,t,n,o)=>{function a(){this.lengthKnown=!1,this.chunks=[]}if(a.prototype.get=function(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,a=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,i=1048576;o||(i=n);var s=this;s.setDataGetter((e=>{var r=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):pt(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&n||(i=n=1,n=this.getter(0).length,i=n,b("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:i}}else s={isDevice:!1,url:t};var u=Ie.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((e=>{var r=u.stream_ops[e];c[e]=function(){return Ie.forceLoadFile(u),r.apply(null,arguments)}})),c.read=(e,r,t,n,o)=>{Ie.forceLoadFile(u);var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(D(i>=0),a.slice)for(var s=0;s{var c=r?De.resolve(Ae.join2(e,r)):e,d=pe("cp "+c);function p(t){function f(t){u&&u(),s||Ie.createDataFile(e,r,t,n,o,l),a&&a(),he(d)}Browser.handledByPreloadPlugin(t,c,f,(()=>{i&&i(),he(d)}))||f(t)}me(d),"string"==typeof t?function(e,r,t,n){var o=n?"":pe("al "+e);f(e,(function(t){D(t,'Loading data file "'+e+'" failed (no arrayBuffer).'),r(new Uint8Array(t)),o&&he(o)}),(function(r){if(!t)throw'Loading data file "'+e+'" failed.';t()})),o&&me(o)}(t,(e=>p(e)),i):p(t)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=()=>{b("creating db"),o.result.createObjectStore(Ie.DB_STORE_NAME)},o.onsuccess=()=>{var n=o.result.transaction([Ie.DB_STORE_NAME],"readwrite"),a=n.objectStore(Ie.DB_STORE_NAME),i=0,s=0,l=e.length;function u(){0==s?r():t()}e.forEach((e=>{var r=a.put(Ie.analyzePath(e).object.contents,e);r.onsuccess=()=>{++i+s==l&&u()},r.onerror=()=>{s++,i+s==l&&u()}})),n.onerror=t},o.onerror=t},loadFilesFromDB:(e,r,t)=>{r=r||(()=>{}),t=t||(()=>{});var n=Ie.indexedDB();try{var o=n.open(Ie.DB_NAME(),Ie.DB_VERSION)}catch(e){return t(e)}o.onupgradeneeded=t,o.onsuccess=()=>{var n=o.result;try{var a=n.transaction([Ie.DB_STORE_NAME],"readonly")}catch(e){return void t(e)}var i=a.objectStore(Ie.DB_STORE_NAME),s=0,l=0,u=e.length;function c(){0==l?r():t()}e.forEach((e=>{var r=i.get(e);r.onsuccess=()=>{Ie.analyzePath(e).exists&&Ie.unlink(e),Ie.createDataFile(Ae.dirname(e),Ae.basename(e),r.result,!0,!0,!0),++s+l==u&&c()},r.onerror=()=>{l++,s+l==u&&c()}})),a.onerror=t},o.onerror=t},absolutePath:()=>{ge("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{ge("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{ge("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{ge("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{ge("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{ge("FS.standardizePath has been removed; use PATH.normalize instead")}},Le={DEFAULT_POLLMASK:5,calculateAt:function(e,r,t){if(Ae.isAbs(r))return r;var n;if(-100===e)n=Ie.cwd();else{var o=Ie.getStream(e);if(!o)throw new Ie.ErrnoError(8);n=o.path}if(0==r.length){if(!t)throw new Ie.ErrnoError(44);return n}return Ae.join2(n,r)},doStat:function(e,r,t){try{var n=e(r)}catch(e){if(e&&e.node&&Ae.normalize(r)!==Ae.normalize(Ie.getPath(e.node)))return-54;throw e}return $[t>>2]=n.dev,$[t+4>>2]=0,$[t+8>>2]=n.ino,$[t+12>>2]=n.mode,$[t+16>>2]=n.nlink,$[t+20>>2]=n.uid,$[t+24>>2]=n.gid,$[t+28>>2]=n.rdev,$[t+32>>2]=0,Ee=[n.size>>>0,(ye=n.size,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[t+40>>2]=Ee[0],$[t+44>>2]=Ee[1],$[t+48>>2]=4096,$[t+52>>2]=n.blocks,$[t+56>>2]=n.atime.getTime()/1e3|0,$[t+60>>2]=0,$[t+64>>2]=n.mtime.getTime()/1e3|0,$[t+68>>2]=0,$[t+72>>2]=n.ctime.getTime()/1e3|0,$[t+76>>2]=0,Ee=[n.ino>>>0,(ye=n.ino,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[t+80>>2]=Ee[0],$[t+84>>2]=Ee[1],0},doMsync:function(e,r,t,n,o){var a=U.slice(e,e+t);Ie.msync(r,a,o,t,n)},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ie.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=Ie.readlink(e),o=Math.min(t,I(n)),a=x[r+o];return N(n,r,t+1),x[r+o]=a,o},doAccess:function(e,r){if(-8&r)return-28;var t=Ie.lookupPath(e,{follow:!0}).node;if(!t)return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&Ie.nodePermissions(t,n)?-2:0},doReadv:function(e,r,t,n){for(var o=0,a=0;a>2],s=$[r+4>>2];r+=8;var l=Ie.read(e,x,i,s,n);if(l<0)return-1;if(o+=l,l>2],s=$[r+4>>2];r+=8;var l=Ie.write(e,x,i,s,n);if(l<0)return-1;o+=l}return o},varargs:void 0,get:function(){return D(null!=Le.varargs),Le.varargs+=4,$[Le.varargs-4>>2]},getStr:function(e){return M(e)},getStreamFromFD:function(e){var r=Ie.getStream(e);if(!r)throw new Ie.ErrnoError(8);return r}};function xe(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var Ue=void 0;function Be(e){for(var r="",t=e;U[t];)r+=Ue[U[t++]];return r}var je={},$e={},We={};function ze(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=48&&r<=57?"_"+e:e}function He(e,r){return e=ze(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function Ge(e,r){var t=He(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Ve=void 0;function Ye(e){throw new Ve(e)}var Xe=void 0;function qe(e){throw new Xe(e)}function Ke(e,r,t){function n(r){var n=t(r);n.length!==e.length&&qe("Mismatched type converter count");for(var o=0;o{$e.hasOwnProperty(e)?o[r]=$e[e]:(a.push(e),je.hasOwnProperty(e)||(je[e]=[]),je[e].push((()=>{o[r]=$e[e],++i===a.length&&n(o)})))})),0===a.length&&n(o)}function Je(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in r))throw new TypeError("registerType registeredInstance requires argPackAdvance");var n=r.name;if(e||Ye('type "'+n+'" must have a positive integer typeid pointer'),$e.hasOwnProperty(e)){if(t.ignoreDuplicateRegistrations)return;Ye("Cannot register type '"+n+"' twice")}if($e[e]=r,delete We[e],je.hasOwnProperty(e)){var o=je[e];delete je[e],o.forEach((e=>e()))}}function Qe(e){if(!(this instanceof wr))return!1;if(!(e instanceof wr))return!1;for(var r=this.$$.ptrType.registeredClass,t=this.$$.ptr,n=e.$$.ptrType.registeredClass,o=e.$$.ptr;r.baseClass;)t=r.upcast(t),r=r.baseClass;for(;n.baseClass;)o=n.upcast(o),n=n.baseClass;return r===n&&t===o}function Ze(e){Ye(e.$$.ptrType.registeredClass.name+" instance already deleted")}var er=!1;function rr(e){}function tr(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function nr(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=nr(e,r,t.baseClass);return null===n?null:t.downcast(n)}var or={};function ar(){return Object.keys(dr).length}function ir(){var e=[];for(var r in dr)dr.hasOwnProperty(r)&&e.push(dr[r]);return e}var sr=[];function lr(){for(;sr.length;){var e=sr.pop();e.$$.deleteScheduled=!1,e.delete()}}var ur=void 0;function cr(e){ur=e,sr.length&&ur&&ur(lr)}var dr={};function fr(e,r){return r=function(e,r){for(void 0===r&&Ye("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),dr[r]}function pr(e,r){return r.ptrType&&r.ptr||qe("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&qe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},hr(Object.create(e,{$$:{value:r}}))}function mr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=fr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?pr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):pr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a,i=this.registeredClass.getActualType(r),s=or[i];if(!s)return o.call(this);a=this.isConst?s.constPointerType:s.pointerType;var l=nr(r,this.registeredClass,a.registeredClass);return null===l?o.call(this):this.isSmartPointer?pr(a.registeredClass.instancePrototype,{ptrType:a,ptr:l,smartPtrType:this,smartPtr:e}):pr(a.registeredClass.instancePrototype,{ptrType:a,ptr:l})}function hr(e){return"undefined"==typeof FinalizationRegistry?(hr=e=>e,e):(er=new FinalizationRegistry((e=>{console.warn(e.leakWarning.stack.replace(/^Error: /,"")),tr(e.$$)})),hr=e=>{var r=e.$$;if(!!r.smartPtr){var t={$$:r},n=r.ptrType.registeredClass;t.leakWarning=new Error("Embind found a leaked C++ instance "+n.name+" <0x"+r.ptr.toString(16)+">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated"),"captureStackTrace"in Error&&Error.captureStackTrace(t.leakWarning,mr),er.register(e,t,e)}return e},rr=e=>er.unregister(e),hr(e))}function gr(){if(this.$$.ptr||Ze(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,r=hr(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return r.$$.count.value+=1,r.$$.deleteScheduled=!1,r}function vr(){this.$$.ptr||Ze(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),rr(this),tr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function yr(){return!this.$$.ptr}function Er(){return this.$$.ptr||Ze(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ye("Object already scheduled for deletion"),sr.push(this),1===sr.length&&ur&&ur(lr),this.$$.deleteScheduled=!0,this}function wr(){}function br(e,r,t){if(void 0===e[r].overloadTable){var n=e[r];e[r]=function(){return e[r].overloadTable.hasOwnProperty(arguments.length)||Ye("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[r].overloadTable+")!"),e[r].overloadTable[arguments.length].apply(this,arguments)},e[r].overloadTable=[],e[r].overloadTable[n.argCount]=n}}function _r(e,r,t,n,o,a,i,s){this.name=e,this.constructor=r,this.instancePrototype=t,this.rawDestructor=n,this.baseClass=o,this.getActualType=a,this.upcast=i,this.downcast=s,this.pureVirtualFunctions=[]}function Tr(e,r,t){for(;r!==t;)r.upcast||Ye("Expected null or instance of "+t.name+", got an instance of "+r.name),e=r.upcast(e),r=r.baseClass;return e}function kr(e,r){if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),0;r.$$||Ye('Cannot pass "'+Xr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name);var t=r.$$.ptrType.registeredClass;return Tr(r.$$.ptr,t,this.registeredClass)}function Sr(e,r){var t;if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,t),t):0;r.$$||Ye('Cannot pass "'+Xr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&r.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);var n=r.$$.ptrType.registeredClass;if(t=Tr(r.$$.ptr,n,this.registeredClass),this.isSmartPointer)switch(void 0===r.$$.smartPtr&&Ye("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:r.$$.smartPtrType===this?t=r.$$.smartPtr:Ye("Cannot convert argument of type "+(r.$$.smartPtrType?r.$$.smartPtrType.name:r.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=r.$$.smartPtr;break;case 2:if(r.$$.smartPtrType===this)t=r.$$.smartPtr;else{var o=r.clone();t=this.rawShare(t,Yr.toHandle((function(){o.delete()}))),null!==e&&e.push(this.rawDestructor,t)}break;default:Ye("Unsupporting sharing policy")}return t}function Cr(e,r){if(null===r)return this.isReference&&Ye("null is not a valid "+this.name),0;r.$$||Ye('Cannot pass "'+Xr(r)+'" as a '+this.name),r.$$.ptr||Ye("Cannot pass deleted object as a pointer of type "+this.name),r.$$.ptrType.isConst&&Ye("Cannot convert argument of type "+r.$$.ptrType.name+" to parameter type "+this.name);var t=r.$$.ptrType.registeredClass;return Tr(r.$$.ptr,t,this.registeredClass)}function Pr(e){return this.fromWireType(W[e>>2])}function Ar(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Dr(e){this.rawDestructor&&this.rawDestructor(e)}function Or(e){null!==e&&e.delete()}function Fr(e,r,t,n,o,a,i,s,l,u,c){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=i,this.rawGetPointee=s,this.rawConstructor=l,this.rawShare=u,this.rawDestructor=c,o||void 0!==r.baseClass?this.toWireType=Sr:n?(this.toWireType=kr,this.destructorFunction=null):(this.toWireType=Cr,this.destructorFunction=null)}function Mr(e,t,n){return e.includes("j")?function(e,t,n){D("dynCall_"+e in r,"bad function pointer type - no table for sig '"+e+"'"),n&&n.length?D(n.length===e.substring(1).replace(/j/g,"--").length):D(1==e.length);var o=r["dynCall_"+e];return n&&n.length?o.apply(null,[t].concat(n)):o.call(null,t)}(e,t,n):(D(Ce(t),"missing table entry in dynCall: "+t),Ce(t).apply(null,n))}function Rr(e,r){var t=(e=Be(e)).includes("j")?function(e,r){D(e.includes("j"),"getDynCaller should only be called with i64 sigs");var t=[];return function(){return t.length=0,Object.assign(t,arguments),Mr(e,r,t)}}(e,r):Ce(r);return"function"!=typeof t&&Ye("unknown function pointer with signature "+e+": "+r),t}var Nr=void 0;function Ir(e){var r=Et(e),t=Be(r);return ht(r),t}function Lr(e,r){var t=[],n={};throw r.forEach((function e(r){n[r]||$e[r]||(We[r]?We[r].forEach(e):(t.push(r),n[r]=!0))})),new Nr(e+": "+t.map(Ir).join([", "]))}function xr(e,r){for(var t=[],n=0;n>2)+n]);return t}function Ur(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function Br(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=He(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function jr(e,r,t,n,o){var a=r.length;a<2&&Ye("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var i=null!==r[1]&&null!==t,s=!1,l=1;l0?", ":"")+d),f+=(u?"var rv = ":"")+"invoker(fn"+(d.length>0?", ":"")+d+");\n",s)f+="runDestructors(destructors);\n";else for(l=i?1:2;l4&&0==--zr[e].refcount&&(zr[e]=void 0,Wr.push(e))}function Gr(){for(var e=0,r=5;r(e||Ye("Cannot use deleted val. handle = "+e),zr[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var r=Wr.length?Wr.pop():zr.length;return zr[r]={refcount:1,value:e},r}}};function Xr(e){if(null===e)return"null";var r=typeof e;return"object"===r||"array"===r||"function"===r?e.toString():""+e}function qr(e,r){switch(r){case 2:return function(e){return this.fromWireType(z[e>>2])};case 3:return function(e){return this.fromWireType(H[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Kr(e,r,t){switch(r){case 0:return t?function(e){return x[e]}:function(e){return U[e]};case 1:return t?function(e){return B[e>>1]}:function(e){return j[e>>1]};case 2:return t?function(e){return $[e>>2]}:function(e){return W[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Jr(e,r){var t=$e[e];return void 0===t&&Ye(r+" has unknown type "+Ir(e)),t}var Qr={};var Zr=[];var et=[];function rt(e,r){return D(r===(0|r)),(e>>>0)+4294967296*r}function tt(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function nt(e,r){return e>=0?e:r<=32?2*Math.abs(1<>3]),n+=8):"i64"==e?(r=[$[n>>2],$[n+4>>2]],n+=8):(D(0==(3&n)),e="i32",r=$[n>>2],n+=4),r}for(var a,i,s,l,u,c,d=[];;){var f=t;if(0===(a=x[t>>0]))break;if(i=x[t+1>>0],37==a){var p=!1,m=!1,h=!1,g=!1,v=!1;e:for(;;){switch(i){case 43:p=!0;break;case 45:m=!0;break;case 35:h=!0;break;case 48:if(g)break e;g=!0;break;case 32:v=!0;break;default:break e}t++,i=x[t+1>>0]}var y=0;if(42==i)y=o("i32"),t++,i=x[t+1>>0];else for(;i>=48&&i<=57;)y=10*y+(i-48),t++,i=x[t+1>>0];var E,w=!1,b=-1;if(46==i){if(b=0,w=!0,t++,42==(i=x[t+1>>0]))b=o("i32"),t++;else for(;;){var _=x[t+1>>0];if(_<48||_>57)break;b=10*b+(_-48),t++}i=x[t+1>>0]}switch(b<0&&(b=6,w=!1),String.fromCharCode(i)){case"h":104==x[t+2>>0]?(t++,E=1):E=2;break;case"l":108==x[t+2>>0]?(t++,E=8):E=4;break;case"L":case"q":case"j":E=8;break;case"z":case"t":case"I":E=4;break;default:E=null}switch(E&&t++,i=x[t+1>>0],String.fromCharCode(i)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var T=100==i||105==i;if(s=o("i"+8*(E=E||4)),8==E&&(s=117==i?(u=s[0],c=s[1],(u>>>0)+4294967296*(c>>>0)):rt(s[0],s[1])),E<=4)s=(T?tt:nt)(s&Math.pow(256,E)-1,8*E);var k=Math.abs(s),S="";if(100==i||105==i)A=tt(s,8*E).toString(10);else if(117==i)A=nt(s,8*E).toString(10),s=Math.abs(s);else if(111==i)A=(h?"0":"")+k.toString(8);else if(120==i||88==i){if(S=h&&0!=s?"0x":"",s<0){s=-s,A=(k-1).toString(16);for(var C=[],P=0;P=0&&(p?S="+"+S:v&&(S=" "+S)),"-"==A.charAt(0)&&(S="-"+S,A=A.substr(1));S.length+A.lengthM&&M>=-4?(i=(103==i?"f":"F").charCodeAt(0),b-=M+1):(i=(103==i?"e":"E").charCodeAt(0),b--),F=Math.min(b,20)}101==i||69==i?(A=s.toExponential(F),/[eE][-+]\d$/.test(A)&&(A=A.slice(0,-1)+"0"+A.slice(-1))):102!=i&&70!=i||(A=s.toFixed(F),0===s&&((l=s)<0||0===l&&1/l==-1/0)&&(A="-"+A));var R=A.split("e");if(O&&!h)for(;R[0].length>1&&R[0].includes(".")&&("0"==R[0].slice(-1)||"."==R[0].slice(-1));)R[0]=R[0].slice(0,-1);else for(h&&-1==A.indexOf(".")&&(R[0]+=".");b>F++;)R[0]+="0";A=R[0]+(R.length>1?"e"+R[1]:""),69==i&&(A=A.toUpperCase()),s>=0&&(p?A="+"+A:v&&(A=" "+A))}else A=(s<0?"-":"")+"inf",g=!1;for(;A.length>0]);else d=d.concat(pt("(null)".substr(0,I),!0));if(m)for(;I0;)d.push(32);m||d.push(o("i8"));break;case"n":var L=o("i32*");$[L>>2]=d.length;break;case"%":d.push(a);break;default:for(P=f;P>0])}t+=2}else d.push(a),t+=1}return d}function at(e){if(!e||!e.callee||!e.callee.name)return[null,"",""];e.callee.toString();var r=e.callee.name,t="(",n=!0;for(var o in e){var a=e[o];n||(t+=", "),n=!1,t+="number"==typeof a||"string"==typeof a?a:"("+typeof a+")"}t+=")";var i=e.callee.caller;return n&&(t=""),[e=i?i.arguments:[],r,t]}function it(e,r){24&e&&(r=r.replace(/\s+$/,""),r+=(r.length>0?"\n":"")+function(e){var r=Pe(),t=r.lastIndexOf("_emscripten_log"),n=r.lastIndexOf("_emscripten_get_callstack"),o=r.indexOf("\n",Math.max(t,n))+1;r=r.slice(o),32&e&&T("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(T('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.'),e^=8,e|=16);var a=null;if(128&e)for(a=at(arguments);a[1].includes("_emscripten_");)a=at(a[0]);var i=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),l=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),u=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in i){var d=i[c],f="",p="",m=0,h=0,g=u.exec(d);if(g&&5==g.length)f=g[1],p=g[2],m=g[3],h=g[4];else{if((g=s.exec(d))||(g=l.exec(d)),!(g&&g.length>=4)){r+=d+"\n";continue}f=g[1],p=g[2],m=g[3],h=0|g[4]}var v=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:m,column:h});(v=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+f+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!v)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(v?" = "+f:" at "+f)+" ("+p+":"+m+":"+h+")\n"),128&e&&a[0]&&(a[1]==f&&a[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+a[1]+a[2]+"\n"),a=at(a[0]))}return r.replace(/\s+$/,"")}(e)),1&e?4&e?console.error(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):console.log(r):6&e?_(r):b(r)}function st(e){try{return w.grow(e-L.byteLength+65535>>>16),Z(w.buffer),1}catch(r){_("emscripten_realloc_buffer: Attempted to grow heap from "+L.byteLength+" bytes to "+e+" bytes, but got error: "+r)}}var lt={};function ut(){if(!ut.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:n||"./this.program"};for(var r in lt)void 0===lt[r]?delete e[r]:e[r]=lt[r];var t=[];for(var r in e)t.push(r+"="+e[r]);ut.strings=t}return ut.strings}var ct=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ie.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},dt=365,ft=146;function pt(e,r,t){var n=t>0?t:I(e)+1,o=new Array(n),a=R(e,o,0,o.length);return r&&(o.length=a),o}Object.defineProperties(ct.prototype,{read:{get:function(){return(this.mode&dt)===dt},set:function(e){e?this.mode|=dt:this.mode&=-366}},write:{get:function(){return(this.mode&ft)===ft},set:function(e){e?this.mode|=ft:this.mode&=-147}},isFolder:{get:function(){return Ie.isDir(this.mode)}},isDevice:{get:function(){return Ie.isChrdev(this.mode)}}}),Ie.FSNode=ct,Ie.staticInit(),Ne={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},function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);Ue=e}(),Ve=r.BindingError=Ge(Error,"BindingError"),Xe=r.InternalError=Ge(Error,"InternalError"),wr.prototype.isAliasOf=Qe,wr.prototype.clone=gr,wr.prototype.delete=vr,wr.prototype.isDeleted=yr,wr.prototype.deleteLater=Er,r.getInheritedInstanceCount=ar,r.getLiveInheritedInstances=ir,r.flushPendingDeletes=lr,r.setDelayFunction=cr,Fr.prototype.getPointee=Ar,Fr.prototype.destructor=Dr,Fr.prototype.argPackAdvance=8,Fr.prototype.readValueFromPointer=Pr,Fr.prototype.deleteObject=Or,Fr.prototype.fromWireType=mr,Nr=r.UnboundTypeError=Ge(Error,"UnboundTypeError"),r.count_emval_handles=Gr,r.get_first_emval=Vr;var mt={__syscall_fcntl64:function(e,r,t){Le.varargs=t;try{var n=Le.getStreamFromFD(e);switch(r){case 0:return(o=Le.get())<0?-28:Ie.createStream(n,o).fd;case 1:case 2:case 6:case 7:return 0;case 3:return n.flags;case 4:var o=Le.get();return n.flags|=o,0;case 5:o=Le.get();return B[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return a=28,$[yt()>>2]=a,-1}}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}var a},__syscall_openat:function(e,r,t,n){Le.varargs=n;try{r=Le.getStr(r),r=Le.calculateAt(e,r);var o=n?Le.get():0;return Ie.open(r,t,o).fd}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return-e.errno}},_embind_register_bigint:function(e,r,t,n,o){},_embind_register_bool:function(e,r,t,n,o){var a=xe(t);Je(e,{name:r=Be(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=x;else if(2===t)n=B;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=$}return this.fromWireType(n[e>>a])},destructorFunction:null})},_embind_register_class:function(e,t,n,o,a,i,s,l,u,c,d,f,p){d=Be(d),i=Rr(a,i),l&&(l=Rr(s,l)),c&&(c=Rr(u,c)),p=Rr(f,p);var m=ze(d);!function(e,t,n){r.hasOwnProperty(e)?((void 0===n||void 0!==r[e].overloadTable&&void 0!==r[e].overloadTable[n])&&Ye("Cannot register public name '"+e+"' twice"),br(r,e,e),r.hasOwnProperty(n)&&Ye("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),r[e].overloadTable[n]=t):(r[e]=t,void 0!==n&&(r[e].numArguments=n))}(m,(function(){Lr("Cannot construct "+d+" due to unbound types",[o])})),Ke([e,t,n],o?[o]:[],(function(t){var n,a;t=t[0],a=o?(n=t.registeredClass).instancePrototype:wr.prototype;var s=He(m,(function(){if(Object.getPrototypeOf(this)!==u)throw new Ve("Use 'new' to construct "+d);if(void 0===f.constructor_body)throw new Ve(d+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new Ve("Tried to invoke ctor of "+d+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),u=Object.create(a,{constructor:{value:s}});s.prototype=u;var f=new _r(d,s,u,p,n,i,l,c),h=new Fr(d,f,!0,!1,!1),g=new Fr(d+"*",f,!1,!1,!1),v=new Fr(d+" const*",f,!1,!0,!1);return or[e]={pointerType:g,constPointerType:v},function(e,t,n){r.hasOwnProperty(e)||qe("Replacing nonexistant public symbol"),void 0!==r[e].overloadTable&&void 0!==n?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)}(m,s),[h,g,v]}))},_embind_register_class_constructor:function(e,r,t,n,o,a){D(r>0);var i=xr(r,t);o=Rr(n,o),Ke([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Ve("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=()=>{Lr("Cannot construct "+e.name+" due to unbound types",i)},Ke([],i,(function(n){return n.splice(1,0,null),e.registeredClass.constructor_body[r-1]=jr(t,n,null,o,a),[]})),[]}))},_embind_register_class_function:function(e,r,t,n,o,a,i,s){var l=xr(t,n);r=Be(r),a=Rr(o,a),Ke([],[e],(function(e){var n=(e=e[0]).name+"."+r;function o(){Lr("Cannot call "+n+" due to unbound types",l)}r.startsWith("@@")&&(r=Symbol[r.substring(2)]),s&&e.registeredClass.pureVirtualFunctions.push(r);var u=e.registeredClass.instancePrototype,c=u[r];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===t-2?(o.argCount=t-2,o.className=e.name,u[r]=o):(br(u,r,n),u[r].overloadTable[t-2]=o),Ke([],l,(function(o){var s=jr(n,o,e,a,i);return void 0===u[r].overloadTable?(s.argCount=t-2,u[r]=s):u[r].overloadTable[t-2]=s,[]})),[]}))},_embind_register_class_property:function(e,r,t,n,o,a,i,s,l,u){r=Be(r),o=Rr(n,o),Ke([],[e],(function(e){var n=(e=e[0]).name+"."+r,c={get:function(){Lr("Cannot access "+n+" due to unbound types",[t,i])},enumerable:!0,configurable:!0};return c.set=l?()=>{Lr("Cannot access "+n+" due to unbound types",[t,i])}:e=>{Ye(n+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,r,c),Ke([],l?[t,i]:[t],(function(t){var i=t[0],c={get:function(){var r=$r(this,e,n+" getter");return i.fromWireType(o(a,r))},enumerable:!0};if(l){l=Rr(s,l);var d=t[1];c.set=function(r){var t=$r(this,e,n+" setter"),o=[];l(u,t,d.toWireType(o,r)),Ur(o)}}return Object.defineProperty(e.registeredClass.instancePrototype,r,c),[]})),[]}))},_embind_register_emval:function(e,r){Je(e,{name:r=Be(r),fromWireType:function(e){var r=Yr.toValue(e);return Hr(e),r},toWireType:function(e,r){return Yr.toHandle(r)},argPackAdvance:8,readValueFromPointer:Pr,destructorFunction:null})},_embind_register_float:function(e,r,t){var n=xe(t);Je(e,{name:r=Be(r),fromWireType:function(e){return e},toWireType:function(e,r){if("number"!=typeof r&&"boolean"!=typeof r)throw new TypeError('Cannot convert "'+Xr(r)+'" to '+this.name);return r},argPackAdvance:8,readValueFromPointer:qr(r,n),destructorFunction:null})},_embind_register_integer:function(e,r,t,n,o){r=Be(r),-1===o&&(o=4294967295);var a=xe(t),i=e=>e;if(0===n){var s=32-8*t;i=e=>e<>>s}var l=r.includes("unsigned"),u=(e,t)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError('Cannot convert "'+Xr(e)+'" to '+t);if(eo)throw new TypeError('Passing a number "'+Xr(e)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!")};Je(e,{name:r,fromWireType:i,toWireType:l?function(e,r){return u(r,this.name),r>>>0}:function(e,r){return u(r,this.name),r},argPackAdvance:8,readValueFromPointer:Kr(r,a,0!==n),destructorFunction:null})},_embind_register_memory_view:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=W,t=r[e>>=2],o=r[e+1];return new n(L,o,t)}Je(e,{name:t=Be(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},_embind_register_std_string:function(e,r){var t="std::string"===(r=Be(r));Je(e,{name:r,fromWireType:function(e){var r,n=W[e>>2];if(t)for(var o=e+4,a=0;a<=n;++a){var i=e+4+a;if(a==n||0==U[i]){var s=M(o,i-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=i+1}}else{var l=new Array(n);for(a=0;aI(r):()=>r.length)(),a=gt(4+o+1);if(W[a>>2]=o,t&&n)N(r,a+4,o+1);else if(n)for(var i=0;i255&&(ht(a),Ye("String has UTF-16 code units that do not fit in 8 bits")),U[a+4+i]=s}else for(i=0;ij,s=1):4===r&&(n=q,o=K,i=J,a=()=>W,s=2),Je(e,{name:t,fromWireType:function(e){for(var t,o=W[e>>2],i=a(),l=e+4,u=0;u<=o;++u){var c=e+4+u*r;if(u==o||0==i[c>>s]){var d=n(l,c-l);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),l=c+r}}return ht(e),t},toWireType:function(e,n){"string"!=typeof n&&Ye("Cannot pass non-string to C++ string type "+t);var a=i(n),l=gt(4+a+r);return W[l>>2]=a>>s,o(n,l+4,a+r),null!==e&&e.push(ht,l),l},argPackAdvance:8,readValueFromPointer:Pr,destructorFunction:function(e){ht(e)}})},_embind_register_void:function(e,r){Je(e,{isVoid:!0,name:r=Be(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},_emscripten_date_now:function(){return Date.now()},_emval_as:function(e,r,t){e=Yr.toValue(e),r=Jr(r,"emval::as");var n=[],o=Yr.toHandle(n);return $[t>>2]=o,r.toWireType(n,e)},_emval_call_void_method:function(e,r,t,n){var o,a;(e=Zr[e])(r=Yr.toValue(r),t=void 0===(a=Qr[o=t])?Be(o):a,null,n)},_emval_decref:Hr,_emval_get_method_caller:function(e,r){var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",a=et[o];if(void 0!==a)return a;for(var i=["retType"],s=[n],l="",u=0;u4&&(zr[e].refcount+=1)},_emval_run_destructors:function(e){Ur(Yr.toValue(e)),Hr(e)},_emval_take_value:function(e,r){var t=(e=Jr(e,"_emval_take_value")).readValueFromPointer(r);return Yr.toHandle(t)},_gmtime_js:function(e,r){var t=new Date(1e3*$[e>>2]);$[r>>2]=t.getUTCSeconds(),$[r+4>>2]=t.getUTCMinutes(),$[r+8>>2]=t.getUTCHours(),$[r+12>>2]=t.getUTCDate(),$[r+16>>2]=t.getUTCMonth(),$[r+20>>2]=t.getUTCFullYear()-1900,$[r+24>>2]=t.getUTCDay();var n=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-n)/864e5|0;$[r+28>>2]=o},_localtime_js:function(e,r){var t=new Date(1e3*$[e>>2]);$[r>>2]=t.getSeconds(),$[r+4>>2]=t.getMinutes(),$[r+8>>2]=t.getHours(),$[r+12>>2]=t.getDate(),$[r+16>>2]=t.getMonth(),$[r+20>>2]=t.getFullYear()-1900,$[r+24>>2]=t.getDay();var n=new Date(t.getFullYear(),0,1),o=(t.getTime()-n.getTime())/864e5|0;$[r+28>>2]=o,$[r+36>>2]=-60*t.getTimezoneOffset();var a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),i=n.getTimezoneOffset(),s=0|(a!=i&&t.getTimezoneOffset()==Math.min(i,a));$[r+32>>2]=s},_mktime_js:function(e){var r=new Date($[e+20>>2]+1900,$[e+16>>2],$[e+12>>2],$[e+8>>2],$[e+4>>2],$[e>>2],0),t=$[e+32>>2],n=r.getTimezoneOffset(),o=new Date(r.getFullYear(),0,1),a=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=o.getTimezoneOffset(),s=Math.min(i,a);if(t<0)$[e+32>>2]=Number(a!=i&&s==n);else if(t>0!=(s==n)){var l=Math.max(i,a),u=t>0?s:l;r.setTime(r.getTime()+6e4*(u-n))}$[e+24>>2]=r.getDay();var c=(r.getTime()-o.getTime())/864e5|0;return $[e+28>>2]=c,$[e>>2]=r.getSeconds(),$[e+4>>2]=r.getMinutes(),$[e+8>>2]=r.getHours(),$[e+12>>2]=r.getDate(),$[e+16>>2]=r.getMonth(),r.getTime()/1e3|0},_tzset_js:function e(r,t,n){e.called||(e.called=!0,function(e,r,t){var n=(new Date).getFullYear(),o=new Date(n,0,1),a=new Date(n,6,1),i=o.getTimezoneOffset(),s=a.getTimezoneOffset(),l=Math.max(i,s);function u(e){var r=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return r?r[1]:"GMT"}$[e>>2]=60*l,$[r>>2]=Number(i!=s);var c=u(o),d=u(a),f=Q(c),p=Q(d);s>2]=f,$[t+4>>2]=p):($[t>>2]=p,$[t+4>>2]=f)}(r,t,n))},abort:function(){ge("native code called abort()")},emscripten_log:function(e,r,t){it(e,F(ot(r,t),0))},emscripten_resize_heap:function(e){var r=U.length;D((e>>>=0)>r);var t,n,o=2147483648;if(e>o)return _("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var a=1;a<=4;a*=2){var i=r*(1+.2/a);i=Math.min(i,e+100663296);var s=Math.min(o,(t=Math.max(e,i))+((n=65536)-t%n)%n);if(st(s))return!0}return _("Failed to grow the heap from "+r+" bytes to "+s+" bytes, not enough memory!"),!1},environ_get:function(e,r){var t=0;return ut().forEach((function(n,o){var a=r+t;$[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||(x[r>>0]=0)}(n,a),t+=n.length+1})),0},environ_sizes_get:function(e,r){var t=ut();$[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),$[r>>2]=n,0},fd_close:function(e){try{var r=Le.getStreamFromFD(e);return Ie.close(r),0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_fdstat_get:function(e,r){try{var t=Le.getStreamFromFD(e),n=t.tty?2:Ie.isDir(t.mode)?3:Ie.isLink(t.mode)?7:4;return x[r>>0]=n,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_read:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),a=Le.doReadv(o,r,t);return $[n>>2]=a,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_seek:function(e,r,t,n,o){try{var a=Le.getStreamFromFD(e),i=4294967296*t+(r>>>0),s=9007199254740992;return i<=-s||i>=s?-61:(Ie.llseek(a,i,n),Ee=[a.position>>>0,(ye=a.position,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],$[o>>2]=Ee[0],$[o+4>>2]=Ee[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0)}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},fd_write:function(e,r,t,n){try{var o=Le.getStreamFromFD(e),a=Le.doWritev(o,r,t);return $[n>>2]=a,0}catch(e){if(void 0===Ie||!(e instanceof Ie.ErrnoError))throw e;return e.errno}},setTempRet0:function(e){}};!function(){var e={env:mt,wasi_snapshot_preview1:mt};function t(e,t){var n,o=e.exports;r.asm=o,D(w=r.asm.memory,"memory not found in wasm exports"),Z(w.buffer),D(re=r.asm.__indirect_function_table,"table not found in wasm exports"),n=r.asm.__wasm_call_ctors,ie.unshift(n),he("wasm-instantiate")}me("wasm-instantiate");var n=r;function o(e){D(r===n,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),n=null,t(e.instance)}function a(r){return function(){if(!E&&(s||l)){if("function"==typeof fetch&&!be(ve))return fetch(ve,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ve+"'";return e.arrayBuffer()})).catch((function(){return Te(ve)}));if(f)return new Promise((function(e,r){f(ve,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return Te(ve)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then((function(e){return e})).then(r,(function(e){_("failed to asynchronously prepare wasm: "+e),be(ve)&&_("warning: Loading from a file URI ("+ve+") 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"),ge(e)}))}if(r.instantiateWasm)try{return r.instantiateWasm(e,t)}catch(e){return _("Module.instantiateWasm callback failed with error: "+e),!1}E||"function"!=typeof WebAssembly.instantiateStreaming||we(ve)||be(ve)||"function"!=typeof fetch?a(o):fetch(ve,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(o,(function(e){return _("wasm streaming compile failed: "+e),_("falling back to ArrayBuffer instantiation"),a(o)}))}))}(),r.___wasm_call_ctors=_e("__wasm_call_ctors");var ht=r._free=_e("free"),gt=r._malloc=_e("malloc"),vt=r._strlen=_e("strlen"),yt=r.___errno_location=_e("__errno_location"),Et=r.___getTypeName=_e("__getTypeName");r.___embind_register_native_and_builtin_types=_e("__embind_register_native_and_builtin_types");var wt=r.___stdio_exit=_e("__stdio_exit"),bt=r._emscripten_builtin_memalign=_e("emscripten_builtin_memalign"),_t=r._emscripten_stack_init=function(){return(_t=r._emscripten_stack_init=r.asm.emscripten_stack_init).apply(null,arguments)};r._emscripten_stack_get_free=function(){return(r._emscripten_stack_get_free=r.asm.emscripten_stack_get_free).apply(null,arguments)},r._emscripten_stack_get_base=function(){return(r._emscripten_stack_get_base=r.asm.emscripten_stack_get_base).apply(null,arguments)};var Tt,kt=r._emscripten_stack_get_end=function(){return(kt=r._emscripten_stack_get_end=r.asm.emscripten_stack_get_end).apply(null,arguments)};function St(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ct(e){function t(){Tt||(Tt=!0,r.calledRun=!0,A||(oe(),D(!le),le=!0,r.noFSInit||Ie.init.initialized||Ie.init(),Ie.ignorePermissions=!1,ke(ie),r.onRuntimeInitialized&&r.onRuntimeInitialized(),D(!r._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(oe(),r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),se.unshift(e);var e;ke(se)}()))}ue>0||(_t(),ne(),function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)e=r.preRun.shift(),ae.unshift(e);var e;ke(ae)}(),ue>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),t()}),1)):t(),oe()))}if(r.stackSave=_e("stackSave"),r.stackRestore=_e("stackRestore"),r.stackAlloc=_e("stackAlloc"),r.dynCall_ijiii=_e("dynCall_ijiii"),r.dynCall_viiijj=_e("dynCall_viiijj"),r.dynCall_jij=_e("dynCall_jij"),r.dynCall_jii=_e("dynCall_jii"),r.dynCall_jiji=_e("dynCall_jiji"),r._ff_h264_cabac_tables=112940,P("intArrayFromString",!1),P("intArrayToString",!1),P("ccall",!1),P("cwrap",!1),P("setValue",!1),P("getValue",!1),P("allocate",!1),P("UTF8ArrayToString",!1),P("UTF8ToString",!1),P("stringToUTF8Array",!1),P("stringToUTF8",!1),P("lengthBytesUTF8",!1),P("stackTrace",!1),P("addOnPreRun",!1),P("addOnInit",!1),P("addOnPreMain",!1),P("addOnExit",!1),P("addOnPostRun",!1),P("writeStringToMemory",!1),P("writeArrayToMemory",!1),P("writeAsciiToMemory",!1),P("addRunDependency",!0),P("removeRunDependency",!0),P("FS_createFolder",!1),P("FS_createPath",!0),P("FS_createDataFile",!0),P("FS_createPreloadedFile",!0),P("FS_createLazyFile",!0),P("FS_createLink",!1),P("FS_createDevice",!0),P("FS_unlink",!0),P("getLEB",!1),P("getFunctionTables",!1),P("alignFunctionTables",!1),P("registerFunctions",!1),P("addFunction",!1),P("removeFunction",!1),P("prettyPrint",!1),P("dynCall",!1),P("getCompilerSetting",!1),P("print",!1),P("printErr",!1),P("getTempRet0",!1),P("setTempRet0",!1),P("callMain",!1),P("abort",!1),P("keepRuntimeAlive",!1),P("ptrToString",!1),P("zeroMemory",!1),P("stringToNewUTF8",!1),P("emscripten_realloc_buffer",!1),P("ENV",!1),P("ERRNO_CODES",!1),P("ERRNO_MESSAGES",!1),P("setErrNo",!1),P("inetPton4",!1),P("inetNtop4",!1),P("inetPton6",!1),P("inetNtop6",!1),P("readSockaddr",!1),P("writeSockaddr",!1),P("DNS",!1),P("getHostByName",!1),P("Protocols",!1),P("Sockets",!1),P("getRandomDevice",!1),P("traverseStack",!1),P("UNWIND_CACHE",!1),P("convertPCtoSourceLocation",!1),P("readAsmConstArgsArray",!1),P("readAsmConstArgs",!1),P("mainThreadEM_ASM",!1),P("jstoi_q",!1),P("jstoi_s",!1),P("getExecutableName",!1),P("listenOnce",!1),P("autoResumeAudioContext",!1),P("dynCallLegacy",!1),P("getDynCaller",!1),P("dynCall",!1),P("setWasmTableEntry",!1),P("getWasmTableEntry",!1),P("handleException",!1),P("runtimeKeepalivePush",!1),P("runtimeKeepalivePop",!1),P("callUserCallback",!1),P("maybeExit",!1),P("safeSetTimeout",!1),P("asmjsMangle",!1),P("asyncLoad",!1),P("alignMemory",!1),P("mmapAlloc",!1),P("reallyNegative",!1),P("unSign",!1),P("reSign",!1),P("formatString",!1),P("PATH",!1),P("PATH_FS",!1),P("SYSCALLS",!1),P("getSocketFromFD",!1),P("getSocketAddress",!1),P("JSEvents",!1),P("registerKeyEventCallback",!1),P("specialHTMLTargets",!1),P("maybeCStringToJsString",!1),P("findEventTarget",!1),P("findCanvasEventTarget",!1),P("getBoundingClientRect",!1),P("fillMouseEventData",!1),P("registerMouseEventCallback",!1),P("registerWheelEventCallback",!1),P("registerUiEventCallback",!1),P("registerFocusEventCallback",!1),P("fillDeviceOrientationEventData",!1),P("registerDeviceOrientationEventCallback",!1),P("fillDeviceMotionEventData",!1),P("registerDeviceMotionEventCallback",!1),P("screenOrientation",!1),P("fillOrientationChangeEventData",!1),P("registerOrientationChangeEventCallback",!1),P("fillFullscreenChangeEventData",!1),P("registerFullscreenChangeEventCallback",!1),P("registerRestoreOldStyle",!1),P("hideEverythingExceptGivenElement",!1),P("restoreHiddenElements",!1),P("setLetterbox",!1),P("currentFullscreenStrategy",!1),P("restoreOldWindowedStyle",!1),P("softFullscreenResizeWebGLRenderTarget",!1),P("doRequestFullscreen",!1),P("fillPointerlockChangeEventData",!1),P("registerPointerlockChangeEventCallback",!1),P("registerPointerlockErrorEventCallback",!1),P("requestPointerLock",!1),P("fillVisibilityChangeEventData",!1),P("registerVisibilityChangeEventCallback",!1),P("registerTouchEventCallback",!1),P("fillGamepadEventData",!1),P("registerGamepadEventCallback",!1),P("registerBeforeUnloadEventCallback",!1),P("fillBatteryEventData",!1),P("battery",!1),P("registerBatteryEventCallback",!1),P("setCanvasElementSize",!1),P("getCanvasElementSize",!1),P("demangle",!1),P("demangleAll",!1),P("jsStackTrace",!1),P("stackTrace",!1),P("getEnvStrings",!1),P("checkWasiClock",!1),P("writeI53ToI64",!1),P("writeI53ToI64Clamped",!1),P("writeI53ToI64Signaling",!1),P("writeI53ToU64Clamped",!1),P("writeI53ToU64Signaling",!1),P("readI53FromI64",!1),P("readI53FromU64",!1),P("convertI32PairToI53",!1),P("convertU32PairToI53",!1),P("dlopenMissingError",!1),P("setImmediateWrapped",!1),P("clearImmediateWrapped",!1),P("polyfillSetImmediate",!1),P("uncaughtExceptionCount",!1),P("exceptionLast",!1),P("exceptionCaught",!1),P("ExceptionInfo",!1),P("exception_addRef",!1),P("exception_decRef",!1),P("Browser",!1),P("setMainLoop",!1),P("wget",!1),P("FS",!1),P("MEMFS",!1),P("TTY",!1),P("PIPEFS",!1),P("SOCKFS",!1),P("_setNetworkCallback",!1),P("tempFixedLengthArray",!1),P("miniTempWebGLFloatBuffers",!1),P("heapObjectForWebGLType",!1),P("heapAccessShiftForWebGLHeap",!1),P("GL",!1),P("emscriptenWebGLGet",!1),P("computeUnpackAlignedImageSize",!1),P("emscriptenWebGLGetTexPixelData",!1),P("emscriptenWebGLGetUniform",!1),P("webglGetUniformLocation",!1),P("webglPrepareUniformLocationsBeforeFirstUse",!1),P("webglGetLeftBracePos",!1),P("emscriptenWebGLGetVertexAttrib",!1),P("writeGLArray",!1),P("AL",!1),P("SDL_unicode",!1),P("SDL_ttfContext",!1),P("SDL_audio",!1),P("SDL",!1),P("SDL_gfx",!1),P("GLUT",!1),P("EGL",!1),P("GLFW_Window",!1),P("GLFW",!1),P("GLEW",!1),P("IDBStore",!1),P("runAndAbortIfError",!1),P("InternalError",!1),P("BindingError",!1),P("UnboundTypeError",!1),P("PureVirtualError",!1),P("init_embind",!1),P("throwInternalError",!1),P("throwBindingError",!1),P("throwUnboundTypeError",!1),P("ensureOverloadTable",!1),P("exposePublicSymbol",!1),P("replacePublicSymbol",!1),P("extendError",!1),P("createNamedFunction",!1),P("registeredInstances",!1),P("getBasestPointer",!1),P("registerInheritedInstance",!1),P("unregisterInheritedInstance",!1),P("getInheritedInstance",!1),P("getInheritedInstanceCount",!1),P("getLiveInheritedInstances",!1),P("registeredTypes",!1),P("awaitingDependencies",!1),P("typeDependencies",!1),P("registeredPointers",!1),P("registerType",!1),P("whenDependentTypesAreResolved",!1),P("embind_charCodes",!1),P("embind_init_charCodes",!1),P("readLatin1String",!1),P("getTypeName",!1),P("heap32VectorToArray",!1),P("requireRegisteredType",!1),P("getShiftFromSize",!1),P("integerReadValueFromPointer",!1),P("enumReadValueFromPointer",!1),P("floatReadValueFromPointer",!1),P("simpleReadValueFromPointer",!1),P("runDestructors",!1),P("new_",!1),P("craftInvokerFunction",!1),P("embind__requireFunction",!1),P("tupleRegistrations",!1),P("structRegistrations",!1),P("genericPointerToWireType",!1),P("constNoSmartPtrRawPointerToWireType",!1),P("nonConstNoSmartPtrRawPointerToWireType",!1),P("init_RegisteredPointer",!1),P("RegisteredPointer",!1),P("RegisteredPointer_getPointee",!1),P("RegisteredPointer_destructor",!1),P("RegisteredPointer_deleteObject",!1),P("RegisteredPointer_fromWireType",!1),P("runDestructor",!1),P("releaseClassHandle",!1),P("finalizationRegistry",!1),P("detachFinalizer_deps",!1),P("detachFinalizer",!1),P("attachFinalizer",!1),P("makeClassHandle",!1),P("init_ClassHandle",!1),P("ClassHandle",!1),P("ClassHandle_isAliasOf",!1),P("throwInstanceAlreadyDeleted",!1),P("ClassHandle_clone",!1),P("ClassHandle_delete",!1),P("deletionQueue",!1),P("ClassHandle_isDeleted",!1),P("ClassHandle_deleteLater",!1),P("flushPendingDeletes",!1),P("delayFunction",!1),P("setDelayFunction",!1),P("RegisteredClass",!1),P("shallowCopyInternalPointer",!1),P("downcastPointer",!1),P("upcastPointer",!1),P("validateThis",!1),P("char_0",!1),P("char_9",!1),P("makeLegalFunctionName",!1),P("emval_handle_array",!1),P("emval_free_list",!1),P("emval_symbols",!1),P("init_emval",!1),P("count_emval_handles",!1),P("get_first_emval",!1),P("getStringOrSymbol",!1),P("Emval",!1),P("emval_newers",!1),P("craftEmvalAllocator",!1),P("emval_get_global",!1),P("emval_methodCallers",!1),P("emval_registeredMethods",!1),P("warnOnce",!1),P("stackSave",!1),P("stackRestore",!1),P("stackAlloc",!1),P("AsciiToString",!1),P("stringToAscii",!1),P("UTF16ToString",!1),P("stringToUTF16",!1),P("lengthBytesUTF16",!1),P("UTF32ToString",!1),P("stringToUTF32",!1),P("lengthBytesUTF32",!1),P("allocateUTF8",!1),P("allocateUTF8OnStack",!1),r.writeStackCookie=ne,r.checkStackCookie=oe,C("ALLOC_NORMAL",!1),C("ALLOC_STACK",!1),de=function e(){Tt||Ct(),Tt||(de=e)},r.run=Ct,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();Ct(),e.exports=r}));const l=1e3,u=1e3,c=!1,d=!0,f=!1,p=!1,m="initVideo",h="render",g="playAudio",v="initAudio",y="audioCode",E="videoCode",w=1,b=2,_="init",T="decode",k="audioDecode",S="videoDecode",C="close",P="updateConfig",A="key",D="delta";(()=>{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){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),s.postRun=function(){var e=[],r=[],t={};"VideoEncoder"in self&&(t={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){t.isEmitInfo||(n.opt.debug&&console.log("Jessibuca: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:m,w:e.codedWidth,h:e.codedHeight}),t.isEmitInfo=!0,t.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),t.offscreenCanvasCtx=t.offscreenCanvas.getContext("2d")),t.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let r=t.offscreenCanvas.transferToImageBitmap();postMessage({cmd:h,buffer:r,delay:n.delay,ts:0},[r]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,r){const o=e[0]>>4==1;if(t.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:r,type:o?A:D});t.decoder.decode(n)}else if(o&&0===e[1]){const r=15&e[0];n.setVideoCodec(r);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));t.decoder.configure(o),t.hasInit=!0}},reset(){t.hasInit=!1,t.isEmitInfo=!1,t.offscreenCanvas=null,t.offscreenCanvasCtx=null}});var n={opt:{debug:c,forceNoOffscreen:d,useWCS:f,videoBuffer:l,openWebglAlignment:p,videoBufferDelay:u},useOffscreen:function(){return!n.opt.forceNoOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,t){postMessage({cmd:v,sampleRate:t,channels:e});var n=[],o=0;this.playAudioPlanar=function(t,a,i){for(var l=a,u=[],c=0,d=0;d<2;d++){var f=s.HEAPU32[(t>>2)+d]>>2;u[d]=s.HEAPF32.subarray(f,f+l)}if(o){if(!(l>=(a=1024-o)))return o+=l,r[0]=Float32Array.of(...r[0],...u[0]),void(2==e&&(r[1]=Float32Array.of(...r[1],...u[1])));n[0]=Float32Array.of(...r[0],...u[0].subarray(0,a)),2==e&&(n[1]=Float32Array.of(...r[1],...u[1].subarray(0,a))),postMessage({cmd:g,buffer:n,ts:i},n.map((e=>e.buffer))),c=a,l-=a}for(o=l;o>=1024;o-=1024)n[0]=u[0].slice(c,c+=1024),2==e&&(n[1]=u[1].slice(c-1024,c)),postMessage({cmd:g,buffer:n,ts:i},n.map((e=>e.buffer)));o&&(r[0]=u[0].slice(c),2==e&&(r[1]=u[1].slice(c)))}},setVideoCodec:function(e){postMessage({cmd:E,code:e})},setAudioCodec:function(e){postMessage({cmd:y,code:e})},setVideoSize:function(e,r){postMessage({cmd:m,w:e,h:r});var t=e*r,o=t>>2;n.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=((e,r)=>{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),n=["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");r&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var a=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(a,n),e.compileShader(a),e.getShaderParameter(a,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(a));var i=e.createProgram();e.attachShader(i,o),e.attachShader(i,a),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(i)),e.useProgram(i);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var l=e.getAttribLocation(i,"vertexPos");e.enableVertexAttribArray(l),e.vertexAttribPointer(l,2,e.FLOAT,!1,0,0);var u=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,u),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(i,"texturePos");function d(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),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(i,r),t),n}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var f=d("ySampler",0),p=d("uSampler",1),m=d("vSampler",2);return{render:function(r,t,n,o,a){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,f),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,m),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,a),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(i),e.deleteBuffer(s),e.deleteBuffer(u),e.deleteTexture(f),e.deleteTexture(p),e.deleteBuffer(m)}catch(e){}}}})(this.offscreenCanvasGL,n.opt.openWebglAlignment),this.draw=function(n,a,i,l){this.webglObj.render(e,r,s.HEAPU8.subarray(a,a+t),s.HEAPU8.subarray(i,i+o),s.HEAPU8.subarray(l,l+o));let u=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:h,buffer:u,delay:this.delay,ts:n},[u])}):this.draw=function(e,r,n,a){var i=[s.HEAPU8.subarray(r,r+t),s.HEAPU8.subarray(n,n+o),s.HEAPU8.subarray(a,a+o)].map((e=>Uint8Array.from(e)));postMessage({cmd:h,output:i,delay:this.delay,ts:e},i.map((e=>e.buffer)))}},getDelay:function(e){if(!e)return-1;if(this.firstTimestamp){if(e){const r=Date.now()-this.startTimestamp,t=e-this.firstTimestamp;this.delay=r>=t?r-t:t-r}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay},resetDelay:function(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1},init:function(){n.opt.debug&&console.log("Jessibuca: [worker] init");const r=e=>{n.opt.useWCS&&n.useOffscreen()&&e.type===b&&t.decode?t.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for((t=e.shift()).type===w&&0===t.payload[1]&&r(t);!t.isIFrame&&e.length;)(t=e.shift()).type===w&&0===t.payload[1]&&r(t);t.isIFrame&&(this.dropping=!1,r(t))}else{var t=e[0];if(-1===this.getDelay(t.ts))e.shift(),r(t);else if(this.delay>n.opt.videoBuffer+n.opt.videoBufferDelay)this.resetDelay(),this.dropping=!0;else for(;e.length&&(t=e[0],this.getDelay(t.ts)>n.opt.videoBuffer);)e.shift(),r(t)}}),10)},close:function(){n.opt.debug&&console.log("Jessibuca: [worker]: close"),clearInterval(this.stopId),this.stopId=null,o.clear(),a.clear(),t.reset&&t.reset(),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],r=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===w?e.push({ts:t.ts,payload:r,decoder:o,type:w}):t.type===b&&e.push({ts:t.ts,payload:r,decoder:a,type:b,isIFrame:t.isIFrame})}},o=new s.AudioDecoder(n),a=new s.VideoDecoder(n);postMessage({cmd:_}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case _:try{n.opt=Object.assign(n.opt,JSON.parse(r.opt))}catch(e){}o.sample_rate=r.sampleRate,n.init();break;case T:n.pushBuffer(r.buffer,r.options);break;case k:o.decode(r.buffer,r.ts);break;case S:a.decode(r.buffer,r.ts);break;case C:n.close();break;case P:n.opt[r.key]=r.value}}}})); diff --git a/dist/jessibuca.js b/dist/jessibuca.js index 52f17f23..377eb440 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,n=1,A="flv",a="m7s",d={videoBuffer:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!1,heartTimeoutReplay:!1,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:n,demuxType:A,useWCS:!1,wcsUseVideoRender:!1,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1},c="init",l="initVideo",u="render",h="playAudio",p="initAudio",m="audioCode",g="videoCode",f="wasmError",b="Invalid NAL unit size",y=1,v=2,w=8,S=9,E="init",B="decode",C="audioDecode",R="close",k="updateConfig",T={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",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},I={load:T.load,timeUpdate:T.timeUpdate,videoInfo:T.videoInfo,audioInfo:T.audioInfo,error:T.error,kBps:T.kBps,log:T.log,start:T.start,timeout:T.timeout,loadingTimeout:T.loadingTimeout,delayTimeout:T.delayTimeout,fullscreen:"fullscreen",play:T.play,pause:T.pause,mute:T.mute,stats:T.stats,performance:T.performance,recordingTimestamp:T.recordingTimestamp,recordStart:T.recordStart,recordEnd:T.recordEnd,playToRenderTimes:T.playToRenderTimes},x={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",wasmDecodeError:"wasmDecodeError"},D="notConnect",j="open",L="close",U="error",F={download:"download",base64:"base64",blob:"blob"},V={7:"H264(AVC)",12:"H265(HEVC)"},O=7,M=12,Q={10:"AAC",7:"ALAW",8:"MULAW"},W=32,G=33,J=34,P=38,N=0,z=1,Y=2,H="mp4",X="webm",Z="webcodecs",q="webgl",K="offscreen",_="key",$="delta",ee='video/mp4; codecs="avc1.64002A"',te="ended",ie="open",oe="closed",re=1e3,se=27,ne=38,Ae=40;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?i-1:0),r=1;r3&&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(e,t){const i=document.createElement("a");i.download=t,i.href=URL.createObjectURL(e),i.click(),setTimeout((()=>{URL.revokeObjectURL(e)}),we()?1e3:0)}function pe(){return(new Date).getTime()}function me(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ge(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{ge(e,i,t[i])})),e.style[t]=i,e}function fe(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 be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ye(e){let t=0,i=be();return o=>{t+=o;const r=be(),s=r-i;s>=1e3&&(e(t/s*1e3),i=r,t=0)}}function ve(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function we(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Se(e){if(null==e||""===e)return"0 kb/s";let t=parseFloat(e);return t=t.toFixed(2),t+"kb/s"}function Ee(e){return null==e}function Be(e){return!Ee(e)}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 Ce{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,n=new Array(s),A=0;A1?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{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 n=e.createProgram();e.attachShader(n,r),e.attachShader(n,s),e.linkProgram(n),e.getProgramParameter(n,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(n)),e.useProgram(n);var A=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,A),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var a=e.getAttribLocation(n,"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(n,"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(n,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(n),e.deleteBuffer(A),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteBuffer(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=K,this._bindOffscreen()):(this.renderType=q,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 K:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case q: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)}}screenshot(e,t,i,o){e=e||pe(),o=o||F.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&F[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const n=this.$videoElement.toDataURL(r[t]||r.png,s),A=ue(n);return o===F.base64?n:o===F.blob?A:void(o===F.download&&he(A,e))}clearView(){switch(this.renderType){case K:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case q: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&&(ve()&&this.player.fullscreen?t-=P:i-=P);let o=this.$videoElement.width,r=this.$videoElement.height;const s=e.rotate;let n=(t-o)/2,A=(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=n+"px",this.$videoElement.style.top=A+"px"}}class Te extends Re{constructor(e){super(),this.player=e;const t=document.createElement("video");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,e.$container.appendChild(t),this.$videoElement=t,this.videoInfo={width:"",height:"",encType:""};const i=this.player._opt;i.useWCS&&i.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay")})),o(this.$videoElement,"waiting",(()=>{this.player.emit(T.videoWaiting)})),o(this.$videoElement,"timeupdate",(e=>{})),this.player.debug.log("Video","init")}destroy(){this.player.$container.removeChild(this.$videoElement),this.$videoElement&&(this.$videoElement.src="",this.$videoElement=null),this.trackGenerator&&(this.trackGenerator=null),this.vwriter&&(this.trackGenerator=null),this.init=!1,this.off(),this.player.debug.log("Video","destroy")}play(){this.$videoElement.play()}clearView(){}screenshot(e,t,i,o){e=e||pe(),o=o||F.download;let r=.92;!{png:"image/png",jpeg:"image/jpeg",webp:"image/webp"}[t]&&F[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(r=Number(i));const s=this.$videoElement;let n=document.createElement("canvas");n.width=s.videoWidth,n.height=s.videoHeight;n.getContext("2d").drawImage(s,0,0,n.width,n.height);const A=n.toDataURL(F[t]||F.png,r),a=ue(A);return o===F.base64?A:o===F.blob?a:void(o===F.download&&he(a,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&&(ve()&&this.player.fullscreen?e-=P:t-=P),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,n="contain";i.isResize||(n="fill"),i.isFullResize&&(n="none"),this.$videoElement.style.objectFit=n,this.$videoElement.style.transform="rotate("+o+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=s+"px"}}class Ie{constructor(e){return new(Ie.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?Te:ke}}class xe extends Ce{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(T.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}destroy(){this.closeAudio(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.init=!1,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.audioInfo={encType:"",channels:"",sampleRate:""},this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=Q[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(T.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){if(this.audioSyncVideoOption.diff>re)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 De{constructor(e){return new(De.getLoaderFactory())(e)}static getLoaderFactory(){return xe}}class je extends Ce{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=ye((t=>{e.emit(T.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){const{demux:t}=this.player;this.player._times.streamStart=pe(),fetch(e,{signal:this.abortController.signal}).then((e=>{const i=e.body.getReader();this.emit(T.streamSuccess);const o=()=>{i.read().then((e=>{let{done:i,value:r}=e;i?t.close():(this.streamRate&&this.streamRate(r.byteLength),t.dispatch(r),o())})).catch((e=>{t.close(),this.emit(x.fetchError,e),this.player.emit(T.error,x.fetchError),this.abort()}))};o()})).catch((e=>{this.abort(),this.emit(x.fetchError,e),this.player.emit(T.error,x.fetchError)}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Le extends Ce{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=D,this.wsUrl=null,this.streamRate=ye((t=>{e.emit(T.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=D,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(T.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=j})),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(T.streamEnd),this.socketStatus=L})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(x.websocketError,e),this.player.emit(T.error,x.websocketError),this.socketStatus=U,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){this.player._times.streamStart=pe(),this.wsUrl=e,this._createWebSocket()}}class Ue{constructor(e){return new(Ue.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===n?je:e===s?Le:void 0}}var Fe=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 n(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 A(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){A(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?A(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):(n((function(){s.recordingDuration&&c()})),s)},stopRecording:A,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:n,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),n=this.result.slice(i.metadataSize),A=new Blob([s,n],{type:"video/webm"});t(A)},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 n(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function A(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:A(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:A(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),n(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:A(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?(n(),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:A(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=[],n=[],A=!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),n=e.sampleRate,A=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 n=1;n96e3)&&(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=[],n=[],a=0,E=!1,A=!1,y=!1,p=null,r.leftchannel=s,r.rightchannel=n,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(!A)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,A&&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(),A=!1),A){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);n.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=n,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,r.recordingLength=a;var B={left:[],right:[],recordingLength:0};function C(){A&&"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,n=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),A=50,a=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(n&&a&&a[2]&&(A=parseInt(a[2],10)),n&&A<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 n=new f;n.addTrack(w(e,"video")[0]),e=n}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(),A.paused&&A.play(),l.drawImage(A,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 n,A,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;A=-1,a=(n={length:h,functionToLoop:function(t,i){var o,r,s,n=function(){!v&&s-o<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)n();else{var A=new Image;A.onload=function(){d.drawImage(A,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 A=1;3!==e&&4!==e||(A=2),5!==e&&6!==e||(A=3),7!==e&&8!==e||(A=4),9!==e&&10!==e||(A=5),r.height=s[0].height*A}else r.width=n.width||360,r.height=n.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,n.frameInterval)}}function u(e,t){if(!o){var i=0,r=0,n=e.width,A=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&&(n=e.stream.width),void 0!==e.stream.height&&(A=e.stream.height),s.drawImage(e,i,r,n,A),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,r,n,A,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||n.width||360,i.height=e.height||n.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!==A?c.AudioContext=A:"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=n.audioContext.createMediaStreamSource(t);n.audioDestination=n.audioContext.createMediaStreamDestination(),s.connect(n.audioDestination),o.addTrack(n.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(o)}))},this.releaseStreams=function(){i=[],o=!0,n.gainNode&&(n.gainNode.disconnect(),n.gainNode=null),n.audioSources.length&&(n.audioSources.forEach((function(e){e.disconnect()})),n.audioSources=[]),n.audioDestination&&(n.audioDestination.disconnect(),n.audioDestination=null),n.audioContext&&n.audioContext.close(),n.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():n.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);n.audioContext=c.AudioContextConstructor,n.audioSources=[],!0===n.useGainNode&&(n.gainNode=n.audioContext.createGain(),n.gainNode.connect(n.audioContext.destination),n.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=n.audioContext.createMediaStreamSource(e);!0===n.useGainNode&&i.connect(n.gainNode),n.audioSources.push(i)}})),!t)return;return n.audioDestination=n.audioContext.createMediaStreamDestination(),n.audioSources.forEach((function(e){e.connect(n.audioDestination)})),n.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 U(e,t){var i,o,r;function s(){return new ReadableStream({start:function(o){var r=document.createElement("canvas"),s=document.createElement("video"),n=!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"),A=1e3/t.frameRate,a=setInterval((function(){if(i&&(clearInterval(a),o.close()),n&&(n=!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){}}),A)},s.play()}})}function n(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){n(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||A.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(){A=[],r=!1,this.blob=null,n(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var A=[];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(A,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){A=[],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=U}));class Ve extends Ce{constructor(e){super(),this.player=e,this.fileName="",this.fileType=X,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,H!==t&&X!==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=Fe(e,t)}catch(t){e.error("Recorder",t),this.emit(T.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(T.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(T.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(T.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(T.recordEnd),function(e,t,i){const o=window.URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download=(t||pe())+"."+(i||X),r.click(),setTimeout((()=>{window.URL.revokeObjectURL(o)}),we()?1e3:0)}(this.recorder.getBlob(),this.fileName,this.fileType),this._reset(),this.player.emit(T.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 Oe{constructor(e){return new(Oe.getLoaderFactory())(e)}static getLoaderFactory(){return Ve}}class Me{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:R}),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 c:e.log("decoderWorker","onmessage:",c),this.player.loaded||this.player.emit(T.load),this.player.emit(T.decoderWorkerInit),this._initWork();break;case g:e.log("decoderWorker","onmessage:",g,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=pe()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case m:e.log("decoderWorker","onmessage:",m,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case l:e.log("decoderWorker","onmessage:",l,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),this.player.video.initCanvasViewSize();break;case p:e.log("decoderWorker","onmessage:",p,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case u:this.player.handleRender(),this.player.video.render(i),this.player.emit(T.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=pe(),this.player.handlePlayToRenderTimes());break;case h:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case f:i.message&&-1!==i.message.indexOf(b)&&(this.player.emit(T.error,x.wasmDecodeError),this.player.emit(x.wasmDecodeError));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,forceNoOffscreen:this.player._opt.forceNoOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:E,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const o={type:v,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:B,buffer:e,options:o},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS&&!this.player._opt.useOffscreen||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:y,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:B,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:C,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:k,key:e.key,value:e.value})}}class Qe extends Ce{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()}getDelay(e){return e?(this.firstTimestamp?e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)):(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1),this.delay):-1}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;if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===y&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===y&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&(this.dropping=!1,this._doDecoderDecode(e))}else if(e=this.bufferList[0],-1===this.getDelay(e.ts))this.bufferList.shift(),this._doDecoderDecode(e);else if(this.delay>t+1e3)this.resetDelay(),this.dropping=!0;else for(;this.bufferList.length&&(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){const r=this.player;let s={ts:i,type:t,isIFrame:!1};r._opt.useWCS&&!r._opt.useOffscreen||r._opt.useMSE?(t===v&&(s.isIFrame=o),this.pushBuffer(e,s)):t===v?r.decoderWorker&&r.decoderWorker.decodeVideo(e,i,o):t===y&&r._opt.hasAudio&&r.decoderWorker&&r.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===y?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===v&&(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))}pushBuffer(e,t){t.type===y?this.bufferList.push({ts:t.ts,payload:e,type:y}):t.type===v&&this.bufferList.push({ts:t.ts,payload:e,type:v,isIFrame:t.isIFrame})}close(){}}class We extends Qe{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 n=i[0];16777215===n&&(t[3]=e[11],n=i[0]);const A=yield s;switch(r){case w:o._opt.hasAudio&&(o.updateStats({abps:A.byteLength}),A.byteLength>0&&this._doDecode(A,y,n));break;case S:if(o._times.demuxStart||(o._times.demuxStart=pe()),o._opt.hasVideo){o.updateStats({vbps:A.byteLength});const e=A[0]>>4==1;A.byteLength>0&&this._doDecode(A,v,n,e)}}}}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 Ge extends Qe{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy")}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),r=i.getUint32(1,!1);switch(o){case y: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 v:if(t._opt.hasVideo&&(t._times.demuxStart||(t._times.demuxStart=pe()),i.byteLength>5)){const s=new Uint8Array(e,5),n=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),s.byteLength>0&&this._doDecode(s,o,r,n)}}}}class Je{constructor(e){return new(Je.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===a?Ge:e===A?We:void 0}}class Pe extends Ce{constructor(e){super(),this.player=e,this.hasInit=!1,this.isDecodeFirstIIframe=!1,this.isInitInfo=!1,this.decoder=null,this.initDecoder(),e.debug.log("Webcodecs","init")}destroy(){this.decoder&&(this.decoder.close(),this.decoder=null),this.hasInit=!1,this.isInitInfo=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("Webcodecs","destroy")}initDecoder(){const e=this;this.decoder=new VideoDecoder({output(t){e.handleDecode(t)},error(t){e.handleError(t)}})}handleDecode(e){this.isInitInfo||(this.player.video.updateVideoInfo({width:e.codedWidth,height:e.codedHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player._times.videoStart||(this.player._times.videoStart=pe(),this.player.handlePlayToRenderTimes()),this.player.handleRender(),this.player.video.render({videoFrame:e}),this.player.updateStats({fps:!0,ts:0,buf:this.player.demux.delay}),setTimeout((function(){e.close?e.close():e.destroy()}),100)}handleError(e){this.player.debug.log("Webcodecs","VideoDecoder handleError",e)}decodeVideo(e,t,i){if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?_:$});this.decoder.decode(o)}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===M)return void this.emit(x.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=pe());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 Ne={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var ze=Object.keys(Ne).reduce(((e,t)=>(e[t]=`\n \n ${Ne[t]?`${Ne[t]}`:""}\n`,e)),{}),Ye=(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",ge(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(T.resize),A())}))})),e.$container.appendChild(o),e.on(T.destroy,(()=>{e.$container.removeChild(o)})),e.on(T.volumechange,(()=>{!function(e){if(0===e)ge(t.$volumeOn,"display","none"),ge(t.$volumeOff,"display","flex"),ge(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=fe(t.$volumePanel,"height")||60,o=fe(t.$volumeHandle,"height"),r=i-(i-o)*e-o;ge(t.$volumeHandle,"top",`${r}px`),ge(t.$volumeOn,"display","flex"),ge(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(T.loading,(e=>{ge(t.$loading,"display",e?"flex":"none"),ge(t.$poster,"display","none"),e&&ge(t.$playBig,"display","none")}));const n=i=>{let o=!0===(r=i)||!1===r?i:e.fullscreen;var r;ge(t.$fullscreenExit,"display",o?"flex":"none"),ge(t.$fullscreen,"display",o?"none":"flex")},A=()=>{ve()&&t.$controls&&setTimeout((()=>{if(e.fullscreen){console.log(e.width,e.height);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",n),e.events.destroys.push((()=>{ce.off("change",n)}))}catch(e){}e.on(T.webFullscreen,(e=>{n(e),A()})),e.on(T.recording,(()=>{ge(t.$record,"display",e.recording?"none":"flex"),ge(t.$recordStop,"display",e.recording?"flex":"none"),ge(t.$recording,"display",e.recording?"flex":"none")})),e.on(T.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(T.playing,(e=>{ge(t.$play,"display",e?"none":"flex"),ge(t.$playBig,"display",e?"none":"block"),ge(t.$pause,"display",e?"flex":"none"),ge(t.$screenshot,"display",e?"flex":"none"),ge(t.$record,"display",e?"flex":"none"),ge(t.$fullscreen,"display",e?"flex":"none"),e||t.$speed&&(t.$speed.innerHTML=Se(""))})),e.on(T.kBps,(e=>{const i=Se(e);t.$speed&&(t.$speed.innerHTML=i)}))};function He(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))}}He('@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 Xe{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 ${ze.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&o.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${ze.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${o.audio?`\n
\n ${ze.audio}\n ${ze.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${o.play?`
${ze.play}
${ze.pause}
`:""}\n ${o.screenshot?`
${ze.screenshot}
`:""}\n ${o.record?`
${ze.record}
${ze.recordStop}
`:""}\n ${o.fullscreen?`
${ze.fullscreen}
${ze.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),Ye(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),((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 me(i-e.y-r/2,0,o-r/2)/(o-r)}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()})),i(t.$playBig,"click",(t=>{e.play()})),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(),ge(t.$volumeOn,"display","none"),ge(t.$volumeOff,"display","block"),e.lastVolume=e.volume,e.volume=0})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),ge(t.$volumeOn,"display","block"),ge(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||ge(t.$controls,"display","block")})),i(e.$container,"mouseout",(()=>{ge(t.$controls,"display","none")})))})(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(se,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(ne,(()=>{e.volume+=.05})),r(Ae,(()=>{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.$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`}}}He(".jessibuca-container{position:relative;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 Ze{static init(){Ze.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 Ze.types)Ze.types.hasOwnProperty(e)&&(Ze.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Ze.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 Ze.box(Ze.types.trak,Ze.tkhd(e),Ze.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,r=e.presentHeight;return Ze.box(Ze.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 Ze.box(Ze.types.mdia,Ze.mdhd(e),Ze.hdlr(e),Ze.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Ze.box(Ze.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?Ze.constants.HDLR_AUDIO:Ze.constants.HDLR_VIDEO,Ze.box(Ze.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Ze.box(Ze.types.smhd,Ze.constants.SMHD):Ze.box(Ze.types.vmhd,Ze.constants.VMHD),Ze.box(Ze.types.minf,t,Ze.dinf(),Ze.stbl(e))}static dinf(){return Ze.box(Ze.types.dinf,Ze.box(Ze.types.dref,Ze.constants.DREF))}static stbl(e){return Ze.box(Ze.types.stbl,Ze.stsd(e),Ze.box(Ze.types.stts,Ze.constants.STTS),Ze.box(Ze.types.stsc,Ze.constants.STSC),Ze.box(Ze.types.stsz,Ze.constants.STSZ),Ze.box(Ze.types.stco,Ze.constants.STCO))}static stsd(e){return"audio"===e.type?Ze.box(Ze.types.stsd,Ze.constants.STSD_PREFIX,Ze.mp4a(e)):"avc"===e.videoType?Ze.box(Ze.types.stsd,Ze.constants.STSD_PREFIX,Ze.avc1(e)):Ze.box(Ze.types.stsd,Ze.constants.STSD_PREFIX,Ze.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 Ze.box(Ze.types.mp4a,o,Ze.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 Ze.box(Ze.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 Ze.box(Ze.types.avc1,r,Ze.box(Ze.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 Ze.box(Ze.types.hvc1,r,Ze.box(Ze.types.hvcC,t))}static mvex(e){return Ze.box(Ze.types.mvex,Ze.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 Ze.box(Ze.types.trex,i)}static moof(e,t){return Ze.box(Ze.types.moof,Ze.mfhd(e.sequenceNumber),Ze.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 Ze.box(Ze.types.mfhd,t)}static traf(e,t){let i=e.id,o=Ze.box(Ze.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Ze.box(Ze.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=Ze.sdtp(e),n=Ze.trun(e,s.byteLength+16+16+8+16+8+8);return Ze.box(Ze.types.traf,o,r,n,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,Ze.box(Ze.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,n=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,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12),Ze.box(Ze.types.trun,i)}static mdat(e){return Ze.box(Ze.types.mdat,e)}}Ze.init();class qe{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 Ke{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=Ke._ebsp2rbsp(e),i=new qe(t);i.readByte();let o=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=Ke.getProfileString(o),n=Ke.getLevelString(r),A=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)&&(A=i.readUEG(),3===A&&i.readBits(1),A<=3&&(a=d[A]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==A?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===A)k=1,T=2-m;else{k=3===A?1:2,T=(1===A?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:n,bit_depth:c,ref_frames:u,chroma_format:a,chroma_format_string:Ke.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=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=_e._ebsp2rbsp(e);new qe(t);return{profile_string:"",level_string:"",bit_depth:"",ref_frames:"",chroma_format:"",chroma_format_string:"",frame_rate:{fixed:"",fps:"",fps_den:"",fps_num:""},sar_ratio:{width:"",height:""},codec_size:{width:"",height:""},present_size:{width:"",height:""}}}static _skipScalingList(e,t){let i=8,o=8,r=0;for(let s=0;s{this.mediaSourceOpen=!0,this.player.emit(T.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(T.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.bufferList=[],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.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource.readyState}get isStateOpen(){return this.state===ie}get isStateClosed(){return this.state===oe}get isStateEnded(){return this.state===te}get duration(){return this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i){const o=this.player;if(this.hasInit)this._decodeVideo(e,t,i);else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===M)return void this.emit(x.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=pe()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_doDecode(){const e=this.bufferList.shift();e&&this._decodeVideo(e.payload,e.ts,e.isIframe)}_decodeConfigurationRecord(e,t,i,o){let r=e.slice(5),s={};o===O?s=function(e){const t={},i=new DataView(e.buffer);let o=i.getUint8(0),r=i.getUint8(1);if(i.getUint8(2),i.getUint8(3),1!==o||0===r)return;const s=1+(3&i.getUint8(4));if(3!==s&&4!==s)return;let n=31&i.getUint8(5);if(0===n)return;let A=6;for(let o=0;o1&&(this.removeBuffer(A.buffered.start(0),A.buffered.end(0)),this.timeInit=!1),this.dropping&&n-this.cacheTrack.dts>1e3)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&n>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(Ze.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=n-this.cacheTrack.dts;let r=Ze.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendBuffer(s.buffer),o.handleRender(),o.updateStats({fps:!0,ts:t,buf:o.demux.delay}),o._times.videoStart||(o._times.videoStart=pe(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=s,this.cacheTrack.dts=n,this.cacheTrack.cts=0,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=r,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==A.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,A.currentTime=A.buffered.end(0)),!this.isInitInfo&&A.videoWidth>0&&A.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${A.videoWidth},${A.videoHeight}`),o.video.updateVideoInfo({width:A.videoWidth,height:A.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(ee),i(this.sourceBuffer,"error",(e=>{this.player.emit(T.mseSourceBufferError,e)}))),!1===this.sourceBuffer.updating&&this.isStateOpen?this.sourceBuffer.appendBuffer(e):this.isStateClosed?this.player.emit(T.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(T.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(T.mseSourceBufferBusy)}stop(){this.isStateOpen&&this.sourceBuffer&&this.sourceBuffer.abort(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){console.error(e)}}endOfStream(){this.isStateOpen&&this.mediaSource.endOfStream()}}const et=()=>"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,tt=()=>"wakeLock"in navigator;class it{constructor(e){if(this.player=e,this.enabled=!1,tt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else et()?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,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"),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(tt())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(et())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;tt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):et()?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 ot extends Ce{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},d,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(ee)),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.useWCS,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._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 Ie(this),this._opt.hasAudio&&(this.audio=new De(this)),this.recorder=new Oe(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new Me(this),this.stream=null,this.demux=null,this._opt.useWCS&&(this.webcodecsDecoder=new Pe(this)),this._opt.useMSE&&(this.mseDecoder=new $e(this)),this.control=new Xe(this),this.keepScreenOn=new it(this),(e=>{try{const t=()=>{e.emit(I.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(T.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(T.play,(()=>{e.loading=!1})),e.on(T.fullscreen,(t=>{if(t)try{ce.request(e.$container).then((()=>{})).catch((t=>{e.webFullscreen=!0}))}catch(t){e.webFullscreen=!0}else try{ce.exit().then((()=>{})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),e.on(T.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web")})),e.on(T.resize,(()=>{e.video.resize()})),e._opt.debug){const t=[T.timeUpdate];Object.keys(T).forEach((i=>{e.on(T[i],(o=>{t.includes(i)||e.debug.log("player events",T[i],o)}))})),Object.keys(x).forEach((t=>{e.on(x[t],(i=>{e.debug.log("player event error",x[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(()=>{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._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.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){ve()?(this.emit(T.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(T.fullscreen,e)}get fullscreen(){return document.isFullScreen||document.mozIsFullScreen||document.webkitIsFullScreen||this.webFullscreen}set webFullscreen(e){this.emit(T.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(T.playing,e),this.emit(T.volumechange,this.volume),e?this.emit(T.play):this.emit(T.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){this.audio&&this.audio.setVolume(e)}set loading(e){this.loading!==e&&(this._loading=e,this.emit(T.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder.startRecord():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(T.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ue(this)),this.demux||(this.demux=new Je(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new Pe(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new $e(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new Me(this),this.once(T.decoderWorkerInit,(()=>{e()})))}))}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return i();this.loading=!0,this.playing=!1,this._times.playInitStart=pe(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=pe(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(x.webcodecsH265NotSupport,(()=>{this.emit(x.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(T.error,x.webcodecsH265NotSupport)})),this.mseDecoder&&this.mseDecoder.once(x.mediaSourceH265NotSupport,(()=>{this.emit(x.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(T.error,x.mediaSourceH265NotSupport)})),this.enableWakeLock(),this.stream.fetchStream(e),this.checkLoadingTimeout(),this.stream.once(x.fetchError,(e=>{i(e)})),this.stream.once(x.websocketError,(e=>{i(e)})),this.stream.once(T.streamSuccess,(()=>{t(),this._times.streamResponse=pe(),this.video.play()}))})).catch((e=>{i(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video.clearView(),e()}))}))}_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.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.playing=!1,this.loading=!1,this.recording=!1,this.audio&&this.audio.pause(),this.video&&this.video.pause(),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(e){return e?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((()=>{this.pause(!1).then((()=>{this.emit(T.timeout,T.delayTimeout),this.emit(T.delayTimeout)}))}),1e3*this._opt.heartTimeout)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(T.timeout,T.loadingTimeout),this.emit(T.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}handleRender(){this.loading&&(this.emit(T.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=pe()),Be(e.ts)&&(this._stats.ts=e.ts),Be(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=pe();t-this._startBpsTime<1e3||(this.emit(T.stats,this._stats),this.emit(T.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.enable()}releaseWakeLock(){this._opt.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(T.playToRenderTimes,e)}}class rt extends Ce{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");i.classList.add("jessibuca-container"),delete t.container,Be(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),Be(t.timeout)&&(Ee(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Ee(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 ot(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null;const t=Object.assign(this._opt,e);this._initPlayer(this.$container,t)}_bindEvents(){Object.keys(I).forEach((e=>{this.player.on(I[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({isDebug:!!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 N:t.isFullResize=!1,t.isResize=!1;break;case z:t.isFullResize=!1,t.isResize=!0;break;case Y:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._opt.url="",this.player.close()}clearView(){this.player.video.clearView()}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return this.emit(T.error,x.playError),void i();if(e){if(!this._opt.url)return this._play(e);e===this._opt.url?this.player.playing?t():(this.clearView(),this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))):this.player.pause().then((()=>(this.clearView(),this._play(e)))).catch((()=>{i()}))}else this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}_play(e){return new Promise(((t,i)=>{this._opt.url=e;const o=0===e.indexOf("http"),r=o?n:s,d=o||-1!==e.indexOf(".flv")||this._opt.isFlv?A:a;this.player.updateOption({protocol:r,demuxType:d}),this.player.once(x.mediaSourceH265NotSupport,(()=>{this.close().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).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(x.webcodecsH265NotSupport,(()=>{this.close().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.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(x.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.close().then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play error")}))}))})),this.player.once(T.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.once(T.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))})):this.player.once(T.decoderWorkerInit,(()=>{this.player.play(e).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}))}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,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.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.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}}return r(rt,"ERROR",x),r(rt,"TIMEOUT",{loadingTimeout:T.loadingTimeout,delayTimeout:T.delayTimeout}),window.Jessibuca=rt,rt})); +!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,n=1,A="flv",a="m7s",d={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!1,heartTimeoutReplay:!1,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:n,demuxType:A,useWCS:!1,wcsUseVideoRender:!1,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1},c="init",l="initVideo",u="render",h="playAudio",p="initAudio",m="audioCode",g="videoCode",f="wasmError",b="Invalid NAL unit size",y=1,v=2,w=8,S=9,E="init",B="decode",C="audioDecode",R="close",k="updateConfig",T={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",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},I={load:T.load,timeUpdate:T.timeUpdate,videoInfo:T.videoInfo,audioInfo:T.audioInfo,error:T.error,kBps:T.kBps,log:T.log,start:T.start,timeout:T.timeout,loadingTimeout:T.loadingTimeout,delayTimeout:T.delayTimeout,fullscreen:"fullscreen",play:T.play,pause:T.pause,mute:T.mute,stats:T.stats,performance:T.performance,recordingTimestamp:T.recordingTimestamp,recordStart:T.recordStart,recordEnd:T.recordEnd,playToRenderTimes:T.playToRenderTimes},x={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",wasmDecodeError:"wasmDecodeError"},D="notConnect",j="open",L="close",U="error",F={download:"download",base64:"base64",blob:"blob"},V={7:"H264(AVC)",12:"H265(HEVC)"},O=7,M=12,Q={10:"AAC",7:"ALAW",8:"MULAW"},W=32,G=33,J=34,P=38,N=0,z=1,Y=2,H="mp4",X="webm",Z="webcodecs",q="webgl",K="offscreen",_="key",$="delta",ee='video/mp4; codecs="avc1.64002A"',te="ended",ie="open",oe="closed",re=1e3,se=27,ne=38,Ae=40;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?i-1:0),r=1;r3&&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(e,t){const i=document.createElement("a");i.download=t;const o=URL.createObjectURL(e);i.href=o,i.click(),setTimeout((()=>{URL.revokeObjectURL(o)}),we()?1e3:0)}function pe(){return(new Date).getTime()}function me(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ge(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{ge(e,i,t[i])})),e.style[t]=i,e}function fe(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 be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ye(e){let t=0,i=be();return o=>{t+=o;const r=be(),s=r-i;s>=1e3&&(e(t/s*1e3),i=r,t=0)}}function ve(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function we(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Se(e){if(null==e||""===e)return"0kb/s";let t=parseFloat(e);return t=t.toFixed(2),t+"kb/s"}function Ee(e){return null==e}function Be(e){return!Ee(e)}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 Ce{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,n=new Array(s),A=0;A1?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{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 n=e.createProgram();e.attachShader(n,r),e.attachShader(n,s),e.linkProgram(n),e.getProgramParameter(n,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(n)),e.useProgram(n);var A=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,A),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var a=e.getAttribLocation(n,"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(n,"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(n,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(n),e.deleteBuffer(A),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteBuffer(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=K,this._bindOffscreen()):(this.renderType=q,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 K:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case q: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)}}screenshot(e,t,i,o){e=e||pe(),o=o||F.download;const r={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!r[t]&&F[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const n=this.$videoElement.toDataURL(r[t]||r.png,s),A=ue(n);return o===F.base64?n:o===F.blob?A:void(o===F.download&&he(A,e))}clearView(){switch(this.renderType){case K:(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 q: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&&(ve()&&this.player.fullscreen?t-=P:i-=P);let o=this.$videoElement.width,r=this.$videoElement.height;const s=e.rotate;let n=(t-o)/2,A=(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=n+"px",this.$videoElement.style.top=A+"px"}}class Te extends Re{constructor(e){super(),this.player=e;const t=document.createElement("video");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,e.$container.appendChild(t),this.$videoElement=t,this.videoInfo={width:"",height:"",encType:""};const i=this.player._opt;i.useWCS&&i.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay")})),o(this.$videoElement,"waiting",(()=>{this.player.emit(T.videoWaiting)})),o(this.$videoElement,"timeupdate",(e=>{})),this.player.debug.log("Video","init")}destroy(){this.player.$container.removeChild(this.$videoElement),this.$videoElement&&(this.$videoElement.src="",this.$videoElement=null),this.trackGenerator&&(this.trackGenerator=null),this.vwriter&&(this.trackGenerator=null),this.init=!1,this.off(),this.player.debug.log("Video","destroy")}play(){this.$videoElement.play()}clearView(){}screenshot(e,t,i,o){e=e||pe(),o=o||F.download;let r=.92;!{png:"image/png",jpeg:"image/jpeg",webp:"image/webp"}[t]&&F[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(r=Number(i));const s=this.$videoElement;let n=document.createElement("canvas");n.width=s.videoWidth,n.height=s.videoHeight;n.getContext("2d").drawImage(s,0,0,n.width,n.height);const A=n.toDataURL(F[t]||F.png,r),a=ue(A);return o===F.base64?A:o===F.blob?a:void(o===F.download&&he(a,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&&(ve()&&this.player.fullscreen?e-=P:t-=P),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,n="contain";i.isResize||(n="fill"),i.isFullResize&&(n="none"),this.$videoElement.style.objectFit=n,this.$videoElement.style.transform="rotate("+o+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=s+"px"}}class Ie{constructor(e){return new(Ie.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?Te:ke}}class xe extends Ce{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(T.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}destroy(){this.closeAudio(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.init=!1,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.audioInfo={encType:"",channels:"",sampleRate:""},this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=Q[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(T.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){if(this.audioSyncVideoOption.diff>re)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 De{constructor(e){return new(De.getLoaderFactory())(e)}static getLoaderFactory(){return xe}}class je extends Ce{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=ye((t=>{e.emit(T.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){const{demux:t}=this.player;this.player._times.streamStart=pe(),fetch(e,{signal:this.abortController.signal}).then((e=>{const i=e.body.getReader();this.emit(T.streamSuccess);const o=()=>{i.read().then((e=>{let{done:i,value:r}=e;i?t.close():(this.streamRate&&this.streamRate(r.byteLength),t.dispatch(r),o())})).catch((e=>{t.close(),this.emit(x.fetchError,e),this.player.emit(T.error,x.fetchError),this.abort()}))};o()})).catch((e=>{this.abort(),this.emit(x.fetchError,e),this.player.emit(T.error,x.fetchError)}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Le extends Ce{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=D,this.wsUrl=null,this.streamRate=ye((t=>{e.emit(T.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=D,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(T.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=j})),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(T.streamEnd),this.socketStatus=L})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(x.websocketError,e),this.player.emit(T.error,x.websocketError),this.socketStatus=U,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){this.player._times.streamStart=pe(),this.wsUrl=e,this._createWebSocket()}}class Ue{constructor(e){return new(Ue.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===n?je:e===s?Le:void 0}}var Fe=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 n(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 A(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){A(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?A(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):(n((function(){s.recordingDuration&&c()})),s)},stopRecording:A,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:n,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),n=this.result.slice(i.metadataSize),A=new Blob([s,n],{type:"video/webm"});t(A)},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 n(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function A(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:A(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:A(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),n(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:A(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?(n(),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:A(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=[],n=[],A=!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),n=e.sampleRate,A=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 n=1;n96e3)&&(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=[],n=[],a=0,E=!1,A=!1,y=!1,p=null,r.leftchannel=s,r.rightchannel=n,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(!A)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,A&&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(),A=!1),A){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);n.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=n,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,r.recordingLength=a;var B={left:[],right:[],recordingLength:0};function C(){A&&"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,n=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),A=50,a=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(n&&a&&a[2]&&(A=parseInt(a[2],10)),n&&A<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 n=new f;n.addTrack(w(e,"video")[0]),e=n}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(),A.paused&&A.play(),l.drawImage(A,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 n,A,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;A=-1,a=(n={length:h,functionToLoop:function(t,i){var o,r,s,n=function(){!v&&s-o<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)n();else{var A=new Image;A.onload=function(){d.drawImage(A,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 A=1;3!==e&&4!==e||(A=2),5!==e&&6!==e||(A=3),7!==e&&8!==e||(A=4),9!==e&&10!==e||(A=5),r.height=s[0].height*A}else r.width=n.width||360,r.height=n.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,n.frameInterval)}}function u(e,t){if(!o){var i=0,r=0,n=e.width,A=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&&(n=e.stream.width),void 0!==e.stream.height&&(A=e.stream.height),s.drawImage(e,i,r,n,A),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,r,n,A,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||n.width||360,i.height=e.height||n.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!==A?c.AudioContext=A:"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=n.audioContext.createMediaStreamSource(t);n.audioDestination=n.audioContext.createMediaStreamDestination(),s.connect(n.audioDestination),o.addTrack(n.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(o)}))},this.releaseStreams=function(){i=[],o=!0,n.gainNode&&(n.gainNode.disconnect(),n.gainNode=null),n.audioSources.length&&(n.audioSources.forEach((function(e){e.disconnect()})),n.audioSources=[]),n.audioDestination&&(n.audioDestination.disconnect(),n.audioDestination=null),n.audioContext&&n.audioContext.close(),n.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():n.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);n.audioContext=c.AudioContextConstructor,n.audioSources=[],!0===n.useGainNode&&(n.gainNode=n.audioContext.createGain(),n.gainNode.connect(n.audioContext.destination),n.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=n.audioContext.createMediaStreamSource(e);!0===n.useGainNode&&i.connect(n.gainNode),n.audioSources.push(i)}})),!t)return;return n.audioDestination=n.audioContext.createMediaStreamDestination(),n.audioSources.forEach((function(e){e.connect(n.audioDestination)})),n.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 U(e,t){var i,o,r;function s(){return new ReadableStream({start:function(o){var r=document.createElement("canvas"),s=document.createElement("video"),n=!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"),A=1e3/t.frameRate,a=setInterval((function(){if(i&&(clearInterval(a),o.close()),n&&(n=!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){}}),A)},s.play()}})}function n(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){n(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||A.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(){A=[],r=!1,this.blob=null,n(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var A=[];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(A,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){A=[],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=U}));class Ve extends Ce{constructor(e){super(),this.player=e,this.fileName="",this.fileType=X,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,H!==t&&X!==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=Fe(e,t)}catch(t){e.error("Recorder",t),this.emit(T.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(T.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(T.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(T.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(T.recordEnd),function(e,t,i){const o=window.URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download=(t||pe())+"."+(i||X),r.click(),setTimeout((()=>{window.URL.revokeObjectURL(o)}),we()?1e3:0)}(this.recorder.getBlob(),this.fileName,this.fileType),this._reset(),this.player.emit(T.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 Oe{constructor(e){return new(Oe.getLoaderFactory())(e)}static getLoaderFactory(){return Ve}}class Me{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:R}),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 c:e.log("decoderWorker","onmessage:",c),this.player.loaded||this.player.emit(T.load),this.player.emit(T.decoderWorkerInit),this._initWork();break;case g:e.log("decoderWorker","onmessage:",g,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=pe()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case m:e.log("decoderWorker","onmessage:",m,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case l:e.log("decoderWorker","onmessage:",l,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),this.player.video.initCanvasViewSize();break;case p:e.log("decoderWorker","onmessage:",p,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case u:this.player.handleRender(),this.player.video.render(i),this.player.emit(T.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=pe(),this.player.handlePlayToRenderTimes());break;case h:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case f:i.message&&-1!==i.message.indexOf(b)&&(this.player.emit(T.error,x.wasmDecodeError),this.player.emit(x.wasmDecodeError));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,forceNoOffscreen:this.player._opt.forceNoOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:E,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const o={type:v,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:B,buffer:e,options:o},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS&&!this.player._opt.useOffscreen||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:y,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:B,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:C,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:k,key:e.key,value:e.value})}}class Qe extends Ce{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()}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===y&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===y&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&(this.dropping=!1,this._doDecoderDecode(e))}else if(e=this.bufferList[0],-1===this.getDelay(e.ts))this.bufferList.shift(),this._doDecoderDecode(e);else if(this.delay>t+i)this.resetDelay(),this.dropping=!0;else for(;this.bufferList.length&&(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){const r=this.player;let s={ts:i,type:t,isIFrame:!1};r._opt.useWCS&&!r._opt.useOffscreen||r._opt.useMSE?(t===v&&(s.isIFrame=o),this.pushBuffer(e,s)):t===v?r.decoderWorker&&r.decoderWorker.decodeVideo(e,i,o):t===y&&r._opt.hasAudio&&r.decoderWorker&&r.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===y?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===v&&(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))}pushBuffer(e,t){t.type===y?this.bufferList.push({ts:t.ts,payload:e,type:y}):t.type===v&&this.bufferList.push({ts:t.ts,payload:e,type:v,isIFrame:t.isIFrame})}close(){}}class We extends Qe{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 n=i[0];16777215===n&&(t[3]=e[11],n=i[0]);const A=yield s;switch(r){case w:o._opt.hasAudio&&(o.updateStats({abps:A.byteLength}),A.byteLength>0&&this._doDecode(A,y,n));break;case S:if(o._times.demuxStart||(o._times.demuxStart=pe()),o._opt.hasVideo){o.updateStats({vbps:A.byteLength});const e=A[0]>>4==1;A.byteLength>0&&this._doDecode(A,v,n,e)}}}}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 Ge extends Qe{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy")}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),r=i.getUint32(1,!1);switch(o){case y: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 v:if(t._opt.hasVideo&&(t._times.demuxStart||(t._times.demuxStart=pe()),i.byteLength>5)){const s=new Uint8Array(e,5),n=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),s.byteLength>0&&this._doDecode(s,o,r,n)}}}}class Je{constructor(e){return new(Je.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===a?Ge:e===A?We:void 0}}class Pe extends Ce{constructor(e){super(),this.player=e,this.hasInit=!1,this.isDecodeFirstIIframe=!1,this.isInitInfo=!1,this.decoder=null,this.initDecoder(),e.debug.log("Webcodecs","init")}destroy(){this.decoder&&(this.decoder.close(),this.decoder=null),this.hasInit=!1,this.isInitInfo=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("Webcodecs","destroy")}initDecoder(){const e=this;this.decoder=new VideoDecoder({output(t){e.handleDecode(t)},error(t){e.handleError(t)}})}handleDecode(e){this.isInitInfo||(this.player.video.updateVideoInfo({width:e.codedWidth,height:e.codedHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player._times.videoStart||(this.player._times.videoStart=pe(),this.player.handlePlayToRenderTimes()),this.player.handleRender(),this.player.video.render({videoFrame:e}),this.player.updateStats({fps:!0,ts:0,buf:this.player.demux.delay}),setTimeout((function(){e.close?e.close():e.destroy()}),100)}handleError(e){this.player.debug.log("Webcodecs","VideoDecoder handleError",e)}decodeVideo(e,t,i){if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?_:$});this.decoder.decode(o)}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===M)return void this.emit(x.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=pe());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 Ne={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var ze=Object.keys(Ne).reduce(((e,t)=>(e[t]=`\n \n ${Ne[t]?`${Ne[t]}`:""}\n`,e)),{}),Ye=(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",ge(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(T.resize),A())}))})),e.$container.appendChild(o),e.on(T.destroy,(()=>{e.$container.removeChild(o)})),e.on(T.volumechange,(()=>{!function(e){if(0===e)ge(t.$volumeOn,"display","none"),ge(t.$volumeOff,"display","flex"),ge(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=fe(t.$volumePanel,"height")||60,o=fe(t.$volumeHandle,"height"),r=i-(i-o)*e-o;ge(t.$volumeHandle,"top",`${r}px`),ge(t.$volumeOn,"display","flex"),ge(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(T.loading,(e=>{ge(t.$loading,"display",e?"flex":"none"),ge(t.$poster,"display","none"),e&&ge(t.$playBig,"display","none")}));const n=i=>{let o=!0===(r=i)||!1===r?i:e.fullscreen;var r;ge(t.$fullscreenExit,"display",o?"flex":"none"),ge(t.$fullscreen,"display",o?"none":"flex")},A=()=>{ve()&&t.$controls&&setTimeout((()=>{if(e.fullscreen){console.log(e.width,e.height);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",n),e.events.destroys.push((()=>{ce.off("change",n)}))}catch(e){}e.on(T.webFullscreen,(e=>{n(e),A()})),e.on(T.recording,(()=>{ge(t.$record,"display",e.recording?"none":"flex"),ge(t.$recordStop,"display",e.recording?"flex":"none"),ge(t.$recording,"display",e.recording?"flex":"none")})),e.on(T.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(T.playing,(e=>{ge(t.$play,"display",e?"none":"flex"),ge(t.$playBig,"display",e?"none":"block"),ge(t.$pause,"display",e?"flex":"none"),ge(t.$screenshot,"display",e?"flex":"none"),ge(t.$record,"display",e?"flex":"none"),ge(t.$fullscreen,"display",e?"flex":"none"),e||t.$speed&&(t.$speed.innerHTML=Se(""))})),e.on(T.kBps,(e=>{const i=Se(e);t.$speed&&(t.$speed.innerHTML=i)}))};function He(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))}}He('@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 Xe{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 ${ze.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&o.play?'
':""}\n ${i.hasControl?`\n
\n
\n
00:00:01
\n
${ze.recordStop}
\n
\n `:""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
\n ${o.audio?`\n
\n ${ze.audio}\n ${ze.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${o.play?`
${ze.play}
${ze.pause}
`:""}\n ${o.screenshot?`
${ze.screenshot}
`:""}\n ${o.record?`
${ze.record}
${ze.recordStop}
`:""}\n ${o.fullscreen?`
${ze.fullscreen}
${ze.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),Ye(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),((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 me(i-e.y-r/2,0,o-r/2)/(o-r)}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()})),i(t.$playBig,"click",(t=>{e.play()})),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(),ge(t.$volumeOn,"display","none"),ge(t.$volumeOff,"display","block"),e.lastVolume=e.volume,e.volume=0})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),ge(t.$volumeOn,"display","block"),ge(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||ge(t.$controls,"display","block")})),i(e.$container,"mouseout",(()=>{ge(t.$controls,"display","none")})))})(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(se,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(ne,(()=>{e.volume+=.05})),r(Ae,(()=>{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.$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`}}}He(".jessibuca-container{position:relative;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 Ze{static init(){Ze.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 Ze.types)Ze.types.hasOwnProperty(e)&&(Ze.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Ze.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 Ze.box(Ze.types.trak,Ze.tkhd(e),Ze.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,r=e.presentHeight;return Ze.box(Ze.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 Ze.box(Ze.types.mdia,Ze.mdhd(e),Ze.hdlr(e),Ze.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Ze.box(Ze.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?Ze.constants.HDLR_AUDIO:Ze.constants.HDLR_VIDEO,Ze.box(Ze.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Ze.box(Ze.types.smhd,Ze.constants.SMHD):Ze.box(Ze.types.vmhd,Ze.constants.VMHD),Ze.box(Ze.types.minf,t,Ze.dinf(),Ze.stbl(e))}static dinf(){return Ze.box(Ze.types.dinf,Ze.box(Ze.types.dref,Ze.constants.DREF))}static stbl(e){return Ze.box(Ze.types.stbl,Ze.stsd(e),Ze.box(Ze.types.stts,Ze.constants.STTS),Ze.box(Ze.types.stsc,Ze.constants.STSC),Ze.box(Ze.types.stsz,Ze.constants.STSZ),Ze.box(Ze.types.stco,Ze.constants.STCO))}static stsd(e){return"audio"===e.type?Ze.box(Ze.types.stsd,Ze.constants.STSD_PREFIX,Ze.mp4a(e)):"avc"===e.videoType?Ze.box(Ze.types.stsd,Ze.constants.STSD_PREFIX,Ze.avc1(e)):Ze.box(Ze.types.stsd,Ze.constants.STSD_PREFIX,Ze.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 Ze.box(Ze.types.mp4a,o,Ze.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 Ze.box(Ze.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 Ze.box(Ze.types.avc1,r,Ze.box(Ze.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 Ze.box(Ze.types.hvc1,r,Ze.box(Ze.types.hvcC,t))}static mvex(e){return Ze.box(Ze.types.mvex,Ze.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 Ze.box(Ze.types.trex,i)}static moof(e,t){return Ze.box(Ze.types.moof,Ze.mfhd(e.sequenceNumber),Ze.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 Ze.box(Ze.types.mfhd,t)}static traf(e,t){let i=e.id,o=Ze.box(Ze.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Ze.box(Ze.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=Ze.sdtp(e),n=Ze.trun(e,s.byteLength+16+16+8+16+8+8);return Ze.box(Ze.types.traf,o,r,n,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,Ze.box(Ze.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,n=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,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12),Ze.box(Ze.types.trun,i)}static mdat(e){return Ze.box(Ze.types.mdat,e)}}Ze.init();class qe{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 Ke{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=Ke._ebsp2rbsp(e),i=new qe(t);i.readByte();let o=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let s=Ke.getProfileString(o),n=Ke.getLevelString(r),A=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)&&(A=i.readUEG(),3===A&&i.readBits(1),A<=3&&(a=d[A]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==A?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===A)k=1,T=2-m;else{k=3===A?1:2,T=(1===A?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:n,bit_depth:c,ref_frames:u,chroma_format:a,chroma_format_string:Ke.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=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=_e._ebsp2rbsp(e);new qe(t);return{profile_string:"",level_string:"",bit_depth:"",ref_frames:"",chroma_format:"",chroma_format_string:"",frame_rate:{fixed:"",fps:"",fps_den:"",fps_num:""},sar_ratio:{width:"",height:""},codec_size:{width:"",height:""},present_size:{width:"",height:""}}}static _skipScalingList(e,t){let i=8,o=8,r=0;for(let s=0;s{this.mediaSourceOpen=!0,this.player.emit(T.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(T.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.bufferList=[],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.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource.readyState}get isStateOpen(){return this.state===ie}get isStateClosed(){return this.state===oe}get isStateEnded(){return this.state===te}get duration(){return this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i){const o=this.player;if(this.hasInit)this._decodeVideo(e,t,i);else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===M)return void this.emit(x.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=pe()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_doDecode(){const e=this.bufferList.shift();e&&this._decodeVideo(e.payload,e.ts,e.isIframe)}_decodeConfigurationRecord(e,t,i,o){let r=e.slice(5),s={};o===O?s=function(e){const t={},i=new DataView(e.buffer);let o=i.getUint8(0),r=i.getUint8(1);if(i.getUint8(2),i.getUint8(3),1!==o||0===r)return;const s=1+(3&i.getUint8(4));if(3!==s&&4!==s)return;let n=31&i.getUint8(5);if(0===n)return;let A=6;for(let o=0;o1&&(this.removeBuffer(A.buffered.start(0),A.buffered.end(0)),this.timeInit=!1),this.dropping&&n-this.cacheTrack.dts>a)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&n>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(Ze.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=n-this.cacheTrack.dts;let r=Ze.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendBuffer(s.buffer),o.handleRender(),o.updateStats({fps:!0,ts:t,buf:o.demux.delay}),o._times.videoStart||(o._times.videoStart=pe(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=s,this.cacheTrack.dts=n,this.cacheTrack.cts=0,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=r,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==A.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,A.currentTime=A.buffered.end(0)),!this.isInitInfo&&A.videoWidth>0&&A.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${A.videoWidth},${A.videoHeight}`),o.video.updateVideoInfo({width:A.videoWidth,height:A.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(ee),i(this.sourceBuffer,"error",(e=>{this.player.emit(T.mseSourceBufferError,e)}))),!1===this.sourceBuffer.updating&&this.isStateOpen?this.sourceBuffer.appendBuffer(e):this.isStateClosed?this.player.emit(T.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(T.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(T.mseSourceBufferBusy)}stop(){this.isStateOpen&&this.sourceBuffer&&this.sourceBuffer.abort(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){console.error(e)}}endOfStream(){this.isStateOpen&&this.mediaSource.endOfStream()}}const et=()=>"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,tt=()=>"wakeLock"in navigator;class it{constructor(e){if(this.player=e,this.enabled=!1,tt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else et()?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,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"),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(tt())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(et())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;tt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):et()?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 ot extends Ce{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},d,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(ee)),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.useWCS,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._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 Ie(this),this._opt.hasAudio&&(this.audio=new De(this)),this.recorder=new Oe(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new Me(this),this.stream=null,this.demux=null,this._opt.useWCS&&(this.webcodecsDecoder=new Pe(this)),this._opt.useMSE&&(this.mseDecoder=new $e(this)),this.control=new Xe(this),this.keepScreenOn=new it(this),(e=>{try{const t=()=>{e.emit(I.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(T.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(T.play,(()=>{e.loading=!1})),e.on(T.fullscreen,(t=>{if(t)try{ce.request(e.$container).then((()=>{})).catch((t=>{e.webFullscreen=!0}))}catch(t){e.webFullscreen=!0}else try{ce.exit().then((()=>{})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),e.on(T.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web")})),e.on(T.resize,(()=>{e.video.resize()})),e._opt.debug){const t=[T.timeUpdate];Object.keys(T).forEach((i=>{e.on(T[i],(o=>{t.includes(i)||e.debug.log("player events",T[i],o)}))})),Object.keys(x).forEach((t=>{e.on(x[t],(i=>{e.debug.log("player event error",x[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(()=>{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._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.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){ve()?(this.emit(T.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(T.fullscreen,e)}get fullscreen(){return document.isFullScreen||document.mozIsFullScreen||document.webkitIsFullScreen||this.webFullscreen}set webFullscreen(e){this.emit(T.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(T.playing,e),this.emit(T.volumechange,this.volume),e?this.emit(T.play):this.emit(T.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){this.audio&&this.audio.setVolume(e)}set loading(e){this.loading!==e&&(this._loading=e,this.emit(T.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder.startRecord():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(T.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ue(this)),this.demux||(this.demux=new Je(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new Pe(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new $e(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new Me(this),this.once(T.decoderWorkerInit,(()=>{e()})))}))}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return i();this.loading=!0,this.playing=!1,this._times.playInitStart=pe(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=pe(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(x.webcodecsH265NotSupport,(()=>{this.emit(x.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(T.error,x.webcodecsH265NotSupport)})),this.mseDecoder&&this.mseDecoder.once(x.mediaSourceH265NotSupport,(()=>{this.emit(x.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(T.error,x.mediaSourceH265NotSupport)})),this.enableWakeLock(),this.stream.fetchStream(e),this.checkLoadingTimeout(),this.stream.once(x.fetchError,(e=>{i(e)})),this.stream.once(x.websocketError,(e=>{i(e)})),this.stream.once(T.streamSuccess,(()=>{t(),this._times.streamResponse=pe(),this.video.play()}))})).catch((e=>{i(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video.clearView(),e()}))}))}_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.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.playing=!1,this.loading=!1,this.recording=!1,this.audio&&this.audio.pause(),this.video&&this.video.pause(),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(e){return e?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((()=>{this.pause(!1).then((()=>{this.emit(T.timeout,T.delayTimeout),this.emit(T.delayTimeout)}))}),1e3*this._opt.heartTimeout)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(T.timeout,T.loadingTimeout),this.emit(T.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}handleRender(){this.loading&&(this.emit(T.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=pe()),Be(e.ts)&&(this._stats.ts=e.ts),Be(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=pe();t-this._startBpsTime<1e3||(this.emit(T.stats,this._stats),this.emit(T.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.enable()}releaseWakeLock(){this._opt.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(T.playToRenderTimes,e)}}class rt extends Ce{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");i.classList.add("jessibuca-container"),delete t.container,Be(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),Be(t.timeout)&&(Ee(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Ee(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 ot(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null;const t=Object.assign(this._opt,e);this._initPlayer(this.$container,t)}_bindEvents(){Object.keys(I).forEach((e=>{this.player.on(I[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({isDebug:!!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 N:t.isFullResize=!1,t.isResize=!1;break;case z:t.isFullResize=!1,t.isResize=!0;break;case Y:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._opt.url="",this.player.close()}clearView(){this.player.video.clearView()}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return this.emit(T.error,x.playError),void i();if(e){if(!this._opt.url)return this._play(e);e===this._opt.url?this.player.playing?t():(this.clearView(),this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))):this.player.pause().then((()=>(this.clearView(),this._play(e)))).catch((()=>{i()}))}else this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}_play(e){return new Promise(((t,i)=>{this._opt.url=e;const o=0===e.indexOf("http"),r=o?n:s,d=o||-1!==e.indexOf(".flv")||this._opt.isFlv?A:a;this.player.updateOption({protocol:r,demuxType:d}),this.player.once(x.mediaSourceH265NotSupport,(()=>{this.close().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).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(x.webcodecsH265NotSupport,(()=>{this.close().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.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(x.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.close().then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e).then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play error")}))}))})),this.player.once(T.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.once(T.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))})):this.player.once(T.decoderWorkerInit,(()=>{this.player.play(e).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}))}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,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.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.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}}return r(rt,"ERROR",x),r(rt,"TIMEOUT",{loadingTimeout:T.loadingTimeout,delayTimeout:T.delayTimeout}),window.Jessibuca=rt,rt})); diff --git a/src/constant/index.js b/src/constant/index.js index 20c29daf..86f755c1 100644 --- a/src/constant/index.js +++ b/src/constant/index.js @@ -14,6 +14,7 @@ export const DEMUX_TYPE = { // default player options export const DEFAULT_PLAYER_OPTIONS = { videoBuffer: 1000, //1000ms == 1 second + videoBufferDelay: 1000,// 1000ms isResize: true, isFullResize: false, // isFlv: false, diff --git a/src/decoder/mediaSource.js b/src/decoder/mediaSource.js index b4741cb0..4f2813b4 100644 --- a/src/decoder/mediaSource.js +++ b/src/decoder/mediaSource.js @@ -150,12 +150,12 @@ export default class MseDecoder extends Emitter { let dts = ts; // player.debug.log('MediaSource', '_decodeVideo', ts); const $video = player.video.$videoElement; - + const videoBufferDelay = player._opt.videoBufferDelay; if ($video.buffered.length > 1) { this.removeBuffer($video.buffered.start(0), $video.buffered.end(0)); this.timeInit = false; } - if (this.dropping && dts - this.cacheTrack.dts > 1000) { + if (this.dropping && dts - this.cacheTrack.dts > videoBufferDelay) { this.dropping = false; this.cacheTrack = {}; } else if (this.cacheTrack && dts > this.cacheTrack.dts) { diff --git a/src/demux/commonLoader.js b/src/demux/commonLoader.js index dda0c82a..c85ddcda 100644 --- a/src/demux/commonLoader.js +++ b/src/demux/commonLoader.js @@ -38,7 +38,13 @@ export default class CommonLoader extends Emitter { this.delay = -1; } else { if (timestamp) { - this.delay = (Date.now() - this.startTimestamp) - (timestamp - this.firstTimestamp) + const localTimestamp = (Date.now() - this.startTimestamp); + const timeTimestamp = (timestamp - this.firstTimestamp); + if (localTimestamp >= timeTimestamp) { + this.delay = localTimestamp - timeTimestamp; + } else { + this.delay = timeTimestamp - localTimestamp; + } } } return this.delay @@ -57,6 +63,7 @@ export default class CommonLoader extends Emitter { let _loop = () => { let data; const videoBuffer = this.player._opt.videoBuffer; + const videoBufferDelay = this.player._opt.videoBufferDelay; if (this.bufferList.length) { if (this.dropping) { // this.player.debug.log('common dumex', `is dropping`); @@ -81,7 +88,7 @@ export default class CommonLoader extends Emitter { // this.player.debug.log('common dumex', `delay is -1`); this.bufferList.shift() this._doDecoderDecode(data); - } else if (this.delay > videoBuffer + 1000) { + } else if (this.delay > videoBuffer + videoBufferDelay) { // this.player.debug.log('common dumex', `delay is ${this.delay}, set dropping is true`); this.resetDelay(); this.dropping = true diff --git a/src/worker.js b/src/worker.js index cafc9f64..06d123cd 100644 --- a/src/worker.js +++ b/src/worker.js @@ -87,7 +87,8 @@ Module.postRun = function () { forceNoOffscreen: DEFAULT_PLAYER_OPTIONS.forceNoOffscreen, useWCS: DEFAULT_PLAYER_OPTIONS.useWCS, videoBuffer: DEFAULT_PLAYER_OPTIONS.videoBuffer, - openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment + openWebglAlignment: DEFAULT_PLAYER_OPTIONS.openWebglAlignment, + videoBufferDelay: DEFAULT_PLAYER_OPTIONS.videoBufferDelay }, useOffscreen: function () { return !decoder.opt.forceNoOffscreen && typeof OffscreenCanvas != 'undefined'; @@ -246,27 +247,22 @@ Module.postRun = function () { } else { var data = buffer[0]; if (this.getDelay(data.ts) === -1) { - decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1'); + // decoder.opt.debug && console.log('Jessibuca: [worker]: common dumex delay is -1'); buffer.shift(); _doDecode(data); - } else if (this.delay > decoder.opt.videoBuffer + 1000) { - decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`); + } else if (this.delay > decoder.opt.videoBuffer + decoder.opt.videoBufferDelay) { + // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, set dropping is true`); this.resetDelay(); this.dropping = true; } else { while (buffer.length) { data = buffer[0]; if (this.getDelay(data.ts) > decoder.opt.videoBuffer) { - decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`); + // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay}, decode`); buffer.shift(); _doDecode(data); } else { - decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`); - // if (this.delay < -1) { - // this.resetDelay(); - // this.dropping = true; - // break; - // } + // decoder.opt.debug && console.log('Jessibuca: [worker]:', `delay is ${this.delay},opt.videoBuffer is ${decoder.opt.videoBuffer}`); break; } } diff --git a/src/worker/index.js b/src/worker/index.js index d2c79169..c990d4a6 100644 --- a/src/worker/index.js +++ b/src/worker/index.js @@ -101,6 +101,7 @@ export default class DecoderWorker { forceNoOffscreen: this.player._opt.forceNoOffscreen, useWCS: this.player._opt.useWCS, videoBuffer: this.player._opt.videoBuffer, + videoBufferDelay: this.player._opt.videoBufferDelay, openWebglAlignment: this.player._opt.openWebglAlignment } this.decoderWorker.postMessage({